| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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为不限制
|
| | | ItemType = 0 #(BYTE ItemType)//过滤类型,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
|
| | | FromNum = 0 #(WORD FromNum)//查询起始数 (从1开始)
|
| | | FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
|
| | | QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
|
| | | QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
|
| | | IsFamily = 0 #(BYTE IsFamily)//是否查询仙盟拍品
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemType,_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.FromNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsFamily,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x10
|
| | | self.Job = 0
|
| | | self.ItemType = 0
|
| | | self.ItemTypeCount = 0
|
| | | self.ItemTypeList = list()
|
| | | self.ClassLV = 0
|
| | | self.SpecItemIDCount = 0
|
| | | self.SpecItemIDList = list()
|
| | | self.FromNum = 0
|
| | | self.FromItemGUID = ""
|
| | | self.QueryDir = 0
|
| | | self.QueryCount = 0
|
| | | self.IsFamily = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.ItemTypeCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.SpecItemIDCount
|
| | | length += 2
|
| | | length += 40
|
| | | length += 1
|
| | | length += 1
|
| | |
|
| | |
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteBYTE(data, self.ItemType)
|
| | | 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.WriteWORD(data, self.FromNum)
|
| | | data = CommFunc.WriteString(data, 40, self.FromItemGUID)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryDir)
|
| | | data = CommFunc.WriteBYTE(data, self.QueryCount)
|
| | | data = CommFunc.WriteBYTE(data, self.IsFamily)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Job:%d,
|
| | | ItemType:%d,
|
| | | ItemTypeCount:%d,
|
| | | ItemTypeList:%s,
|
| | | ClassLV:%d,
|
| | | SpecItemIDCount:%d,
|
| | | SpecItemIDList:%s,
|
| | | FromNum:%d,
|
| | | QueryCount:%d,
|
| | | IsFamily:%d
|
| | | FromItemGUID:%s,
|
| | | QueryDir:%d,
|
| | | QueryCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Job,
|
| | | self.ItemType,
|
| | | self.ItemTypeCount,
|
| | | "...",
|
| | | self.ClassLV,
|
| | | self.SpecItemIDCount,
|
| | | "...",
|
| | | self.FromNum,
|
| | | self.QueryCount,
|
| | | self.IsFamily
|
| | | self.FromItemGUID,
|
| | | self.QueryDir,
|
| | | self.QueryCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xB5
|
| | | self.SubCmd = 0x12
|
| | | self.RecordType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | SubCmd:%s,
|
| | | RecordType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | self.SubCmd,
|
| | | self.RecordType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 11 拍卖行查询个人拍卖中的物品 #tagCGQueryPlayerAuctionItem
|
| | | # B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
|
| | |
|
| | | class tagCGQueryPlayerAuctionItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | | class tagCGQueryTagAuctionItem(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | ItemID = 0 #(DWORD ItemID)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB5
|
| | | self.SubCmd = 0x11
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x17
|
| | | 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.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB5
|
| | | self.SubCmd = 0x11
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB5
|
| | | self.Head.SubCmd = 0x17
|
| | | self.ItemGUID = ""
|
| | | self.ItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryPlayerAuctionItem)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | | length += 4
|
| | |
|
| | | 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.WriteString(data, 40, self.ItemGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B5 11 拍卖行查询个人拍卖中的物品 //tagCGQueryPlayerAuctionItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s,
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID,
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryPlayerAuctionItem=tagCGQueryPlayerAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryPlayerAuctionItem.Cmd,m_NAtagCGQueryPlayerAuctionItem.SubCmd))] = m_NAtagCGQueryPlayerAuctionItem
|
| | | m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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 05 宝石摘取 #tagCMEquipStonePick
|
| | |
|
| | | class tagCMEquipStonePick(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 08 物品过期 #tagCMItemTimeout
|
| | |
|
| | | class tagCMItemTimeout(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PackType", c_ubyte), #背包类型
|
| | | ("ItemIndex", 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
|
| | | 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
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PackType,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMItemTimeout=tagCMItemTimeout()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 02 丢弃背包物品 #tagPlayerDropItem
|
| | |
|
| | | class tagPlayerDropItem(Structure):
|
| | |
| | |
|
| | | m_NAtagCMItemCompound=tagCMItemCompound()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemCompound.Head.Cmd,m_NAtagCMItemCompound.Head.SubCmd))] = m_NAtagCMItemCompound
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | | 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)
|
| | | 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()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += 2 * self.CostEquipCnt
|
| | | length += 4 * self.CostEquipCnt
|
| | |
|
| | | 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])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EquipPackIndex:%d,
|
| | | CostEquipCnt:%d,
|
| | | CostEquipIndex:%s,
|
| | | CostEquipID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.EquipPackIndex,
|
| | | self.CostEquipCnt,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #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 02 对象击退 #tagCMNPCBeatBack
|
| | |
|
| | | class tagCMNPCPos(Structure):
|