hxp
2019-06-06 a0a1e6c3440172933aabec644b7cd279ea9f5263
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -28,7 +28,6 @@
import IPY_GameWorld
import ChConfig
import GameWorld
import ReadChConfig
import BuffSkill
import SkillShell
import PlayerPet
@@ -47,6 +46,7 @@
import BaseAttack
import PassiveBuffEffMng
import ChNetSendPack
import IpyGameDataPY
#---------------------------------------------------------------------
DefPetRebornHPRate = 100  # 宠物死亡复活血量百分比
@@ -240,7 +240,7 @@
# @return 返回值无意义
# @remarks 初始化宠物属性
def InitRolePet(rolePet, canSyncClient=True):
    #---初始化时钟,致命一击倍率---
    #---初始化时钟---
    NPCCommon.InitNPC(rolePet)
    
    #---初始化仇恨列表---
@@ -461,7 +461,7 @@
# @return BOOL 是否可出战
# @remarks 检查当前指定宠物是否可出战
def CheckPetCanFight(curPlayer, curPetObj):
    if not GameWorld.GetMap().GetMapCanOutPet():
    if not GetMapCanOutPet(curPlayer):
        #Pet_liubo_314885 此地图禁止宠物
        PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
        return False
@@ -534,41 +534,6 @@
            __RefreshAndSyncPetInfo(rolePet)
            #自动出战宠物
            __AutoSummonPet_OnLogin(curPlayer, rolePet)
    if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Pet):
        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Pet, 1)
        #等级不能超上限,技能删了重新学
        petPackIndex = ShareDefine.rptPet
        petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
        for i in range(petPack.GetCount()):
            petItem = petPack.GetAt(i)
            if petItem.IsEmpty():
                continue
            petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
            curClassLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) + 1
            petIpyData = PlayerPet.GetPetIpydata(petItemNPCID)
            if not petIpyData:
                continue
            maxLV = petIpyData.GetMaxRank()
            if curClassLV > maxLV:
                petItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, maxLV - 1))
                petItem.SetUserAttr(ShareDefine.Def_IudetPet_Exp, 0)
                GameWorld.Log('   老号宠物等级超过上限,宠物ID=%s,原LV=%s,重置为=%s'%(petItemNPCID, curClassLV, maxLV))
                curClassLV = maxLV
            petItem.ClearUserAttr(ShareDefine.Def_IudetPet_Skill)
            petSkillList = petIpyData.GetSkillID()
            petSkillUnLockList = petIpyData.GetSkillUnLock()
            for i, skillid in enumerate(petSkillList):
                limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
                if curClassLV < limitPetClassLV:
                    continue
                petItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillid)
        if ReCallFightPet(curPlayer):
            PlayerPet.AutoSummonPet(curPlayer)
        # 重刷战力
        PlayerPet.SetPetSkillFightPower(curPlayer)    # 技能战力重算
        PlayerPet.RefreshPetItemAddAttr(curPlayer, True)
    return
#---------------------------------------------------------------------
@@ -582,7 +547,7 @@
    if not rolePet.GetIsBattle():
        return
    
    if not GameWorld.GetMap().GetMapCanOutPet():
    if not GetMapCanOutPet(curPlayer):
        #此地图禁止宠物
        return
    #召唤宠物出战
@@ -614,7 +579,7 @@
# @remarks 
def DoLogic_PetLoadMapOK(curPlayer):
    
    if GameWorld.GetMap().GetMapCanOutPet():
    if GetMapCanOutPet(curPlayer):
        #此地图宠物可以上
        PlayerPet.AutoSummonPet(curPlayer)
        return
@@ -627,6 +592,16 @@
    PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
    return
def GetMapCanOutPet(curPlayer):
    ## 检查本地图可否出战宠物,支持前端自定义场景
    customMapID = PlayerControl.GetCustomMapID(curPlayer)
    if customMapID:
        ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
        canOutPet = True if ipyMapData and ipyMapData.GetCanOutPet() else False
    else:
        canOutPet = GameWorld.GetMap().GetMapCanOutPet()
    return canOutPet
#---------------------------------------------------------------------
## 刷新宠物信息并通知客户端
#  @param rolePet 宠物实例