From fc3f5ce2d3362ca59a04c1b1aba43f8cfbcf79b1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 09 一月 2026 10:34:11 +0800
Subject: [PATCH] 271 【内政】古宝系统-服务端(古宝升星增加验证同品质x个x星条件;修复古宝月卡特权领奖会越领越多bug;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 209 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 182 insertions(+), 27 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 64e95be..707ea02 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -323,6 +323,10 @@
("float", "QunFinalDamPerDefRatio", 0),
("float", "PVPDamPerRatio", 0),
("float", "PVPDamPerDefRatio", 0),
+ ("float", "GuanchuanRatio", 0),
+ ("float", "GuanchuanDefRatio", 0),
+ ("float", "ZhaojiaRatio", 0),
+ ("float", "ZhaojiaDefRatio", 0),
),
"MainChapter":(
@@ -357,6 +361,7 @@
("BYTE", "BossPosView", 0),
("list", "SkillIDExList", 0),
("BYTE", "SkillExCnt", 0),
+ ("WORD", "ReModelID", 0),
),
"Title":(
@@ -784,8 +789,11 @@
("BYTE", "SpecEffLayerMax", 0),
("BYTE", "SpecAttrID", 0),
("DWORD", "SpecAttrValue", 0),
- ("DWORD", "SpecAttrPerLVAdd", 0),
("DWORD", "SpecAttrPerStarAdd", 0),
+ ("BYTE", "PowerType", 0),
+ ("DWORD", "PowerTypeValue", 0),
+ ("DWORD", "PowerValue", 0),
+ ("DWORD", "PowerPerStarAdd", 0),
),
"GubaoResonanceAttr":(
@@ -803,6 +811,7 @@
"GubaoStar":(
("BYTE", "GubaoQuality", 1),
("BYTE", "GubaoStar", 0),
+ ("list", "QualityStarCond", 0),
("BYTE", "StarUPNeedSelfCnt", 0),
("list", "StarUPNeedItemList", 0),
),
@@ -811,6 +820,13 @@
("BYTE", "GubaoQuality", 1),
("BYTE", "LessEqualLV", 0),
("list", "LVUPNeedItemInfo", 0),
+ ),
+
+ "GubaoLVAttr":(
+ ("BYTE", "GubaoQuality", 1),
+ ("BYTE", "GubaoLV", 1),
+ ("list", "SpecAttrIDList", 0),
+ ("list", "SpecAttrValueList", 0),
),
"Beauty":(
@@ -873,6 +889,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),
@@ -956,6 +977,29 @@
("DWORD", "MaxHP", 0),
("dict", "OtherAttrDict", 0),
("list", "RandWeightItemList", 0),
+ ),
+
+ "FBDJGLevel":(
+ ("WORD", "LayerNum", 1),
+ ("BYTE", "LevelNum", 1),
+ ("list", "PassAwardList", 0),
+ ("list", "AwardList", 0),
+ ("list", "LineupIDList", 0),
+ ("WORD", "NPCLV", 0),
+ ("float", "Difficulty", 0),
+ ),
+
+ "FBDJGQuick":(
+ ("WORD", "NeedLayer", 1),
+ ("list", "QuickAwardList", 0),
+ ),
+
+ "FBDJGEffect":(
+ ("DWORD", "EffID", 1),
+ ("BYTE", "EffQuality", 0),
+ ("BYTE", "AttrID", 0),
+ ("DWORD", "AttrValue", 0),
+ ("DWORD", "RandWeight", 0),
),
"ADAward":(
@@ -2178,6 +2222,7 @@
("list", "EquipColorRateList", 0),
("list", "EquipColorRateList1", 0),
("list", "EquipColorRateList2", 0),
+ ("DWORD", "LastSureOutNeed", 0),
),
"LLMJ":(
@@ -2617,7 +2662,11 @@
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 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
# 主线章节表
class IPY_MainChapter():
@@ -2666,7 +2715,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():
@@ -3309,8 +3359,11 @@
def GetSpecEffLayerMax(self): return self.attrTuple[8] # 特殊效果最大层数 BYTE
def GetSpecAttrID(self): return self.attrTuple[9] # 特殊属性ID BYTE
def GetSpecAttrValue(self): return self.attrTuple[10] # 特殊属性初始值 DWORD
- def GetSpecAttrPerLVAdd(self): return self.attrTuple[11] # 特殊属性每级成长 DWORD
- def GetSpecAttrPerStarAdd(self): return self.attrTuple[12] # 特殊属性每星成长 DWORD
+ def GetSpecAttrPerStarAdd(self): return self.attrTuple[11] # 特殊属性每星成长 DWORD
+ def GetPowerType(self): return self.attrTuple[12] # 特权效果类型 BYTE
+ def GetPowerTypeValue(self): return self.attrTuple[13] # 特权类型值 DWORD
+ def GetPowerValue(self): return self.attrTuple[14] # 特权初始值 DWORD
+ def GetPowerPerStarAdd(self): return self.attrTuple[15] # 特权每星值成长 DWORD
# 古宝共鸣属性表
class IPY_GubaoResonanceAttr():
@@ -3343,8 +3396,9 @@
def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
def GetGubaoStar(self): return self.attrTuple[1] # 古宝星级 BYTE
- def GetStarUPNeedSelfCnt(self): return self.attrTuple[2] # 升到本星消耗本体碎片数量 BYTE
- def GetStarUPNeedItemList(self): return self.attrTuple[3] # 消耗其他物品列表 [[物品ID,个数], ...] list
+ def GetQualityStarCond(self): return self.attrTuple[2] # 需同品质X个X星 list
+ def GetStarUPNeedSelfCnt(self): return self.attrTuple[3] # 升到本星消耗本体碎片数量 BYTE
+ def GetStarUPNeedItemList(self): return self.attrTuple[4] # 消耗其他物品列表 [[物品ID,个数], ...] list
# 古宝品质升级表
class IPY_GubaoLV():
@@ -3356,6 +3410,18 @@
def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
def GetLessEqualLV(self): return self.attrTuple[1] # 小于等于等级 BYTE
def GetLVUPNeedItemInfo(self): return self.attrTuple[2] # 升级所需物品 [[物品ID,个数], ...] list
+
+# 品质升级属性表
+class IPY_GubaoLVAttr():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
+ def GetGubaoLV(self): return self.attrTuple[1] # 古宝等级 BYTE
+ def GetSpecAttrIDList(self): return self.attrTuple[2] # 特殊属性ID列表 list
+ def GetSpecAttrValueList(self): return self.attrTuple[3] # 特殊总属性值列表 list
# 红颜表
class IPY_Beauty():
@@ -3447,25 +3513,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():
@@ -3566,6 +3642,44 @@
def GetMaxHP(self): return self.attrTuple[4] # DWORD
def GetOtherAttrDict(self): return self.attrTuple[5] # 其他属性 {attrID:attrValue, ...} dict
def GetRandWeightItemList(self): return self.attrTuple[6] # 宝箱随机物品权重列表,[[权重,物品ID,数量], ...] list
+
+# 定军阁关卡表
+class IPY_FBDJGLevel():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetLayerNum(self): return self.attrTuple[0] # 层数 WORD
+ def GetLevelNum(self): return self.attrTuple[1] # 关卡编号 BYTE
+ def GetPassAwardList(self): return self.attrTuple[2] # 过关奖励列表,[[物品ID,个数], ...] list
+ def GetAwardList(self): return self.attrTuple[3] # 挑战奖励,[[物品ID,个数], ...] list
+ def GetLineupIDList(self): return self.attrTuple[4] # 阵容ID列表,小队1阵容ID|小队2阵容ID|... list
+ def GetNPCLV(self): return self.attrTuple[5] # NPC等级 WORD
+ def GetDifficulty(self): return self.attrTuple[6] # 难度系数 float
+
+# 定军阁速战奖励表
+class IPY_FBDJGQuick():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetNeedLayer(self): return self.attrTuple[0] # 所需层数 WORD
+ def GetQuickAwardList(self): return self.attrTuple[1] # 速战奖励列表,[[物品ID,个数], ...] list
+
+# 定军阁效果表
+class IPY_FBDJGEffect():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetEffID(self): return self.attrTuple[0] # 效果ID DWORD
+ def GetEffQuality(self): return self.attrTuple[1] # 效果品质 BYTE
+ def GetAttrID(self): return self.attrTuple[2] # 属性ID BYTE
+ def GetAttrValue(self): return self.attrTuple[3] # 属性值 DWORD
+ def GetRandWeight(self): return self.attrTuple[4] # 随机权重 DWORD
# 广告奖励表
class IPY_ADAward():
@@ -5452,7 +5566,8 @@
def GetLVUPNeedTime(self): return self.attrTuple[2] # 升级下一级所需所需秒 DWORD
def GetEquipColorRateList(self): return self.attrTuple[3] # 小怪产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
def GetEquipColorRateList1(self): return self.attrTuple[4] # 精英产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
- def GetEquipColorRateList2(self): return self.attrTuple[5] # boss产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
+ def GetEquipColorRateList2(self): return self.attrTuple[5] # boss产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
+ def GetLastSureOutNeed(self): return self.attrTuple[6] # 最后一档保底必出 DWORD
# 历练秘笈
class IPY_LLMJ():
@@ -5643,12 +5758,14 @@
self.__LoadFileData("GubaoResonance", onlyCheck)
self.__LoadFileData("GubaoStar", onlyCheck)
self.__LoadFileData("GubaoLV", onlyCheck)
+ self.__LoadFileData("GubaoLVAttr", onlyCheck)
self.__LoadFileData("Beauty", onlyCheck)
self.__LoadFileData("BeautyQualityLV", onlyCheck)
self.__LoadFileData("BeautySkin", onlyCheck)
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)
@@ -5656,6 +5773,9 @@
self.__LoadFileData("FBFunc", onlyCheck)
self.__LoadFileData("FBLine", onlyCheck)
self.__LoadFileData("Tianzi", onlyCheck)
+ self.__LoadFileData("FBDJGLevel", onlyCheck)
+ self.__LoadFileData("FBDJGQuick", onlyCheck)
+ self.__LoadFileData("FBDJGEffect", onlyCheck)
self.__LoadFileData("ADAward", onlyCheck)
self.__LoadFileData("Success", onlyCheck)
self.__LoadFileData("TongTianLV", onlyCheck)
@@ -6516,6 +6636,13 @@
self.CheckLoadData("GubaoLV")
return self.ipyGubaoLVCache[index]
+ def GetGubaoLVAttrCount(self):
+ self.CheckLoadData("GubaoLVAttr")
+ return self.ipyGubaoLVAttrLen
+ def GetGubaoLVAttrByIndex(self, index):
+ self.CheckLoadData("GubaoLVAttr")
+ return self.ipyGubaoLVAttrCache[index]
+
def GetBeautyCount(self):
self.CheckLoadData("Beauty")
return self.ipyBeautyLen
@@ -6557,6 +6684,13 @@
def GetPlayerLVByIndex(self, index):
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")
@@ -6607,6 +6741,27 @@
self.CheckLoadData("Tianzi")
return self.ipyTianziCache[index]
+ def GetFBDJGLevelCount(self):
+ self.CheckLoadData("FBDJGLevel")
+ return self.ipyFBDJGLevelLen
+ def GetFBDJGLevelByIndex(self, index):
+ self.CheckLoadData("FBDJGLevel")
+ return self.ipyFBDJGLevelCache[index]
+
+ def GetFBDJGQuickCount(self):
+ self.CheckLoadData("FBDJGQuick")
+ return self.ipyFBDJGQuickLen
+ def GetFBDJGQuickByIndex(self, index):
+ self.CheckLoadData("FBDJGQuick")
+ return self.ipyFBDJGQuickCache[index]
+
+ def GetFBDJGEffectCount(self):
+ self.CheckLoadData("FBDJGEffect")
+ return self.ipyFBDJGEffectLen
+ def GetFBDJGEffectByIndex(self, index):
+ self.CheckLoadData("FBDJGEffect")
+ return self.ipyFBDJGEffectCache[index]
+
def GetADAwardCount(self):
self.CheckLoadData("ADAward")
return self.ipyADAwardLen
--
Gitblit v1.8.0