| | |
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward
|
| | |
|
| | | class tagCGGetBossFirstKillAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("NPCID", c_int), |
| | | ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x01
|
| | | self.NPCID = 0
|
| | | self.AwardType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGGetBossFirstKillAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | NPCID:%d,
|
| | | AwardType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.NPCID,
|
| | | self.AwardType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord
|
| | |
|
| | | class tagCGQueryArenaBattleRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0xA8
|
| | | 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 = 0xA9
|
| | | self.SubCmd = 0xA8
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryArenaBattleRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 A8 查看竞技场对战记录 //tagCGQueryArenaBattleRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryArenaBattleRecord=tagCGQueryArenaBattleRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattleRecord.Cmd,m_NAtagCGQueryArenaBattleRecord.SubCmd))] = m_NAtagCGQueryArenaBattleRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 04 查询boss信息 #tagCGQueryBossInfo
|
| | |
|
| | | class tagCGQueryBossInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagCGQueryCompensation=tagCGQueryCompensation()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryCompensation.Cmd,m_NAtagCGQueryCompensation.SubCmd))] = m_NAtagCGQueryCompensation
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
|
| | |
|
| | | class tagCGQueryNotifyEquipDetailInfo(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x05
|
| | | self.ItemGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.ItemGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
|
| | |
|
| | | class tagCGQueryTeHuiActivetyInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActivityType", c_ubyte), # 活动类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | self.ActivityType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryTeHuiActivetyInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActivityType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActivityType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
|
| | |
|
| | | class tagCGTruckTimeEnd(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 13 取消协助Boss #tagCGCancelAssistBoss
|
| | |
|
| | | class tagCGCancelAssistBoss(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x13
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGCancelAssistBoss=tagCGCancelAssistBoss()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelAssistBoss.Head.Cmd,m_NAtagCGCancelAssistBoss.Head.SubCmd))] = m_NAtagCGCancelAssistBoss
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift
|
| | |
|
| | | class tagCGGetAssistThanksGift(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsPreview", c_ubyte), #是否预览,非预览即确认领取,无额外奖励确认时也需要回复领取包代表已读
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x15
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x15
|
| | | self.IsPreview = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGGetAssistThanksGift)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 15 接收协助感谢礼物 //tagCGGetAssistThanksGift:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsPreview:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsPreview
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGGetAssistThanksGift=tagCGGetAssistThanksGift()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetAssistThanksGift.Cmd,m_NAtagCGGetAssistThanksGift.SubCmd))] = m_NAtagCGGetAssistThanksGift
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState
|
| | |
|
| | | class tagQueryFamilyArrestOverState(Structure):
|
| | |
| | |
|
| | | m_NAtagQueryFamilyArrestOverState=tagQueryFamilyArrestOverState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestOverState.Cmd,m_NAtagQueryFamilyArrestOverState.SubCmd))] = m_NAtagQueryFamilyArrestOverState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 12 开始协助Boss #tagCGStartAssistBoss
|
| | |
|
| | | class tagCGStartAssistBoss(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x12
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGStartAssistBoss=tagCGStartAssistBoss()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGStartAssistBoss.Head.Cmd,m_NAtagCGStartAssistBoss.Head.SubCmd))] = m_NAtagCGStartAssistBoss
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift
|
| | |
|
| | | class tagCGUseAssistThanksGift(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), |
| | | ("IsPreview", c_ubyte), #是否预览,非预览即确认使用
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x14
|
| | | self.ItemID = 0
|
| | | self.IsPreview = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGUseAssistThanksGift)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 14 使用协助感谢礼盒 //tagCGUseAssistThanksGift:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d,
|
| | | IsPreview:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID,
|
| | | self.IsPreview
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
|
| | |
|
| | | class tagCGAttentionAuctionItemChange(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), |
| | | ("IsAttention", c_ubyte), #是否关注,取消关注发0
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB5
|
| | | self.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB5
|
| | | self.SubCmd = 0x18
|
| | | self.ItemID = 0
|
| | | self.IsAttention = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGAttentionAuctionItemChange)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d,
|
| | | IsAttention:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID,
|
| | | self.IsAttention
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
|
| | |
|
| | | class tagCGPYQueryBourseItemOnSale(Structure):
|
| | |
| | |
|
| | | m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
|
| | |
|
| | | class tagCGQueryAttentionAuctionItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB5
|
| | | 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 = 0xB5
|
| | | self.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryAttentionAuctionItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
|
| | |
|
| | | class tagCGQueryAuctionItem(Structure):
|
| | | Head = tagHead()
|
| | | Job = 0 #(BYTE Job)//过滤职业,0为不限制
|
| | | ItemTypeCount = 0 #(BYTE ItemTypeCount)
|
| | | ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型
|
| | | ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制
|
| | | SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数
|
| | | SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID
|
| | | FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
|
| | | QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
|
| | | QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ItemTypeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ItemTypeList.append(value)
|
| | | self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SpecItemIDCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SpecItemIDList.append(value)
|
| | | self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x10
|
| | | self.Job = 0
|
| | | self.ItemTypeCount = 0
|
| | | self.ItemTypeList = list()
|
| | | self.ClassLV = 0
|
| | | self.SpecItemIDCount = 0
|
| | | self.SpecItemIDList = list()
|
| | | self.FromItemGUID = ""
|
| | | self.QueryDir = 0
|
| | | self.QueryCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.ItemTypeCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.SpecItemIDCount
|
| | | length += 40
|
| | | 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.Job)
|
| | | data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
|
| | | for i in range(self.ItemTypeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ClassLV)
|
| | | data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
|
| | | for i in range(self.SpecItemIDCount):
|
| | | data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
|
| | | data = CommFunc.WriteString(data, 40, self.FromItemGUID)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryDir)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Job:%d,
|
| | | ItemTypeCount:%d,
|
| | | ItemTypeList:%s,
|
| | | ClassLV:%d,
|
| | | SpecItemIDCount:%d,
|
| | | SpecItemIDList:%s,
|
| | | FromItemGUID:%s,
|
| | | QueryDir:%d,
|
| | | QueryCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Job,
|
| | | self.ItemTypeCount,
|
| | | "...",
|
| | | self.ClassLV,
|
| | | self.SpecItemIDCount,
|
| | | "...",
|
| | | self.FromItemGUID,
|
| | | self.QueryDir,
|
| | | self.QueryCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord
|
| | |
|
| | | class tagCGQueryAuctionRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB5
|
| | | 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 = 0xB5
|
| | | self.SubCmd = 0x12
|
| | | self.RecordType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryAuctionRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RecordType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RecordType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
|
| | |
|
| | | class tagCGQueryTagAuctionItem(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | ItemID = 0 #(DWORD ItemID)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x17
|
| | | self.ItemGUID = ""
|
| | | self.ItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.ItemGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s,
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID,
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 11 请求加入队伍 #tagCGRequestJoinTeam
|
| | |
|
| | | class tagCGRequestJoinTeam(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TeamID", c_int), # 目标队伍ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB9
|
| | | self.SubCmd = 0x11
|
| | | 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 = 0x11
|
| | | self.TeamID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGRequestJoinTeam)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B9 11 请求加入队伍 //tagCGRequestJoinTeam:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TeamID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TeamID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGRequestJoinTeam=tagCGRequestJoinTeam()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRequestJoinTeam.Cmd,m_NAtagCGRequestJoinTeam.SubCmd))] = m_NAtagCGRequestJoinTeam
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 09 队员进入副本准备选择 #tagCGTeamMemberPrepare
|
| | |
|
| | | class tagCGTeamMemberPrepare(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 04 查看跨服排行榜 #tagCGViewCrossBillboard
|
| | |
|
| | | class tagCGViewCrossBillboard(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), #榜单类型
|
| | | ("GroupValue1", c_ubyte), # 分组值1
|
| | | ("GroupValue2", c_ubyte), # 分组值2,与分组值1组合归为同组榜单数据
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xC0
|
| | | self.SubCmd = 0x04
|
| | | self.Type = 0
|
| | | self.GroupValue1 = 0
|
| | | self.GroupValue2 = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGViewCrossBillboard)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d,
|
| | | GroupValue1:%d,
|
| | | GroupValue2:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type,
|
| | | self.GroupValue1,
|
| | | self.GroupValue2
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
|
| | |
|
| | | class tagCGViewCrossPKBillboard(Structure):
|
| | |
| | | ("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
|
| | |
|
| | |
| | |
|
| | | m_NAtagCMPCInfo=tagCMPCInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
|
| | |
|
| | | class tagCMQueryCoinToGoldCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RecordID", c_ubyte), #充值记录ID,也就是充值ID,发0则查全部
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA1
|
| | | self.SubCmd = 0x23
|
| | | 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 = 0xA1
|
| | | self.SubCmd = 0x23
|
| | | self.RecordID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryCoinToGoldCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A1 23 查询充值次数 //tagCMQueryCoinToGoldCount:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RecordID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RecordID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
|
| | |
|
| | | class tagCMRefreshMainServerRole(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA1
|
| | | 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 = 0xA1
|
| | | self.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRefreshMainServerRole)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 08 购买自定义商店物品 #tagCMBuyShopItem
|
| | |
|
| | | class tagCMBuyShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ("ItemShopIndex", c_ushort), |
| | | ("BuyCount", c_ushort), #购买数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x08
|
| | | self.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMBuyShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMBuyShopItem=tagCMBuyShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 10 清除副本CD#tagCMClearFBCD
|
| | |
|
| | | class tagCMClearFBCD(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("FuncLineID", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x31
|
| | | 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 = 0x31
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMClientStartCustomScene)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.FuncLineID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 24 触碰NPC #tagCMTouchNPC
|
| | |
|
| | | class tagCMTouchNPC(Structure):
|
| | |
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
|
| | |
|
| | | class tagCMQueryShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | self.ShopID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryShopItem=tagCMQueryShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 06 快速完成任务#tagCMQuickFinishMission
|
| | |
|
| | | class tagCMQuickFinishMission(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
|
| | | # A2 32 神秘商店刷新 #tagCMRefreshMysticalShop
|
| | |
|
| | | class tagCMRefreshShopItem(Structure):
|
| | | class tagCMRefreshMysticalShop(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x14
|
| | | self.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x14
|
| | | self.ShopID = 0
|
| | | self.SubCmd = 0x32
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRefreshShopItem)
|
| | | return sizeof(tagCMRefreshMysticalShop)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
|
| | | DumpString = '''// A2 32 神秘商店刷新 //tagCMRefreshMysticalShop:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
|
| | | m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 07 接受任务 #tagCMTakeTask
|
| | |
|
| | | class tagCMTakeTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TaskID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | self.TaskID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMTakeTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 07 接受任务 //tagCMTakeTask:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TaskID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TaskID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMTakeTask=tagCMTakeTask()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeTask.Cmd,m_NAtagCMTakeTask.SubCmd))] = m_NAtagCMTakeTask
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A2 12 查看玩家详细信息#tagCMViewPlayerInfo
|
| | |
|
| | | class tagCMViewPlayerInfo(Structure):
|
| | |
| | | ("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 30 装备神装进阶 #tagCMEquipEvolve
|
| | |
|
| | | class tagCMEquipEvolve(Structure):
|
| | | Head = tagHead()
|
| | | EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
|
| | | NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
|
| | | NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
|
| | | NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
|
| | | NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
|
| | | NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x30
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.NeedItemIDIndexCnt):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.NeedItemIDIndex.append(value)
|
| | | self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.NeedSuitIndexCnt):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.NeedSuitIndex.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x30
|
| | | self.EquipIndex = 0
|
| | | self.NeedEquipIDIndex = 0
|
| | | self.NeedItemIDIndexCnt = 0
|
| | | self.NeedItemIDIndex = list()
|
| | | self.NeedSuitIndexCnt = 0
|
| | | self.NeedSuitIndex = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.NeedItemIDIndexCnt
|
| | | length += 1
|
| | | length += 1 * self.NeedSuitIndexCnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.EquipIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
|
| | | for i in range(self.NeedItemIDIndexCnt):
|
| | | data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
|
| | | data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
|
| | | for i in range(self.NeedSuitIndexCnt):
|
| | | data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EquipIndex:%d,
|
| | | NeedEquipIDIndex:%d,
|
| | | NeedItemIDIndexCnt:%d,
|
| | | NeedItemIDIndex:%s,
|
| | | NeedSuitIndexCnt:%d,
|
| | | NeedSuitIndex:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.EquipIndex,
|
| | | self.NeedEquipIDIndex,
|
| | | self.NeedItemIDIndexCnt,
|
| | | "...",
|
| | | self.NeedSuitIndexCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipEvolve=tagCMEquipEvolve()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 01 装备强化 #tagEquipPlus
|
| | |
|
| | | class tagEquipPlus(Structure):
|
| | |
| | |
|
| | | m_NAtagEquipPlus=tagEquipPlus()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagEquipPlus.Cmd,m_NAtagEquipPlus.SubCmd))] = m_NAtagEquipPlus
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 16 装备强化进化 #tagCMEquipPlusEvolve
|
| | |
|
| | | class tagCMEquipPlusEvolve(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_ushort), #装备在背包中索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x16
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipPlusEvolve)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 08 物品过期 #tagCMItemTimeout
|
| | |
|
| | | class tagCMItemTimeout(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PackType", c_ubyte), #背包类型
|
| | | ("ItemIndex", c_ubyte), #物品在背包中索引
|
| | | ("IsAll", c_ubyte), #是否处理所有过期物品
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x08
|
| | | self.PackType = 0
|
| | | self.ItemIndex = 0
|
| | | self.IsAll = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMItemTimeout)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PackType:%d,
|
| | | ItemIndex:%d,
|
| | | IsAll:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PackType,
|
| | | self.ItemIndex,
|
| | | self.IsAll
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMItemTimeout=tagCMItemTimeout()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 18 灵器突破 #tagCMLingQiEquipBreak
|
| | |
|
| | | class tagCMLingQiEquipBreak(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), #突破的物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x18
|
| | | self.ItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMLingQiEquipBreak)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 18 灵器突破 //tagCMLingQiEquipBreak:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 02 丢弃背包物品 #tagPlayerDropItem
|
| | |
|
| | | class tagPlayerDropItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 17 套装合成#tagCMSuitCompose
|
| | |
|
| | | class tagCMSuitCompose(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SuiteType", c_ubyte), # 套装类型 1普通 2强化
|
| | | ("EquipPlace", c_ubyte), # 装备位置
|
| | | ]
|
| | |
|
| | | 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.SuiteType = 0
|
| | | self.EquipPlace = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSuitCompose)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 17 套装合成//tagCMSuitCompose:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SuiteType:%d,
|
| | | EquipPlace:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SuiteType,
|
| | | self.EquipPlace
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSuitCompose=tagCMSuitCompose()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 08 套装拆解 #tagCMSuiteDecompose
|
| | |
|
| | | class tagCMSuiteDecompose(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipPlace", c_ubyte), #部位索引
|
| | | ("SuiteType", c_ubyte), #套装类型 0代表全部类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x08
|
| | | self.EquipPlace = 0
|
| | | self.SuiteType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSuiteDecompose)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipPlace:%d,
|
| | | SuiteType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipPlace,
|
| | | self.SuiteType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSuiteDecompose=tagCMSuiteDecompose()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack
|
| | |
|
| | | class tagCMMagicItemPutInItemPack(Structure):
|
| | |
| | |
|
| | | m_NAtagCMSellItem=tagCMSellItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellItem.Head.Cmd,m_NAtagCMSellItem.Head.SubCmd))] = m_NAtagCMSellItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 01 坐骑激活 #tagPlayerActivateHorse
|
| | |
|
| | | class tagPlayerActivateHorse(Structure):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HorseID", c_int), #坐骑ID
|
| | | ("HorseID", c_int), #坐骑幻化ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | m_NAtagPlayerActivateHorse=tagPlayerActivateHorse()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerActivateHorse.Cmd,m_NAtagPlayerActivateHorse.SubCmd))] = m_NAtagPlayerActivateHorse
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C7 激活大师强化等级 #tagCMActivateMasterPlusLV
|
| | |
|
| | | class tagCMActivateMasterPlusLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ClassLV", c_ubyte), # 所属装备阶
|
| | | ("MasterPlusLV", c_ushort), # 大师强化等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0xC7
|
| | | 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 = 0xC7
|
| | | self.ClassLV = 0
|
| | | self.MasterPlusLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActivateMasterPlusLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 C7 激活大师强化等级 //tagCMActivateMasterPlusLV:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ClassLV:%d,
|
| | | MasterPlusLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ClassLV,
|
| | | self.MasterPlusLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActivateMasterPlusLV=tagCMActivateMasterPlusLV()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateMasterPlusLV.Cmd,m_NAtagCMActivateMasterPlusLV.SubCmd))] = m_NAtagCMActivateMasterPlusLV
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 12 激活法宝之魂 #tagCMActiveMWSoul
|
| | |
|
| | | class tagCMActiveMWSoul(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ID", c_ubyte), #编号
|
| | | ]
|
| | |
|
| | | 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.ID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActiveMWSoul)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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 75 购买副本进入次数#tagCMBuyEnterCount
|
| | |
|
| | | class tagCMBuyEnterCount(Structure):
|
| | |
| | |
|
| | | m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 36 天梯清除挑战CD#tagCMHighLadderClearCD
|
| | |
|
| | | class tagCMHighLadderClearCD(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x36
|
| | | 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 = 0x36
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHighLadderClearCD)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 36 天梯清除挑战CD//tagCMHighLadderClearCD:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMHighLadderClearCD=tagCMHighLadderClearCD()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderClearCD.Cmd,m_NAtagCMHighLadderClearCD.SubCmd))] = m_NAtagCMHighLadderClearCD
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 35 查询天梯竞技场奖励#tagCMQueryHighLadderReward
|
| | |
|
| | | class tagCMQueryHighLadderReward(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 = 0x35
|
| | | 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 = 0x35
|
| | | self.Type = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryHighLadderReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 35 查询天梯竞技场奖励//tagCMQueryHighLadderReward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryHighLadderReward=tagCMQueryHighLadderReward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderReward.Cmd,m_NAtagCMQueryHighLadderReward.SubCmd))] = m_NAtagCMQueryHighLadderReward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C5 装备部位升星 #tagCMEquipPartStarUp
|
| | |
|
| | | class tagCMEquipPartStarUp(Structure):
|
| | | Head = tagHead()
|
| | | EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引
|
| | | CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
|
| | | CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
|
| | | CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
|
| | | AutoBuy = 0 #(BYTE AutoBuy)// 自动购买 0-不自动购买,1-自动购买并升星,2-自动购买预览(未满概率时预览消耗时使用)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC5
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CostEquipCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.CostEquipIndex.append(value)
|
| | | for i in range(self.CostEquipCnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CostEquipID.append(value)
|
| | | self.AutoBuy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC5
|
| | | self.EquipPackIndex = 0
|
| | | self.CostEquipCnt = 0
|
| | | self.CostEquipIndex = list()
|
| | | self.CostEquipID = list()
|
| | | self.AutoBuy = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2 * self.CostEquipCnt
|
| | | length += 4 * self.CostEquipCnt
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.EquipPackIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
|
| | | for i in range(self.CostEquipCnt):
|
| | | data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
|
| | | for i in range(self.CostEquipCnt):
|
| | | data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
|
| | | data = CommFunc.WriteBYTE(data, self.AutoBuy)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EquipPackIndex:%d,
|
| | | CostEquipCnt:%d,
|
| | | CostEquipIndex:%s,
|
| | | CostEquipID:%s,
|
| | | AutoBuy:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.EquipPackIndex,
|
| | | self.CostEquipCnt,
|
| | | "...",
|
| | | "...",
|
| | | self.AutoBuy
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C6 装备部位星级套装激活 #tagCMEquipPartSuiteActivate
|
| | |
|
| | | class tagCMEquipPartSuiteActivate(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ClassLV", c_ubyte), # 所属装备阶
|
| | | ("SuiteID", c_ushort), # 套装ID
|
| | | ("SuiteCount", c_ubyte), # 件数
|
| | | ("Star", c_ubyte), # 星数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0xC6
|
| | | 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 = 0xC6
|
| | | self.ClassLV = 0
|
| | | self.SuiteID = 0
|
| | | self.SuiteCount = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipPartSuiteActivate)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 C6 装备部位星级套装激活 //tagCMEquipPartSuiteActivate:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ClassLV:%d,
|
| | | SuiteID:%d,
|
| | | SuiteCount:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ClassLV,
|
| | | self.SuiteID,
|
| | | self.SuiteCount,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPartSuiteActivate=tagCMEquipPartSuiteActivate()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartSuiteActivate.Cmd,m_NAtagCMEquipPartSuiteActivate.SubCmd))] = m_NAtagCMEquipPartSuiteActivate
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
|
| | |
|
| | | class tagCMExchangeMasterEXP(Structure):
|
| | |
| | |
|
| | | m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SuccID", c_int), #成就ID
|
| | | ("IsPassport", c_ubyte), #是否通行证奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x42
|
| | | self.SuccID = 0
|
| | | self.IsPassport = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A5 42 领取成就奖励 //tagMCGetSuccessAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SuccID:%d
|
| | | SuccID:%d,
|
| | | IsPassport:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SuccID
|
| | | self.SuccID,
|
| | | self.IsPassport
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 37 天梯增加挑战次数#tagCMHighLadderAddCount
|
| | | # A5 29 骑宠觉醒 #tagCMHorsePetAwake
|
| | |
|
| | | class tagCMHighLadderAddCount(Structure):
|
| | | class tagCMHorsePetAwake(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ushort), # 1-坐骑 2-灵宠
|
| | | ("ID", c_int), # 对应坐骑表灵宠表ID
|
| | | ("EatItemID", c_int), # 吞噬的物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x37
|
| | | self.SubCmd = 0x29
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x37
|
| | | self.SubCmd = 0x29
|
| | | self.Type = 0
|
| | | self.ID = 0
|
| | | self.EatItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHighLadderAddCount)
|
| | | return sizeof(tagCMHorsePetAwake)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 37 天梯增加挑战次数//tagCMHighLadderAddCount:
|
| | | DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | SubCmd:%s,
|
| | | Type:%d,
|
| | | ID:%d,
|
| | | EatItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | self.SubCmd,
|
| | | self.Type,
|
| | | self.ID,
|
| | | self.EatItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMHighLadderAddCount=tagCMHighLadderAddCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderAddCount.Cmd,m_NAtagCMHighLadderAddCount.SubCmd))] = m_NAtagCMHighLadderAddCount
|
| | | m_NAtagCMHorsePetAwake=tagCMHorsePetAwake()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect
|
| | |
|
| | | class tagCMHorsePetSkinSelect(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ushort), # 1-坐骑 2-灵宠
|
| | | ("ID", c_int), # 对应坐骑表灵宠表ID
|
| | | ("SkinIndex", c_ubyte), # 外观索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x30
|
| | | self.Type = 0
|
| | | self.ID = 0
|
| | | self.SkinIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHorsePetSkinSelect)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d,
|
| | | ID:%d,
|
| | | SkinIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type,
|
| | | self.ID,
|
| | | self.SkinIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HorseID", c_int), #坐骑ID
|
| | | ("UseItemCnt", c_ubyte), #消耗材料个数
|
| | | ("UseItemCnt", c_ushort), #消耗材料个数
|
| | | ("IsAutoBuy", c_ubyte), #是否自动购买
|
| | | ]
|
| | |
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x27
|
| | | self.HorseID = 0
|
| | | self.UseItemCnt = 0
|
| | | self.IsAutoBuy = 0
|
| | | return
|
| | |
| | | DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HorseID:%d,
|
| | | UseItemCnt:%d,
|
| | | IsAutoBuy:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HorseID,
|
| | | self.UseItemCnt,
|
| | | self.IsAutoBuy
|
| | | )
|
| | |
| | |
|
| | | m_NAtagCMHorseUp=tagCMHorseUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 0D 升级法宝技能 #tagCMMagicWeaponSkillUp
|
| | |
|
| | | class tagCMMagicWeaponSkillUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SkillTypeID", c_ushort), |
| | | ("CostIndex", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x0D
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x0D
|
| | | self.SkillTypeID = 0
|
| | | self.CostIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMagicWeaponSkillUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 0D 升级法宝技能 //tagCMMagicWeaponSkillUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SkillTypeID:%d,
|
| | | CostIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SkillTypeID,
|
| | | self.CostIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMagicWeaponSkillUp=tagCMMagicWeaponSkillUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponSkillUp.Cmd,m_NAtagCMMagicWeaponSkillUp.SubCmd))] = m_NAtagCMMagicWeaponSkillUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 16 法宝状态记录 #tagCMMagicWeaponState
|
| | |
|
| | | class tagCMMagicWeaponState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MWID", c_int), #法宝ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x16
|
| | | self.MWID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMagicWeaponState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MWID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MWID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 77 玩家精炼法宝 #tagCMMWRefine
|
| | |
|
| | | class tagCMMWRefine(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MWID", c_int), # 法宝ID
|
| | | ("MaterialID", c_int), #材料ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x77
|
| | | 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 = 0x77
|
| | | self.MWID = 0
|
| | | self.MaterialID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMWRefine)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 77 玩家精炼法宝 //tagCMMWRefine:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MWID:%d,
|
| | | MaterialID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MWID,
|
| | | self.MaterialID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMWRefine=tagCMMWRefine()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMWRefine.Cmd,m_NAtagCMMWRefine.SubCmd))] = m_NAtagCMMWRefine
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Index", c_int), #选择索引
|
| | | ("ChooseType", c_ubyte), # 1-按等阶,2-按幻化
|
| | | ("LVID", c_ubyte), # 阶等级或幻化ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x02
|
| | | self.Index = 0
|
| | | self.ChooseType = 0
|
| | | self.LVID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Index:%d
|
| | | ChooseType:%d,
|
| | | LVID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Index
|
| | | self.ChooseType,
|
| | | self.LVID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RefineNum", c_ushort), # 配方编号
|
| | | ("UseRateItem", c_int), # 附加材料ID
|
| | | ("AlchemyID", c_int), # 丹药ID
|
| | | ("AlchemyTimes", c_ushort), # 丹药次数
|
| | | ("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.AlchemyTimes = 0
|
| | | self.DoType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RefineNum:%d,
|
| | | UseRateItem:%d
|
| | | AlchemyID:%d,
|
| | | AlchemyTimes:%d,
|
| | | DoType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RefineNum,
|
| | | self.UseRateItem
|
| | | self.AlchemyID,
|
| | | self.AlchemyTimes,
|
| | | self.DoType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagCMPrayElixir=tagCMPrayElixir()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState
|
| | |
|
| | | class tagCMQueryHighLadderState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x34
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryHighLadderState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 34 查询天梯竞技场状态//tagCMQueryHighLadderState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryHighLadderState=tagCMQueryHighLadderState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderState.Cmd,m_NAtagCMQueryHighLadderState.SubCmd))] = m_NAtagCMQueryHighLadderState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 0C 使用道具减少渡劫打坐时间 #tagCMReduceSitTime
|
| | |
|
| | | class tagCMReduceSitTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemCnt", c_ushort), # 道具数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x0C
|
| | | self.ItemCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMReduceSitTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 0C 使用道具减少渡劫打坐时间 //tagCMReduceSitTime:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMReduceSitTime=tagCMReduceSitTime()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReduceSitTime.Cmd,m_NAtagCMReduceSitTime.SubCmd))] = m_NAtagCMReduceSitTime
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
|
| | |
|
| | | class tagCMRefreshArrestTask(Structure):
|
| | |
| | |
|
| | | 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
|
| | | ("DoType", c_ubyte), # 0-激活 1-使用
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x16
|
| | | self.SkillTypeID = 0
|
| | | self.DoType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSelectSkillElement)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SkillTypeID:%d,
|
| | | DoType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SkillTypeID,
|
| | | self.DoType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
|
| | |
|
| | | class tagCMStartBindJadeWheel(Structure):
|
| | |
| | |
|
| | | m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 21 境界修为池提取 #tagCMTakeOutRealmExp
|
| | |
|
| | | class tagCMTakeOutRealmExp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x21
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMTakeOutRealmExp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 21 境界修为池提取 //tagCMTakeOutRealmExp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 1D 法宝佩戴 #tagCMWearMagicWeapon
|
| | |
|
| | | class tagCMWearMagicWeapon(Structure):
|
| | |
| | |
|
| | | m_NAtagCMRenameFamily=tagCMRenameFamily()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRenameFamily.Head.Cmd,m_NAtagCMRenameFamily.Head.SubCmd))] = m_NAtagCMRenameFamily
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
|
| | |
|
| | | class tagCMFamilyActivityExchange(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//材料所在背包索引的数量
|
| | | IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
|
| | | ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x06
|
| | | 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.ReadWORD(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ItemIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x06
|
| | | self.Count = 0
|
| | | self.IndexList = list()
|
| | | self.ItemIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2 * self.Count
|
| | | 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.WriteWORD(data, self.IndexList[i])
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | IndexList:%s,
|
| | | ItemIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 09 集字活动兑换 #tagCMActCollectWordsExchange
|
| | |
|
| | | class tagCMActCollectWordsExchange(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号,1 或 2,相互独立的活动,可同时开启
|
| | | ("ExchangeNum", c_ubyte), #兑换编号
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x09
|
| | | self.ActNum = 0
|
| | | self.ExchangeNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActCollectWordsExchange)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 09 集字活动兑换 //tagCMActCollectWordsExchange:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | ExchangeNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.ExchangeNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActCollectWordsExchange=tagCMActCollectWordsExchange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActCollectWordsExchange.Cmd,m_NAtagCMActCollectWordsExchange.SubCmd))] = m_NAtagCMActCollectWordsExchange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
|
| | |
|
| | | class tagCMActWishingRefresh(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
|
| | |
|
| | | class tagCMFeastWishBottleChooseItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("BottleNum", c_ubyte), #瓶子编号
|
| | | ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x10
|
| | | 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 = 0x10
|
| | | self.BottleNum = 0
|
| | | self.RecordIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFeastWishBottleChooseItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | BottleNum:%d,
|
| | | RecordIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.BottleNum,
|
| | | self.RecordIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
|
| | |
|
| | | class tagCMFeastWishPoolWish(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("WishCount", c_ubyte), #祝福次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x11
|
| | | 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 = 0x11
|
| | | self.WishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFeastWishPoolWish)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | WishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.WishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 05 限时抢购预约 #tagCMFlashSaleAppointment
|
| | |
|
| | | class tagCMFlashSaleAppointment(Structure):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("GoodsID", c_int), # 抢购商品标识
|
| | | ("State", c_ubyte), # 1-预约 0-取消
|
| | | ]
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | self.ActNum = 0
|
| | | self.GoodsID = 0
|
| | | self.State = 0
|
| | | return
|
| | |
| | | DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | GoodsID:%d,
|
| | | State:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.GoodsID,
|
| | | self.State
|
| | | )
|
| | |
| | |
|
| | | m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
|
| | |
|
| | | class tagCMGetClassUPDayAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayType", c_ubyte), # 升阶日类型
|
| | | ("ClassLV", c_ubyte), # 阶级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | self.DayType = 0
|
| | | self.ClassLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetClassUPDayAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayType:%d,
|
| | | ClassLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayType,
|
| | | self.ClassLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 领取消费奖励 #tagCMGetCostAward
|
| | |
|
| | | class tagCMGetCostAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0x04
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetCostAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetCostAward=tagCMGetCostAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
|
| | |
|
| | | class tagCMGetRechargeTeHuiAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 规则索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0x03
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetRechargeTeHuiAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
|
| | |
|
| | | class tagCMStartLuckyTreasure(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMStartLuckyTreasure)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RedPaketID", c_int), # 红包ID
|
| | | ("GetWay", c_ubyte), #获得途径
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x12
|
| | | self.RedPaketID = 0
|
| | | self.GetWay = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RedPaketID:%d
|
| | | RedPaketID:%d,
|
| | | GetWay:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RedPaketID
|
| | | self.RedPaketID,
|
| | | self.GetWay
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagCMDiceTake=tagCMDiceTake()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceTake.Cmd,m_NAtagCMDiceTake.SubCmd))] = m_NAtagCMDiceTake
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 06 活动物品兑换 #tagCMExchangeActionItem
|
| | |
|
| | | class tagCMExchangeActionItem(Structure):
|
| | | Head = tagHead()
|
| | | ActionKeyLen = 0 #(BYTE ActionKeyLen)
|
| | | ActionKey = "" #(String ActionKey)
|
| | | ItemID = 0 #(DWORD ItemID)// 兑换的目标物品ID
|
| | | ExcCnt = 0 #(WORD ExcCnt)// 兑换个数,默认1个
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExcCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x06
|
| | | self.ActionKeyLen = 0
|
| | | self.ActionKey = ""
|
| | | self.ItemID = 0
|
| | | self.ExcCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.ActionKey)
|
| | | length += 4
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
|
| | | data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteWORD(data, self.ExcCnt)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActionKeyLen:%d,
|
| | | ActionKey:%s,
|
| | | ItemID:%d,
|
| | | ExcCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActionKeyLen,
|
| | | self.ActionKey,
|
| | | self.ItemID,
|
| | | self.ExcCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMExchangeActionItem=tagCMExchangeActionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeActionItem.Head.Cmd,m_NAtagCMExchangeActionItem.Head.SubCmd))] = m_NAtagCMExchangeActionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward
|
| | |
|
| | | class tagCMGetFestivalLoginAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("FestivalType", c_ubyte), # 节日类型
|
| | | ("DayIndex", c_ubyte), # 节日天 <从节日活动开始日0天开始>
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x07
|
| | | self.FestivalType = 0
|
| | | self.DayIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetFestivalLoginAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | FestivalType:%d,
|
| | | DayIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.FestivalType,
|
| | | self.DayIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward
|
| | |
|
| | | class tagCMGetManorWarDailyAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), # 领地id
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x02
|
| | | self.MapID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetManorWarDailyAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward
|
| | |
|
| | | class tagCMGetManorWarJoinAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetManorWarJoinAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
|
| | |
|
| | | class tagCMActivityPlaceQuery(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x29
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActivityPlaceQuery)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
|
| | |
|
| | | class tagCMActivityPlaceQuickFinish(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("FinishCount", c_ubyte), #完成次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x28
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x28
|
| | | self.FinishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActivityPlaceQuickFinish)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | FinishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.FinishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 27 活跃放置启动 #tagCMActivityPlaceStart
|
| | |
|
| | | class tagCMActivityPlaceStart(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x27
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x27
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActivityPlaceStart)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 50 钓鱼收杆 #tagCMDoFish
|
| | |
|
| | | class tagCMDoFish(Structure):
|
| | |
| | |
|
| | | m_NAtagReceiveFamilyArrestAward=tagReceiveFamilyArrestAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagReceiveFamilyArrestAward.Cmd,m_NAtagReceiveFamilyArrestAward.SubCmd))] = m_NAtagReceiveFamilyArrestAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 10 请求协助Boss #tagCMRequestAssistBoss
|
| | |
|
| | | class tagCMRequestAssistBoss(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("NPCID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x10
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x10
|
| | | self.ObjID = 0
|
| | | self.NPCID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRequestAssistBoss)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 10 请求协助Boss //tagCMRequestAssistBoss:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ObjID:%d,
|
| | | NPCID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ObjID,
|
| | | self.NPCID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRequestAssistBoss=tagCMRequestAssistBoss()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistBoss.Cmd,m_NAtagCMRequestAssistBoss.SubCmd))] = m_NAtagCMRequestAssistBoss
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 11 请求协助组队副本 #tagCMRequestAssistTeamFB
|
| | |
|
| | | class tagCMRequestAssistTeamFB(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_ushort), |
| | | ("LineID", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x11
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x11
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRequestAssistTeamFB)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 11 请求协助组队副本 //tagCMRequestAssistTeamFB:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | LineID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.LineID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRequestAssistTeamFB=tagCMRequestAssistTeamFB()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistTeamFB.Cmd,m_NAtagCMRequestAssistTeamFB.SubCmd))] = m_NAtagCMRequestAssistTeamFB
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMClientStartFB=tagCMClientStartFB()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartFB.Cmd,m_NAtagCMClientStartFB.SubCmd))] = m_NAtagCMClientStartFB
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMSetFMTDouble=tagCMSetFMTDouble()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetFMTDouble.Cmd,m_NAtagCMSetFMTDouble.SubCmd))] = m_NAtagCMSetFMTDouble
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 06 玩家加点 #tagCMAddPoint
|
| | |
|
| | | class tagCMAddPoint(Structure):
|
| | | Head = tagHead()
|
| | | PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
|
| | | PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
|
| | | PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.PointAttrIDList.append(value)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PointValueList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x06
|
| | | self.PointAttrIDCount = 0
|
| | | self.PointAttrIDList = list()
|
| | | self.PointValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.PointAttrIDCount
|
| | | length += 4 * self.PointAttrIDCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
|
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteDWORD(data, self.PointValueList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PointAttrIDCount:%d,
|
| | | PointAttrIDList:%s,
|
| | | PointValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PointAttrIDCount,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMAddPoint=tagCMAddPoint()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 10 竞技场挑战玩家 #tagCMArenaBattle
|
| | |
|
| | | class tagCMArenaBattle(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagPlayerID", c_int), # 目标玩家ID或机器人ID
|
| | | ("Result", c_ubyte), # 0-进入自定义场景发送通知后端;1-胜利(后端处理,暂时不需要发送此状态);2-失败(前端被对手击杀需要发送此状态)
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x10
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x10
|
| | | self.TagPlayerID = 0
|
| | | self.Result = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMArenaBattle)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 10 竞技场挑战玩家 //tagCMArenaBattle:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TagPlayerID:%d,
|
| | | Result:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TagPlayerID,
|
| | | self.Result
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMArenaBattle=tagCMArenaBattle()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaBattle.Cmd,m_NAtagCMArenaBattle.SubCmd))] = m_NAtagCMArenaBattle
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 09 竞技场匹配玩家 #tagCMArenaMatch
|
| | |
|
| | | class tagCMArenaMatch(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsRefresh", c_ubyte), # 0-打开界面无匹配数据时时查询,1-强制刷新匹配列表
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x09
|
| | | self.IsRefresh = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMArenaMatch)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 09 竞技场匹配玩家 //tagCMArenaMatch:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsRefresh:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsRefresh
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMArenaMatch=tagCMArenaMatch()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 07 重置加点 #tagCMResetAttrPoint
|
| | |
|
| | | class tagCMResetAttrPoint(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMResetAttrPoint)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
|
| | |
|
| | | class tagCMRecyclePriWoodPile(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0F
|
| | | 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 = 0x0F
|
| | | self.ObjID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRecyclePriWoodPile)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ObjID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ObjID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 0E 玩家掉血 #tagCMRoleLostHP
|
| | |
|
| | | class tagCMRoleLostHP(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LostHP", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0E
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0E
|
| | | self.LostHP = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRoleLostHP)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | LostHP:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.LostHP
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRoleLostHP=tagCMRoleLostHP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
|
| | |
|
| | | class tagCMSummonPriWoodPile(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("NPCID", c_int), |
| | | ("Count", c_ubyte), #默认1个,最多5个
|
| | | ("HP", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
|
| | | ("HPEx", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0C
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0C
|
| | | self.NPCID = 0
|
| | | self.Count = 0
|
| | | self.HP = 0
|
| | | self.HPEx = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSummonPriWoodPile)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | NPCID:%d,
|
| | | Count:%d,
|
| | | HP:%d,
|
| | | HPEx:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.NPCID,
|
| | | self.Count,
|
| | | self.HP,
|
| | | self.HPEx
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B4 06 战斗移动 # tagCMFightMove
|
| | |
|
| | | class tagCMFightMove(Structure):
|
| | |
| | |
|
| | | m_NAtagCMFightMove=tagCMFightMove()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFightMove.Cmd,m_NAtagCMFightMove.SubCmd))] = m_NAtagCMFightMove
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B4 0B 根据类型来决定移动的方式 #tagCMMoveByType
|
| | |
|
| | | class tagCMMoveByType(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PosX", c_ushort), # 目标X
|
| | | ("PosY", c_ushort), # 目标Y
|
| | | ("MoveType", c_ubyte), #移动方式
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0B
|
| | | 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 = 0x0B
|
| | | self.PosX = 0
|
| | | self.PosY = 0
|
| | | self.MoveType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMoveByType)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B4 0B 根据类型来决定移动的方式 //tagCMMoveByType:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PosX:%d,
|
| | | PosY:%d,
|
| | | MoveType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PosX,
|
| | | self.PosY,
|
| | | self.MoveType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMoveByType=tagCMMoveByType()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoveByType.Cmd,m_NAtagCMMoveByType.SubCmd))] = m_NAtagCMMoveByType
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 0D 战斗印记 #tagCMYinji
|
| | |
|
| | | class tagCMYinji(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Count", c_ubyte), |
| | | ("Type", c_ubyte), # 0 加,1减
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0D
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB4
|
| | | self.SubCmd = 0x0D
|
| | | self.Count = 0
|
| | | self.Type = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMYinji)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Count:%d,
|
| | | Type:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Count,
|
| | | self.Type
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMYinji=tagCMYinji()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B4 03 吸引NPC仇恨 #tagNPCAttention
|
| | |
|
| | | class tagNPCAttention(Structure):
|
| | |
| | |
|
| | | m_NAtagNPCAttention=tagNPCAttention()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagNPCAttention.Head.Cmd,m_NAtagNPCAttention.Head.SubCmd))] = m_NAtagNPCAttention
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 14 拍卖行竞价物品 #tagCMBiddingAuctionItem
|
| | |
|
| | | class tagCMBiddingAuctionItem(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | BiddingPrice = 0 #(DWORD BiddingPrice)//竞价价格
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x14
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.BiddingPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x14
|
| | | self.ItemGUID = ""
|
| | | self.BiddingPrice = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.ItemGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.BiddingPrice)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s,
|
| | | BiddingPrice:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID,
|
| | | self.BiddingPrice
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMBiddingAuctionItem=tagCMBiddingAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBiddingAuctionItem.Head.Cmd,m_NAtagCMBiddingAuctionItem.Head.SubCmd))] = m_NAtagCMBiddingAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 13 拍卖行上架拍品 #tagCMSellAuctionItem
|
| | |
|
| | | class tagCMSellAuctionItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_ubyte), #物品在背包中索引
|
| | | ("SellCount", c_ushort), #上架个数,0代表全部上架
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB5
|
| | | 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 = 0xB5
|
| | | self.SubCmd = 0x13
|
| | | self.ItemIndex = 0
|
| | | self.SellCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSellAuctionItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d,
|
| | | SellCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex,
|
| | | self.SellCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSellAuctionItem=tagCMSellAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem
|
| | |
|
| | | class tagCMUnsellAuctionItem(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x15
|
| | | self.ItemGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.ItemGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState
|
| | |
|
| | | class tagCMChangeTeamCheckState(Structure):
|
| | |
| | |
|
| | | m_NAtagCMChangeTeamCheckState=tagCMChangeTeamCheckState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeTeamCheckState.Cmd,m_NAtagCMChangeTeamCheckState.SubCmd))] = m_NAtagCMChangeTeamCheckState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 06 跨服NPC对话 #tagCMCrossNPCTalk
|
| | |
|
| | | class tagCMCrossNPCTalk(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("NPCID", c_int), |
| | | ("PosX", c_ushort), |
| | | ("PosY", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x06
|
| | | self.ObjID = 0
|
| | | self.NPCID = 0
|
| | | self.PosX = 0
|
| | | self.PosY = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossNPCTalk)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 06 跨服NPC对话 //tagCMCrossNPCTalk:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ObjID:%d,
|
| | | NPCID:%d,
|
| | | PosX:%d,
|
| | | PosY:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ObjID,
|
| | | self.NPCID,
|
| | | self.PosX,
|
| | | self.PosY
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossNPCTalk=tagCMCrossNPCTalk()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossNPCTalk.Cmd,m_NAtagCMCrossNPCTalk.SubCmd))] = m_NAtagCMCrossNPCTalk
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver
|
| | |
|
| | | class tagCMCrossRealmPKRobotOver(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsWin", c_ubyte), #是否获胜
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x08
|
| | | self.IsWin = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossRealmPKRobotOver)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsWin:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsWin
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossRealmPKRobotOver=tagCMCrossRealmPKRobotOver()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKRobotOver.Cmd,m_NAtagCMCrossRealmPKRobotOver.SubCmd))] = m_NAtagCMCrossRealmPKRobotOver
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 05 进入跨服地图 #tagCMEnterCrossServer
|
| | |
|
| | | class tagCMEnterCrossServer(Structure):
|
| | |
| | | ("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
|
| | |
|