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