From 776cf3759b9801f3795ee975cd77078f505b90d6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 06 一月 2024 14:49:08 +0800 Subject: [PATCH] 10071 【后端】灵宠改版 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py | 582 ++++++++++------------------------------------------------ 1 files changed, 101 insertions(+), 481 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py index 371a3c2..08b1acd 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py @@ -22,150 +22,17 @@ #IPY_RolePetMgr.PetList_Find\GetFightPet\PetList_At -> IPY_RolePet; #IPY_RolePet.GetRolePet -> tagIPY_RolePet(结构体); #IPY_RolePet.GetPetData -> IPY_Pet; -# -# #--------------------------------------------------------------------- import IPY_GameWorld -import ChConfig import GameWorld -import BuffSkill -import SkillShell import PlayerPet import PlayerControl import NPCCommon -import SkillCommon -import GameMap -import OperControlManager -import ShareDefine -import random -import copy -import math import GameObj -import AICommon -import BaseAttack import PassiveBuffEffMng -import ChNetSendPack import IpyGameDataPY -#--------------------------------------------------------------------- - -DefPetRebornHPRate = 100 # 宠物死亡复活血量百分比 - -#--------------------------------------------------------------------- -## 检查宠物是否出战中 -# @param curPlayer 玩家对象 -# @param curPetID 宠物ID -# @return True or False 是否出战中 -# @remarks 检查宠物是否出战中 -def CheckPetIsFight(curPlayer, curPetID): - petMgr = curPlayer.GetPetMgr() - #出战的宠物对象 - fightPetObj = petMgr.GetFightPet() - - if fightPetObj == None: - return False - - if fightPetObj.GetRolePet().PetID == curPetID: - return True - - return False - - - - -# 宠物跟随人物同时攻击 -def PetFight(curPlayer, tick): - - rolePet = curPlayer.GetPetMgr().GetFightPet() - #无出战宠物 - if rolePet == None: - return - rolePetControl = NPCCommon.NPCControl(rolePet) - - useSkillTagID = curPlayer.GetUseSkillTagID() - useSkillTagType = curPlayer.GetUseSkillTagType() - - curTag = GameWorld.GetObj(useSkillTagID, useSkillTagType) - if not curTag or GameObj.GetHP(curTag) <= 0: - # 没有主目标就从仇恨中找 - for i in range(curPlayer.GetAngryNPCCount()): - curTag = curPlayer.GetAngryNPCByIndex(i) - if not curTag or GameObj.GetHP(curTag) <= 0: - continue - - if not curTag or GameObj.GetHP(curTag) <= 0: - return - - #tagDist = GameWorld.GetDist(rolePet.GetPosX(), rolePet.GetPosY(), curTag.GetPosX(), curTag.GetPosY()) - tagDist = 0 - #---优先释放技能--- - if AICommon.DoAutoUseSkill(rolePet, curTag, tagDist, tick): - return - - #---释放普通攻击--- 边走边攻击纠正一次位置 - #if tagDist > rolePet.GetAtkDist(): - # rolePetControl.MoveToObj_Detel(curTag) - - #普通攻击 - BaseAttack.Attack(rolePet, curTag, None, tick) - return - - -#--------------------------------------------------------------------- -##出战宠物跟随移动 -# @param curPlayer 玩家实例 -# @param destPosX 移动目标X点 -# @param destPosY 移动目标Y点 -# @return 返回值无意义 -# @remarks 出战宠物跟随移动 -def FightPetFollowMove(curPlayer, destPosX, destPosY): - #主人在战斗中, 宠物不跟随移动 - - fightPet = curPlayer.GetPetMgr().GetFightPet() - #无出战宠物 - if fightPet == None: - return - - petControl = NPCCommon.NPCControl(fightPet) - movePosX, movePosY = petControl.GetMoveNearPos(destPosX, destPosY, 2) - # 执行一次重置位置,避免快速发包导致无法移动 - fightPet.ChangePos(movePosX, movePosY) - - #movePosX, movePosY = petControl.GetMoveNearPos(destPosX, destPosY, 1) - PetMove(fightPet, movePosX, movePosY) - return - - -def PetMove(fightPet, posX, posY): - - sendPack = ChNetSendPack.tagObjMove() - - sendPack.Clear() - sendPack.ObjID = fightPet.GetID() - sendPack.ObjType = IPY_GameWorld.gotNPC - sendPack.MoveType = IPY_GameWorld.mtNormal - sendPack.DestPosX = posX - sendPack.DestPosY = posY - sendPack.Speed = fightPet.GetSpeed() - sendPack.StartPosX = fightPet.GetPosX() - sendPack.StartPosY = fightPet.GetPosY() - - fightPet.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength()) - return -#--------------------------------------------------------------------- -##清除出战宠物仇恨. -# @param curPlayer 玩家实例 -# @return 返回值无意义 -# @remarks 清除出战宠物仇恨 -def ClearFightPetAngry(curPlayer): - fightPet = curPlayer.GetPetMgr().GetFightPet() - #无出战宠物 - if fightPet == None: - return - - petControl = NPCCommon.NPCControl(fightPet) - petControl.ClearNPCAngry() - return +import ChConfig #--------------------------------------------------------------------- ##获得宠物的拥有者 @@ -206,6 +73,44 @@ return False #--------------------------------------------------------------------- + +def IsPetNPC(curObj): + ''' 是否灵宠NPC,召唤兽类型,玩家、玩家镜像、NPC通用,均可有灵宠召唤兽 + 区别于 IsPet 为旧版的 PY_GameWorld.gnotPet 实例对象,仅玩家实例有 + ''' + curObjType = curObj.GetGameObjType() + if curObjType != IPY_GameWorld.gotNPC: + return False + npcObjType = curObj.GetGameNPCObjType() + if npcObjType != IPY_GameWorld.gnotSummon: + return False + return curObj.GetType() == IPY_GameWorld.ntPet + +def GetPetNPCOwner(curPet): + ''' 获得宠物的拥有者,可能为玩家、玩家镜像、NPC + 区别于 GetPetOwner 为旧版的 PY_GameWorld.gnotPet 归属者仅支持玩家 + ''' + if curPet == None: + return + + atkObjType = curPet.GetGameObjType() + if atkObjType != IPY_GameWorld.gotNPC: + return + + summonOwner = None + npcObjType = curPet.GetGameNPCObjType() + # 判断召唤兽主人 + if npcObjType == IPY_GameWorld.gnotSummon: + curNPCDetail = GameWorld.GetObjDetail(curPet) + if curNPCDetail: + curNPCOwner = curNPCDetail.GetOwner() + if curNPCOwner: + summonOwner = GameWorld.GetObjDetail(curNPCOwner) + # 召唤兽主人为玩家 + #if summonOwner and summonOwner.GetGameObjType() == IPY_GameWorld.gotPlayer: + # return summonOwner, npcObjType + return summonOwner + ##清空宠物身上所有buff # @param curPet 宠物对象 # @return None @@ -217,225 +122,92 @@ buffState.Clear() return -#--------------------------------------------------------------------- -##召唤宠物 -# @param curPet 宠物对象 -# @param curPosX 宠物出身点位置 -# @param curPosY 宠物出身点位置 -# @return None -# @remarks 召唤宠物,初始化宠物所有属性(C++处理) -def SummonPet(curPet, curPosX, curPosY): - #出现(出战逻辑在C++, 将清空宠物的相关信息) - curPet.Summon(curPosX, curPosY) - #记录该宠物被召回 - curPet.SetIsBattle(True) - #初始化宠物 - InitRolePet(curPet) - PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPet) - return + #--------------------------------------------------------------------- -##初始化宠物属性 -# @param rolePet 宠物实例 -# @param canSyncClient 是否通知客户端 -# @return 返回值无意义 -# @remarks 初始化宠物属性 -def InitRolePet(rolePet, canSyncClient=True): - #---初始化时钟--- - NPCCommon.InitNPC(rolePet) +def CalloutFightPet(curObj, petCacheInfo=None): + ## 出战上阵的灵宠 + # @param petCacheInfo: 玩家灵宠功能缓存信息 + # @return: [第1位置实例, 第2, ...] 按位置顺序,实例可能为None - #---初始化仇恨列表--- - npcAngry = rolePet.GetNPCAngry() - if npcAngry.GetAngryCount() == 0: - npcAngry.Init(ChConfig.Def_Pet_Angry_Count) - else: - npcAngry.Clear() + fightPlaceCount = len(IpyGameDataPY.GetFuncEvalCfg("PetGoOutFight", 1)) # 战斗位置数 + fightPetObjList = [None] * fightPlaceCount + if petCacheInfo == None and curObj.GetGameObjType() == IPY_GameWorld.gotPlayer: + petCacheInfo = PlayerPet.GetPetCacheInfo(curObj) + if not petCacheInfo: # 没有灵宠 + return fightPetObjList + + fightPetDict = {} # 上阵的灵宠 + for cacheInfo in petCacheInfo: + state = cacheInfo.get("state", 0) + if not state: + continue + fightPetDict[state] = cacheInfo + + if not fightPetDict: # 没有上阵的 + return fightPetObjList + + posX, posY = curObj.GetPosX(), curObj.GetPosY() + for index in range(fightPlaceCount): + placeNum = index + 1 + if placeNum not in fightPetDict: + continue + petInfo = fightPetDict[placeNum] + petNPCID = petInfo.get("npcID", 0) + if not petNPCID: + continue + quality = petInfo.get("quality", 0) + skillIDList = petInfo.get("skills", []) + petObj = NPCCommon.SummonNPC(curObj, petNPCID, posX, posY, skillIDList) + if not petObj: + continue + petObj.SetDict(ChConfig.Def_Obj_Dict_FightPetPlaceNum, placeNum) + petObj.SetDict(ChConfig.Def_Obj_Dict_FightPetQuality, quality) + fightPetObjList[index] = petObj + return fightPetObjList - #---初始化宠物属性--- - petControl = NPCCommon.NPCControl(rolePet) - petControl.RefreshNPCState(canSyncClient) - - #加一个防御措施, 如果宠物血为0, 不可召唤出来, 默认为宠物召回时候的血量 - if GameObj.GetHP(rolePet) <= 0: - PetDead_ReStoreHP(rolePet, GameObj.GetMaxHP(rolePet)) - GameWorld.ErrLog('宠物重生血量为0, PetID = %s' % (rolePet.GetRolePet().PetID)) - - return -#--------------------------------------------------------------------- ##召回出战的宠物 # @param curPlayer 玩家实例 # @return 布尔值 # @remarks 召回出战的宠物 def ReCallFightPet(curPlayer): - rolePetMgr = curPlayer.GetPetMgr() - #获得战斗的宠物 - fightPet = rolePetMgr.GetFightPet() - - if fightPet == None: - return False - - #清空宠物身上附加的buff - ClearPetBuff(fightPet) - #记录该宠物被召回 - fightPet.SetIsBattle(False) - #此死亡接口(C++将重置所有战斗属性, 要在刷一次) - NPCCommon.SetDeadEx(fightPet) - #刷新宠物属性 - petControl = NPCCommon.NPCControl(fightPet) - petControl.RefreshNPCState(canSyncClient=True) - - #宠物数据物品状态变更 - petItemIndex = PlayerPet.GetPetObjItemIndex(fightPet) - petItem = PlayerPet.GetPetDataItemByIndex(curPlayer, petItemIndex) - if petItem: - petItem.SetUserAttr(ShareDefine.Def_IudetPet_State, ShareDefine.Def_PetState_Null) - - petID = fightPet.GetRolePet().PetID - npcID = fightPet.GetRolePet().NPCID - rolePetMgr.PetList_SetFree(petID) # 永恒召回后默认放生, 最多只存在一个出战宠物实例 - GameWorld.DebugLog("随从召回后默认放生, petID=%s, npcID=%s" % (petID, npcID)) return True -#--------------------------------------------------------------------- -## 设置宠物死亡 -# @param curPet 宠物对象 -# @return None -# @remarks 设置宠物死亡 -def SetPetDead(curPet): - #---执行死亡惩罚逻辑--- - - #宠物主人 - curPetOwner = GetPetOwner(curPet) - if not curPetOwner: - return - ReCallFightPet(curPetOwner) - return -#--------------------------------------------------------------------- -##宠物死亡恢复血量 -# @param index 玩家索引 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 宠物死亡恢复血量 -def PetDead_ReStoreHP(curPet, maxHP): - #设置宠物当前血量为其上限的30% - SetPetHP(curPet, int(maxHP * DefPetRebornHPRate / 100)) - return -#--------------------------------------------------------------------- - -#--------------------------------------------------------------------- -##设置宠物HP -# @param rolePet 玩家宠物 -# @param 值 -# @param canSyncClient是否通知客户端 -# @return 返回值无意义 -# @remarks 设置宠物HP def SetPetHP(rolePet, value, canSyncClient=True): + ##设置宠物HP GameObj.SetHP(rolePet, value, canSyncClient) - if not canSyncClient: return - #rolePet.Sync_RefreshProp(IPY_GameWorld.PetInfoRefresh_HP, value, True) return -#--------------------------------------------------------------------- -##增加宠物HP -# @param rolePet 玩家宠物 -# @param 值 -# @return 返回值无意义 -# @remarks 加宠物HP + def AddPetHP(rolePet, value): - remainValue = min(GameObj.GetHP(rolePet) + value, GameObj.GetMaxHP(rolePet)) - SetPetHP(rolePet, remainValue) + ##增加宠物HP + #remainValue = min(GameObj.GetHP(rolePet) + value, GameObj.GetMaxHP(rolePet)) + #SetPetHP(rolePet, remainValue) return -#--------------------------------------------------------------------- -##刷新宠物的属性 -# @param rolePet 玩家宠物 -# @param canSyncClient 是否通知客户端(默认为True) -# @return 返回值无意义 -# @remarks 刷新宠物的属性 -def RefurbishPetAttr(rolePet, canSyncClient=True): - curPlayer = GetPetOwner(rolePet) - if not curPlayer: +def RefurbishPetAttr(curPet): + ##刷新宠物的属性,仅支持召唤兽,废弃原 IPY_GameWorld.gnotPet + if not IsPetNPC(curPet): + return + petOwner = GetPetNPCOwner(curPet) + if not petOwner: return - petDataItem = PlayerPet.GetPetDataItem(curPlayer, rolePet) - if not petDataItem: - return + #宠物不可被攻击, 灵宠继承人物的 百分百攻击和攻速 + curPet.SetMinAtk(petOwner.GetMinAtk()) + curPet.SetMaxAtk(petOwner.GetMaxAtk()) + GameObj.SetAtkSpeed(curPet, GameObj.GetAtkSpeed(petOwner)) - # 变更需要同步的信息配置, 客户端取宠物信息全部以宠物物品数据为准 - syncList = [ - [lambda petObj:petObj.GetMaxAtk(), IPY_GameWorld.PetInfoRefresh_PhysicAtk], #攻击 - #[lambda petObj:petObj.GetQualityLV(), IPY_GameWorld.PetInfoRefresh_QualityLV], #品质 - ] - beforeValueList = [] - for syncInfo in syncList: - beforeValueList.append(syncInfo[0](rolePet)) + #allAttrList = [{} for i in range(4)] + ##计算技能对战斗属性的影响 + #PlayerPet.CalcSkill_PetBattleEffect(curPlayer, rolePet, allAttrList) + ##计算Buff对战斗属性的影响 + #PlayerPet.CalcBuffer_PetBattleEffect(rolePet, allAttrList) - #添加Buff到宠物身上 - #AddPlayerPetSkillBuff(rolePet) - - #计算Buff对基础属性的影响 - #SkillShell.CalcBuffer_NPCBaseEffect(rolePet) - - #宠物不可被攻击, 命中与攻速直接继承主人攻击属性,攻击取等级阶级加成 - rolePet.SetMinAtk(PlayerControl.GetPetMinAtk(curPlayer)) - rolePet.SetMaxAtk(PlayerControl.GetPetMaxAtk(curPlayer)) - rolePet.SetSkillAtkRate(PlayerControl.GetPetSkillAtkRate(curPlayer)) - GameObj.SetPetDamPer(rolePet, GameObj.GetPetDamPer(curPlayer)) - #rolePet.SetMAtkMin(curPlayer.GetMAtkMin()) - #rolePet.SetMAtkMax(curPlayer.GetMAtkMax()) - rolePet.SetHit(curPlayer.GetHit()) - rolePet.SetSpeed(curPlayer.GetSpeed()) - - allAttrList = [{} for i in range(4)] - #计算技能对战斗属性的影响 - PlayerPet.CalcSkill_PetBattleEffect(curPlayer, rolePet, allAttrList) - #计算Buff对战斗属性的影响 - PlayerPet.CalcBuffer_PetBattleEffect(rolePet, allAttrList) - - GameWorld.DebugLog("RefurbishPetAttr ID=%s,npcID=%s,atk=%s,hit=%s,skillAtkRate=%s" - % (rolePet.GetID(), rolePet.GetNPCID(), rolePet.GetMaxAtk(), rolePet.GetHit(), rolePet.GetSkillAtkRate())) - - #是否需要通知客户端属性刷新 - if not canSyncClient: - return - - #=========================================================================== - # for i, syncInfo in enumerate(syncList): - # nowValue = syncInfo[0](rolePet) - # if beforeValueList[i] != nowValue: - # rolePet.Sync_RefreshProp(syncInfo[1], nowValue, True) - # #GameWorld.DebugLog("Sync_RefreshProp i=%s,befValue=%s,nowValue=%s,type=%s" % (i, beforeValueList[i], nowValue, syncInfo[1])) - #=========================================================================== + GameWorld.DebugLog("RefurbishPetAttr ID=%s,npcID=%s,maxAtk=%s,atkSpeed=%s" + % (curPet.GetID(), curPet.GetNPCID(), curPet.GetMaxAtk(), curPet.GetMaxAtk())) return - -#--------------------------------------------------------------------- -##添加宠物技能Buff -# @param rolePet 宠物实例 -# @return 返回值无意义 -# @remarks 添加宠物技能Buff -#=============================================================================== -# def AddPlayerPetSkillBuff(rolePet): -# tick = GameWorld.GetGameWorld().GetTick() -# -# #---先清掉--- -# passiveBuffManager = rolePet.GetPassiveBuf() -# passiveBuffManager.Clear() -# -# #---在加上--- -# rolePetSkillManager = rolePet.GetSkillManager() -# -# for i in range(0, rolePetSkillManager.GetSkillCount()): -# learnSkill = rolePetSkillManager.GetSkillByIndex(i) -# #只添加被动技能 -# if not SkillCommon.isPassiveBuffSkill(learnSkill): -# continue -# -# #加上buff不刷新状态 -# BuffSkill.AddBuffNoRefreshState(rolePet, IPY_GameWorld.btPassiveBuf, learnSkill, tick) -# -# return -#=============================================================================== #--------------------------------------------------------------------- def DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList): #GameWorld.DebugLog("DoLogic_PlayerPetLearnSkillList----%s"%learnSkillList) @@ -454,144 +226,6 @@ #rolePet.Sync_SkillList() return -#--------------------------------------------------------------------- -##检查当前指定宠物是否可出战 -# @param curPlayer 玩家实例 -# @param curPetObj 指定宠物实例 -# @return BOOL 是否可出战 -# @remarks 检查当前指定宠物是否可出战 -def CheckPetCanFight(curPlayer, curPetObj): - if not GetMapCanOutPet(curPlayer): - #Pet_liubo_314885 此地图禁止宠物 - #PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885") - return False - - petData = curPetObj.GetPetData() - - #防沉迷 - if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First: - PlayerControl.NotifyCode(curPlayer, "AvoidSink09") - return False - - if GameObj.GetHP(curPlayer) <= 0: - #死亡状态无法出战宠物 - return False - -# if curPlayer.GetLV() < petData.GetBringLV(): -# #Pet_hgg_442426 对不起,您尚未到达该宠物的携带等级. -# PlayerControl.NotifyCode(curPlayer, "Pet_hgg_442426") -# return False -# -# if curPetObj.GetLV() - curPlayer.GetLV() > ChConfig.Def_PetRoleGapLVMax: -# #Pet_liubo_570355 对不起,您不能出战超过人物5级的宠物! -# PlayerControl.NotifyCode(curPlayer, "Pet_liubo_570355", [ChConfig.Def_PetRoleGapLVMax]) -# return False - - #---是否已有宠物出战--- - #fightPetObj = curPlayer.GetPetMgr().GetFightPet() # 出战的宠物对象 - - #if fightPetObj != None: - # #Pet_hgg_892377 对不起,您只能同时出战一只宠物,请先召回出战的宠物! - # PlayerControl.NotifyCode(curPlayer, "Pet_hgg_892377") - # return False - - #GameWorld.Log('宠物血量:%s,宠物ID:%s'%(curPetStruct.HP,curPetStruct.PetID)) - return True -#--------------------------------------------------------------------- - -#--------------------------------------------------------------------- -##玩家离开服务器通知宠物信息 -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 玩家离开服务器通知宠物信息 -def DoLogic_PetInfo_OnLeaveServer(curPlayer, tick): - return - -#--------------------------------------------------------------------- -##玩家登陆通知宠物信息 -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 玩家登陆通知宠物信息 -def DoLogic_PetInfo_OnLogin(curPlayer, tick): - - petMgr = curPlayer.GetPetMgr() - if GameWorld.IsCrossServer(): - ''' 0435宠物出现包同步的ID是根据宠物的列表位置来的,比如在第2位发的就是2,而地图的可能是1,会导致ID不一致 - 所以跨服服务器登录时先清除出战宠物列表,确保登录地图成功后都是从1开始的即可 - ''' - petList = [] - for index in range(0, petMgr.PetList_Cnt()): - rolePet = petMgr.PetList_At(index) - petList.append(rolePet) - for rolePet in petList: - petMgr.PetList_SetFree(rolePet.GetRolePet().PetID) - else: - for index in range(0, petMgr.PetList_Cnt()): - rolePet = petMgr.PetList_At(index) - #刷新宠物信息并通知客户端 - __RefreshAndSyncPetInfo(rolePet) - #自动出战宠物 - __AutoSummonPet_OnLogin(curPlayer, rolePet) - - return -#--------------------------------------------------------------------- -##玩家上线, 自动出战宠物 -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 玩家上线, 自动出战宠物 -def __AutoSummonPet_OnLogin(curPlayer, rolePet): - #是否有出战标志 - if not rolePet.GetIsBattle(): - return - - if not GetMapCanOutPet(curPlayer): - #此地图禁止宠物 - return - #召唤宠物出战 - resultPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), ChConfig.Def_SummonAppearDist) - - SummonPet(rolePet, resultPos.GetPosX(), resultPos.GetPosY()) - return - -#--------------------------------------------------------------------- -##玩家切换地图通知宠物信息. -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 玩家切换地图通知宠物信息. -def Sync_PetInfo_ChangeMap(curPlayer, tick): - petMgr = curPlayer.GetPetMgr() - - for index in range(0, petMgr.PetList_Cnt()): - rolePet = petMgr.PetList_At(index) - #刷新宠物信息并通知客户端 - __RefreshAndSyncPetInfo(rolePet) - - return - -#--------------------------------------------------------------------- -##玩家携带宠物登陆地图 -# @param curPlayer 玩家实例 -# @return 返回值无意义 -# @remarks -def DoLogic_PetLoadMapOK(curPlayer): - - if GetMapCanOutPet(curPlayer): - #此地图宠物可以上 - PlayerPet.AutoSummonPet(curPlayer) - return - - #此地图禁止宠物, 召回出战的宠物 - if not ReCallFightPet(curPlayer): - return - - #Pet_liubo_314885 此地图禁止宠物 - #PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885") - return - def GetMapCanOutPet(curPlayer): ## 检查本地图可否出战宠物,支持前端自定义场景 customMapID = PlayerControl.GetCustomMapID(curPlayer) @@ -601,18 +235,4 @@ else: canOutPet = GameWorld.GetMap().GetMapCanOutPet() return canOutPet - -#--------------------------------------------------------------------- -## 刷新宠物信息并通知客户端 -# @param rolePet 宠物实例 -# @return 无返回值 -# @remarks 刷新宠物信息并通知客户端 -def __RefreshAndSyncPetInfo(rolePet): - #---刷新宠物信息(不通知客户端)--- - InitRolePet(rolePet, False) - - return - -#--------------------------------------------------------------------- - -- Gitblit v1.8.0