From a1f053eb420898b323a18b9e260aaec34af2992a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 08 十月 2023 14:49:30 +0800 Subject: [PATCH] 9896 【BT0.1】【主干】坐骑、灵宠、称号升星 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 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 bb6fab2..0e5c0d2 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py @@ -121,6 +121,7 @@ initClass = petIpyData.GetInitRank() if classlv == -1 else classlv#初始阶级 newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, initClass - 1)) #代码里从0开始 newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, petIpyData.GetQuality()) # 宠物品质 + newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, 1) # 起始1星 petSkillList = petIpyData.GetSkillID() @@ -873,6 +874,7 @@ skillAttrList = [{} for _ in range(4)] allAttrListPetSkin = [{} for _ in range(4)] allAttrListTrain = [{} for _ in range(4)] + allAttrListStar = [{} for _ in range(4)] customAttrDictPet = {} totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer) customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo @@ -972,7 +974,19 @@ if skinIpyData: for attrID, attrValue in skinIpyData.GetAttrInfo().items(): PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin) + + #星级 + curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star) + starIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petItemNPCID, curStar) + if starIpyData: + starAttrType = starIpyData.GetStarAttrType() + starAttrValue = starIpyData.GetStarAttrValue() + for i, attrID in enumerate(starAttrType): + attrValue = starAttrValue[i] + PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar) + PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin) + PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar) curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Pet, fpExTotal) # GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict))) return @@ -1104,6 +1118,45 @@ RefreshPetItemAddAttr(curPlayer, True) return +#// A7 06 宠物升星 #tagCMPetStarUp +# +#struct tagCMPetStarUp +#{ +# tagHead Head; +# BYTE PetItemIndex; //宠物数据背包索引 +#}; +def OnPetStarUp(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + playerID = curPlayer.GetPlayerID() + PetItemIndex = clientData.PetItemIndex + petDataItem = GetPetDataItemByIndex(curPlayer, PetItemIndex) + if not petDataItem: + return + petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID) + curStar = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_Star) + ipyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, curStar) + if not ipyData: + return + nextStar = curStar + 1 + nextIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, nextStar) + needItemList = ipyData.GetStarUpNeedItemList() + if not needItemList or not nextIpyData: + GameWorld.DebugLog("灵宠已满星,无法升星. petNPCID=%s,curStar=%s" % (petNPCID, curStar), playerID) + return + itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) + lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack) + if lackItemDict: + GameWorld.DebugLog("灵宠升星所需物品不足! petNPCID=%s,curStar=%s,needItemList=%s,lackItemDict=%s" + % (petNPCID, curStar, needItemList, lackItemDict), playerID) + return + + ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "PetStarUp") + petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, nextStar) + GameWorld.DebugLog("灵宠升星. petNPCID=%s,curStar=%s,nextStar=%s" % (petNPCID, curStar, nextStar), playerID) + + RefreshPetItemAddAttr(curPlayer, True) + return + def Sync_PetTrainData(curPlayer): clientPack = ChPyNetSendPack.tagMCPetTrainInfo() clientPack.TrainLVList = [] -- Gitblit v1.8.0