hxp
2019-05-29 be35331b8931d2829f014749a827a1c37c78feff
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -104,60 +104,74 @@
# A0 04 查询副本功能线路人数 #tagCGGetFBLinePlayerCnt
class  tagCGGetFBLinePlayerCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("FBLineID", c_ubyte),
                  ("IsAllLine", c_ubyte),
                  ]
    Head = tagHead()
    MapID = 0    #(DWORD MapID)
    LineCount = 0    #(BYTE LineCount)
    LineIDList = list()    #(vector<BYTE> LineIDList)//个数为0时代表查全部
    data = None
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA0
        self.SubCmd = 0x04
        self.Head.Cmd = 0xA0
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.LineCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.LineIDList.append(value)
        return _pos
    def Clear(self):
        self.Cmd = 0xA0
        self.SubCmd = 0x04
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA0
        self.Head.SubCmd = 0x04
        self.MapID = 0
        self.FBLineID = 0
        self.IsAllLine = 0
        self.LineCount = 0
        self.LineIDList = list()
        return
    def GetLength(self):
        return sizeof(tagCGGetFBLinePlayerCnt)
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1 * self.LineCount
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteBYTE(data, self.LineCount)
        for i in range(self.LineCount):
            data = CommFunc.WriteBYTE(data, self.LineIDList[i])
        return data
    def OutputString(self):
        DumpString = '''// A0 04 查询副本功能线路人数 //tagCGGetFBLinePlayerCnt:
                                Cmd:%s,
                                SubCmd:%s,
        DumpString = '''
                                Head:%s,
                                MapID:%d,
                                FBLineID:%d,
                                IsAllLine:%d
                                LineCount:%d,
                                LineIDList:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Head.OutputString(),
                                self.MapID,
                                self.FBLineID,
                                self.IsAllLine
                                self.LineCount,
                                "..."
                                )
        return DumpString
m_NAtagCGGetFBLinePlayerCnt=tagCGGetFBLinePlayerCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Cmd,m_NAtagCGGetFBLinePlayerCnt.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Head.Cmd,m_NAtagCGGetFBLinePlayerCnt.Head.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
#------------------------------------------------------
@@ -1346,6 +1360,63 @@
m_NAtagCGQueryCompensation=tagCGQueryCompensation()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryCompensation.Cmd,m_NAtagCGQueryCompensation.SubCmd))] = m_NAtagCGQueryCompensation
#------------------------------------------------------
# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
class  tagCGQueryNotifyEquipDetailInfo(Structure):
    Head = tagHead()
    ItemGUID = ""    #(char ItemGUID[40])
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x05
        self.ItemGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemGUID
                                )
        return DumpString
m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
#------------------------------------------------------
@@ -3382,6 +3453,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 跨服玩家ID
                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                  ]
    def __init__(self):
@@ -3399,6 +3471,7 @@
        self.Cmd = 0xC0
        self.SubCmd = 0x02
        self.PlayerID = 0
        self.EquipClassLV = 0
        return
    def GetLength(self):
@@ -3411,12 +3484,14 @@
        DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d
                                PlayerID:%d,
                                EquipClassLV:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID
                                self.PlayerID,
                                self.EquipClassLV
                                )
        return DumpString
@@ -3999,6 +4074,54 @@
#------------------------------------------------------
# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
class  tagCMClientExitCustomScene(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        self.SubCmd = 0x33
        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 = 0xA2
        self.SubCmd = 0x33
        return
    def GetLength(self):
        return sizeof(tagCMClientExitCustomScene)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
#------------------------------------------------------
# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
class  tagCMClientStartCustomScene(Structure):
@@ -4006,6 +4129,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("FuncLineID", c_ushort),
                  ]
    def __init__(self):
@@ -4022,6 +4147,8 @@
    def Clear(self):
        self.Cmd = 0xA2
        self.SubCmd = 0x31
        self.MapID = 0
        self.FuncLineID = 0
        return
    def GetLength(self):
@@ -4033,11 +4160,15 @@
    def OutputString(self):
        DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
                                Cmd:%s,
                                SubCmd:%s
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID
                                )
        return DumpString
@@ -4096,6 +4227,58 @@
m_NAtagCMTouchNPC=tagCMTouchNPC()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
#------------------------------------------------------
# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
class  tagCMGetCustomSceneCollectAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),    #采集的NPCID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        self.SubCmd = 0x34
        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 = 0xA2
        self.SubCmd = 0x34
        self.NPCID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetCustomSceneCollectAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID
                                )
        return DumpString
m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
#------------------------------------------------------
@@ -5484,6 +5667,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    
                  ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                  ]
    def __init__(self):
