| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 21 תְҵ #tagCMChangeJob
|
| | |
|
| | | class tagCMChangeJob(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagJob", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA1
|
| | | 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 = 0xA1
|
| | | self.SubCmd = 0x21
|
| | | self.TagJob = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMChangeJob)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A1 21 תְҵ //tagCMChangeJob:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TagJob:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TagJob
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMChangeJob=tagCMChangeJob()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo
|
| | |
|
| | | class tagCMCoinBuyOrderInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 20 货币兑换 #tagCMMoneyExchange
|
| | |
|
| | | class tagCMMoneyExchange(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SrcMoneyType", c_ubyte), # 源货币类型
|
| | | ("TagMoneyType", c_ubyte), # 目标货币类型
|
| | | ("ExchangeValue", c_int), # 兑换数量(消耗源货币的数量)
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA1
|
| | | self.SubCmd = 0x20
|
| | | 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 = 0x20
|
| | | self.SrcMoneyType = 0
|
| | | self.TagMoneyType = 0
|
| | | self.ExchangeValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMoneyExchange)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SrcMoneyType:%d,
|
| | | TagMoneyType:%d,
|
| | | ExchangeValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SrcMoneyType,
|
| | | self.TagMoneyType,
|
| | | self.ExchangeValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMoneyExchange=tagCMMoneyExchange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
|
| | |
|
| | | class tagCMQueryCoinToGoldCount(Structure):
|
| | |
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
|
| | |
|
| | | class tagCMDogzBattleStateChange(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DogzID", c_ubyte), # 神兽ID
|
| | | ("BatteState", c_ubyte), #助战状态,0-召回,1-助战
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0xC2
|
| | | 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 = 0xC2
|
| | | self.DogzID = 0
|
| | | self.BatteState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMDogzBattleStateChange)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DogzID:%d,
|
| | | BatteState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DogzID,
|
| | | self.BatteState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
|
| | |
|
| | | class tagCMDogzBuyBatteCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0xC3
|
| | | 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 = 0xC3
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMDogzBuyBatteCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
|
| | |
|
| | | class tagCMDogzEquipItem(Structure):
|
| | | Head = tagHead()
|
| | | DogzID = 0 #(BYTE DogzID)// 神兽ID
|
| | | EquipIndexCount = 0 #(BYTE EquipIndexCount)
|
| | | EquipIndexList = list() #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC0
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.EquipIndexCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.EquipIndexList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC0
|
| | | self.DogzID = 0
|
| | | self.EquipIndexCount = 0
|
| | | self.EquipIndexList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.EquipIndexCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.DogzID)
|
| | | data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
|
| | | for i in range(self.EquipIndexCount):
|
| | | data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DogzID:%d,
|
| | | EquipIndexCount:%d,
|
| | | EquipIndexList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.DogzID,
|
| | | self.EquipIndexCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C4 神兽装备强化 #tagCMDogzEquipPlus
|
| | |
|
| | | class tagCMDogzEquipPlus(Structure):
|
| | | Head = tagHead()
|
| | | EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
|
| | | IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
|
| | | IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
|
| | | IndexUseCountList = list() #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
|
| | | IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC4
|
| | | 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.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.IndexCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | for i in range(self.IndexCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.IndexUseCountList.append(value)
|
| | | self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0xC4
|
| | | self.EquipIndex = 0
|
| | | self.IndexCount = 0
|
| | | self.IndexList = list()
|
| | | self.IndexUseCountList = list()
|
| | | self.IsDouble = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.IndexCount
|
| | | length += 4 * self.IndexCount
|
| | | length += 1
|
| | |
|
| | | 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.IndexCount)
|
| | | for i in range(self.IndexCount):
|
| | | data = CommFunc.WriteBYTE(data, self.IndexList[i])
|
| | | for i in range(self.IndexCount):
|
| | | data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsDouble)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EquipIndex:%d,
|
| | | IndexCount:%d,
|
| | | IndexList:%s,
|
| | | IndexUseCountList:%s,
|
| | | IsDouble:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.EquipIndex,
|
| | | self.IndexCount,
|
| | | "...",
|
| | | "...",
|
| | | self.IsDouble
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
|
| | |
|
| | | class tagCMDogzUnEquipItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DogzID", c_ubyte), # 神兽ID
|
| | | ("EquipPlace", c_ubyte), #卸下的装备位, 0代表卸下全部
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.DogzID = 0
|
| | | self.EquipPlace = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMDogzUnEquipItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DogzID:%d,
|
| | | EquipPlace:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DogzID,
|
| | | self.EquipPlace
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 C5 装备部位升星 #tagCMEquipPartStarUp
|
| | |
|
| | | class tagCMEquipPartStarUp(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 32 法器升级 #tagCMFaQiLVUp
|
| | |
|
| | | class tagCMFaQiLVUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("UseItemCnt", c_ushort), #消耗材料个数
|
| | | ("IsAutoBuy", c_ubyte), #是否自动购买
|
| | | ]
|
| | |
|
| | | 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.UseItemCnt = 0
|
| | | self.IsAutoBuy = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFaQiLVUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | UseItemCnt:%d,
|
| | | IsAutoBuy:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.UseItemCnt,
|
| | | self.IsAutoBuy
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 41 领取投资理财回报 #tagCMGetInvestReward
|
| | |
|
| | | class tagCMGetInvestReward(Structure):
|
| | |
| | |
|
| | | m_NAtagCMGoldInvest=tagCMGoldInvest()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGoldInvest.Cmd,m_NAtagCMGoldInvest.SubCmd))] = m_NAtagCMGoldInvest
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 34 炼体突破 #tagCMLianTiLVUp
|
| | |
|
| | | class tagCMLianTiLVUp(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(tagCMLianTiLVUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 33 炼体提升 #tagCMLianTiUp
|
| | |
|
| | | class tagCMLianTiUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("UseItemCnt", c_int), #消耗材料个数
|
| | | ("IsAutoBuy", c_ubyte), #是否自动购买
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x33
|
| | | self.UseItemCnt = 0
|
| | | self.IsAutoBuy = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMLianTiUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | UseItemCnt:%d,
|
| | | IsAutoBuy:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.UseItemCnt,
|
| | | self.IsAutoBuy
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMLianTiUp=tagCMLianTiUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 07 点赞仙宫 #tagCGLikeXiangong
|
| | |
|
| | | class tagCGLikeXiangong(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("XiangongID", c_ushort), # 仙宫ID,为0时代表每日的仙宫点赞
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | 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 = 0xA9
|
| | | self.SubCmd = 0x07
|
| | | self.XiangongID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGLikeXiangong)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | XiangongID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.XiangongID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGLikeXiangong=tagCGLikeXiangong()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
|
| | |
|
| | | class tagCGQueryArenaBattlePlayer(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
|
| | |
|
| | | class tagCGQueryXiangongRecPlayers(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("XiangongID", c_ushort), # 仙宫ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | 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 = 0xA9
|
| | | self.SubCmd = 0x06
|
| | | self.XiangongID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryXiangongRecPlayers)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | XiangongID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.XiangongID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A9 A6 设置邮件(补偿)已读状态 #tagCGReadCompensation
|
| | |
|
| | | class tagCGReadCompensation(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
|
| | | # AA 02 武将登场招募武将选择 #tagCSActHeroAppearCallHeroSelect
|
| | |
|
| | | class tagCMActGodGiftChooseItemInfo(Structure):
|
| | | ItemLibType = 0 #(BYTE ItemLibType)//物品库类型
|
| | | Count = 0 #(BYTE Count)//选择个数
|
| | | ItemNumList = list() #(vector<BYTE> ItemNumList)//选择物品编号列表
|
| | | data = None
|
| | | class tagCSActHeroAppearCallHeroSelect(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("CallHeroIndex", c_ubyte), # 招募选择的武将ID索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ItemNumList.append(value)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemLibType = 0
|
| | | self.Count = 0
|
| | | self.ItemNumList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.Count
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ItemLibType)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteBYTE(data, self.ItemNumList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ItemLibType:%d,
|
| | | Count:%d,
|
| | | ItemNumList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ItemLibType,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagCMActGodGiftChooseItem(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | ChooseLibCount = 0 #(BYTE ChooseLibCount)//选择库个数 |
| | | ChooseItemList = list() #(vector<tagCMActGodGiftChooseItemInfo> ChooseItemList)//选择库物品信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ChooseLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ChooseLibCount):
|
| | | temChooseItemList = tagCMActGodGiftChooseItemInfo()
|
| | | _pos = temChooseItemList.ReadData(_lpData, _pos)
|
| | | self.ChooseItemList.append(temChooseItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x20
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | self.ActNum = 0
|
| | | self.ChooseLibCount = 0
|
| | | self.ChooseItemList = list()
|
| | | self.CallHeroIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.ChooseLibCount):
|
| | | length += self.ChooseItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | | return sizeof(tagCSActHeroAppearCallHeroSelect)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteBYTE(data, self.ChooseLibCount)
|
| | | for i in range(self.ChooseLibCount):
|
| | | data = CommFunc.WriteString(data, self.ChooseItemList[i].GetLength(), self.ChooseItemList[i].GetBuffer())
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DumpString = '''// AA 02 武将登场招募武将选择 //tagCSActHeroAppearCallHeroSelect:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | ChooseLibCount:%d,
|
| | | ChooseItemList:%s
|
| | | CallHeroIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.ChooseLibCount,
|
| | | "..."
|
| | | self.CallHeroIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActGodGiftChooseItem=tagCMActGodGiftChooseItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftChooseItem.Head.Cmd,m_NAtagCMActGodGiftChooseItem.Head.SubCmd))] = m_NAtagCMActGodGiftChooseItem
|
| | | m_NAtagCSActHeroAppearCallHeroSelect=tagCSActHeroAppearCallHeroSelect()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearCallHeroSelect.Cmd,m_NAtagCSActHeroAppearCallHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearCallHeroSelect
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
|
| | | # AA 01 武将登场升星武将选择 #tagCSActHeroAppearStarHeroSelect
|
| | |
|
| | | class tagCMActGodGiftlottery(Structure):
|
| | | class tagCSActHeroAppearStarHeroSelect(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ("StarHeroIndex", c_ubyte), # 升星计划选择的武将ID索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x21
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x21
|
| | | self.SubCmd = 0x01
|
| | | self.ActNum = 0
|
| | | self.StarHeroIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActGodGiftlottery)
|
| | | return sizeof(tagCSActHeroAppearStarHeroSelect)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 21 天帝礼包抽奖 //tagCMActGodGiftlottery:
|
| | | DumpString = '''// AA 01 武将登场升星武将选择 //tagCSActHeroAppearStarHeroSelect:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d
|
| | | ActNum:%d,
|
| | | StarHeroIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum
|
| | | self.ActNum,
|
| | | self.StarHeroIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActGodGiftlottery=tagCMActGodGiftlottery()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftlottery.Cmd,m_NAtagCMActGodGiftlottery.SubCmd))] = m_NAtagCMActGodGiftlottery
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 22 天帝礼包重置 #tagCMActGodGiftReset
|
| | |
|
| | | class tagCMActGodGiftReset(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x22
|
| | | 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 = 0x22
|
| | | self.ActNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActGodGiftReset)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 22 天帝礼包重置 //tagCMActGodGiftReset:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActGodGiftReset=tagCMActGodGiftReset()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset
|
| | | m_NAtagCSActHeroAppearStarHeroSelect=tagCSActHeroAppearStarHeroSelect()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSActHeroAppearStarHeroSelect.Cmd,m_NAtagCSActHeroAppearStarHeroSelect.SubCmd))] = m_NAtagCSActHeroAppearStarHeroSelect
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMActLianqiOP=tagCMActLianqiOP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActLianqiOP.Cmd,m_NAtagCMActLianqiOP.SubCmd))] = m_NAtagCMActLianqiOP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
|
| | |
|
| | | class tagCMActTurntableChooseItem(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | GoodItemNumCount = 0 #(BYTE GoodItemNumCount)
|
| | | GoodItemNumList = list() #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
|
| | | SuperItemNumCount = 0 #(BYTE SuperItemNumCount)
|
| | | SuperItemNumList = list() #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GoodItemNumCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.GoodItemNumList.append(value)
|
| | | self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SuperItemNumCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.SuperItemNumList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x12
|
| | | self.ActNum = 0
|
| | | self.GoodItemNumCount = 0
|
| | | self.GoodItemNumList = list()
|
| | | self.SuperItemNumCount = 0
|
| | | self.SuperItemNumList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1 * self.GoodItemNumCount
|
| | | length += 1
|
| | | length += 1 * self.SuperItemNumCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
|
| | | for i in range(self.GoodItemNumCount):
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
|
| | | for i in range(self.SuperItemNumCount):
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | GoodItemNumCount:%d,
|
| | | GoodItemNumList:%s,
|
| | | SuperItemNumCount:%d,
|
| | | SuperItemNumList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.GoodItemNumCount,
|
| | | "...",
|
| | | self.SuperItemNumCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 13 启动转盘 #tagCMActTurntableStart
|
| | |
|
| | | class tagCMActTurntableStart(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), # 活动编号
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x13
|
| | | self.ActNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActTurntableStart)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActTurntableStart=tagCMActTurntableStart()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
|
| | |
|
| | | class tagCMActWishingRefresh(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsFree", c_ubyte), # 是否免费刷新
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | self.IsFree = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActWishingRefresh)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 07 许愿池活动刷新奖池 //tagCMActWishingRefresh:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsFree:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsFree
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 06 许愿池活动许愿 #tagCMActWishing
|
| | |
|
| | | class tagCMActWishing(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("SrcWellType", c_ubyte), # 来源库 0-可选库 1-结果库
|
| | | ("SrcIndex", c_ubyte), # 来源索引
|
| | | ("DesWellType", c_ubyte), # 目标库 0-可选库 1-结果库
|
| | | ("DesIndex", c_ubyte), # 目标索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | self.SrcWellType = 0
|
| | | self.SrcIndex = 0
|
| | | self.DesWellType = 0
|
| | | self.DesIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMActWishing)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 06 许愿池活动许愿 //tagCMActWishing:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | SrcWellType:%d,
|
| | | SrcIndex:%d,
|
| | | DesWellType:%d,
|
| | | DesIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.SrcWellType,
|
| | | self.SrcIndex,
|
| | | self.DesWellType,
|
| | | self.DesIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActWishing=tagCMActWishing()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 05 限时抢购预约 #tagCMFlashSaleAppointment
|
| | |
|
| | | class tagCMFlashSaleAppointment(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("GoodsID", c_int), # 抢购商品标识
|
| | | ("State", c_ubyte), # 1-预约 0-取消
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | self.ActNum = 0
|
| | | self.GoodsID = 0
|
| | | self.State = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFlashSaleAppointment)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | GoodsID:%d,
|
| | | State:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.GoodsID,
|
| | | self.State
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
|
| | |
|
| | | class tagCMActivateFuncSysPrivilege(Structure):
|
| | | Head = tagHead()
|
| | | ActivateCount = 0 #(BYTE ActivateCount)// 激活个数
|
| | | ActivateFuncSysIDList = list() #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x11
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivateCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ActivateFuncSysIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x11
|
| | | self.ActivateCount = 0
|
| | | self.ActivateFuncSysIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ActivateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActivateCount)
|
| | | for i in range(self.ActivateCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActivateCount:%d,
|
| | | ActivateFuncSysIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActivateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 06 玩家加点 #tagCMAddPoint
|
| | |
|
| | | class tagCMAddPoint(Structure):
|
| | |
| | |
|
| | | m_NAtagCSFuncPresetUpdName=tagCSFuncPresetUpdName()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetUpdName.Head.Cmd,m_NAtagCSFuncPresetUpdName.Head.SubCmd))] = m_NAtagCSFuncPresetUpdName
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
|
| | |
|
| | | class tagCMGetFuncSysPrivilegeAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("FuncSysID", c_ubyte), # 功能系统ID
|
| | | ("DayNum", c_ubyte), # 第X天,1为第1天
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x12
|
| | | self.FuncSysID = 0
|
| | | self.DayNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetFuncSysPrivilegeAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | FuncSysID:%d,
|
| | | DayNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.FuncSysID,
|
| | | self.DayNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 36 武将皮肤操作 #tagCSHeroSkinOP
|
| | |
|
| | | class tagCSHeroSkinOP(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HeroID", c_int), #武将ID
|
| | | ("SkinID", c_int), #ʱװID
|
| | | ("OPType", c_ubyte), #操作 1-激活;2-佩戴;3-升星
|
| | | ("ItemIndex", c_ushort), #武将物品所在武将背包位置索引,仅佩戴时有效
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x36
|
| | | self.HeroID = 0
|
| | | self.SkinID = 0
|
| | | self.OPType = 0
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCSHeroSkinOP)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 36 武将皮肤操作 //tagCSHeroSkinOP:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HeroID:%d,
|
| | | SkinID:%d,
|
| | | OPType:%d,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HeroID,
|
| | | self.SkinID,
|
| | | self.OPType,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCSHeroSkinOP=tagCSHeroSkinOP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroSkinOP.Cmd,m_NAtagCSHeroSkinOP.SubCmd))] = m_NAtagCSHeroSkinOP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 31 武将升星 #tagCSHeroStarUP
|
| | |
|
| | | class tagCSHeroStarUP(Structure):
|
| | |
| | |
|
| | | m_NAtagCSHeroWash=tagCSHeroWash()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroWash.Head.Cmd,m_NAtagCSHeroWash.Head.SubCmd))] = m_NAtagCSHeroWash
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 36 武将换肤 #tagCSHeroWearSkin
|
| | |
|
| | | class tagCSHeroWearSkin(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemIndex", c_ushort), #武将物品所在武将背包位置索引
|
| | | ("SkinIndex", c_ubyte), #皮肤索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x36
|
| | | self.ItemIndex = 0
|
| | | self.SkinIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCSHeroWearSkin)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 36 武将换肤 //tagCSHeroWearSkin:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemIndex:%d,
|
| | | SkinIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemIndex,
|
| | | self.SkinIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCSHeroWearSkin=tagCSHeroWearSkin()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSHeroWearSkin.Cmd,m_NAtagCSHeroWearSkin.SubCmd))] = m_NAtagCSHeroWearSkin
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMUseTreeLVUPTimeItem=tagCMUseTreeLVUPTimeItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseTreeLVUPTimeItem.Cmd,m_NAtagCMUseTreeLVUPTimeItem.SubCmd))] = m_NAtagCMUseTreeLVUPTimeItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 19 提升魅力等级 #tagCGCharmLVUp
|
| | |
|
| | | class tagCGCharmLVUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | self.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB3
|
| | | self.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGCharmLVUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGCharmLVUp=tagCGCharmLVUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
|
| | |
|
| | | class tagCGCharmOfferBillboardQuery(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), # 魅力玩家ID
|
| | | ("QueryType", c_ubyte), # 查看类型: 1-总榜,2-周榜,3-日榜
|
| | | ("QueryCount", c_ubyte), # 查看名次数量,最大255
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x09
|
| | | self.PlayerID = 0
|
| | | self.QueryType = 0
|
| | | self.QueryCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGCharmOfferBillboardQuery)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d,
|
| | | QueryType:%d,
|
| | | QueryCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID,
|
| | | self.QueryType,
|
| | | self.QueryCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 17 情戒解锁 #tagCMLoveRingUnlock
|
| | |
|
| | | class tagCMLoveRingUnlock(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMLoveRingUnlock)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 18 情戒升级 #tagCMLoveRingUp
|
| | |
|
| | | class tagCMLoveRingUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("UseItemCnt", c_int), #消耗材料个数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x18
|
| | | self.UseItemCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMLoveRingUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | UseItemCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.UseItemCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMLoveRingUp=tagCMLoveRingUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 15 离婚 #tagCMMarryBreak
|
| | |
|
| | | class tagCMMarryBreak(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("BreakType", c_ubyte), # 0-和平离婚;1-强制离婚
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x15
|
| | | self.BreakType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMarryBreak)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | BreakType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.BreakType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMarryBreak=tagCMMarryBreak()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 16 和平离婚回应 #tagGCMarryBreakResponse
|
| | |
|
| | | class tagGCMarryBreakResponse(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsOK", c_ubyte), # 是否同意,0-否,1-是
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x16
|
| | | self.IsOK = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCMarryBreakResponse)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsOK:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsOK
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
|
| | |
|
| | | class tagCMMarryBuyFireworks(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerIDA", c_int), # 喜糖所属玩家IDA
|
| | | ("PlayerIDB", c_int), # 喜糖所属玩家IDB
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x14
|
| | | self.PlayerIDA = 0
|
| | | self.PlayerIDB = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMarryBuyFireworks)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerIDA:%d,
|
| | | PlayerIDB:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerIDA,
|
| | | self.PlayerIDB
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 13 吃喜糖 #tagCMMarryEatCandy
|
| | |
|
| | | class tagCMMarryEatCandy(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerIDA", c_int), # 喜糖所属玩家IDA
|
| | | ("PlayerIDB", c_int), # 喜糖所属玩家IDB
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x13
|
| | | self.PlayerIDA = 0
|
| | | self.PlayerIDB = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMarryEatCandy)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerIDA:%d,
|
| | | PlayerIDB:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerIDA,
|
| | | self.PlayerIDB
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 11 提亲 #tagCMMarryReq
|
| | |
|
| | | class tagCMMarryReq(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagPlayerID", c_int), # 目标玩家ID
|
| | | ("BridePriceID", c_ubyte), # 聘礼ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x11
|
| | | self.TagPlayerID = 0
|
| | | self.BridePriceID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMMarryReq)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 11 提亲 //tagCMMarryReq:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TagPlayerID:%d,
|
| | | BridePriceID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TagPlayerID,
|
| | | self.BridePriceID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMMarryReq=tagCMMarryReq()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 12 提亲回应 #tagCGMarryResponse
|
| | |
|
| | | class tagCGMarryResponse(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ReqPlayerID", c_int), # 提亲的玩家ID
|
| | | ("IsOK", c_ubyte), # 是否同意,0-否,1-是
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x12
|
| | | self.ReqPlayerID = 0
|
| | | self.IsOK = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGMarryResponse)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ReqPlayerID:%d,
|
| | | IsOK:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ReqPlayerID,
|
| | | self.IsOK
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGMarryResponse=tagCGMarryResponse()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 10 送礼物 #tagCMSendGifts
|
| | |
|
| | | class tagCMSendGifts(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagPlayerID", c_int), # 目标玩家ID
|
| | | ("GiftNum", c_ushort), # 赠送礼物编号
|
| | | ("GiftCount", c_int), # 赠送礼物数量
|
| | | ("IsAutoBuy", c_ubyte), # 是否自动购买
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB3
|
| | | 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 = 0xB3
|
| | | self.SubCmd = 0x10
|
| | | self.TagPlayerID = 0
|
| | | self.GiftNum = 0
|
| | | self.GiftCount = 0
|
| | | self.IsAutoBuy = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMSendGifts)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TagPlayerID:%d,
|
| | | GiftNum:%d,
|
| | | GiftCount:%d,
|
| | | IsAutoBuy:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TagPlayerID,
|
| | | self.GiftNum,
|
| | | self.GiftCount,
|
| | | self.IsAutoBuy
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSendGifts=tagCMSendGifts()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMUseSkillEx=tagCMUseSkillEx()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSkillEx.Cmd,m_NAtagCMUseSkillEx.SubCmd))] = m_NAtagCMUseSkillEx
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|