From ab57c59ab33f5e4bf7e3bfd5514b04cb3d38dc2b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 二月 2026 18:19:05 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py |  274 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 224 insertions(+), 50 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 707ea02..1aa6ea4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -146,6 +146,12 @@
                         ("DWORD", "FightPower", 0),
                         ),
 
+                "PresetUnlock":(
+                        ("BYTE", "PresetType", 1),
+                        ("BYTE", "UnlockType", 0),
+                        ("DWORD", "UnlockValue", 0),
+                        ),
+
                 "Hero":(
                         ("DWORD", "HeroID", 1),
                         ("char", "Name", 0),
@@ -182,6 +188,7 @@
                         ("list", "AttrIDList", 0),
                         ("list", "AttrValueList", 0),
                         ("DWORD", "SkillID", 0),
+                        ("list", "SkillIDExList", 0),
                         ),
 
                 "HeroAwake":(
@@ -283,6 +290,7 @@
                         ("float", "AtkRatio", 0),
                         ("float", "MaxHPRatio", 0),
                         ("float", "DefRatio", 0),
+                        ("float", "AtkSpeedRatio", 0),
                         ("float", "StunRateRatio", 0),
                         ("float", "SuperHitRateRatio", 0),
                         ("float", "ComboRateRatio", 0),
@@ -601,6 +609,39 @@
                         ("list", "BaseAttrValue", 0),
                         ("list", "LegendAttrID", 0),
                         ("list", "LegendAttrValue", 0),
+                        ),
+
+                "MGGanwuLV":(
+                        ("BYTE", "GanwuLV", 1),
+                        ("DWORD", "NextNeedExp", 0),
+                        ("DWORD", "AtkBase", 0),
+                        ("DWORD", "DefBase", 0),
+                        ("DWORD", "HPBase", 0),
+                        ("DWORD", "AtkSpeedBase", 0),
+                        ("dict", "BatAttrBaseDict", 0),
+                        ),
+
+                "MGGuayuQuality":(
+                        ("BYTE", "ItemColor", 1),
+                        ("float", "AtkPlus", 0),
+                        ("float", "DefPlus", 0),
+                        ("float", "HPPlus", 0),
+                        ("float", "AtkSpeedPlus", 0),
+                        ("list", "AttrRange", 0),
+                        ("dict", "AttrRangeDict", 0),
+                        ),
+
+                "MGGuayuType":(
+                        ("BYTE", "ItemType", 1),
+                        ("BYTE", "EquipPlace", 0),
+                        ("float", "BaseAttrProportion", 0),
+                        ("DWORD", "FixedAttrID", 0),
+                        ("list", "AttrIDLib", 0),
+                        ),
+
+                "MGLingyingQuality":(
+                        ("DWORD", "Lingying", 1),
+                        ("list", "ItemColorWeightList", 0),
                         ),
 
                 "EquipLegendAttrCount":(
@@ -2082,6 +2123,13 @@
                         ("dict", "Attr", 0),
                         ),
 