@@ -5501,6 +5685,7 @@
        self.Cmd = 0xA2
        self.SubCmd = 0x12
        self.PlayerID = 0
        self.EquipClassLV = 0
        return
    def GetLength(self):
@@ -5513,18 +5698,72 @@
        DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d
                                PlayerID:%d,
                                EquipClassLV:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID
                                self.PlayerID,
                                self.EquipClassLV
                                )
        return DumpString
m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
#------------------------------------------------------
# A3 17 增加果实使用上限 #tagCMAddFruitUseLimit
class  tagCMAddFruitUseLimit(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),    #果实物品ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        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 = 0xA3
        self.SubCmd = 0x17
        self.ItemID = 0
        return
    def GetLength(self):
        return sizeof(tagCMAddFruitUseLimit)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID
                                )
        return DumpString
m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
#------------------------------------------------------
@@ -7004,70 +7243,6 @@
#------------------------------------------------------
#A3 21 使用特殊运营物品 #tagCMUseSpecialItem
class  tagCMUseSpecialItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SpeicalItemType", c_ubyte),    #特殊运营物品类型,0打折卡,1多选礼包
                  ("ItemID", c_int),    #物品ID
                  ("ItemIndex", c_ubyte),    #物品在背包中的索引位置
                  ("Select", c_ubyte),    #选择,只对多选礼包有用
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x21
        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 = 0xA3
        self.SubCmd = 0x21
        self.SpeicalItemType = 0
        self.ItemID = 0
        self.ItemIndex = 0
        self.Select = 0
        return
    def GetLength(self):
        return sizeof(tagCMUseSpecialItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem:
                                Cmd:%s,
                                SubCmd:%s,
                                SpeicalItemType:%d,
                                ItemID:%d,
                                ItemIndex:%d,
                                Select:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SpeicalItemType,
                                self.ItemID,
                                self.ItemIndex,
                                self.Select
                                )
        return DumpString
m_NAtagCMUseSpecialItem=tagCMUseSpecialItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem
#------------------------------------------------------
# A3 2F 宗门试炼兑换 #tagCMTrialExchange
class  tagCMTrialExchange(Structure):
@@ -7484,66 +7659,6 @@
m_NAtagCMBuySomething=tagCMBuySomething()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething
#------------------------------------------------------
# A5 32 购买商城物品 #tagCMBuyStoreItem
class  tagCMBuyStoreItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),    #1钻石,2绑定钻石,3银子,4银票
                  ("ItemID", c_int),    #物品ID
                  ("BuyCount", c_ushort),    #购买数量
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        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 = 0xA5
        self.SubCmd = 0x32
        self.Type = 0
        self.ItemID = 0
        self.BuyCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMBuyStoreItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d,
                                ItemID:%d,
                                BuyCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type,
                                self.ItemID,
                                self.BuyCount
                                )
        return DumpString
m_NAtagCMBuyStoreItem=tagCMBuyStoreItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem
#------------------------------------------------------
@@ -8119,6 +8234,62 @@
m_NAtagCMBuyCollectionCnt=tagCMBuyCollectionCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyCollectionCnt.Cmd,m_NAtagCMBuyCollectionCnt.SubCmd))] = m_NAtagCMBuyCollectionCnt
#------------------------------------------------------
# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
class  tagCMBuyDailyActionCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActionID", c_int),    # ID
                  ("AddType", c_ubyte),    # 0-花仙玉 1-用物品
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x25
        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 = 0xA5
        self.SubCmd = 0x25
        self.ActionID = 0
        self.AddType = 0
        return
    def GetLength(self):
        return sizeof(tagCMBuyDailyActionCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt:
                                Cmd:%s,
                                SubCmd:%s,
                                ActionID:%d,
                                AddType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActionID,
                                self.AddType
                                )
        return DumpString
m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt
#------------------------------------------------------
@@ -9237,62 +9408,6 @@
#------------------------------------------------------
# A5 46 兑换灵力 #tagCMExchangeReiki
class  tagCMExchangeReiki(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ExType", c_ubyte),    #兑换类型0-降级兑换; 1-钻石购买
                  ("ExData", c_ubyte),    #兑换扩展数据(钻石购买可发送购买的消耗索引)
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x46
        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 = 0xA5
        self.SubCmd = 0x46
        self.ExType = 0
        self.ExData = 0
        return
    def GetLength(self):
        return sizeof(tagCMExchangeReiki)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
                                Cmd:%s,
                                SubCmd:%s,
                                ExType:%d,
                                ExData:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ExType,
                                self.ExData
                                )
        return DumpString
