From 921b9a471b986fb148b8260d80ca23b9b25d42b4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 一月 2023 17:08:11 +0800
Subject: [PATCH] 9762 【BT8】【后端】藏宝阁 冲突 master

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py |   86 ------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                 |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                 |  275 ++++++++++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                                      |  275 ++++++++++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                      |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py        |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                    |   52 ++++
 7 files changed, 615 insertions(+), 87 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index f27cb3e..4a1280f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -17835,6 +17835,162 @@
 
 
 #------------------------------------------------------
+# B2 16 古宝激活 #tagCMGubaoActivate
+
+class  tagCMGubaoActivate(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x16
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x16
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoActivate)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 16 古宝激活 //tagCMGubaoActivate:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoActivate=tagCMGubaoActivate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoActivate.Cmd,m_NAtagCMGubaoActivate.SubCmd))] = m_NAtagCMGubaoActivate
+
+
+#------------------------------------------------------
+# B2 18 古宝升级 #tagCMGubaoLVUp
+
+class  tagCMGubaoLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x18
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x18
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 18 古宝升级 //tagCMGubaoLVUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoLVUp=tagCMGubaoLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoLVUp.Cmd,m_NAtagCMGubaoLVUp.SubCmd))] = m_NAtagCMGubaoLVUp
+
+
+#------------------------------------------------------
+# B2 17 古宝升星 #tagCMGubaoStarUp
+
+class  tagCMGubaoStarUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x17
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x17
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoStarUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 17 古宝升星 //tagCMGubaoStarUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoStarUp=tagCMGubaoStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Cmd,m_NAtagCMGubaoStarUp.SubCmd))] = m_NAtagCMGubaoStarUp
+
+
+#------------------------------------------------------
 # B2 07 重置加点 #tagCMResetAttrPoint
 
 class  tagCMResetAttrPoint(Structure):
@@ -17883,6 +18039,125 @@
 
 
 #------------------------------------------------------
+# B2 19 神通升级 #tagCMShentongLVUp
+
+class  tagCMShentongLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ShentongID", c_ubyte),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x19
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x19
+        self.ShentongID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMShentongLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ShentongID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ShentongID
+                                )
+        return DumpString
+
+
+m_NAtagCMShentongLVUp=tagCMShentongLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
+
+
+#------------------------------------------------------
+# B2 20 神通技能设置 #tagCMShentongSkillSet
+
+class  tagCMShentongSkillSet(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    SkillIDList = list()    #(vector<DWORD> SkillIDList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x20
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.SkillIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x20
+        self.Count = 0
+        self.SkillIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 4 * self.Count
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                SkillIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
+
+
+#------------------------------------------------------
 #B2 01 脱机挂状态 # tagCMLoginState
 
 class  tagCMLoginState(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index b27b4cc..8064653 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1597,7 +1597,7 @@
 )=range(5)
 
 # 战斗力模块类型
-Def_MFPType_Max = 29
+Def_MFPType_Max = 32
 ModuleFightPowerTypeList = (
 Def_MFPType_Role, # 角色 0
 Def_MFPType_Equip, # 装备(装备本身) 1
@@ -1627,6 +1627,9 @@
 Def_MFPType_Love, # 情缘 25
 Def_MFPType_Charm, # 魅力 26
 Def_MFPType_LianTi, # 炼体 27
+Def_MFPType_Enchant, # 附魔 28
+Def_MFPType_Gubao, # 古宝 29
+Def_MFPType_Shentong, # 神通 30
 Def_MFPType_Other, # 其他
 ) = range(Def_MFPType_Max)
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 2fc42a5..07b6fa0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4261,6 +4261,13 @@
 Def_PDict_LoveRingEatCount = "LoveRingEatCount" # 情戒 - 本星已淬炼道具数
 Def_PDict_LoveCoupleIntimacy = "LoveCoupleIntimacy" # 伴侣亲密度
 Def_PDict_CharmLV = "CharmLV"  # 魅力等级
+
+#古宝
+Def_PDict_GubaoLVInfo = "GubaoLVInfo_%s"  # 古宝等级信息,参数(古宝ID),等级*100+星级
+
+#神通
+Def_PDict_ShentongLVInfo = "ShentongLVInfo_%s"  # 神通等级信息,参数(神通ID),阶级*100+等级
+Def_PDict_ShentongSkillID = "ShentongSkillID_%s"  # 神通出战技能ID,参数(编号)
 #-------------------------------------------------------------------------------
 #可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
 
@@ -4747,7 +4754,11 @@
 Def_CalcAttrFunc_LoveRingCouple, # 情戒仙侣 50
 Def_CalcAttrFunc_Charm, # 魅力 51
 Def_CalcAttrFunc_LianTi, # 炼体 52
-) = range(53)
+Def_CalcAttrFunc_Enchant, # 附魔 53
+Def_CalcAttrFunc_LingQiEnchant, # 灵器附魔 54
+Def_CalcAttrFunc_Gubao, # 古宝 55
+Def_CalcAttrFunc_Shentong, # 神通 56
+) = range(57)
 
 # 技能功能点列表  - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
 CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
