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