hxp
2023-01-12 921b9a471b986fb148b8260d80ca23b9b25d42b4
9762 【BT8】【后端】藏宝阁 冲突 master
7个文件已修改
702 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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):
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)
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,
                           }
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):
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))
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
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)