+                "FamilyCross":(
+                        ("char", "AppID", 1),
+                        ("WORD", "ZoneID", 1),
+                        ("DWORD", "CrossServerID", 0),
+                        ("list", "ServerIDList", 0),
+                        ),
+
                 "Family":(
                         ("BYTE", "FamilyLV", 1),
                         ("BYTE", "MemberMax", 0),
@@ -2405,6 +2453,17 @@
     def GetBuffRetain(self): return self.attrTuple[40] # Buff保留规则 BYTE
     def GetFightPower(self): return self.attrTuple[41] # 技能战斗力 DWORD
 
+# 预设解锁
+class IPY_PresetUnlock():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetPresetType(self): return self.attrTuple[0] # 预设类型 BYTE
+    def GetUnlockType(self): return self.attrTuple[1] #  解锁类型 BYTE
+    def GetUnlockValue(self): return self.attrTuple[2] #  解锁所需值 DWORD
+
 # 武将表
 class IPY_Hero():
     
@@ -2456,7 +2515,8 @@
     def GetBreakLV(self): return self.attrTuple[1] #  突破等级 BYTE
     def GetAttrIDList(self): return self.attrTuple[2] #  属性ID列表 list
     def GetAttrValueList(self): return self.attrTuple[3] #  属性值列表 list
-    def GetSkillID(self): return self.attrTuple[4] #  激活技能ID DWORD
+    def GetSkillID(self): return self.attrTuple[4] #  激活技能ID DWORD
+    def GetSkillIDExList(self): return self.attrTuple[5] #  激活的额外技能ID列表 list
 
 # 武将觉醒天赋表
 class IPY_HeroAwake():
@@ -2623,50 +2683,51 @@
     def GetAtkRatio(self): return self.attrTuple[1] # 攻击系数 float
     def GetMaxHPRatio(self): return self.attrTuple[2] # float
     def GetDefRatio(self): return self.attrTuple[3] # float
-    def GetStunRateRatio(self): return self.attrTuple[4] # float
-    def GetSuperHitRateRatio(self): return self.attrTuple[5] # float
-    def GetComboRateRatio(self): return self.attrTuple[6] # float
-    def GetMissRateRatio(self): return self.attrTuple[7] # float
-    def GetParryRateRatio(self): return self.attrTuple[8] # float
-    def GetSuckHPPerRatio(self): return self.attrTuple[9] # float
-    def GetStunRateDefRatio(self): return self.attrTuple[10] # float
-    def GetSuperHitRateDefRatio(self): return self.attrTuple[11] # float
-    def GetComboRateDefRatio(self): return self.attrTuple[12] # float
-    def GetMissRateDefRatio(self): return self.attrTuple[13] # float
-    def GetParryRateDefRatio(self): return self.attrTuple[14] # float
-    def GetSuckHPPerDefRatio(self): return self.attrTuple[15] # float
-    def GetFinalDamPerRatio(self): return self.attrTuple[16] # float
-    def GetFinalDamPerDefRatio(self): return self.attrTuple[17] # float
-    def GetPhyDamPerRatio(self): return self.attrTuple[18] # float
-    def GetPhyDamPerDefRatio(self): return self.attrTuple[19] # float
-    def GetMagDamPerRatio(self): return self.attrTuple[20] # float
-    def GetMagDamPerDefRatio(self): return self.attrTuple[21] # float
-    def GetNormalSkillPerRatio(self): return self.attrTuple[22] # float
-    def GetNormalSkillPerDefRatio(self): return self.attrTuple[23] # float
-    def GetAngerSkillPerRatio(self): return self.attrTuple[24] # float
-    def GetAngerSkillPerDefRatio(self): return self.attrTuple[25] # float
-    def GetSuperDamPerRatio(self): return self.attrTuple[26] # float
-    def GetSuperDamPerDefRatio(self): return self.attrTuple[27] # float
-    def GetCurePerRatio(self): return self.attrTuple[28] # float
-    def GetCurePerDefRatio(self): return self.attrTuple[29] # float
-    def GetShieldPerRatio(self): return self.attrTuple[30] # float
-    def GetShieldPerDefRatio(self): return self.attrTuple[31] # float
-    def GetDOTPerRatio(self): return self.attrTuple[32] # float
-    def GetDOTPerDefRatio(self): return self.attrTuple[33] # float
-    def GetWeiFinalDamPerRatio(self): return self.attrTuple[34] # float
-    def GetWeiFinalDamPerDefRatio(self): return self.attrTuple[35] # float
-    def GetShuFinalDamPerRatio(self): return self.attrTuple[36] # float
-    def GetShuFinalDamPerDefRatio(self): return self.attrTuple[37] # float
-    def GetWuFinalDamPerRatio(self): return self.attrTuple[38] # float
-    def GetWuFinalDamPerDefRatio(self): return self.attrTuple[39] # float
-    def GetQunFinalDamPerRatio(self): return self.attrTuple[40] # float
-    def GetQunFinalDamPerDefRatio(self): return self.attrTuple[41] # float
-    def GetPVPDamPerRatio(self): return self.attrTuple[42] # float
-    def GetPVPDamPerDefRatio(self): return self.attrTuple[43] # float
-    def GetGuanchuanRatio(self): return self.attrTuple[44] # float
-    def GetGuanchuanDefRatio(self): return self.attrTuple[45] # float
-    def GetZhaojiaRatio(self): return self.attrTuple[46] # float
-    def GetZhaojiaDefRatio(self): return self.attrTuple[47] # float
+    def GetAtkSpeedRatio(self): return self.attrTuple[4] # float
+    def GetStunRateRatio(self): return self.attrTuple[5] # float
+    def GetSuperHitRateRatio(self): return self.attrTuple[6] # float
+    def GetComboRateRatio(self): return self.attrTuple[7] # float
+    def GetMissRateRatio(self): return self.attrTuple[8] # float
+    def GetParryRateRatio(self): return self.attrTuple[9] # float
+    def GetSuckHPPerRatio(self): return self.attrTuple[10] # float
+    def GetStunRateDefRatio(self): return self.attrTuple[11] # float
+    def GetSuperHitRateDefRatio(self): return self.attrTuple[12] # float
+    def GetComboRateDefRatio(self): return self.attrTuple[13] # float
+    def GetMissRateDefRatio(self): return self.attrTuple[14] # float
+    def GetParryRateDefRatio(self): return self.attrTuple[15] # float
+    def GetSuckHPPerDefRatio(self): return self.attrTuple[16] # float
+    def GetFinalDamPerRatio(self): return self.attrTuple[17] # float
+    def GetFinalDamPerDefRatio(self): return self.attrTuple[18] # float
+    def GetPhyDamPerRatio(self): return self.attrTuple[19] # float
+    def GetPhyDamPerDefRatio(self): return self.attrTuple[20] # float
+    def GetMagDamPerRatio(self): return self.attrTuple[21] # float
+    def GetMagDamPerDefRatio(self): return self.attrTuple[22] # float
+    def GetNormalSkillPerRatio(self): return self.attrTuple[23] # float
+    def GetNormalSkillPerDefRatio(self): return self.attrTuple[24] # float
+    def GetAngerSkillPerRatio(self): return self.attrTuple[25] # float
+    def GetAngerSkillPerDefRatio(self): return self.attrTuple[26] # float
+    def GetSuperDamPerRatio(self): return self.attrTuple[27] # float
+    def GetSuperDamPerDefRatio(self): return self.attrTuple[28] # float
+    def GetCurePerRatio(self): return self.attrTuple[29] # float
+    def GetCurePerDefRatio(self): return self.attrTuple[30] # float
+    def GetShieldPerRatio(self): return self.attrTuple[31] # float
+    def GetShieldPerDefRatio(self): return self.attrTuple[32] # float
+    def GetDOTPerRatio(self): return self.attrTuple[33] # float
+    def GetDOTPerDefRatio(self): return self.attrTuple[34] # float
+    def GetWeiFinalDamPerRatio(self): return self.attrTuple[35] # float
+    def GetWeiFinalDamPerDefRatio(self): return self.attrTuple[36] # float
+    def GetShuFinalDamPerRatio(self): return self.attrTuple[37] # float
+    def GetShuFinalDamPerDefRatio(self): return self.attrTuple[38] # float
+    def GetWuFinalDamPerRatio(self): return self.attrTuple[39] # float
+    def GetWuFinalDamPerDefRatio(self): return self.attrTuple[40] # float
+    def GetQunFinalDamPerRatio(self): return self.attrTuple[41] # float
+    def GetQunFinalDamPerDefRatio(self): return self.attrTuple[42] # float
+    def GetPVPDamPerRatio(self): return self.attrTuple[43] # float
+    def GetPVPDamPerDefRatio(self): return self.attrTuple[44] # float
+    def GetGuanchuanRatio(self): return self.attrTuple[45] # float
+    def GetGuanchuanDefRatio(self): return self.attrTuple[46] # float
+    def GetZhaojiaRatio(self): return self.attrTuple[47] # float
+    def GetZhaojiaDefRatio(self): return self.attrTuple[48] # float
 
 # 主线章节表
 class IPY_MainChapter():
@@ -3076,6 +3137,59 @@
     def GetBaseAttrValue(self): return self.attrTuple[4] # 基础属性值 list
     def GetLegendAttrID(self): return self.attrTuple[5] # 传奇属性ID list
     def GetLegendAttrValue(self): return self.attrTuple[6] # 传奇属性值 list
+
+# 感悟等级表
+class IPY_MGGanwuLV():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetGanwuLV(self): return self.attrTuple[0] # 感悟等级 BYTE
+    def GetNextNeedExp(self): return self.attrTuple[1] # 升到下一级所需经验 DWORD
+    def GetAtkBase(self): return self.attrTuple[2] # 攻击基础值 DWORD
+    def GetDefBase(self): return self.attrTuple[3] # 防御基础值 DWORD
+    def GetHPBase(self): return self.attrTuple[4] # 生命基础值 DWORD
+    def GetAtkSpeedBase(self): return self.attrTuple[5] # 先攻基础值 DWORD
+    def GetBatAttrBaseDict(self): return self.attrTuple[6] # 其他战斗属性基础值字典,{属性ID:基础值, ...} dict
+
+# 卦玉品质表
+class IPY_MGGuayuQuality():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetItemColor(self): return self.attrTuple[0] # 品质 BYTE
+    def GetAtkPlus(self): return self.attrTuple[1] # 攻击加成 float
+    def GetDefPlus(self): return self.attrTuple[2] # 防御加成 float
+    def GetHPPlus(self): return self.attrTuple[3] # 生命加成 float
+    def GetAtkSpeedPlus(self): return self.attrTuple[4] # 先攻加成 float
+    def GetAttrRange(self): return self.attrTuple[5] # 其他属性通用加成范围,下限|上限 list
+    def GetAttrRangeDict(self): return self.attrTuple[6] # 其他指定属性加成范围字典,{指定属性ID:[范围下限, 上限], ...} dict
+
+# 卦玉类型表
+class IPY_MGGuayuType():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetItemType(self): return self.attrTuple[0] # 类型 BYTE
+    def GetEquipPlace(self): return self.attrTuple[1] # 装备位 BYTE
+    def GetBaseAttrProportion(self): return self.attrTuple[2] # 基础四维属性占比 float
+    def GetFixedAttrID(self): return self.attrTuple[3] # 固定属性ID DWORD
+    def GetAttrIDLib(self): return self.attrTuple[4] # 随机属性ID库,[属性ID, ...] list
+
+# 灵应品质表
+class IPY_MGLingyingQuality():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetLingying(self): return self.attrTuple[0] # 灵应段值 DWORD
+    def GetItemColorWeightList(self): return self.attrTuple[1] # 品质权重列表 list
 
 # 装备传奇属性条数表
 class IPY_EquipLegendAttrCount():
@@ -5326,7 +5440,19 @@
     def GetCostItem(self): return self.attrTuple[3] # 消耗材料 dict
     def GetAttr(self): return self.attrTuple[4] # 属性 dict
 
-# 仙盟等级表
+# 跨服公会表
+class IPY_FamilyCross():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetAppID(self): return self.attrTuple[0] # AppID char
+    def GetZoneID(self): return self.attrTuple[1] # 分区ID WORD
+    def GetCrossServerID(self): return self.attrTuple[2] # 跨服服务器ID DWORD
+    def GetServerIDList(self): return self.attrTuple[3] # 互通服务器ID列表 list
+
+# 公会等级表
 class IPY_Family():
     
     def __init__(self):
@@ -5340,7 +5466,7 @@
     def GetNeedExp(self): return self.attrTuple[4] # 升级所需经验 DWORD
     def GetZhenbaogeWeights(self): return self.attrTuple[5] # 珍宝阁总权重 DWORD
 
-# 仙盟徽章表
+# 公会徽章表
 class IPY_FamilyEmblem():
     
     def __init__(self):
@@ -5352,7 +5478,7 @@
     def GetExpireMinutes(self): return self.attrTuple[2] # 有效时长,分钟 DWORD
     def GetCustomFamilyID(self): return self.attrTuple[3] # 定制仙盟ID DWORD
 
-# 仙盟捐献表
+# 公会捐献表
 class IPY_FamilyDonate():
     
     def __init__(self):
@@ -5365,7 +5491,7 @@
     def GetMoneyValue(self): return self.attrTuple[3] # 消耗货币值 DWORD
     def GetAwardItemList(self): return self.attrTuple[4] # 获得奖励列表[[物品ID,个数], ...] list
 
-# 仙盟珍宝阁砍价表
+# 公会珍宝阁砍价表
 class IPY_FamilyZhenbaogeCut():
     
     def __init__(self):
@@ -5377,7 +5503,7 @@
     def GetMinRatio(self): return self.attrTuple[2] # 保底比值 float
     def GetRandRatio(self): return self.attrTuple[3] # 随机比值 float
 
-# 仙盟珍宝阁物品表
+# 公会珍宝阁物品表
 class IPY_FamilyZhenbaogeItem():
     
     def __init__(self):
@@ -5692,6 +5818,7 @@
         self.__LoadFileData("NPC", onlyCheck)
         self.__LoadFileData("NPCStronger", onlyCheck)
         self.__LoadFileData("Skill", onlyCheck)
+        self.__LoadFileData("PresetUnlock", onlyCheck)
         self.__LoadFileData("Hero", onlyCheck)
         self.__LoadFileData("HeroTalent", onlyCheck)
         self.__LoadFileData("HeroBreak", onlyCheck)
@@ -5735,6 +5862,10 @@
         self.__LoadFileData("EquipColor", onlyCheck)
         self.__LoadFileData("EquipPlace", onlyCheck)
         self.__LoadFileData("AppointItem", onlyCheck)
+        self.__LoadFileData("MGGanwuLV", onlyCheck)
+        self.__LoadFileData("MGGuayuQuality", onlyCheck)
+        self.__LoadFileData("MGGuayuType", onlyCheck)
+        self.__LoadFileData("MGLingyingQuality", onlyCheck)
         self.__LoadFileData("EquipLegendAttrCount", onlyCheck)
         self.__LoadFileData("EquipLegendAttrType", onlyCheck)
         self.__LoadFileData("EquipLegendAttrLib", onlyCheck)
@@ -5889,6 +6020,7 @@
         self.__LoadFileData("EquipShenEvolve", onlyCheck)
         self.__LoadFileData("EquipStarUp", onlyCheck)
         self.__LoadFileData("EquipPlusEvolve", onlyCheck)
+        self.__LoadFileData("FamilyCross", onlyCheck)
         self.__LoadFileData("Family", onlyCheck)
         self.__LoadFileData("FamilyEmblem", onlyCheck)
         self.__LoadFileData("FamilyDonate", onlyCheck)
@@ -6173,6 +6305,13 @@
     def GetSkillByIndex(self, index):
         self.CheckLoadData("Skill")
         return self.ipySkillCache[index]
+
+    def GetPresetUnlockCount(self):
+        self.CheckLoadData("PresetUnlock")
+        return self.ipyPresetUnlockLen
+    def GetPresetUnlockByIndex(self, index):
+        self.CheckLoadData("PresetUnlock")
+        return self.ipyPresetUnlockCache[index]
 
     def GetHeroCount(self):
         self.CheckLoadData("Hero")
@@ -6474,6 +6613,34 @@
     def GetAppointItemByIndex(self, index):
         self.CheckLoadData("AppointItem")
         return self.ipyAppointItemCache[index]
+
+    def GetMGGanwuLVCount(self):
+        self.CheckLoadData("MGGanwuLV")
+        return self.ipyMGGanwuLVLen
+    def GetMGGanwuLVByIndex(self, index):
+        self.CheckLoadData("MGGanwuLV")
+        return self.ipyMGGanwuLVCache[index]
+
+    def GetMGGuayuQualityCount(self):
+        self.CheckLoadData("MGGuayuQuality")
+        return self.ipyMGGuayuQualityLen
+    def GetMGGuayuQualityByIndex(self, index):
+        self.CheckLoadData("MGGuayuQuality")
+        return self.ipyMGGuayuQualityCache[index]
+
+    def GetMGGuayuTypeCount(self):
+        self.CheckLoadData("MGGuayuType")
+        return self.ipyMGGuayuTypeLen
+    def GetMGGuayuTypeByIndex(self, index):
+        self.CheckLoadData("MGGuayuType")
+        return self.ipyMGGuayuTypeCache[index]
+
+    def GetMGLingyingQualityCount(self):
+        self.CheckLoadData("MGLingyingQuality")
+        return self.ipyMGLingyingQualityLen
+    def GetMGLingyingQualityByIndex(self, index):
+        self.CheckLoadData("MGLingyingQuality")
+        return self.ipyMGLingyingQualityCache[index]
 
     def GetEquipLegendAttrCountCount(self):
         self.CheckLoadData("EquipLegendAttrCount")
@@ -7553,6 +7720,13 @@
         self.CheckLoadData("EquipPlusEvolve")
         return self.ipyEquipPlusEvolveCache[index]
 
+    def GetFamilyCrossCount(self):
+        self.CheckLoadData("FamilyCross")
+        return self.ipyFamilyCrossLen
+    def GetFamilyCrossByIndex(self, index):
+        self.CheckLoadData("FamilyCross")
+        return self.ipyFamilyCrossCache[index]
+
     def GetFamilyCount(self):
         self.CheckLoadData("Family")
         return self.ipyFamilyLen

--
Gitblit v1.8.0