m_NAtagCMExchangeReiki=tagCMExchangeReiki()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
#------------------------------------------------------
# A5 1C 聚魂合成 #tagCMGatherSoulCompound
class  tagCMGatherSoulCompound(Structure):
@@ -9899,58 +10014,6 @@
#------------------------------------------------------
# A5 16 法宝状态记录 #tagCMMagicWeaponState
class  tagCMMagicWeaponState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MWID", c_int),    #法宝ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x16
        self.MWID = 0
        return
    def GetLength(self):
        return sizeof(tagCMMagicWeaponState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
                                Cmd:%s,
                                SubCmd:%s,
                                MWID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MWID
                                )
        return DumpString
m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
#------------------------------------------------------
# A5 15 提升法宝等级 #tagCMMagicWeaponUp
class  tagCMMagicWeaponUp(Structure):
@@ -10240,8 +10303,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("RefineNum", c_ushort),    # 配方编号
                  ("UseRateItem", c_int),    # 附加材料ID
                  ("AlchemyID", c_int),    # 丹药ID
                  ("DoType", c_ubyte),    # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
                  ]
    def __init__(self):
@@ -10258,8 +10321,8 @@
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x76
        self.RefineNum = 0
        self.UseRateItem = 0
        self.AlchemyID = 0
        self.DoType = 0
        return
    def GetLength(self):
@@ -10272,14 +10335,14 @@
        DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
                                Cmd:%s,
                                SubCmd:%s,
                                RefineNum:%d,
                                UseRateItem:%d
                                AlchemyID:%d,
                                DoType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.RefineNum,
                                self.UseRateItem
                                self.AlchemyID,
                                self.DoType
                                )
        return DumpString
@@ -10614,54 +10677,6 @@
m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
#------------------------------------------------------
# A5 47 玩家转生 #tagCMReincarnation
class  tagCMReincarnation(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x47
        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 = 0xA5
        self.SubCmd = 0x47
        return
    def GetLength(self):
        return sizeof(tagCMReincarnation)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMReincarnation=tagCMReincarnation()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
#------------------------------------------------------
@@ -11042,6 +11057,62 @@
#------------------------------------------------------
# A5 16 选择技能五行专精 #tagCMSelectSkillElement
class  tagCMSelectSkillElement(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SkillTypeID", c_int),    # 专精技能ID
                  ("DoType", c_ubyte),    # 0-激活 1-使用
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x16
        self.SkillTypeID = 0
        self.DoType = 0
        return
    def GetLength(self):
        return sizeof(tagCMSelectSkillElement)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
                                Cmd:%s,
                                SubCmd:%s,
                                SkillTypeID:%d,
                                DoType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SkillTypeID,
                                self.DoType
                                )
        return DumpString
m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
#------------------------------------------------------
# A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
class  tagCMStartBindJadeWheel(Structure):
@@ -11135,6 +11206,58 @@
m_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp
#------------------------------------------------------
# A5 12 感应法宝 #tagCMThinkMagicWeapon
class  tagCMThinkMagicWeapon(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MWID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x12
        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 = 0xA5
        self.SubCmd = 0x12
        self.MWID = 0
        return
    def GetLength(self):
        return sizeof(tagCMThinkMagicWeapon)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon:
                                Cmd:%s,
                                SubCmd:%s,
                                MWID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MWID
                                )
        return DumpString
m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
#------------------------------------------------------
@@ -11351,6 +11474,58 @@
m_NAtagUseNewGuyCard=tagUseNewGuyCard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard
#------------------------------------------------------
# A5 26 寻访仙域 #tagCMVisitFairyDomain
class  tagCMVisitFairyDomain(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),    #0-开始寻访 1-结束寻访
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x26
        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 = 0xA5
        self.SubCmd = 0x26
        self.Type = 0
        return
    def GetLength(self):
        return sizeof(tagCMVisitFairyDomain)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type
                                )
        return DumpString
m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain
#------------------------------------------------------
@@ -12731,162 +12906,6 @@
#------------------------------------------------------
# AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward
class  tagCMGetFestivalLoginAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FestivalType", c_ubyte),    # 节日类型
                  ("DayIndex", c_ubyte),    # 节日天 <从节日活动开始日0天开始>
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x07
        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 = 0xAB
        self.SubCmd = 0x07
        self.FestivalType = 0
        self.DayIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetFestivalLoginAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward:
                                Cmd:%s,
                                SubCmd:%s,
                                FestivalType:%d,
                                DayIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FestivalType,
                                self.DayIndex
                                )
        return DumpString
