From c63ffd10aecb12b2e09dae603cf9a0f824f6482c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 15:46:15 +0800
Subject: [PATCH] 16 卡牌服务端(合成目标物品与材料物品不在同一背包时支持合成;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py |  118 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 89 insertions(+), 29 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 7f0b599..cbd6e77 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -217,7 +217,7 @@
                         ),
 
                 "HeroQuality":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("list", "InitTalentWeight", 0),
                         ("BYTE", "InitStarUpper", 0),
                         ("DWORD", "InitAddPer", 0),
@@ -230,21 +230,21 @@
                         ),
 
                 "HeroQualityBreak":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "BreakLV", 1),
-                        ("WORD", "LVMax", 0),
-                        ("list", "UPCostItem", 0),
+                        ("WORD", "UPLVNeed", 0),
+                        ("list", "UPCostItemList", 0),
                         ),
 
                 "HeroQualityAwake":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "AwakeLV", 1),
                         ("list", "UPCostItem", 0),
                         ("DWORD", "RebirthCostMoney", 0),
                         ),
 
                 "HeroQualityLV":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "HeroLV", 1),
                         ("list", "UPCostItem", 0),
                         ("list", "AttrIDList", 0),
@@ -254,6 +254,22 @@
                 "LineupRecommend":(
                         ("DWORD", "RecommendID", 1),
                         ("list", "HeroIDList", 0),
+                        ),
+
+                "HeroFates":(
+                        ("WORD", "FatesID", 1),
+                        ("BYTE", "FatesQuality", 0),
+                        ("list", "HeroIDList", 0),
+                        ("list", "AwardItemList", 0),
+                        ("list", "AttrIDList", 0),
+                        ("list", "LVAttrValueList", 0),
+                        ),
+
+                "HeroFatesQualityLV":(
+                        ("BYTE", "FatesQuality", 1),
+                        ("BYTE", "FatesLV", 1),
+                        ("BYTE", "NeedStarTotal", 0),
+                        ("BYTE", "NeedHeroCnt", 0),
                         ),
 
                 "PlayerAttr":(
@@ -856,6 +872,7 @@
                         ("DWORD", "MaxHP", 0),
                         ("DWORD", "Atk", 0),
                         ("DWORD", "Def", 0),
+                        ("BYTE", "ReHeroStar", 0),
                         ("BYTE", "ReHeroBreakLV", 0),
                         ("BYTE", "ReHeroAwakeLV", 0),
                         ("DWORD", "ReAtk", 0),
@@ -2447,7 +2464,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetInitTalentWeight(self): return self.attrTuple[1] #  初始天赋数权重 list
     def GetInitStarUpper(self): return self.attrTuple[2] #  初始星级上限 BYTE
     def GetInitAddPer(self): return self.attrTuple[3] #  卡牌初始加成万分率 DWORD
@@ -2465,10 +2482,10 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetBreakLV(self): return self.attrTuple[1] # 突破等级 DWORD
-    def GetLVMax(self): return self.attrTuple[2] #  等级上限 WORD
-    def GetUPCostItem(self): return self.attrTuple[3] #  突破到下级消耗道具 list
+    def GetUPLVNeed(self): return self.attrTuple[2] #  突破到下级需要等级 WORD
+    def GetUPCostItemList(self): return self.attrTuple[3] #  突破到下级消耗道具 list
 
 # 武将品质觉醒表
 class IPY_HeroQualityAwake():
@@ -2477,7 +2494,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetAwakeLV(self): return self.attrTuple[1] # 觉醒等级 DWORD
     def GetUPCostItem(self): return self.attrTuple[2] #  觉醒到下级消耗道具 list
     def GetRebirthCostMoney(self): return self.attrTuple[3] # 重生消耗货币 DWORD
@@ -2489,7 +2506,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetHeroLV(self): return self.attrTuple[1] # 武将等级 DWORD
     def GetUPCostItem(self): return self.attrTuple[2] #  升级到下级消耗道具 list
     def GetAttrIDList(self): return self.attrTuple[3] #  武将属性ID列表 list
@@ -2504,6 +2521,32 @@
         
     def GetRecommendID(self): return self.attrTuple[0] # 推荐ID DWORD
     def GetHeroIDList(self): return self.attrTuple[1] #  推荐武将ID列表 list
+
+# 武将宿缘表
+class IPY_HeroFates():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetFatesID(self): return self.attrTuple[0] # 宿缘ID WORD
+    def GetFatesQuality(self): return self.attrTuple[1] # 宿缘品质 BYTE
+    def GetHeroIDList(self): return self.attrTuple[2] #  武将ID组合列表 list
+    def GetAwardItemList(self): return self.attrTuple[3] #  激活奖励物品列表 list
+    def GetAttrIDList(self): return self.attrTuple[4] #  属性ID列表 list
+    def GetLVAttrValueList(self): return self.attrTuple[5] #  每级属性值列表 list
+
+# 武将宿缘品质等级表
+class IPY_HeroFatesQualityLV():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetFatesQuality(self): return self.attrTuple[0] # 宿缘品质 BYTE
+    def GetFatesLV(self): return self.attrTuple[1] # 宿缘等级 BYTE
+    def GetNeedStarTotal(self): return self.attrTuple[2] #  升到该级所需总星数 BYTE
+    def GetNeedHeroCnt(self): return self.attrTuple[3] #  所需品质武将数 BYTE
 
 # 属性条目表
 class IPY_PlayerAttr():
@@ -3396,23 +3439,24 @@
     def GetMaxHP(self): return self.attrTuple[2] # 生命 DWORD
     def GetAtk(self): return self.attrTuple[3] # 攻击 DWORD
     def GetDef(self): return self.attrTuple[4] # 防御 DWORD
-    def GetReHeroBreakLV(self): return self.attrTuple[5] # 参考突破等级 BYTE
-    def GetReHeroAwakeLV(self): return self.attrTuple[6] # 参考觉醒等级 BYTE
-    def GetReAtk(self): return self.attrTuple[7] # 参考攻击 DWORD
-    def GetReDef(self): return self.attrTuple[8] # 防御 DWORD
-    def GetReMaxHP(self): return self.attrTuple[9] # 生命 DWORD
-    def GetReStunRate(self): return self.attrTuple[10] # DWORD
-    def GetReSuperHitRate(self): return self.attrTuple[11] # DWORD
-    def GetReComboRate(self): return self.attrTuple[12] # DWORD
-    def GetReMissRate(self): return self.attrTuple[13] # DWORD
-    def GetReParryRate(self): return self.attrTuple[14] # DWORD
-    def GetReSuckHPPer(self): return self.attrTuple[15] # DWORD
-    def GetReStunRateDef(self): return self.attrTuple[16] # DWORD
-    def GetReSuperHitRateDef(self): return self.attrTuple[17] # DWORD
-    def GetReComboRateDef(self): return self.attrTuple[18] # DWORD
-    def GetReMissRateDef(self): return self.attrTuple[19] # DWORD
-    def GetReParryRateDef(self): return self.attrTuple[20] # DWORD
-    def GetReSuckHPPerDef(self): return self.attrTuple[21] # DWORD
+    def GetReHeroStar(self): return self.attrTuple[5] # 参考星级 BYTE
+    def GetReHeroBreakLV(self): return self.attrTuple[6] # 参考突破等级 BYTE
+    def GetReHeroAwakeLV(self): return self.attrTuple[7] # 参考觉醒等级 BYTE
+    def GetReAtk(self): return self.attrTuple[8] # 参考攻击 DWORD
+    def GetReDef(self): return self.attrTuple[9] # 防御 DWORD
+    def GetReMaxHP(self): return self.attrTuple[10] # 生命 DWORD
+    def GetReStunRate(self): return self.attrTuple[11] # DWORD
+    def GetReSuperHitRate(self): return self.attrTuple[12] # DWORD
+    def GetReComboRate(self): return self.attrTuple[13] # DWORD
+    def GetReMissRate(self): return self.attrTuple[14] # DWORD
+    def GetReParryRate(self): return self.attrTuple[15] # DWORD
+    def GetReSuckHPPer(self): return self.attrTuple[16] # DWORD
+    def GetReStunRateDef(self): return self.attrTuple[17] # DWORD
+    def GetReSuperHitRateDef(self): return self.attrTuple[18] # DWORD
+    def GetReComboRateDef(self): return self.attrTuple[19] # DWORD
+    def GetReMissRateDef(self): return self.attrTuple[20] # DWORD
+    def GetReParryRateDef(self): return self.attrTuple[21] # DWORD
+    def GetReSuckHPPerDef(self): return self.attrTuple[22] # DWORD
 
 # 特殊地图玩家属性公式表
 class IPY_SpecMapPlayerAttrFormat():
@@ -5529,6 +5573,8 @@
         self.__LoadFileData("HeroQualityAwake", onlyCheck)
         self.__LoadFileData("HeroQualityLV", onlyCheck)
         self.__LoadFileData("LineupRecommend", onlyCheck)
+        self.__LoadFileData("HeroFates", onlyCheck)
+        self.__LoadFileData("HeroFatesQualityLV", onlyCheck)
         self.__LoadFileData("PlayerAttr", onlyCheck)
         self.__LoadFileData("FightPowerRatio", onlyCheck)
         self.__LoadFileData("MainChapter", onlyCheck)
@@ -6076,6 +6122,20 @@
         self.CheckLoadData("LineupRecommend")
         return self.ipyLineupRecommendCache[index]
 
+    def GetHeroFatesCount(self):
+        self.CheckLoadData("HeroFates")
+        return self.ipyHeroFatesLen
+    def GetHeroFatesByIndex(self, index):
+        self.CheckLoadData("HeroFates")
+        return self.ipyHeroFatesCache[index]
+
+    def GetHeroFatesQualityLVCount(self):
+        self.CheckLoadData("HeroFatesQualityLV")
+        return self.ipyHeroFatesQualityLVLen
+    def GetHeroFatesQualityLVByIndex(self, index):
+        self.CheckLoadData("HeroFatesQualityLV")
+        return self.ipyHeroFatesQualityLVCache[index]
+
     def GetPlayerAttrCount(self):
         self.CheckLoadData("PlayerAttr")
         return self.ipyPlayerAttrLen

--
Gitblit v1.8.0