@@ -4762,6 +4773,9 @@
                             ShareDefine.Def_MFPType_Star:[Def_CalcAttrFunc_Star],
                             ShareDefine.Def_MFPType_Plus:[Def_CalcAttrFunc_Plus],
                             ShareDefine.Def_MFPType_Stone:[Def_CalcAttrFunc_Stone],
+                            ShareDefine.Def_MFPType_Enchant:[Def_CalcAttrFunc_Enchant],
+                            ShareDefine.Def_MFPType_Gubao:[Def_CalcAttrFunc_Gubao],
+                            ShareDefine.Def_MFPType_Shentong:[Def_CalcAttrFunc_Shentong],
                             ShareDefine.Def_MFPType_LingQi:[Def_CalcAttrFunc_LingQi, Def_CalcAttrFunc_LingQiAttr, Def_CalcAttrFunc_LingQiJingLianAttr, Def_CalcAttrFunc_GuardTarin, 
                                                             Def_CalcAttrFunc_WingTarin, Def_CalcAttrFunc_PeerlessWeaponTrain, Def_CalcAttrFunc_PeerlessWeapon2Train],
                             ShareDefine.Def_MFPType_Wash:[Def_CalcAttrFunc_Wash],
@@ -4788,6 +4802,33 @@
                             ShareDefine.Def_MFPType_Other:[Def_CalcAttrFunc_Success, Def_CalcAttrFunc_FamilyTech, Def_CalcAttrFunc_EquipDecompose],
                             }
 