m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward
#------------------------------------------------------
# AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward
class  tagCMGetManorWarDailyAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),    # 领地id
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x02
        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 = 0xAB
        self.SubCmd = 0x02
        self.MapID = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetManorWarDailyAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID
                                )
        return DumpString
m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward
#------------------------------------------------------
# AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward
class  tagCMGetManorWarJoinAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x01
        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 = 0xAB
        self.SubCmd = 0x01
        return
    def GetLength(self):
        return sizeof(tagCMGetManorWarJoinAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward
#------------------------------------------------------
# AB 11 开服活动奖励 #tagCMOpenServerCampaignAward
class  tagCMOpenServerCampaignAward(Structure):
@@ -13763,6 +13782,62 @@
#------------------------------------------------------
# B1 0A 副本购买buff #tagCMFBBuyBuff
class  tagCMFBBuyBuff(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("MoneyCnt", c_ushort),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x0A
        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 = 0xB1
        self.SubCmd = 0x0A
        self.MapID = 0
        self.MoneyCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMFBBuyBuff)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff:
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                MoneyCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.MoneyCnt
                                )
        return DumpString
m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
#------------------------------------------------------
# B1 06 助战召唤 #tagCMHelpBattleCall
class  tagCMHelpBattleCall(Structure):
@@ -14108,6 +14183,54 @@
#------------------------------------------------------
# B2 07 重置加点 #tagCMResetAttrPoint
class  tagCMResetAttrPoint(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x07
        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 = 0x07
        return
    def GetLength(self):
        return sizeof(tagCMResetAttrPoint)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
#------------------------------------------------------
#B2 01 脱机挂状态 # tagCMLoginState
class  tagCMLoginState(Structure):
@@ -14388,6 +14511,122 @@
m_NAtagCMTJGnpc=tagCMTJGnpc()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
#------------------------------------------------------
# B4 0E 设置玩家自身血量 #tagCMSetRoleHP
class  tagCMSetRoleHP(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HP", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x0E
        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 = 0xB4
        self.SubCmd = 0x0E
        self.HP = 0
        return
    def GetLength(self):
        return sizeof(tagCMSetRoleHP)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 0E 设置玩家自身血量 //tagCMSetRoleHP:
                                Cmd:%s,
                                SubCmd:%s,
                                HP:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HP
                                )
        return DumpString
m_NAtagCMSetRoleHP=tagCMSetRoleHP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetRoleHP.Cmd,m_NAtagCMSetRoleHP.SubCmd))] = m_NAtagCMSetRoleHP
#------------------------------------------------------
# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
class  tagCMSummonPriWoodPile(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ("Count", c_ubyte),    #默认1个,最多5个
                  ("HP", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
                  ("HPEx", c_int),    #默认0取最大值,其中一个血量数值大于0则用指定血量
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x0C
        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 = 0xB4
        self.SubCmd = 0x0C
        self.NPCID = 0
        self.Count = 0
        self.HP = 0
        self.HPEx = 0
        return
    def GetLength(self):
        return sizeof(tagCMSummonPriWoodPile)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d,
                                Count:%d,
                                HP:%d,
                                HPEx:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID,
                                self.Count,
                                self.HP,
                                self.HPEx
                                )
        return DumpString
m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
#------------------------------------------------------
@@ -15168,6 +15407,62 @@
#------------------------------------------------------
# B4 0D 战斗印记 #tagCMYinji
class  tagCMYinji(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Count", c_ubyte),
                  ("Type", c_ubyte),    # 0 加,1减
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x0D
        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 = 0xB4
        self.SubCmd = 0x0D
        self.Count = 0
        self.Type = 0
        return
    def GetLength(self):
        return sizeof(tagCMYinji)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
                                Cmd:%s,
                                SubCmd:%s,
                                Count:%d,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Count,
                                self.Type
                                )
        return DumpString
m_NAtagCMYinji=tagCMYinji()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
#------------------------------------------------------
#B4 03 吸引NPC仇恨 #tagNPCAttention
class  tagNPCAttention(Structure):
@@ -15836,6 +16131,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DataMapID", c_int),    
                  ("LineID", c_ushort),
                  ]
    def __init__(self):
@@ -15853,6 +16149,7 @@
        self.Cmd = 0xC1
        self.SubCmd = 0x05
        self.DataMapID = 0
        self.LineID = 0
        return
    def GetLength(self):
@@ -15865,12 +16162,14 @@
        DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer:
                                Cmd:%s,
                                SubCmd:%s,
                                DataMapID:%d
                                DataMapID:%d,
                                LineID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DataMapID
                                self.DataMapID,
                                self.LineID
                                )
        return DumpString