From 921ba9c6e954f2f1377cb08d5a8476c9e6c2b30e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 三月 2019 17:44:27 +0800
Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(给非拍卖物品为拍品时优化)
---
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