From 320a417a53a57a9cb7d7759f430afe5f6e6399a6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 29 一月 2019 16:28:30 +0800 Subject: [PATCH] 6087 【后端】【1.5.200】春节红包雨活动(额度特效增加红包类型参数) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 53 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 a43d19e..5307f32 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py @@ -381,6 +381,7 @@ 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()) @@ -516,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