From 063c37a60dfad1fad8e31ee235e0d69c3ae35481 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 12 一月 2023 17:12:08 +0800 Subject: [PATCH] 9762 【BT8】【后端】藏宝阁(古宝特殊效果属性支持) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py | 38 +++++++++++++++++++++++++++++++++----- 1 files changed, 33 insertions(+), 5 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py index e027e7a..bb6fab2 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py @@ -787,6 +787,21 @@ totalPetLV += classLV return totalPetLV +def GetTotalPetCount(curPlayer): + totalPetCount = 0 + 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) + petIpyData = GetPetIpydata(petItemNPCID) + if not petIpyData: + continue + totalPetCount += 1 + return totalPetCount + def IsPetMaxLV(curPlayer, petNPCID): petItem = GetPetDataItemByNPCID(curPlayer, petNPCID) if not petItem: @@ -858,7 +873,9 @@ skillAttrList = [{} for _ in range(4)] allAttrListPetSkin = [{} for _ in range(4)] allAttrListTrain = [{} for _ in range(4)] - totalMinAtk, totalMaxAtk = GetPetAtkValue(curPlayer) + customAttrDictPet = {} + totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer) + customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMinAtk, totalMinAtk, allAttrListPet) PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMaxAtk, totalMaxAtk, allAttrListPet) totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数 @@ -923,7 +940,7 @@ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetTarin, allAttrListTrain) - PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet) + PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet, customAttrDict=customAttrDictPet) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSoul, allAttrListPetSoul) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSign, allAttrListPetSign) @@ -962,9 +979,10 @@ ## 获取灵兽出战时的攻击力 def GetPetAtkValue(curPlayer): + qualityAttrInfo = {} if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet): #GameWorld.DebugLog(' 宠物功能未开启') - return 0, 0 + return 0, 0, qualityAttrInfo classAddAtk = 0 petPackIndex = ShareDefine.rptPet @@ -976,10 +994,20 @@ petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID) classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1) - classAddAtk += (classIpyData.GetAtkAdd() if classIpyData else 0) + atkAdd = classIpyData.GetAtkAdd() if classIpyData else 0 + classAddAtk += atkAdd + + petIpyData = GetPetIpydata(petItemNPCID) + if petIpyData: + quality = petIpyData.GetQuality() + if quality not in qualityAttrInfo: + qualityAttrInfo[quality] = {} + qualityAttrDict = qualityAttrInfo[quality] + qualityAttrDict[ShareDefine.Def_Effect_PetAtk] = qualityAttrDict.get(ShareDefine.Def_Effect_PetAtk, 0) + atkAdd + totalMinAtk = classAddAtk totalMaxAtk = classAddAtk - return totalMinAtk, totalMaxAtk + return totalMinAtk, totalMaxAtk, qualityAttrInfo def OnPlayerPetLogin(curPlayer): ## 登录处理 -- Gitblit v1.8.0