From c69a35c87860659271cbb58d0b0f13a9c65cdb35 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 04 一月 2026 14:44:17 +0800
Subject: [PATCH] 389 流向记录(增加主线装备分解流向支持:根据当前祝福等级取倒数x个品质记录;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 175 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 136 insertions(+), 39 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4dba3d9..ab8a339 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,22 +230,21 @@
),
"HeroQualityBreak":(
- ("DWORD", "Quality", 1),
+ ("BYTE", "Quality", 1),
("DWORD", "BreakLV", 1),
- ("WORD", "LVMax", 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),
@@ -255,6 +254,23 @@
"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),
+ ("BYTE", "NeedQuality", 0),
),
"PlayerAttr":(
@@ -341,6 +357,7 @@
("BYTE", "BossPosView", 0),
("list", "SkillIDExList", 0),
("BYTE", "SkillExCnt", 0),
+ ("WORD", "ReModelID", 0),
),
"Title":(
@@ -857,6 +874,11 @@
("DWORD", "MaxHP", 0),
("DWORD", "Atk", 0),
("DWORD", "Def", 0),
+ ),
+
+ "LVReValue":(
+ ("WORD", "ModelID", 1),
+ ("WORD", "LV", 1),
("BYTE", "ReHeroStar", 0),
("BYTE", "ReHeroBreakLV", 0),
("BYTE", "ReHeroAwakeLV", 0),
@@ -1249,9 +1271,13 @@
("BYTE", "LuckyGridNum", 0),
("dict", "GridNumMaxLimitInfo", 0),
("list", "NotifyGridNumList", 0),
- ("char", "NotifyKey", 0),
+ ("dict", "NotifyKeyDict", 0),
("BYTE", "AwardMoneyType", 0),
("WORD", "AwardMoneyValue", 0),
+ ("BYTE", "WishReset", 0),
+ ("dict", "WishLibSelect", 0),
+ ("dict", "WishLibPubFreeCnt", 0),
+ ("dict", "WishLibCard", 0),
),
"TreasureHouse":(
@@ -1269,10 +1295,13 @@
),
"TreasureItemLib":(
+ ("WORD", "ID", 0),
("WORD", "LibID", 1),
("DWORD", "ItemID", 0),
("DWORD", "ItemCount", 0),
("DWORD", "ItemWeight", 0),
+ ("BYTE", "IsWishItem", 0),
+ ("BYTE", "WishOutCnt", 0),
),
"TreasureCntAward":(
@@ -2449,7 +2478,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
@@ -2467,11 +2496,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 GetUPLVNeed(self): return self.attrTuple[3] # 突破到下级需要等级 WORD
- def GetUPCostItemList(self): return self.attrTuple[4] # 突破到下级消耗道具 list
+ def GetUPLVNeed(self): return self.attrTuple[2] # 突破到下级需要等级 WORD
+ def GetUPCostItemList(self): return self.attrTuple[3] # 突破到下级消耗道具 list
# 武将品质觉醒表
class IPY_HeroQualityAwake():
@@ -2480,7 +2508,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
@@ -2492,7 +2520,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
@@ -2507,6 +2535,33 @@
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
+ def GetNeedQuality(self): return self.attrTuple[4] # 所需武将品质 BYTE
# 属性条目表
class IPY_PlayerAttr():
@@ -2617,7 +2672,8 @@
def GetBossID(self): return self.attrTuple[7] # 本阵容的BossID,没有boss时为0 DWORD
def GetBossPosView(self): return self.attrTuple[8] # Boss通知站位 BYTE
def GetSkillIDExList(self): return self.attrTuple[9] # boss附加技能列表 list
- def GetSkillExCnt(self): return self.attrTuple[10] # 随机附加技能数,0为所有 BYTE
+ def GetSkillExCnt(self): return self.attrTuple[10] # 随机附加技能数,0为所有 BYTE
+ def GetReModelID(self): return self.attrTuple[11] # 等级参考值模版 WORD
# 称号表
class IPY_Title():
@@ -3398,25 +3454,35 @@
def GetExp(self): return self.attrTuple[1] # 升级所需经验 DWORD
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 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
+ def GetDef(self): return self.attrTuple[4] # 防御 DWORD
+
+# 等级参考值
+class IPY_LVReValue():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetModelID(self): return self.attrTuple[0] # 模版ID WORD
+ def GetLV(self): return self.attrTuple[1] # 玩家等级 WORD
+ def GetReHeroStar(self): return self.attrTuple[2] # 参考星级 BYTE
+ def GetReHeroBreakLV(self): return self.attrTuple[3] # 参考突破等级 BYTE
+ def GetReHeroAwakeLV(self): return self.attrTuple[4] # 参考觉醒等级 BYTE
+ def GetReAtk(self): return self.attrTuple[5] # 参考攻击 DWORD
+ def GetReDef(self): return self.attrTuple[6] # 防御 DWORD
+ def GetReMaxHP(self): return self.attrTuple[7] # 生命 DWORD
+ def GetReStunRate(self): return self.attrTuple[8] # DWORD
+ def GetReSuperHitRate(self): return self.attrTuple[9] # DWORD
+ def GetReComboRate(self): return self.attrTuple[10] # DWORD
+ def GetReMissRate(self): return self.attrTuple[11] # DWORD
+ def GetReParryRate(self): return self.attrTuple[12] # DWORD
+ def GetReSuckHPPer(self): return self.attrTuple[13] # DWORD
+ def GetReStunRateDef(self): return self.attrTuple[14] # DWORD
+ def GetReSuperHitRateDef(self): return self.attrTuple[15] # DWORD
+ def GetReComboRateDef(self): return self.attrTuple[16] # DWORD
+ def GetReMissRateDef(self): return self.attrTuple[17] # DWORD
+ def GetReParryRateDef(self): return self.attrTuple[18] # DWORD
+ def GetReSuckHPPerDef(self): return self.attrTuple[19] # DWORD
# 特殊地图玩家属性公式表
class IPY_SpecMapPlayerAttrFormat():
@@ -3971,9 +4037,13 @@
def GetLuckyGridNum(self): return self.attrTuple[15] # 幸运格子编号 BYTE
def GetGridNumMaxLimitInfo(self): return self.attrTuple[16] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
def GetNotifyGridNumList(self): return self.attrTuple[17] # 需要额外广播的格子 list
- def GetNotifyKey(self): return self.attrTuple[18] # 广播key char
+ def GetNotifyKeyDict(self): return self.attrTuple[18] # 广播key dict
def GetAwardMoneyType(self): return self.attrTuple[19] # 额外奖励货币类型 BYTE
- def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD
+ def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD
+ def GetWishReset(self): return self.attrTuple[21] # 心愿重置规则 BYTE
+ def GetWishLibSelect(self): return self.attrTuple[22] # 心愿库选择数 dict
+ def GetWishLibPubFreeCnt(self): return self.attrTuple[23] # 心愿库公共免费次数 dict
+ def GetWishLibCard(self): return self.attrTuple[24] # 心愿库心愿卡 dict
# 寻宝产出库表
class IPY_TreasureHouse():
@@ -4001,10 +4071,13 @@
self.attrTuple = None
return
- def GetLibID(self): return self.attrTuple[0] # 库ID WORD
- def GetItemID(self): return self.attrTuple[1] # 物品ID DWORD
- def GetItemCount(self): return self.attrTuple[2] # 物品个数 DWORD
- def GetItemWeight(self): return self.attrTuple[3] # 物品权重 DWORD
+ def GetID(self): return self.attrTuple[0] # ID WORD
+ def GetLibID(self): return self.attrTuple[1] # 库ID WORD
+ def GetItemID(self): return self.attrTuple[2] # 物品ID DWORD
+ def GetItemCount(self): return self.attrTuple[3] # 物品个数 DWORD
+ def GetItemWeight(self): return self.attrTuple[4] # 物品权重 DWORD
+ def GetIsWishItem(self): return self.attrTuple[5] # 心愿可选 BYTE
+ def GetWishOutCnt(self): return self.attrTuple[6] # 心愿独立产出次数 BYTE
# 寻宝累计次数奖励表
class IPY_TreasureCntAward():
@@ -5533,6 +5606,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)
@@ -5591,6 +5666,7 @@
self.__LoadFileData("TravelEvent", onlyCheck)
self.__LoadFileData("TravelScenery", onlyCheck)
self.__LoadFileData("PlayerLV", onlyCheck)
+ self.__LoadFileData("LVReValue", onlyCheck)
self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
self.__LoadFileData("GMAttr", onlyCheck)
self.__LoadFileData("RuneTower", onlyCheck)
@@ -6080,6 +6156,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
@@ -6486,6 +6576,13 @@
self.CheckLoadData("PlayerLV")
return self.ipyPlayerLVCache[index]
+ def GetLVReValueCount(self):
+ self.CheckLoadData("LVReValue")
+ return self.ipyLVReValueLen
+ def GetLVReValueByIndex(self, index):
+ self.CheckLoadData("LVReValue")
+ return self.ipyLVReValueCache[index]
+
def GetSpecMapPlayerAttrFormatCount(self):
self.CheckLoadData("SpecMapPlayerAttrFormat")
return self.ipySpecMapPlayerAttrFormatLen
--
Gitblit v1.8.0