From 5c4ea9b4fd7f98d82e64878a5ce29d5747506f8c Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期四, 24 一月 2019 14:08:09 +0800 Subject: [PATCH] 5924 【后端】【1.5.100】诛仙Boss功能(2秒不打,停止掉血) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 52 insertions(+), 7 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 023be02..5307f32 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py @@ -517,13 +517,58 @@ def DoLogic_PetInfo_OnLogin(curPlayer, tick): petMgr = curPlayer.GetPetMgr() - - for index in range(0, petMgr.PetList_Cnt()): - rolePet = petMgr.PetList_At(index) - #刷新宠物信息并通知客户端 - __RefreshAndSyncPetInfo(rolePet) - #自动出战宠物 - __AutoSummonPet_OnLogin(curPlayer, rolePet) + 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) + + 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 #--------------------------------------------------------------------- -- Gitblit v1.8.0