From 71ea04a0d2f445b3b3947175bacc6829a5996af9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 三月 2019 21:26:48 +0800
Subject: [PATCH] 6385 【后端】【2.0】五行灵根开发(修复洗点报错 )
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py | 59 +++++++++++++++++------------------------------------------
1 files changed, 17 insertions(+), 42 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 bb71268..f042785 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -517,48 +517,23 @@
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 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)
+ 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
#---------------------------------------------------------------------
--
Gitblit v1.8.0