|  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A4 12 搜索家族 #tagCGPySearchFamily
 | 
 |  |  | 
 | 
 |  |  | class  tagCGPySearchFamily(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     MsgLen = 0    #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
 | 
 |  |  |     Msg = ""    #(String Msg)//size = MsgLen
 | 
 |  |  |     LV = 0    #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
 | 
 |  |  |     MaxCount = 0    #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
 | 
 |  |  |     IsSearching = 0    #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA4
 | 
 |  |  |         self.Head.SubCmd = 0x12
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
 | 
 |  |  |         self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA4
 | 
 |  |  |         self.Head.SubCmd = 0x12
 | 
 |  |  |         self.MsgLen = 0
 | 
 |  |  |         self.Msg = ""
 | 
 |  |  |         self.LV = 0
 | 
 |  |  |         self.MaxCount = 0
 | 
 |  |  |         self.IsSearching = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += len(self.Msg)
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.MsgLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.LV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.MaxCount)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsSearching)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 MsgLen:%d,
 | 
 |  |  |                                 Msg:%s,
 | 
 |  |  |                                 LV:%d,
 | 
 |  |  |                                 MaxCount:%d,
 | 
 |  |  |                                 IsSearching:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.MsgLen,
 | 
 |  |  |                                 self.Msg,
 | 
 |  |  |                                 self.LV,
 | 
 |  |  |                                 self.MaxCount,
 | 
 |  |  |                                 self.IsSearching
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCGPySearchFamily=tagCGPySearchFamily()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #A4 01  查看家族第N页#tagCGViewFamilyPage
 | 
 |  |  | 
 | 
 |  |  | class  tagCGViewFamilyPage(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCGFuzzySearchPlayer=tagCGFuzzySearchPlayer()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFuzzySearchPlayer.Head.Cmd,m_NAtagCGFuzzySearchPlayer.Head.SubCmd))] = m_NAtagCGFuzzySearchPlayer
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A9 04 查询boss信息 #tagCGQueryBossInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagCGQueryBossInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)//数量
 | 
 |  |  |     BossIDList = list()    #(vector<DWORD> BossIDList)//boosid
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA9
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.BossIDList.append(value)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA9
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.BossIDList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.Count
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.BossIDList[i])
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 BossIDList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCGQueryBossInfo=tagCGQueryBossInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryBossInfo.Head.Cmd,m_NAtagCGQueryBossInfo.Head.SubCmd))] = m_NAtagCGQueryBossInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCGInvitePlayerJoinTeam=tagCGInvitePlayerJoinTeam()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeam.Cmd,m_NAtagCGInvitePlayerJoinTeam.SubCmd))] = m_NAtagCGInvitePlayerJoinTeam
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B9 0A 按条件邀请玩家加入队伍 #tagCGInvitePlayerJoinTeamByLV
 | 
 |  |  | 
 | 
 |  |  | class  tagCGInvitePlayerJoinTeamByLV(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("LVLimit", c_ushort),    # 目标玩家大于等于此等级
 | 
 |  |  |                   ("InviteCnt", c_ubyte),    # 邀请玩家个数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB9
 | 
 |  |  |         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 = 0xB9
 | 
 |  |  |         self.SubCmd = 0x0A
 | 
 |  |  |         self.LVLimit = 0
 | 
 |  |  |         self.InviteCnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCGInvitePlayerJoinTeamByLV)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B9 0A 按条件邀请玩家加入队伍 //tagCGInvitePlayerJoinTeamByLV:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 LVLimit:%d,
 | 
 |  |  |                                 InviteCnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.LVLimit,
 | 
 |  |  |                                 self.InviteCnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCGInvitePlayerJoinTeamByLV=tagCGInvitePlayerJoinTeamByLV()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeamByLV.Cmd,m_NAtagCGInvitePlayerJoinTeamByLV.SubCmd))] = m_NAtagCGInvitePlayerJoinTeamByLV
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox
 | 
 |  |  | 
 | 
 |  |  | class  tagCMSetChatBubbleBox(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("BubbleBoxType", c_ubyte),    #气泡框类型
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA2
 | 
 |  |  |         self.SubCmd = 0x30
 | 
 |  |  |         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 = 0x30
 | 
 |  |  |         self.BubbleBoxType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMSetChatBubbleBox)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A2 30 设置聊天气泡框 //tagCMSetChatBubbleBox:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 BubbleBoxType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.BubbleBoxType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMSetChatBubbleBox=tagCMSetChatBubbleBox()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetChatBubbleBox.Cmd,m_NAtagCMSetChatBubbleBox.SubCmd))] = m_NAtagCMSetChatBubbleBox
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 22 设置引导成功 #tagCMSetGuideOK
 | 
 |  |  | 
 | 
 |  |  | class  tagCMSetGuideOK(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMSetGuideOK=tagCMSetGuideOK()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetGuideOK.Cmd,m_NAtagCMSetGuideOK.SubCmd))] = m_NAtagCMSetGuideOK
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A2 29 设置小助手 #tagCMSetLittleHelper
 | 
 |  |  | 
 | 
 |  |  | class  tagCMSetLittleHelper(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("SetNum", c_ubyte),    # 托管功能设置编号1~20,每个编号对应的托管功能前端自定义
 | 
 |  |  |                   ("Value1", c_int),    # 自定义值1
 | 
 |  |  |                   ("Value2", c_int),    # 自定义值2
 | 
 |  |  |                   ("Value3", c_int),    # 自定义值3
 | 
 |  |  |                   ("Value4", c_int),    # 自定义值4
 | 
 |  |  |                   ("Value5", c_int),    # 自定义值5
 | 
 |  |  |                   ("Value6", c_int),    # 自定义值6
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA2
 | 
 |  |  |         self.SubCmd = 0x29
 | 
 |  |  |         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 = 0x29
 | 
 |  |  |         self.SetNum = 0
 | 
 |  |  |         self.Value1 = 0
 | 
 |  |  |         self.Value2 = 0
 | 
 |  |  |         self.Value3 = 0
 | 
 |  |  |         self.Value4 = 0
 | 
 |  |  |         self.Value5 = 0
 | 
 |  |  |         self.Value6 = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMSetLittleHelper)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A2 29 设置小助手 //tagCMSetLittleHelper:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 SetNum:%d,
 | 
 |  |  |                                 Value1:%d,
 | 
 |  |  |                                 Value2:%d,
 | 
 |  |  |                                 Value3:%d,
 | 
 |  |  |                                 Value4:%d,
 | 
 |  |  |                                 Value5:%d,
 | 
 |  |  |                                 Value6:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.SetNum,
 | 
 |  |  |                                 self.Value1,
 | 
 |  |  |                                 self.Value2,
 | 
 |  |  |                                 self.Value3,
 | 
 |  |  |                                 self.Value4,
 | 
 |  |  |                                 self.Value5,
 | 
 |  |  |                                 self.Value6
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMSetLittleHelper=tagCMSetLittleHelper()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetLittleHelper.Cmd,m_NAtagCMSetLittleHelper.SubCmd))] = m_NAtagCMSetLittleHelper
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | class  tagCMEquipDecompose(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     IndexCount = 0    #(BYTE IndexCount)//材料所在背包索引的数量
 | 
 |  |  |     IndexList = list()    #(vector<BYTE> IndexList)//材料所在背包索引列表
 | 
 |  |  |     Count = 0    #(BYTE Count)//材料所在背包索引的数量
 | 
 |  |  |     IndexList = list()    #(vector<WORD> IndexList)//材料所在背包索引列表
 | 
 |  |  |     ItemIDList = list()    #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
 | 
 |  |  |     IsAuto = 0    #(BYTE IsAuto)//是否自动分解
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             value,_pos=CommFunc.ReadWORD(_lpData,_pos)
 | 
 |  |  |             self.IndexList.append(value)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.ItemIDList.append(value)
 | 
 |  |  |         self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x2C
 | 
 |  |  |         self.IndexCount = 0
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.IndexList = list()
 | 
 |  |  |         self.ItemIDList = list()
 | 
 |  |  |         self.IsAuto = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.IndexCount
 | 
 |  |  |         length += 2 * self.Count
 | 
 |  |  |         length += 4 * self.Count
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IndexCount)
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.IndexList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteWORD(data, self.IndexList[i])
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsAuto)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 IndexCount:%d,
 | 
 |  |  |                                 IndexList:%s
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 IndexList:%s,
 | 
 |  |  |                                 ItemIDList:%s,
 | 
 |  |  |                                 IsAuto:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.IndexCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.IsAuto
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 13 物品拆解 #tagCMItemDecompound
 | 
 |  |  | 
 | 
 |  |  | class  tagCMItemDecompound(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("Index", c_ubyte),    # 拆解物品所在背包索引
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA3
 | 
 |  |  |         self.SubCmd = 0x13
 | 
 |  |  |         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 = 0x13
 | 
 |  |  |         self.Index = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMItemDecompound)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A3 13 物品拆解 //tagCMItemDecompound:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 Index:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.Index
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMItemDecompound=tagCMItemDecompound()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #A3 02 丢弃背包物品 #tagPlayerDropItem
 | 
 |  |  | 
 | 
 |  |  | class  tagPlayerDropItem(Structure):
 | 
 |  |  | 
 |  |  |     AddonsItemIndexCnt = 0    #(BYTE AddonsItemIndexCnt)// 附加物品在背包中索引个数
 | 
 |  |  |     AddonsItemIndex = list()    #(vector<BYTE> AddonsItemIndex)// 附加物品在背包的索引列表
 | 
 |  |  |     AddonsItemCount = list()    #(vector<BYTE> AddonsItemCount)// 附加物品在背包的索引对应扣除数量列表
 | 
 |  |  |     RateIncreaseItemIndexCnt = 0    #(BYTE RateIncreaseItemIndexCnt)// 提升概率物品在背包中索引个数
 | 
 |  |  |     RateIncreaseItemIndex = list()    #(vector<BYTE> RateIncreaseItemIndex)// 提升概率物品在背包的索引列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         for i in range(self.AddonsItemIndexCnt):
 | 
 |  |  |             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
 | 
 |  |  |             self.AddonsItemCount.append(value)
 | 
 |  |  |         self.RateIncreaseItemIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.RateIncreaseItemIndexCnt):
 | 
 |  |  |             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
 | 
 |  |  |             self.RateIncreaseItemIndex.append(value)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.AddonsItemIndexCnt = 0
 | 
 |  |  |         self.AddonsItemIndex = list()
 | 
 |  |  |         self.AddonsItemCount = list()
 | 
 |  |  |         self.RateIncreaseItemIndexCnt = 0
 | 
 |  |  |         self.RateIncreaseItemIndex = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.AddonsItemIndexCnt
 | 
 |  |  |         length += 1 * self.AddonsItemIndexCnt
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.RateIncreaseItemIndexCnt
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.AddonsItemIndex[i])
 | 
 |  |  |         for i in range(self.AddonsItemIndexCnt):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.AddonsItemCount[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RateIncreaseItemIndexCnt)
 | 
 |  |  |         for i in range(self.RateIncreaseItemIndexCnt):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.RateIncreaseItemIndex[i])
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  | 
 |  |  |                                 FixedItemIndex:%s,
 | 
 |  |  |                                 AddonsItemIndexCnt:%d,
 | 
 |  |  |                                 AddonsItemIndex:%s,
 | 
 |  |  |                                 AddonsItemCount:%s
 | 
 |  |  |                                 AddonsItemCount:%s,
 | 
 |  |  |                                 RateIncreaseItemIndexCnt:%d,
 | 
 |  |  |                                 RateIncreaseItemIndex:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.AddonsItemIndexCnt,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.RateIncreaseItemIndexCnt,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 |  |  |                   ("MapID", c_int),    
 | 
 |  |  |                   ("LineID", c_ushort),    
 | 
 |  |  |                   ("Cnt", c_ubyte),    # 扫荡次数
 | 
 |  |  |                   ("IsFinish", c_ubyte),    # 是否立即完成
 | 
 |  |  |                   ("IsFinish", c_ubyte),    # 是否立即完成; 0-否;1-花钱立即完成;2-客户端自行倒计时间到后发送2代表领取扫荡完成奖励
 | 
 |  |  |                   ("DataEx", c_int),    #附带信息
 | 
 |  |  |                   ("IsLittleHelper", c_ubyte),    # 是否小助手扫荡
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.Cnt = 0
 | 
 |  |  |         self.IsFinish = 0
 | 
 |  |  |         self.DataEx = 0
 | 
 |  |  |         self.IsLittleHelper = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |                                 LineID:%d,
 | 
 |  |  |                                 Cnt:%d,
 | 
 |  |  |                                 IsFinish:%d,
 | 
 |  |  |                                 DataEx:%d
 | 
 |  |  |                                 DataEx:%d,
 | 
 |  |  |                                 IsLittleHelper:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  | 
 |  |  |                                 self.LineID,
 | 
 |  |  |                                 self.Cnt,
 | 
 |  |  |                                 self.IsFinish,
 | 
 |  |  |                                 self.DataEx
 | 
 |  |  |                                 self.DataEx,
 | 
 |  |  |                                 self.IsLittleHelper
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | # A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
 | 
 |  |  | 
 | 
 |  |  | class  tagCMDogzEquipItem(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DogzID", c_ubyte),    # 神兽ID
 | 
 |  |  |                   ("EquipIndex", c_ubyte),    #神兽装备所在神兽背包索引
 | 
 |  |  |                   ]
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     DogzID = 0    #(BYTE DogzID)// 神兽ID
 | 
 |  |  |     EquipIndexCount = 0    #(BYTE EquipIndexCount)
 | 
 |  |  |     EquipIndexList = list()    #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC0
 | 
 |  |  |         self.Head.Cmd = 0xA5
 | 
 |  |  |         self.Head.SubCmd = 0xC0
 | 
 |  |  |         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.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.EquipIndexCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
 | 
 |  |  |             self.EquipIndexList.append(value)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0xC0
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA5
 | 
 |  |  |         self.Head.SubCmd = 0xC0
 | 
 |  |  |         self.DogzID = 0
 | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.EquipIndexCount = 0
 | 
 |  |  |         self.EquipIndexList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMDogzEquipItem)
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.EquipIndexCount
 | 
 |  |  | 
 | 
 |  |  |         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.WriteBYTE(data, self.DogzID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
 | 
 |  |  |         for i in range(self.EquipIndexCount):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 C0 神兽穿戴装备 //tagCMDogzEquipItem:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 DogzID:%d,
 | 
 |  |  |                                 EquipIndex:%d
 | 
 |  |  |                                 EquipIndexCount:%d,
 | 
 |  |  |                                 EquipIndexList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.DogzID,
 | 
 |  |  |                                 self.EquipIndex
 | 
 |  |  |                                 self.EquipIndexCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Cmd,m_NAtagCMDogzEquipItem.SubCmd))] = m_NAtagCMDogzEquipItem
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |     EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
 | 
 |  |  |     IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
 | 
 |  |  |     IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
 | 
 |  |  |     IndexUseCountList = list()    #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
 | 
 |  |  |     IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
 | 
 |  |  |             self.IndexList.append(value)
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.IndexUseCountList.append(value)
 | 
 |  |  |         self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.IndexCount = 0
 | 
 |  |  |         self.IndexList = list()
 | 
 |  |  |         self.IndexUseCountList = list()
 | 
 |  |  |         self.IsDouble = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1 * self.IndexCount
 | 
 |  |  |         length += 4 * self.IndexCount
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IndexCount)
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             data = CommFunc.WriteBYTE(data, self.IndexList[i])
 | 
 |  |  |         for i in range(self.IndexCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.IsDouble)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 IndexCount:%d,
 | 
 |  |  |                                 IndexList:%s,
 | 
 |  |  |                                 IndexUseCountList:%s,
 | 
 |  |  |                                 IsDouble:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.IndexCount,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.IsDouble
 | 
 |  |  |                                 )
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 56 神兵激活 #tagCMGodWeaponActivate
 | 
 |  |  | 
 | 
 |  |  | class  tagCMGodWeaponActivate(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("WeaponType", c_int),    # 神兵类型
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0x56
 | 
 |  |  |         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 = 0x56
 | 
 |  |  |         self.WeaponType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMGodWeaponActivate)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 56 神兵激活 //tagCMGodWeaponActivate:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 WeaponType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.WeaponType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMGodWeaponActivate=tagCMGodWeaponActivate()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGodWeaponActivate.Cmd,m_NAtagCMGodWeaponActivate.SubCmd))] = m_NAtagCMGodWeaponActivate
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 55 神兵升级 #tagCMGodWeaponPlus
 | 
 |  |  | 
 | 
 |  |  | class  tagCMGodWeaponPlus(Structure):
 | 
 |  |  | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("WeaponType", c_int),    # 神兵类型
 | 
 |  |  |                   ("ItemID", c_int),    #消耗的物品ID
 | 
 |  |  |                   ("ItemCount", c_ubyte),    #消耗个数,默认1
 | 
 |  |  |                   ("IsAutoBuy", c_ubyte),    #是否自动购买,默认0
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.SubCmd = 0x55
 | 
 |  |  |         self.WeaponType = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.IsAutoBuy = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 WeaponType:%d,
 | 
 |  |  |                                 ItemID:%d
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 IsAutoBuy:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.WeaponType,
 | 
 |  |  |                                 self.ItemID
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.IsAutoBuy
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMPlayerRefine=tagCMPlayerRefine()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPlayerRefine.Cmd,m_NAtagCMPlayerRefine.SubCmd))] = m_NAtagCMPlayerRefine
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 14 祈福丹药 #tagCMPrayElixir
 | 
 |  |  | 
 | 
 |  |  | class  tagCMPrayElixir(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0x14
 | 
 |  |  |         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 = 0x14
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMPrayElixir)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 14 祈福丹药 //tagCMPrayElixir:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMPrayElixir=tagCMPrayElixir()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
 | 
 |  |  | 
 | 
 |  |  | class  tagCMStartBindJadeWheel(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         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 = 0xA5
 | 
 |  |  |         self.SubCmd = 0x17
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMStartBindJadeWheel)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 17 绑玉转盘开始 //tagCMStartBindJadeWheel:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 11 试用首充武器 #tagCMTryFirstGoldItem
 | 
 |  |  | 
 | 
 |  |  | class  tagCMTryFirstGoldItem(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMUnLockBirthChartHole=tagCMUnLockBirthChartHole()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnLockBirthChartHole.Cmd,m_NAtagCMUnLockBirthChartHole.SubCmd))] = m_NAtagCMUnLockBirthChartHole
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A5 13 解锁符印孔 #tagCMUnlockRuneHole
 | 
 |  |  | 
 | 
 |  |  | class  tagCMUnlockRuneHole(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("HoleIndex", c_ubyte),    # 孔索引
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA5
 | 
 |  |  |         self.SubCmd = 0x13
 | 
 |  |  |         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 = 0x13
 | 
 |  |  |         self.HoleIndex = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMUnlockRuneHole)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A5 13 解锁符印孔 //tagCMUnlockRuneHole:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 HoleIndex:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.HoleIndex
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMUnlockRuneHole=tagCMUnlockRuneHole()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnlockRuneHole.Cmd,m_NAtagCMUnlockRuneHole.SubCmd))] = m_NAtagCMUnlockRuneHole
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagCMVIPKillNPCLVInfoSwitch=tagCMVIPKillNPCLVInfoSwitch()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVIPKillNPCLVInfoSwitch.Cmd,m_NAtagCMVIPKillNPCLVInfoSwitch.SubCmd))] = m_NAtagCMVIPKillNPCLVInfoSwitch
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
 | 
 |  |  | 
 | 
 |  |  | class  tagCMActWishingRefresh(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("IsFree", c_ubyte),    # 是否免费刷新
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         self.IsFree = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMActWishingRefresh)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 07 许愿池活动刷新奖池 //tagCMActWishingRefresh:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 IsFree:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.IsFree
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 06 许愿池活动许愿 #tagCMActWishing
 | 
 |  |  | 
 | 
 |  |  | class  tagCMActWishing(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("SrcWellType", c_ubyte),    # 来源库 0-可选库 1-结果库
 | 
 |  |  |                   ("SrcIndex", c_ubyte),    # 来源索引
 | 
 |  |  |                   ("DesWellType", c_ubyte),    # 目标库 0-可选库 1-结果库
 | 
 |  |  |                   ("DesIndex", c_ubyte),    # 目标索引
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         self.SrcWellType = 0
 | 
 |  |  |         self.SrcIndex = 0
 | 
 |  |  |         self.DesWellType = 0
 | 
 |  |  |         self.DesIndex = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMActWishing)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 06 许愿池活动许愿 //tagCMActWishing:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 SrcWellType:%d,
 | 
 |  |  |                                 SrcIndex:%d,
 | 
 |  |  |                                 DesWellType:%d,
 | 
 |  |  |                                 DesIndex:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.SrcWellType,
 | 
 |  |  |                                 self.SrcIndex,
 | 
 |  |  |                                 self.DesWellType,
 | 
 |  |  |                                 self.DesIndex
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMActWishing=tagCMActWishing()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 05 限时抢购预约 #tagCMFlashSaleAppointment
 | 
 |  |  | 
 | 
 |  |  | class  tagCMFlashSaleAppointment(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("GoodsID", c_int),    # 抢购商品标识
 | 
 |  |  |                   ("State", c_ubyte),    # 1-预约 0-取消
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         self.GoodsID = 0
 | 
 |  |  |         self.State = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMFlashSaleAppointment)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 GoodsID:%d,
 | 
 |  |  |                                 State:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.GoodsID,
 | 
 |  |  |                                 self.State
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 06 助战召唤 #tagCMHelpBattleCall
 | 
 |  |  | 
 | 
 |  |  | class  tagCMHelpBattleCall(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("IsOneKeyCall", c_ubyte),    # 是否一键召唤
 | 
 |  |  |                   ("PlayerID", c_int),    # 召唤的玩家ID,大于1小于100代表机器人
 | 
 |  |  |                   ("IsGoldCall", c_ubyte),    # 是否仙玉召唤
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         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 = 0x06
 | 
 |  |  |         self.IsOneKeyCall = 0
 | 
 |  |  |         self.PlayerID = 0
 | 
 |  |  |         self.IsGoldCall = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMHelpBattleCall)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 06 助战召唤 //tagCMHelpBattleCall:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 IsOneKeyCall:%d,
 | 
 |  |  |                                 PlayerID:%d,
 | 
 |  |  |                                 IsGoldCall:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.IsOneKeyCall,
 | 
 |  |  |                                 self.PlayerID,
 | 
 |  |  |                                 self.IsGoldCall
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMHelpBattleCall=tagCMHelpBattleCall()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleCall.Cmd,m_NAtagCMHelpBattleCall.SubCmd))] = m_NAtagCMHelpBattleCall
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 05 助战登记 #tagCMHelpBattleCheckIn
 | 
 |  |  | 
 | 
 |  |  | class  tagCMHelpBattleCheckIn(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         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 = 0x05
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMHelpBattleCheckIn)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 05 助战登记 //tagCMHelpBattleCheckIn:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMHelpBattleCheckIn=tagCMHelpBattleCheckIn()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleCheckIn.Cmd,m_NAtagCMHelpBattleCheckIn.SubCmd))] = m_NAtagCMHelpBattleCheckIn
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 07 助战刷新 #tagCMHelpBattleRefresh
 | 
 |  |  | 
 | 
 |  |  | class  tagCMHelpBattleRefresh(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB1
 | 
 |  |  |         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 = 0xB1
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagCMHelpBattleRefresh)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// B1 07 助战刷新 //tagCMHelpBattleRefresh:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagCMHelpBattleRefresh=tagCMHelpBattleRefresh()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleRefresh.Cmd,m_NAtagCMHelpBattleRefresh.SubCmd))] = m_NAtagCMHelpBattleRefresh
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
 | 
 |  |  | 
 | 
 |  |  | class  tagCMGetMultiFBPrize(Structure):
 |