+MFPTypeName = {ShareDefine.Def_MFPType_Role:"角色", ShareDefine.Def_MFPType_LingGen:"灵根", ShareDefine.Def_MFPType_Equip:"装备", ShareDefine.Def_MFPType_Star:"升星",
+               ShareDefine.Def_MFPType_Plus:"强化", ShareDefine.Def_MFPType_Stone:"宝石", ShareDefine.Def_MFPType_Wash:"洗练", ShareDefine.Def_MFPType_LingQi:"灵器",
+               ShareDefine.Def_MFPType_Pet:"灵宠", ShareDefine.Def_MFPType_Horse:"坐骑", ShareDefine.Def_MFPType_Prestige:"境界", ShareDefine.Def_MFPType_GodWeapon:"神兵",
+               ShareDefine.Def_MFPType_Dienstgrad:"称号", ShareDefine.Def_MFPType_Rune:"符印", ShareDefine.Def_MFPType_GatherSoul:"聚魂", ShareDefine.Def_MFPType_StoveYao:"丹药",
+               ShareDefine.Def_MFPType_MagicWeapon1:"人族", ShareDefine.Def_MFPType_MagicWeapon2:"魔族", ShareDefine.Def_MFPType_MagicWeapon3:"仙族", ShareDefine.Def_MFPType_MagicWeapon4:"王者",
+               ShareDefine.Def_MFPType_PetSoul:"宠魂", ShareDefine.Def_MFPType_HorseSoul:"骑魂", ShareDefine.Def_MFPType_FaQi:"法器", ShareDefine.Def_MFPType_Dogz:"神兽",
+               ShareDefine.Def_MFPType_Coat:"时装", ShareDefine.Def_MFPType_Love:"情缘", ShareDefine.Def_MFPType_Charm:"魅力", ShareDefine.Def_MFPType_LianTi:"炼体",
+               ShareDefine.Def_MFPType_Enchant:"附魔", ShareDefine.Def_MFPType_Gubao:"古宝", ShareDefine.Def_MFPType_Shentong:"神通", 
+               ShareDefine.Def_MFPType_Other:"其他",
+               }
+
+FuncIndexName = {
+                 Def_CalcAttrFunc_RoleBase:"角色基础", Def_CalcAttrFunc_LingGen:"灵根", Def_CalcAttrFunc_LingGenQuailty:"灵根品质", Def_CalcAttrFunc_Equip:"装备", 
+                 Def_CalcAttrFunc_Star:"升星", Def_CalcAttrFunc_Plus:"强化", Def_CalcAttrFunc_Stone:"宝石", Def_CalcAttrFunc_Wash:"洗练", 
+                 Def_CalcAttrFunc_LingQi:"灵器", Def_CalcAttrFunc_LingQiAttr:"灵器属性", Def_CalcAttrFunc_LingQiJingLianAttr:"灵器精炼", Def_CalcAttrFunc_Pet:"灵宠",
+                 Def_CalcAttrFunc_Horse:"坐骑", Def_CalcAttrFunc_Prestige:"境界", Def_CalcAttrFunc_GodWeapon:"神兵", Def_CalcAttrFunc_Dienstgrad:"称号", 
+                 Def_CalcAttrFunc_Rune:"符印", Def_CalcAttrFunc_GatherSoul:"聚魂", Def_CalcAttrFunc_Success:"成就", Def_CalcAttrFunc_VIP:"VIP", 
+                 Def_CalcAttrFunc_Stove:"炼丹炉", Def_CalcAttrFunc_FamilyTech:"心法", Def_CalcAttrFunc_EquipDecompose:"装备分解", Def_CalcAttrFunc_PetSoul:"宠物魂石", 
+                 Def_CalcAttrFunc_HorseSoul:"坐骑魂石", Def_CalcAttrFunc_HorseSkill:"坐骑技能属性", Def_CalcAttrFunc_PetSkill:"宠物技能属性", Def_CalcAttrFunc_StoveYao:"炼丹炉丹药", 
+                 Def_CalcAttrFunc_PetSign:"宠物签到", Def_CalcAttrFunc_Dogz:"神兽", Def_CalcAttrFunc_DogzBattleSkill:"神兽技能", Def_CalcAttrFunc_DogzEquip:"神兽装备", 
+                 Def_CalcAttrFunc_DogzEquipPlus:"神兽强化", Def_CalcAttrFunc_Coat:"时装", Def_CalcAttrFunc_MagicWeapon1:"人族法宝属性", 
+                 Def_CalcAttrFunc_MagicWeapon2:"魔族法宝属性", Def_CalcAttrFunc_MagicWeapon3:"仙族法宝属性", Def_CalcAttrFunc_MagicWeapon4:"王者法宝属性", Def_CalcAttrFunc_HorseSkin:"坐骑觉醒", 
+                 Def_CalcAttrFunc_PetSkin:"灵宠觉醒", Def_CalcAttrFunc_HorseTarin:"坐骑培养", Def_CalcAttrFunc_PetTarin:"灵宠培养", Def_CalcAttrFunc_GuardTarin:"守护培养",
+                 Def_CalcAttrFunc_WingTarin:"翅膀培养", Def_CalcAttrFunc_PeerlessWeaponTrain:"灭世培养", Def_CalcAttrFunc_PeerlessWeapon2Train:"噬魂培养", Def_CalcAttrFunc_FaQi:"法器",
+                 Def_CalcAttrFunc_LoveRing:"情戒基础", Def_CalcAttrFunc_LoveRingCouple:"情戒仙侣", Def_CalcAttrFunc_Charm:"魅力", Def_CalcAttrFunc_LianTi:"炼体",
+                 Def_CalcAttrFunc_Enchant:"附魔", Def_CalcAttrFunc_LingQiEnchant:"灵器附魔", Def_CalcAttrFunc_Gubao:"古宝", Def_CalcAttrFunc_Shentong:"神通",
+                 }
 #-------------------------------------------------------------------------------
 
 (
@@ -5509,9 +5550,11 @@
 Def_SkillFuncType_SuiteSkill,     #14 套装技能
 Def_SkillFuncType_PassiveSkillWithSP,     #15 可有专精的被动技能
 Def_SkillFuncType_PetOwnerSkill,     #16 宠物主人技能
-Def_SkillFuncType_17,     #17 称号技能 
+Def_SkillFuncType_TitleSkill,  #17为称号技能
 Def_SkillFuncType_EquipPassiveSkill,     #18 装备被动技能
-) = range(19)
+Def_SkillFuncType_LianTiSkill,     #19 炼体技能
+Def_SkillFuncType_ShentongSkill,     #20 神通技能
+) = range(21)
 
 # 受技能效果完全影响的怪, 对应 Def_BattleRelationType_CommNoBoss
 Def_SkillAttack_NPCIsBoss = [ Def_NPCType_Ogre_Normal     ,  #平凡小怪 0    # c++ 定义为普通NPC视野刷新
@@ -5545,6 +5588,9 @@
                            Def_SkillFuncType_PetOwnerSkill:ShareDefine.Def_MFPType_Pet,
                            Def_SkillFuncType_GWSkill:ShareDefine.Def_MFPType_Prestige,
                            Def_SkillFuncType_SuiteSkill:ShareDefine.Def_MFPType_Equip,
+                           Def_SkillFuncType_TitleSkill:ShareDefine.Def_MFPType_Dienstgrad,
+                           Def_SkillFuncType_LianTiSkill:ShareDefine.Def_MFPType_LianTi,
+                           Def_SkillFuncType_ShentongSkill:ShareDefine.Def_MFPType_Shentong,
                            }
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index f27cb3e..4a1280f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -17835,6 +17835,162 @@
 
 
 #------------------------------------------------------
