|  |  | 
 |  |  | # 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("PlayerID", c_int),    # 跨服玩家ID
 | 
 |  |  |                   ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.Cmd = 0xC0
 | 
 |  |  |         self.SubCmd = 0x02
 | 
 |  |  |         self.PlayerID = 0
 | 
 |  |  |         self.EquipClassLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # 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):
 | 
 |  |  | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("MapID", c_int),     | 
 |  |  |                   ("FuncLineID", c_ushort),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Cmd = 0xA2
 | 
 |  |  |         self.SubCmd = 0x31
 | 
 |  |  |         self.MapID = 0
 | 
 |  |  |         self.FuncLineID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |     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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("PlayerID", c_int),    
 | 
 |  |  |                   ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.Cmd = 0xA2
 | 
 |  |  |         self.SubCmd = 0x12
 | 
 |  |  |         self.PlayerID = 0
 | 
 |  |  |         self.EquipClassLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #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):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # 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):
 | 
 |  |  | 
 |  |  |     _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):
 | 
 |  |  | 
 |  |  |     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):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 16 选择技能五行专精 #tagCMSelectSkillElement
 | 
 |  |  | 
 | 
 |  |  | class  tagCMSelectSkillElement(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("SkillTypeID", 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.SkillTypeID = 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
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.SkillTypeID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
 | 
 |  |  | 
 | 
 |  |  | class  tagCMStartBindJadeWheel(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # 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 11 开服活动奖励 #tagCMOpenServerCampaignAward
 | 
 |  |  | 
 | 
 |  |  | class  tagCMOpenServerCampaignAward(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # 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 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize
 | 
 |  |  | 
 | 
 |  |  | class  tagCMGiveCustomFBPrize(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("MapID", c_int),     | 
 |  |  |                   ("FuncLineID", c_ushort),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x09
 | 
 |  |  |         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 = 0x09
 | 
 |  |  |         self.MapID = 0
 | 
 |  |  |         self.FuncLineID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMGiveCustomFBPrize)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 MapID:%d,
 | 
 |  |  |                                 FuncLineID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.MapID,
 | 
 |  |  |                                 self.FuncLineID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 06 助战召唤 #tagCMHelpBattleCall
 | 
 |  |  | 
 | 
 |  |  | class  tagCMHelpBattleCall(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMGetMultiFBPrize=tagCMGetMultiFBPrize()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetMultiFBPrize.Cmd,m_NAtagCMGetMultiFBPrize.SubCmd))] = m_NAtagCMGetMultiFBPrize
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize
 | 
 |  |  | 
 | 
 |  |  | class  tagCMRefreshCustomFBPrize(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("MapID", c_int),     | 
 |  |  |                   ("FuncLineID", c_ushort),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x08
 | 
 |  |  |         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 = 0x08
 | 
 |  |  |         self.MapID = 0
 | 
 |  |  |         self.FuncLineID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMRefreshCustomFBPrize)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 MapID:%d,
 | 
 |  |  |                                 FuncLineID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.MapID,
 | 
 |  |  |                                 self.FuncLineID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMTJGnpc=tagCMTJGnpc()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
 | 
 |  |  | 
 | 
 |  |  | class  tagCMSummonPriWoodPile(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("NPCID", c_int),     | 
 |  |  |                   ("Count", c_ubyte),    #默认1个,最多5个
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     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
 | 
 |  |  |         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
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.NPCID,
 | 
 |  |  |                                 self.Count
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DataMapID", c_int),    
 | 
 |  |  |                   ("LineID", c_ushort),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.Cmd = 0xC1
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         self.DataMapID = 0
 | 
 |  |  |         self.LineID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 |