| | |
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("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_NAtagCMTouchNPC=tagCMTouchNPC()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
|
| | |
|
| | | class tagCMGetCustomSceneCollectAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("NPCID", c_int), #采集的NPCID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x34
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x34
|
| | | self.NPCID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetCustomSceneCollectAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | NPCID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.NPCID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int),
|
| | | ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x12
|
| | | self.PlayerID = 0
|
| | | self.EquipClassLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d
|
| | | PlayerID:%d,
|
| | | EquipClassLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID
|
| | | self.PlayerID,
|
| | | self.EquipClassLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 17 增加果实使用上限 #tagCMAddFruitUseLimit
|
| | |
|
| | | class tagCMAddFruitUseLimit(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), #果实物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x17
|
| | | self.ItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMAddFruitUseLimit)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
|
| | |
|
| | | class tagCMEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x30
|
| | | self.EquipIndex = 0
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 守护拾取物品 #tagCMGuardPickupItem
|
| | |
|
| | | class tagCMGuardPickupItem(Structure):
|
| | |
| | |
|
| | | 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 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
|
| | |
|
| | | class tagCMUnEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x31
|
| | | self.EquipIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMUnEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
|
| | |
|
| | | class tagCMUseAllAttrFruit(Structure):
|
| | |
| | |
|
| | | m_NAtagCMWingUp=tagCMWingUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
|
| | |
|
| | | class tagCMZhuXianEquipDecompose(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//材料所在背包索引的数量
|
| | | IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
|
| | | ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
|
| | | IsAuto = 0 #(BYTE IsAuto)//是否自动分解
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | 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)
|
| | | self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | self.Count = 0
|
| | | self.IndexList = list()
|
| | | self.ItemIDList = list()
|
| | | self.IsAuto = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2 * self.Count
|
| | | length += 4 * self.Count
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteWORD(data, self.IndexList[i])
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsAuto)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | IndexList:%s,
|
| | | ItemIDList:%s,
|
| | | IsAuto:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "...",
|
| | | "...",
|
| | | self.IsAuto
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 29 骑宠觉醒 #tagCMHorsePetAwake
|
| | |
|
| | | 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 = 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 = 0xA5
|
| | | self.SubCmd = 0x29
|
| | | self.Type = 0
|
| | | self.ID = 0
|
| | | self.EatItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHorsePetAwake)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d,
|
| | | ID:%d,
|
| | | EatItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type,
|
| | | self.ID,
|
| | | self.EatItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 27 坐骑提升 #tagCMHorseUp
|
| | |
|
| | | class tagCMHorseUp(Structure):
|
| | |
| | | _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
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 12 感应法宝 #tagCMThinkMagicWeapon
|
| | |
|
| | | class tagCMThinkMagicWeapon(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MWID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x12
|
| | | self.MWID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMThinkMagicWeapon)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MWID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MWID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize
|
| | | # B1 0A 副本购买buff #tagCMFBBuyBuff
|
| | |
|
| | | class tagCMGiveCustomFBPrize(Structure):
|
| | | class tagCMFBBuyBuff(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int),
|
| | | ("FuncLineID", c_ushort), |
| | | ("MoneyCnt", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x09
|
| | | self.SubCmd = 0x0A
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x09
|
| | | self.SubCmd = 0x0A
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.MoneyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGiveCustomFBPrize)
|
| | | return sizeof(tagCMFBBuyBuff)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize:
|
| | | DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d
|
| | | MoneyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.FuncLineID
|
| | | self.MoneyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize
|
| | | m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize
|
| | |
|
| | | class tagCMRefreshCustomFBPrize(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("FuncLineID", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB1
|
| | | self.SubCmd = 0x08
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRefreshCustomFBPrize)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.FuncLineID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble
|
| | |
|
| | | class tagCMSetFMTDouble(Structure):
|
| | |
| | | Head = tagHead()
|
| | | PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
|
| | | PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
|
| | | PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
|
| | | PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.PointAttrIDList.append(value)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PointValueList.append(value)
|
| | | return _pos
|
| | |
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.PointAttrIDCount
|
| | | length += 2 * self.PointAttrIDCount
|
| | | length += 4 * self.PointAttrIDCount
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
|
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteWORD(data, self.PointValueList[i])
|
| | | data = CommFunc.WriteDWORD(data, self.PointValueList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | |
|
| | | m_NAtagCMAddPoint=tagCMAddPoint()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMTJGnpc=tagCMTJGnpc()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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 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):
|