+# B2 16 古宝激活 #tagCMGubaoActivate
+
+class  tagCMGubaoActivate(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x16
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x16
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoActivate)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 16 古宝激活 //tagCMGubaoActivate:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoActivate=tagCMGubaoActivate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoActivate.Cmd,m_NAtagCMGubaoActivate.SubCmd))] = m_NAtagCMGubaoActivate
+
+
+#------------------------------------------------------
+# B2 18 古宝升级 #tagCMGubaoLVUp
+
+class  tagCMGubaoLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x18
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x18
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 18 古宝升级 //tagCMGubaoLVUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoLVUp=tagCMGubaoLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoLVUp.Cmd,m_NAtagCMGubaoLVUp.SubCmd))] = m_NAtagCMGubaoLVUp
+
+
+#------------------------------------------------------
+# B2 17 古宝升星 #tagCMGubaoStarUp
+
+class  tagCMGubaoStarUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("GubaoID", c_ushort),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x17
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x17
+        self.GubaoID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMGubaoStarUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 17 古宝升星 //tagCMGubaoStarUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                GubaoID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.GubaoID
+                                )
+        return DumpString
+
+
+m_NAtagCMGubaoStarUp=tagCMGubaoStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Cmd,m_NAtagCMGubaoStarUp.SubCmd))] = m_NAtagCMGubaoStarUp
+
+
+#------------------------------------------------------
 # B2 07 重置加点 #tagCMResetAttrPoint
 
 class  tagCMResetAttrPoint(Structure):
@@ -17883,6 +18039,125 @@
 
 
 #------------------------------------------------------
+# B2 19 神通升级 #tagCMShentongLVUp
+
+class  tagCMShentongLVUp(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ShentongID", c_ubyte),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB2
+        self.SubCmd = 0x19
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB2
+        self.SubCmd = 0x19
+        self.ShentongID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMShentongLVUp)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ShentongID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ShentongID
+                                )
+        return DumpString
+
+
+m_NAtagCMShentongLVUp=tagCMShentongLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
+
+
+#------------------------------------------------------
+# B2 20 神通技能设置 #tagCMShentongSkillSet
+
+class  tagCMShentongSkillSet(Structure):
+    Head = tagHead()
+    Count = 0    #(BYTE Count)
+    SkillIDList = list()    #(vector<DWORD> SkillIDList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x20
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.SkillIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB2
+        self.Head.SubCmd = 0x20
+        self.Count = 0
+        self.SkillIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 4 * self.Count
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                Count:%d,
+                                SkillIDList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
+
+
+#------------------------------------------------------
 #B2 01 脱机挂状态 # tagCMLoginState
 
 class  tagCMLoginState(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
index c231e02..2b220f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
@@ -17,7 +17,6 @@
 
 import ChConfig
 import GameWorld
-import ShareDefine
 import PlayerControl
 
 
@@ -28,86 +27,9 @@
 #  @return None
 #  @remarks 函数详细说明.
 def OnExec(curPlayer, msgList):
-    mfpTypeName = {ShareDefine.Def_MFPType_Role:"角色",
-                   ShareDefine.Def_MFPType_LingGen:"灵根",
-                   ShareDefine.Def_MFPType_Equip:"装备",
-                   ShareDefine.Def_MFPType_Star:"升星",
-                   ShareDefine.Def_MFPType_Plus:"强化",
-                   ShareDefine.Def_MFPType_Stone:"宝石",
-                   ShareDefine.Def_MFPType_Wash:"洗练",
-                   ShareDefine.Def_MFPType_LingQi:"灵器",
-                   ShareDefine.Def_MFPType_Pet:"灵宠",
-                   ShareDefine.Def_MFPType_Horse:"坐骑",
-                   ShareDefine.Def_MFPType_Prestige:"境界",
-                   ShareDefine.Def_MFPType_GodWeapon:"神兵",
-                   ShareDefine.Def_MFPType_Dienstgrad:"称号",
-                   ShareDefine.Def_MFPType_Rune:"符印",
-                   ShareDefine.Def_MFPType_GatherSoul:"聚魂",
-                   ShareDefine.Def_MFPType_StoveYao:"丹药",
-                   ShareDefine.Def_MFPType_MagicWeapon1:"人族",
-                   ShareDefine.Def_MFPType_MagicWeapon2:"魔族",
-                   ShareDefine.Def_MFPType_MagicWeapon3:"仙族",
-                   ShareDefine.Def_MFPType_MagicWeapon4:"王者",
-                   ShareDefine.Def_MFPType_PetSoul:"宠魂",
-                   ShareDefine.Def_MFPType_HorseSoul:"骑魂",
-                   ShareDefine.Def_MFPType_FaQi:"法器",
-                   ShareDefine.Def_MFPType_Dogz:"神兽",
-                   ShareDefine.Def_MFPType_Coat:"时装",
-                   ShareDefine.Def_MFPType_Love:"情缘",
-                   ShareDefine.Def_MFPType_Charm:"魅力",
-                   ShareDefine.Def_MFPType_LianTi:"炼体",
-                   ShareDefine.Def_MFPType_Other:"其他",
-                   }
+    mfpTypeName = ChConfig.MFPTypeName
     
-    funcIndexName = {
-                     ChConfig.Def_CalcAttrFunc_RoleBase:"角色基础",
-                     ChConfig.Def_CalcAttrFunc_LingGen:"灵根",
-                     ChConfig.Def_CalcAttrFunc_LingGenQuailty:"灵根品质",
-                     ChConfig.Def_CalcAttrFunc_Equip:"装备",
-                     ChConfig.Def_CalcAttrFunc_Star:"升星",
-                     ChConfig.Def_CalcAttrFunc_Plus:"强化",
-                     ChConfig.Def_CalcAttrFunc_Stone:"宝石",
-                     ChConfig.Def_CalcAttrFunc_Wash:"洗练",
-                     ChConfig.Def_CalcAttrFunc_LingQi:"灵器",
-                     ChConfig.Def_CalcAttrFunc_LingQiAttr:"灵器属性",
-                     ChConfig.Def_CalcAttrFunc_Pet:"灵宠",
-                     ChConfig.Def_CalcAttrFunc_Horse:"坐骑",
-                     ChConfig.Def_CalcAttrFunc_Prestige:"境界",
-                     ChConfig.Def_CalcAttrFunc_GodWeapon:"神兵",
-                     ChConfig.Def_CalcAttrFunc_Dienstgrad:"称号",
-                     ChConfig.Def_CalcAttrFunc_Rune:"符印",
-                     ChConfig.Def_CalcAttrFunc_GatherSoul:"聚魂",
-                     ChConfig.Def_CalcAttrFunc_Success:"成就",
-                     ChConfig.Def_CalcAttrFunc_VIP:"VIP",
-                     ChConfig.Def_CalcAttrFunc_Stove:"炼丹炉",
-                     ChConfig.Def_CalcAttrFunc_FamilyTech:"心法",
-                     ChConfig.Def_CalcAttrFunc_EquipDecompose:"装备分解",
-                     ChConfig.Def_CalcAttrFunc_PetSoul:"宠物魂石",
-                     ChConfig.Def_CalcAttrFunc_HorseSoul:"坐骑魂石",
-                     ChConfig.Def_CalcAttrFunc_HorseSkill:"坐骑技能属性",
-                     ChConfig.Def_CalcAttrFunc_PetSkill:"宠物技能属性",
-                     ChConfig.Def_CalcAttrFunc_StoveYao:"炼丹炉丹药",
-                     ChConfig.Def_CalcAttrFunc_PetSign:"宠物签到",
-                     ChConfig.Def_CalcAttrFunc_Dogz:"神兽",
-                     ChConfig.Def_CalcAttrFunc_Coat:"时装",
-                     ChConfig.Def_CalcAttrFunc_MagicWeapon1:"人族法宝属性",
-                     ChConfig.Def_CalcAttrFunc_MagicWeapon2:"魔族法宝属性", 
-                     ChConfig.Def_CalcAttrFunc_MagicWeapon3:"仙族法宝属性", 
-                     ChConfig.Def_CalcAttrFunc_MagicWeapon4:"王者法宝属性", 
-                     ChConfig.Def_CalcAttrFunc_HorseSkin:"坐骑觉醒", 
-                     ChConfig.Def_CalcAttrFunc_PetSkin:"灵宠觉醒", 
-                     ChConfig.Def_CalcAttrFunc_HorseTarin:"坐骑培养",
-                     ChConfig.Def_CalcAttrFunc_PetTarin:"灵宠培养",
-                     ChConfig.Def_CalcAttrFunc_GuardTarin:"守护培养",
-                     ChConfig.Def_CalcAttrFunc_WingTarin:"翅膀培养",
-                     ChConfig.Def_CalcAttrFunc_PeerlessWeaponTrain:"灭世培养",
-                     ChConfig.Def_CalcAttrFunc_PeerlessWeapon2Train:"噬魂培养",
-                     ChConfig.Def_CalcAttrFunc_FaQi:"法器",
-                     ChConfig.Def_CalcAttrFunc_LoveRing:"情戒基础",
-                     ChConfig.Def_CalcAttrFunc_LoveRingCouple:"情戒仙侣",
-                     ChConfig.Def_CalcAttrFunc_Charm:"魅力",
-                     ChConfig.Def_CalcAttrFunc_LianTi:"炼体",
-                     }
+    funcIndexName = ChConfig.FuncIndexName
     
     GameWorld.DebugAnswer(curPlayer, "PrintFightPower 模块类型(可选)")
     
@@ -119,10 +41,12 @@
         GameWorld.DebugAnswer(curPlayer, "--- %s战力(%s): %s" % (mfpTypeName[mfpType], mfpType, fightPower))
         for funcIndex in ChConfig.MFPTypeAttrFuncIndexDict[mfpType]:
             funcName = funcIndexName.get(funcIndex, "属性(%s)" % funcIndex)
-            attrInfo, insidePerAttrDict = PlayerControl.GetCalcAttrListValue(curPlayer, funcIndex)
+            attrInfo, insidePerAttrDict, customAttrDict = PlayerControl.GetCalcAttrListValue(curPlayer, funcIndex)
             GameWorld.DebugAnswer(curPlayer, "%s:%s" % (funcName, attrInfo))
             if insidePerAttrDict:
                 GameWorld.DebugAnswer(curPlayer, "%s内部加成:%s" % (funcName, insidePerAttrDict))
+            if customAttrDict:
+                GameWorld.DebugAnswer(curPlayer, "%s自定义属性:%s" % (funcName, customAttrDict))
         return
     
     GameWorld.DebugAnswer(curPlayer, "===== 总战力: %s" % PlayerControl.GetFightPower(curPlayer))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 360241c..ce8cef7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -97,8 +97,9 @@
 import QuestCommon
 import PlayerDogz
 import PlayerFaQi
-import PlayerCharm
 import PlayerLove
+import PlayerGubao
+import PlayerCharm
 import ChPlayer
 import GMShell
 import GameObj
@@ -4529,6 +4530,7 @@
         PlayerLove.CalcLoveAttr(curPlayer)
         PlayerCharm.CalcCharmAttr(curPlayer)
         PlayerLianTi.CalcLianTiAttr(curPlayer)
+        PlayerGubao.CalcGubaoAttr(curPlayer)
         self.RefreshAllState(isForce=True)
         GameWorld.DebugLog("End ReCalcAllState!!!")
         return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index b27b4cc..8064653 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1597,7 +1597,7 @@
 )=range(5)
 
 # 战斗力模块类型
-Def_MFPType_Max = 29
+Def_MFPType_Max = 32
 ModuleFightPowerTypeList = (
 Def_MFPType_Role, # 角色 0
 Def_MFPType_Equip, # 装备(装备本身) 1
@@ -1627,6 +1627,9 @@
 Def_MFPType_Love, # 情缘 25
 Def_MFPType_Charm, # 魅力 26
 Def_MFPType_LianTi, # 炼体 27
+Def_MFPType_Enchant, # 附魔 28
+Def_MFPType_Gubao, # 古宝 29
+Def_MFPType_Shentong, # 神通 30
 Def_MFPType_Other, # 其他
 ) = range(Def_MFPType_Max)
 

--
Gitblit v1.8.0