| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
|
| | |
|
| | | class tagGCServerCreatFamilyTimes(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Times", c_int), #建盟次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA4
|
| | | 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 = 0xA4
|
| | | self.SubCmd = 0x0D
|
| | | self.Times = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCServerCreatFamilyTimes)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Times:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Times
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo
|
| | |
|
| | | class tagtMemberInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A9 05 天梯竞技场每日奖励信息#tagGCHighLadderRewardInfo
|
| | | # A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
|
| | |
|
| | | class tagGCHighLadderRewardInfo(Structure):
|
| | | class tagGCNotifyEquipClassEquip(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("hadGot", c_ubyte), #是否已领取
|
| | | ("Order", c_ushort), #奖励排名
|
| | | ("ItemID", c_int), |
| | | ("Star", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x05
|
| | | self.hadGot = 0
|
| | | self.Order = 0
|
| | | self.ItemID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCHighLadderRewardInfo)
|
| | | return sizeof(tagGCNotifyEquipClassEquip)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A9 05 天梯竞技场每日奖励信息//tagGCHighLadderRewardInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | hadGot:%d,
|
| | | Order:%d
|
| | | DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
|
| | | ItemID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.hadGot,
|
| | | self.Order
|
| | | self.ItemID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCHighLadderRewardInfo=tagGCHighLadderRewardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHighLadderRewardInfo.Cmd,m_NAtagGCHighLadderRewardInfo.SubCmd))] = m_NAtagGCHighLadderRewardInfo
|
| | | class tagGCNotifyEquipDetailInfo(Structure):
|
| | | Head = tagHead()
|
| | | ItemGUID = "" #(char ItemGUID[40])
|
| | | ItemID = 0 #(DWORD ItemID)
|
| | | Star = 0 #(BYTE Star)//星级
|
| | | PlusLV = 0 #(WORD PlusLV)//强化等级
|
| | | EvolveLV = 0 #(BYTE EvolveLV)//进化等级
|
| | | WashLV = 0 #(BYTE WashLV)//洗练等级
|
| | | WashValueCount = 0 #(BYTE WashValueCount)
|
| | | WashValueList = list() #(vector<WORD> WashValueList)//洗练值
|
| | | StoneIDCount = 0 #(BYTE StoneIDCount)
|
| | | StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
|
| | | ClassEquipCount = 0 #(BYTE ClassEquipCount)
|
| | | ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
|
| | | 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)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WashValueCount):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.WashValueList.append(value)
|
| | | self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.StoneIDCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.StoneIDList.append(value)
|
| | | self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ClassEquipCount):
|
| | | temClassEquipList = tagGCNotifyEquipClassEquip()
|
| | | _pos = temClassEquipList.ReadData(_lpData, _pos)
|
| | | self.ClassEquipList.append(temClassEquipList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x05
|
| | | self.ItemGUID = ""
|
| | | self.ItemID = 0
|
| | | self.Star = 0
|
| | | self.PlusLV = 0
|
| | | self.EvolveLV = 0
|
| | | self.WashLV = 0
|
| | | self.WashValueCount = 0
|
| | | self.WashValueList = list()
|
| | | self.StoneIDCount = 0
|
| | | self.StoneIDList = list()
|
| | | self.ClassEquipCount = 0
|
| | | self.ClassEquipList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2 * self.WashValueCount
|
| | | length += 1
|
| | | length += 4 * self.StoneIDCount
|
| | | length += 1
|
| | | for i in range(self.ClassEquipCount):
|
| | | length += self.ClassEquipList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.ItemGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.Star)
|
| | | data = CommFunc.WriteWORD(data, self.PlusLV)
|
| | | data = CommFunc.WriteBYTE(data, self.EvolveLV)
|
| | | data = CommFunc.WriteBYTE(data, self.WashLV)
|
| | | data = CommFunc.WriteBYTE(data, self.WashValueCount)
|
| | | for i in range(self.WashValueCount):
|
| | | data = CommFunc.WriteWORD(data, self.WashValueList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.StoneIDCount)
|
| | | for i in range(self.StoneIDCount):
|
| | | data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
|
| | | for i in range(self.ClassEquipCount):
|
| | | data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemGUID:%s,
|
| | | ItemID:%d,
|
| | | Star:%d,
|
| | | PlusLV:%d,
|
| | | EvolveLV:%d,
|
| | | WashLV:%d,
|
| | | WashValueCount:%d,
|
| | | WashValueList:%s,
|
| | | StoneIDCount:%d,
|
| | | StoneIDList:%s,
|
| | | ClassEquipCount:%d,
|
| | | ClassEquipList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemGUID,
|
| | | self.ItemID,
|
| | | self.Star,
|
| | | self.PlusLV,
|
| | | self.EvolveLV,
|
| | | self.WashLV,
|
| | | self.WashValueCount,
|
| | | "...",
|
| | | self.StoneIDCount,
|
| | | "...",
|
| | | self.ClassEquipCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
|
| | |
|
| | | class tagGCFamilyWarInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("WorldLV", c_ushort), # 当前进行中的联赛世界等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAC
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAC
|
| | | self.SubCmd = 0x01
|
| | | self.WorldLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCFamilyWarInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | WorldLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.WorldLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
|
| | |
|
| | | class tagGCFeastRedPacketDay(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 01 通知领地争夺占领情况 #tagGCManorWarInfo
|
| | | # AC 07 骑宠Boss信息 #tagGCHorsePetBossInfo
|
| | |
|
| | | class tagGCManorInfo(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)// 领地地图id
|
| | | FamilyID = 0 #(DWORD FamilyID)// 占领战盟id
|
| | | FNameLen = 0 #(BYTE FNameLen)// 战盟名字长度
|
| | | FamilyName = "" #(String FamilyName)// 战盟名 size = FNameLen
|
| | | LNameLen = 0 #(BYTE LNameLen)// 盟主名字长度
|
| | | LeaderName = "" #(String LeaderName)// 盟主名 size = LNameLen
|
| | | OccupyDays = 0 #(WORD OccupyDays)// 连续占领天数
|
| | | LastFamilyID = 0 #(DWORD LastFamilyID)// 上次占领的战盟id
|
| | | data = None
|
| | | class tagGCHorsePetBossInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsEnd", c_int), # 是否已结束(按位代表对应线路是否结束)
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x01
|
| | | self.Cmd = 0xAC
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FNameLen)
|
| | | self.LNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LNameLen)
|
| | | self.OccupyDays,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LastFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x01
|
| | | self.MapID = 0
|
| | | self.FamilyID = 0
|
| | | self.FNameLen = 0
|
| | | self.FamilyName = ""
|
| | | self.LNameLen = 0
|
| | | self.LeaderName = ""
|
| | | self.OccupyDays = 0
|
| | | self.LastFamilyID = 0
|
| | | self.Cmd = 0xAC
|
| | | self.SubCmd = 0x07
|
| | | self.IsEnd = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.FamilyName)
|
| | | length += 1
|
| | | length += len(self.LeaderName)
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | | return sizeof(tagGCHorsePetBossInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyID)
|
| | | data = CommFunc.WriteBYTE(data, self.FNameLen)
|
| | | data = CommFunc.WriteString(data, self.FNameLen, self.FamilyName)
|
| | | data = CommFunc.WriteBYTE(data, self.LNameLen)
|
| | | data = CommFunc.WriteString(data, self.LNameLen, self.LeaderName)
|
| | | data = CommFunc.WriteWORD(data, self.OccupyDays)
|
| | | data = CommFunc.WriteDWORD(data, self.LastFamilyID)
|
| | | return data
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FamilyID:%d,
|
| | | FNameLen:%d,
|
| | | FamilyName:%s,
|
| | | LNameLen:%d,
|
| | | LeaderName:%s,
|
| | | OccupyDays:%d,
|
| | | LastFamilyID:%d
|
| | | DumpString = '''// AC 07 骑宠Boss信息 //tagGCHorsePetBossInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | IsEnd:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FamilyID,
|
| | | self.FNameLen,
|
| | | self.FamilyName,
|
| | | self.LNameLen,
|
| | | self.LeaderName,
|
| | | self.OccupyDays,
|
| | | self.LastFamilyID
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.IsEnd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCManorWarInfo(Structure):
|
| | | Head = tagHead()
|
| | | ManorCnt = 0 #(BYTE ManorCnt)//领地个数
|
| | | ManorInfoList = list() #(vector<tagGCManorInfo> ManorInfoList)//领地信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ManorCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ManorCnt):
|
| | | temManorInfoList = tagGCManorInfo()
|
| | | _pos = temManorInfoList.ReadData(_lpData, _pos)
|
| | | self.ManorInfoList.append(temManorInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x01
|
| | | self.ManorCnt = 0
|
| | | self.ManorInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ManorCnt):
|
| | | length += self.ManorInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ManorCnt)
|
| | | for i in range(self.ManorCnt):
|
| | | data = CommFunc.WriteString(data, self.ManorInfoList[i].GetLength(), self.ManorInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ManorCnt:%d,
|
| | | ManorInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ManorCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCManorWarInfo=tagGCManorWarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo
|
| | | m_NAtagGCHorsePetBossInfo=tagGCHorsePetBossInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHorsePetBossInfo.Cmd,m_NAtagGCHorsePetBossInfo.SubCmd))] = m_NAtagGCHorsePetBossInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B3 11 聊天缓存通知 #tagGCTalkCache
|
| | |
|
| | | class tagGCTalkCacheInfo(Structure):
|
| | | ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//size = SrcNameLen
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | Time = 0 #(DWORD Time)
|
| | | Len = 0 #(WORD Len)
|
| | | Content = "" #(String Content)//size = Len
|
| | | Extras = "" #(char Extras[256])//附加值列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
| | | self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ChannelType = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayerID = 0
|
| | | self.Time = 0
|
| | | self.Len = 0
|
| | | self.Content = ""
|
| | | self.Extras = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.Content)
|
| | | length += 256
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ChannelType)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | data = CommFunc.WriteWORD(data, self.Len)
|
| | | data = CommFunc.WriteString(data, self.Len, self.Content)
|
| | | data = CommFunc.WriteString(data, 256, self.Extras)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ChannelType:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayerID:%d,
|
| | | Time:%d,
|
| | | Len:%d,
|
| | | Content:%s,
|
| | | Extras:%s
|
| | | '''\
|
| | | %(
|
| | | self.ChannelType,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayerID,
|
| | | self.Time,
|
| | | self.Len,
|
| | | self.Content,
|
| | | self.Extras
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCTalkCache(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | InfoList = list() #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x11
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagGCTalkCacheInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB3
|
| | | self.Head.SubCmd = 0x11
|
| | | self.Count = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCTalkCache=tagGCTalkCache()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
|
| | |
|
| | | class tagGCAddAuctionItem(Structure):
|
| | |
| | | ItemCount = 0 #(WORD ItemCount)
|
| | | AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
|
| | | BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | UserDataLen = 0 #(WORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据
|
| | | data = None
|
| | |
| | | self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | |
| | | self.ItemCount = 0
|
| | | self.AddTime = ""
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += len(self.UserData)
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.ItemCount)
|
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | data = CommFunc.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | |
| | | ItemCount:%d,
|
| | | AddTime:%s,
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | '''\
|
| | |
| | | self.ItemCount,
|
| | | self.AddTime,
|
| | | self.BidderPrice,
|
| | | self.BiddingTime,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | )
|
| | |
| | | ItemCount = 0 #(WORD ItemCount)
|
| | | AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
|
| | | BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | UserDataLen = 0 #(WORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据
|
| | | data = None
|
| | |
| | | self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | |
| | | self.ItemCount = 0
|
| | | self.AddTime = ""
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += len(self.UserData)
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.ItemCount)
|
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | data = CommFunc.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | |
| | | ItemCount:%d,
|
| | | AddTime:%s,
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | '''\
|
| | |
| | | self.ItemCount,
|
| | | self.AddTime,
|
| | | self.BidderPrice,
|
| | | self.BiddingTime,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | )
|
| | |
| | | AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
|
| | | BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
|
| | | BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | UserDataLen = 0 #(WORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据
|
| | | data = None
|
| | |
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | |
| | | self.AddTime = ""
|
| | | self.BidderID = 0
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
| | | length += 19
|
| | | length += 4
|
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += len(self.UserData)
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteDWORD(data, self.BidderID)
|
| | | data = CommFunc.WriteWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | data = CommFunc.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | |
| | | AddTime:%s,
|
| | | BidderID:%d,
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | '''\
|
| | |
| | | self.AddTime,
|
| | | self.BidderID,
|
| | | self.BidderPrice,
|
| | | self.BiddingTime,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | )
|
| | |
| | | ItemCount = 0 #(WORD ItemCount)
|
| | | AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
|
| | | BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | UserDataLen = 0 #(WORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据
|
| | | FamilyPlayerIDLen = 0 #(WORD FamilyPlayerIDLen)
|
| | |
| | | self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.ItemCount = 0
|
| | | self.AddTime = ""
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | self.FamilyPlayerIDLen = 0
|
| | |
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += len(self.UserData)
|
| | | length += 2
|
| | |
| | | data = CommFunc.WriteWORD(data, self.ItemCount)
|
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | data = CommFunc.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
|
| | |
| | | ItemCount:%d,
|
| | | AddTime:%s,
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s,
|
| | | UserDataLen:%d,
|
| | | UserData:%s,
|
| | | FamilyPlayerIDLen:%d,
|
| | |
| | | self.ItemCount,
|
| | | self.AddTime,
|
| | | self.BidderPrice,
|
| | | self.BiddingTime,
|
| | | self.UserDataLen,
|
| | | self.UserData,
|
| | | self.FamilyPlayerIDLen,
|
| | |
| | | ItemCount = 0 #(WORD ItemCount)
|
| | | AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
|
| | | BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | UserDataLen = 0 #(WORD UserDataLen)
|
| | | UserData = "" #(String UserData)//自定义数据
|
| | | data = None
|
| | |
| | | self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
|
| | | return _pos
|
| | |
| | | self.ItemCount = 0
|
| | | self.AddTime = ""
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | self.UserDataLen = 0
|
| | | self.UserData = ""
|
| | | return
|
| | |
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += 19
|
| | | length += 2
|
| | | length += len(self.UserData)
|
| | |
|
| | |
| | | data = CommFunc.WriteWORD(data, self.ItemCount)
|
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | data = CommFunc.WriteWORD(data, self.UserDataLen)
|
| | | data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
|
| | | return data
|
| | |
| | | ItemCount:%d,
|
| | | AddTime:%s,
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s,
|
| | | UserDataLen:%d,
|
| | | UserData:%s
|
| | | '''\
|
| | |
| | | self.ItemCount,
|
| | | self.AddTime,
|
| | | self.BidderPrice,
|
| | | self.BiddingTime,
|
| | | self.UserDataLen,
|
| | | self.UserData
|
| | | )
|
| | |
| | | AddTime = "" #(char AddTime[19])//上架时间
|
| | | BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
|
| | | BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
|
| | | BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.AddTime = ""
|
| | | self.BidderID = 0
|
| | | self.BidderPrice = 0
|
| | | self.BiddingTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 19
|
| | | length += 4
|
| | | length += 4
|
| | | length += 19
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, 19, self.AddTime)
|
| | | data = CommFunc.WriteDWORD(data, self.BidderID)
|
| | | data = CommFunc.WriteDWORD(data, self.BidderPrice)
|
| | | data = CommFunc.WriteString(data, 19, self.BiddingTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | AuctionType:%d,
|
| | | AddTime:%s,
|
| | | BidderID:%d,
|
| | | BidderPrice:%d
|
| | | BidderPrice:%d,
|
| | | BiddingTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.ItemGUID,
|
| | | self.AuctionType,
|
| | | self.AddTime,
|
| | | self.BidderID,
|
| | | self.BidderPrice
|
| | | self.BidderPrice,
|
| | | self.BiddingTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("IsRobot", c_ubyte), # 是否匹配机器人
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.Cmd = 0xC0
|
| | | self.SubCmd = 0x02
|
| | | self.IsRobot = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | SubCmd:%s,
|
| | | IsRobot:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | self.SubCmd,
|
| | | self.IsRobot
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("ItemID", c_int), #果实物品ID
|
| | | ("EatCnt", c_ushort), #已使用个数
|
| | | ("ItemAddCnt", c_int), #增幅丹增加上限
|
| | | ("ItemBreakCnt", c_int), #增幅丹突破次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.EatCnt = 0
|
| | | self.ItemAddCnt = 0
|
| | | self.ItemBreakCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
|
| | | ItemID:%d,
|
| | | EatCnt:%d
|
| | | EatCnt:%d,
|
| | | ItemAddCnt:%d,
|
| | | ItemBreakCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.EatCnt
|
| | | self.EatCnt,
|
| | | self.ItemAddCnt,
|
| | | self.ItemBreakCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
|
| | | ("KillCnt", c_int), #击杀次数
|
| | | ("ItemAddCnt", c_int), #物品增加次数
|
| | | ("BuyCnt", c_ubyte), #购买次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.BossType = 0
|
| | | self.KillCnt = 0
|
| | | self.ItemAddCnt = 0
|
| | | self.BuyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
|
| | | BossType:%d,
|
| | | KillCnt:%d,
|
| | | ItemAddCnt:%d
|
| | | ItemAddCnt:%d,
|
| | | BuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.BossType,
|
| | | self.KillCnt,
|
| | | self.ItemAddCnt
|
| | | self.ItemAddCnt,
|
| | | self.BuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("ActionID", c_int), # ID
|
| | | ("DayFinishCnt", c_ushort), # 今日已完成次数
|
| | | ("DayBuyTimes", c_ubyte), # 今日购买次数
|
| | | ("DayItemTimes", c_ubyte), # 今日物品增加次数
|
| | | ("WeekFinishCnt", c_int), # 本周已完成次数
|
| | | ]
|
| | |
|
| | |
| | | def Clear(self):
|
| | | self.ActionID = 0
|
| | | self.DayFinishCnt = 0
|
| | | self.DayBuyTimes = 0
|
| | | self.DayItemTimes = 0
|
| | | self.WeekFinishCnt = 0
|
| | | return
|
| | |
|
| | |
| | | DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
|
| | | ActionID:%d,
|
| | | DayFinishCnt:%d,
|
| | | DayBuyTimes:%d,
|
| | | DayItemTimes:%d,
|
| | | WeekFinishCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActionID,
|
| | | self.DayFinishCnt,
|
| | | self.DayBuyTimes,
|
| | | self.DayItemTimes,
|
| | | self.WeekFinishCnt
|
| | | )
|
| | | return DumpString
|
| | |
| | |
|
| | | m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo
|
| | |
|
| | | class tagMCFairyAdventuresData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("EventID", c_ubyte), |
| | | ("Gear", c_ubyte), #第几档
|
| | | ("Condition", c_int), #条件
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.EventID = 0
|
| | | self.Gear = 0
|
| | | self.Condition = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFairyAdventuresData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo:
|
| | | EventID:%d,
|
| | | Gear:%d,
|
| | | Condition:%d
|
| | | '''\
|
| | | %(
|
| | | self.EventID,
|
| | | self.Gear,
|
| | | self.Condition
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFairyAdventuresInfo(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)
|
| | | InfoList = list() #(vector<tagMCFairyAdventuresData> InfoList)// 信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temInfoList = tagMCFairyAdventuresData()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x07
|
| | | self.Cnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
|
| | |
|
| | | class tagMCFairyDomainEvent(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("EventID", c_ushort), #事件ID
|
| | | ("EventState", c_ubyte), #事件状态 1-可拜访 2-拜访中 3-已拜访
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.EventID = 0
|
| | | self.EventState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFairyDomainEvent)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo:
|
| | | EventID:%d,
|
| | | EventState:%d
|
| | | '''\
|
| | | %(
|
| | | self.EventID,
|
| | | self.EventState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFairyDomainInfo(Structure):
|
| | | Head = tagHead()
|
| | | IsAll = 0 #(BYTE IsAll)//是否全部
|
| | | State = 0 #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访
|
| | | VisitCnt = 0 #(DWORD VisitCnt)//寻访次数
|
| | | Energy = 0 #(WORD Energy)//体力
|
| | | Count = 0 #(BYTE Count)// 信息个数
|
| | | InfoList = list() #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagMCFairyDomainEvent()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x06
|
| | | self.IsAll = 0
|
| | | self.State = 0
|
| | | self.VisitCnt = 0
|
| | | self.Energy = 0
|
| | | self.Count = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsAll)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteDWORD(data, self.VisitCnt)
|
| | | data = CommFunc.WriteWORD(data, self.Energy)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsAll:%d,
|
| | | State:%d,
|
| | | VisitCnt:%d,
|
| | | Energy:%d,
|
| | | Count:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsAll,
|
| | | self.State,
|
| | | self.VisitCnt,
|
| | | self.Energy,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | class tagMCMagicWeaponData(Structure):
|
| | | class tagMCHistoryReChargeAwardRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardGetRecord", c_int), # 按二进制位标示领取记录 配置奖励ID代表第几位
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x28
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x28
|
| | | self.AwardGetRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHistoryReChargeAwardRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardGetRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardGetRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
|
| | |
|
| | | class tagMCHorsePetSkinInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Type", c_ubyte), # 1-坐骑 2-灵宠
|
| | | ("ID", c_int), # 对应坐骑表灵宠表ID
|
| | | ("Exp", c_int), #经验
|
| | | ("SkinLV", c_ubyte), #觉醒等级
|
| | | ("SkinIndex", c_ubyte), #当前选择外观
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.Type = 0
|
| | | self.ID = 0
|
| | | self.Exp = 0
|
| | | self.SkinLV = 0
|
| | | self.SkinIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorsePetSkinInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
|
| | | Type:%d,
|
| | | ID:%d,
|
| | | Exp:%d,
|
| | | SkinLV:%d,
|
| | | SkinIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Type,
|
| | | self.ID,
|
| | | self.Exp,
|
| | | self.SkinLV,
|
| | | self.SkinIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorsePetSkinData(Structure):
|
| | | Head = tagHead()
|
| | | Num = 0 #(BYTE Num)//个数
|
| | | MagicWeaponID = list() #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
|
| | | InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Num):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.MagicWeaponID.append(value)
|
| | | temInfoList = tagMCHorsePetSkinInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x12
|
| | | self.Num = 0
|
| | | self.MagicWeaponID = list()
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.Num
|
| | | for i in range(self.Num):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Num)
|
| | | for i in range(self.Num):
|
| | | data = CommFunc.WriteDWORD(data, self.MagicWeaponID[i])
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Num:%d,
|
| | | MagicWeaponID:%s
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
|
| | | m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("MWID", c_int),
|
| | | ("LV", c_ubyte),
|
| | | ("Exp", c_int),
|
| | | ("State", c_ubyte), #是否点击法宝认主
|
| | | ("FBPassLV", c_ubyte), #副本关卡
|
| | | ("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
|
| | | ]
|
| | |
| | | self.MWID = 0
|
| | | self.LV = 0
|
| | | self.Exp = 0
|
| | | self.State = 0
|
| | | self.FBPassLV = 0
|
| | | self.IsWear = 0
|
| | | return
|
| | |
| | | MWID:%d,
|
| | | LV:%d,
|
| | | Exp:%d,
|
| | | State:%d,
|
| | | FBPassLV:%d,
|
| | | IsWear:%d
|
| | | '''\
|
| | |
| | | self.MWID,
|
| | | self.LV,
|
| | | self.Exp,
|
| | | self.State,
|
| | | self.FBPassLV,
|
| | | self.IsWear
|
| | | )
|
| | |
| | |
|
| | | m_NAtagMCModuleFightPowerInfo=tagMCModuleFightPowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCModuleFightPowerInfo.Head.Cmd,m_NAtagMCModuleFightPowerInfo.Head.SubCmd))] = m_NAtagMCModuleFightPowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
|
| | |
|
| | | class tagMCNPCAttackCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NPCID", c_int), |
| | | ("AttackCount", c_ubyte), #已攻击次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.NPCID = 0
|
| | | self.AttackCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCNPCAttackCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
|
| | | NPCID:%d,
|
| | | AttackCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.NPCID,
|
| | | self.AttackCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCNPCAttackCountInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | NPCAttackCountList = list() #(vector<tagMCNPCAttackCount> NPCAttackCountList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x25
|
| | | 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):
|
| | | temNPCAttackCountList = tagMCNPCAttackCount()
|
| | | _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
|
| | | self.NPCAttackCountList.append(temNPCAttackCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x25
|
| | | self.Count = 0
|
| | | self.NPCAttackCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.NPCAttackCountList[i].GetLength()
|
| | |
|
| | | 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.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | NPCAttackCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | #------------------------------------------------------
|
| | | # A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
|
| | |
|
| | | class tagMCPlayerStoveMsg(Structure):
|
| | | class tagMCPlayerStoveInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("StoveLV", c_ubyte), # 炼丹炉等级
|
| | | ("StoveExp", c_int), # 炼丹炉经验 |
| | | ("ItemID", c_int), # 合成物品id
|
| | | ("AlchemyID", c_int), # 丹 ID
|
| | | ("StartTime", c_int), # 开始炼的时间 |
| | | ("AlchemyTimes", c_ushort), # 炼的次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0xBF
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0xBF
|
| | | self.StoveLV = 0
|
| | | self.StoveExp = 0
|
| | | self.ItemID = 0
|
| | | self.AlchemyID = 0
|
| | | self.StartTime = 0
|
| | | self.AlchemyTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPlayerStoveMsg)
|
| | | return sizeof(tagMCPlayerStoveInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | StoveLV:%d,
|
| | | StoveExp:%d,
|
| | | ItemID:%d
|
| | | AlchemyID:%d,
|
| | | StartTime:%d,
|
| | | AlchemyTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AlchemyID,
|
| | | self.StartTime,
|
| | | self.AlchemyTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCPlayerStoveMsg(Structure):
|
| | | Head = tagHead()
|
| | | StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级
|
| | | StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验
|
| | | ItemID = 0 #(DWORD ItemID)// 合成物品id
|
| | | ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量
|
| | | StoveCnt = 0 #(WORD StoveCnt)// 丹药数量
|
| | | InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xBF
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.StoveCnt):
|
| | | temInfoList = tagMCPlayerStoveInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xBF
|
| | | self.StoveLV = 0
|
| | | self.StoveExp = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.StoveCnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.StoveCnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.StoveLV)
|
| | | data = CommFunc.WriteDWORD(data, self.StoveExp)
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteBYTE(data, self.ItemCnt)
|
| | | data = CommFunc.WriteWORD(data, self.StoveCnt)
|
| | | for i in range(self.StoveCnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StoveLV:%d,
|
| | | StoveExp:%d,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | StoveCnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StoveLV,
|
| | | self.StoveExp,
|
| | | self.ItemID
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.StoveCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("BeginTime", c_int), #开始计时时间
|
| | | ("BuffTime", c_int), #buff剩余时间
|
| | | ("BuffAddRate", c_int), #buff加成万分率
|
| | | ("CurExp", c_int), #当前总经验
|
| | | ("CurExpPoint", c_int), #当前总经验点
|
| | | ]
|
| | |
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x27
|
| | | self.BeginTime = 0
|
| | | self.BuffTime = 0
|
| | | self.BuffAddRate = 0
|
| | | self.CurExp = 0
|
| | | self.CurExpPoint = 0
|
| | | return
|
| | |
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | BeginTime:%d,
|
| | | BuffTime:%d,
|
| | | BuffAddRate:%d,
|
| | | CurExp:%d,
|
| | | CurExpPoint:%d
|
| | | '''\
|
| | |
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.BeginTime,
|
| | | self.BuffTime,
|
| | | self.BuffAddRate,
|
| | | self.CurExp,
|
| | | self.CurExpPoint
|
| | | )
|
| | |
| | | ("ExtraCnt", c_ubyte), # VIP额外次数
|
| | | ("ExtraData", c_ubyte), # 额外参数1
|
| | | ("ExtraData2", c_ubyte), # 额外参数2
|
| | | ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ExtraCnt = 0
|
| | | self.ExtraData = 0
|
| | | self.ExtraData2 = 0
|
| | | self.HaveRecover = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | RecoverCnt:%d,
|
| | | ExtraCnt:%d,
|
| | | ExtraData:%d,
|
| | | ExtraData2:%d
|
| | | ExtraData2:%d,
|
| | | HaveRecover:%d
|
| | | '''\
|
| | | %(
|
| | | self.Index,
|
| | | self.RecoverCnt,
|
| | | self.ExtraCnt,
|
| | | self.ExtraData,
|
| | | self.ExtraData2
|
| | | self.ExtraData2,
|
| | | self.HaveRecover
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagMCSingleGoldGift=tagMCSingleGoldGift()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 09 技能五行专精信息 #tagMCSkillElementInfo
|
| | |
|
| | | class tagMCSkillElementActiveData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("SkillID", c_int), # 技能ID
|
| | | ("ActiveLV", c_ubyte), # 激活等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.SkillID = 0
|
| | | self.ActiveLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSkillElementActiveData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
|
| | | SkillID:%d,
|
| | | ActiveLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.SkillID,
|
| | | self.ActiveLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSkillElementData(Structure):
|
| | | MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID
|
| | | ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID
|
| | | SkillCnt = 0 #(BYTE SkillCnt)// 数量
|
| | | ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SkillCnt):
|
| | | temActiveSkill = tagMCSkillElementActiveData()
|
| | | _pos = temActiveSkill.ReadData(_lpData, _pos)
|
| | | self.ActiveSkill.append(temActiveSkill)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.MainSkillID = 0
|
| | | self.ElementSkillID = 0
|
| | | self.SkillCnt = 0
|
| | | self.ActiveSkill = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.SkillCnt):
|
| | | length += self.ActiveSkill[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.MainSkillID)
|
| | | data = CommFunc.WriteDWORD(data, self.ElementSkillID)
|
| | | data = CommFunc.WriteBYTE(data, self.SkillCnt)
|
| | | for i in range(self.SkillCnt):
|
| | | data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | MainSkillID:%d,
|
| | | ElementSkillID:%d,
|
| | | SkillCnt:%d,
|
| | | ActiveSkill:%s
|
| | | '''\
|
| | | %(
|
| | | self.MainSkillID,
|
| | | self.ElementSkillID,
|
| | | self.SkillCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSkillElementInfo(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)// 数量
|
| | | InfoList = list() #(vector<tagMCSkillElementData> InfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x09
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temInfoList = tagMCSkillElementData()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x09
|
| | | self.Cnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
|
| | |
|
| | | class tagMCFamilyActivityExchangeResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Point", c_int), # 活跃令
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x02
|
| | | self.Point = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyActivityExchangeResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Point:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Point
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
|
| | |
|
| | | class tagMCFamilyDayAward(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 34 天梯竞技场状态#tagMCHighLadderState
|
| | |
|
| | | class tagMCHighLadderState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Count", c_ubyte), #已挑战次数
|
| | | ("MaxCount", c_ubyte), #最大次数
|
| | | ("CDTime", c_int), #累计冷却时间
|
| | | ("IsRelCD", c_ubyte), #是否正在真实冷却状态
|
| | | ("Currency", c_int), #积分
|
| | | ]
|
| | |
|
| | | 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
|
| | | self.Count = 0
|
| | | self.MaxCount = 0
|
| | | self.CDTime = 0
|
| | | self.IsRelCD = 0
|
| | | self.Currency = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHighLadderState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 34 天梯竞技场状态//tagMCHighLadderState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Count:%d,
|
| | | MaxCount:%d,
|
| | | CDTime:%d,
|
| | | IsRelCD:%d,
|
| | | Currency:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Count,
|
| | | self.MaxCount,
|
| | | self.CDTime,
|
| | | self.IsRelCD,
|
| | | self.Currency
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHighLadderState=tagMCHighLadderState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHighLadderState.Cmd,m_NAtagMCHighLadderState.SubCmd))] = m_NAtagMCHighLadderState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
|
| | |
|
| | | class tagMCCollectAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("Count", c_ubyte), |
| | | ("IsAuctionItem", c_ubyte), #是否拍品
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.ItemID = 0
|
| | | self.Count = 0
|
| | | self.IsAuctionItem = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCollectAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
|
| | | ItemID:%d,
|
| | | Count:%d,
|
| | | IsAuctionItem:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.Count,
|
| | | self.IsAuctionItem
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCollectAwardItemInfo(Structure):
|
| | | Head = tagHead()
|
| | | CollectNPCID = 0 #(DWORD CollectNPCID)//采集的NPCID
|
| | | Count = 0 #(BYTE Count)
|
| | | AwardItemList = list() #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA7
|
| | | self.Head.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCollectAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA7
|
| | | self.Head.SubCmd = 0x18
|
| | | self.CollectNPCID = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.CollectNPCID)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | CollectNPCID:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.CollectNPCID,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
|
| | |
|
| | | class tagSCPlayerEquipCacheResult(Structure):
|
| | | Head = tagHead()
|
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | EquipClassLV = 0 #(BYTE EquipClassLV)
|
| | | ItemDataSize = 0 #(WORD ItemDataSize)
|
| | | ItemData = "" #(String ItemData)//物品记录 |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA7
|
| | | self.Head.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA7
|
| | | self.Head.SubCmd = 0x19
|
| | | self.PlayerID = 0
|
| | | self.EquipClassLV = 0
|
| | | self.ItemDataSize = 0
|
| | | self.ItemData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += len(self.ItemData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.EquipClassLV)
|
| | | data = CommFunc.WriteWORD(data, self.ItemDataSize)
|
| | | data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PlayerID:%d,
|
| | | EquipClassLV:%d,
|
| | | ItemDataSize:%d,
|
| | | ItemData:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PlayerID,
|
| | | self.EquipClassLV,
|
| | | self.ItemDataSize,
|
| | | self.ItemData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 07 通知玩家自定义聊天 #tagMCPyTalk
|
| | |
|
| | | class tagMCPyTalk(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
|
| | |
|
| | | class tagMCLingQiEquipBreakResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MakeItemID", c_int), #突破后的物品ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA8
|
| | | 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 = 0xA8
|
| | | self.SubCmd = 0x15
|
| | | self.MakeItemID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCLingQiEquipBreakResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MakeItemID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MakeItemID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 14 合成结果通知 #tagMCMakeItemAnswer
|
| | |
|
| | | class tagMCMakeItemAnswer(Structure):
|
| | |
| | |
|
| | | m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
|
| | |
|
| | | class tagMCZhuXianDecomposeItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), #物品ID
|
| | | ("ItemCnt", c_ubyte), #物品数量
|
| | | ("IsBind", c_ubyte), #是否绑定
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhuXianDecomposeItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCZhuXianDecomposeResult(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)//数量
|
| | | ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temItemList = tagMCZhuXianDecomposeItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | self.Cnt = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.ItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("State", c_ubyte), #0-不可领 1-可领 2-已领取
|
| | | ("CTGTotal", c_int), #本次活动已累计充值,单位元
|
| | | ("FireworksBuyCount", c_ushort), #已购买高级烟花数
|
| | | ("FirewordsScore", c_int), #当前累计所有烟花总积分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x14
|
| | | self.State = 0
|
| | | self.CTGTotal = 0
|
| | | self.FireworksBuyCount = 0
|
| | | self.FirewordsScore = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | State:%d
|
| | | State:%d,
|
| | | CTGTotal:%d,
|
| | | FireworksBuyCount:%d,
|
| | | FirewordsScore:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.State
|
| | | self.State,
|
| | | self.CTGTotal,
|
| | | self.FireworksBuyCount,
|
| | | self.FirewordsScore
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
|
| | |
|
| | | class tagMCBossFirstKillState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NPCID", c_int), |
| | | ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.NPCID = 0
|
| | | self.FKState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCBossFirstKillState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
|
| | | NPCID:%d,
|
| | | FKState:%d
|
| | | '''\
|
| | | %(
|
| | | self.NPCID,
|
| | | self.FKState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossFirstKillStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | BossCount = 0 #(BYTE BossCount)
|
| | | FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BossCount):
|
| | | temFirstKillStateList = tagMCBossFirstKillState()
|
| | | _pos = temFirstKillStateList.ReadData(_lpData, _pos)
|
| | | self.FirstKillStateList.append(temFirstKillStateList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | self.BossCount = 0
|
| | | self.FirstKillStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BossCount):
|
| | | length += self.FirstKillStateList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BossCount)
|
| | | for i in range(self.BossCount):
|
| | | data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BossCount:%d,
|
| | | FirstKillStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BossCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 06 活动物品兑换次数记录 #tagMCExchangeActionItemCntRecord
|
| | |
|
| | | class tagMCExchangeActionItemCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), |
| | | ("ExcCnt", c_int), # 已兑换次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x06
|
| | | self.ItemID = 0
|
| | | self.ExcCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCExchangeActionItemCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 06 活动物品兑换次数记录 //tagMCExchangeActionItemCntRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ItemID:%d,
|
| | | ExcCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ItemID,
|
| | | self.ExcCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCExchangeActionItemCntRecord(Structure):
|
| | | Head = tagHead()
|
| | | ActionKeyLen = 0 #(BYTE ActionKeyLen)
|
| | | ActionKey = "" #(String ActionKey)
|
| | | RecordCnt = 0 #(BYTE RecordCnt)
|
| | | RecordList = list() #(vector<tagMCExchangeActionItemCnt> RecordList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
|
| | | self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RecordCnt):
|
| | | temRecordList = tagMCExchangeActionItemCnt()
|
| | | _pos = temRecordList.ReadData(_lpData, _pos)
|
| | | self.RecordList.append(temRecordList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x06
|
| | | self.ActionKeyLen = 0
|
| | | self.ActionKey = ""
|
| | | self.RecordCnt = 0
|
| | | self.RecordList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.ActionKey)
|
| | | length += 1
|
| | | for i in range(self.RecordCnt):
|
| | | length += self.RecordList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
|
| | | data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
|
| | | data = CommFunc.WriteBYTE(data, self.RecordCnt)
|
| | | for i in range(self.RecordCnt):
|
| | | data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActionKeyLen:%d,
|
| | | ActionKey:%s,
|
| | | RecordCnt:%d,
|
| | | RecordList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActionKeyLen,
|
| | | self.ActionKey,
|
| | | self.RecordCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 07 节日活动奖励状态 #tagMCFestivalLoginAwardState
|
| | |
|
| | | class tagMCFestivalLoginAwardState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("FestivalType", c_ubyte), # 节日类型
|
| | | ("State", c_int), # 领取状态 <按位取值,0-未领取 1-可领取 2-已领取>
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x07
|
| | | self.FestivalType = 0
|
| | | self.State = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFestivalLoginAwardState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 07 节日活动奖励状态 //tagMCFestivalLoginAwardState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | FestivalType:%d,
|
| | | State:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.FestivalType,
|
| | | self.State
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFestivalLoginAwardState=tagMCFestivalLoginAwardState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFestivalLoginAwardState.Cmd,m_NAtagMCFestivalLoginAwardState.SubCmd))] = m_NAtagMCFestivalLoginAwardState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 02 领地占领每日奖励领奖情况 #tagMCManorDailyAward
|
| | |
|
| | | class tagMCManorDailyAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardRecord", c_int), # 按位表示每个领地领取情况;0-未领,1-已领
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x02
|
| | | self.AwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCManorDailyAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 02 领地占领每日奖励领奖情况 //tagMCManorDailyAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCManorDailyAward=tagMCManorDailyAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorDailyAward.Cmd,m_NAtagMCManorDailyAward.SubCmd))] = m_NAtagMCManorDailyAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 01 通知领地战结果 #tagMCManorWarResult
|
| | |
|
| | | class tagMCManorWarResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), # 0-普通信息;1-活动结果总结
|
| | | ("Result", c_ubyte), # 战盟胜负情况;0-未知,1-胜利,2-失败
|
| | | ("JoinTime", c_int), # 活动时总参与时间,毫秒
|
| | | ("JoinAward", c_ubyte), # 参与奖状态;0-不可领,1-可领,2-已领
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x01
|
| | | self.Type = 0
|
| | | self.Result = 0
|
| | | self.JoinTime = 0
|
| | | self.JoinAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCManorWarResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 01 通知领地战结果 //tagMCManorWarResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d,
|
| | | Result:%d,
|
| | | JoinTime:%d,
|
| | | JoinAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type,
|
| | | self.Result,
|
| | | self.JoinTime,
|
| | | self.JoinAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCManorWarResult=tagMCManorWarResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 07 玩家点数信息 #tagMCRolePointInfo
|
| | |
|
| | | class tagMCRolePointInfo(Structure):
|
| | | Head = tagHead()
|
| | | PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
|
| | | PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
|
| | | PointValueList = list() #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.PointAttrIDList.append(value)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PointValueList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x07
|
| | | self.PointAttrIDCount = 0
|
| | | self.PointAttrIDList = list()
|
| | | self.PointValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.PointAttrIDCount
|
| | | length += 4 * self.PointAttrIDCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
|
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
|
| | | for i in range(self.PointAttrIDCount):
|
| | | data = CommFunc.WriteDWORD(data, self.PointValueList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | PointAttrIDCount:%d,
|
| | | PointAttrIDList:%s,
|
| | | PointValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.PointAttrIDCount,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRolePointInfo=tagMCRolePointInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRolePointInfo.Head.Cmd,m_NAtagMCRolePointInfo.Head.SubCmd))] = m_NAtagMCRolePointInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 01 玩家技能连击通知 #tagMCSkillCombo
|
| | |
|
| | | class tagMCSkillCombo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCPlayerWallow=tagMCPlayerWallow()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerWallow.Cmd,m_NAtagMCPlayerWallow.SubCmd))] = m_NAtagMCPlayerWallow
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B1 08 开始印记流失时间 #tagMCYinjiStartTime
|
| | |
|
| | | class tagMCYinjiStartTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | 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
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCYinjiStartTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCFamilyWarBillboard=tagMCFamilyWarBillboard()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyWarBillboard.Head.Cmd,m_NAtagMCFamilyWarBillboard.Head.SubCmd))] = m_NAtagMCFamilyWarBillboard
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
|
| | |
|
| | | class tagMCFBBuyBuffTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("MapID", c_int), |
| | | ("MoneyCnt", c_ushort), |
| | | ("BuyTime", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | 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.MapID = 0
|
| | | self.MoneyCnt = 0
|
| | | self.BuyTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFBBuyBuffTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
|
| | | MapID:%d,
|
| | | MoneyCnt:%d,
|
| | | BuyTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.MapID,
|
| | | self.MoneyCnt,
|
| | | self.BuyTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFBBuyBuffInfo(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)
|
| | | InfoList = list() #(vector<tagMCFBBuyBuffTime> InfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temInfoList = tagMCFBBuyBuffTime()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x15
|
| | | self.Cnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 13 天星塔通关层数 #tagMCSkyTowerInfo
|
| | |
|
| | | class tagMCSkyTowerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Floor", c_int), # 已通关层
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSkyTowerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Floor:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Floor
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
|
| | |
|
| | | class tagMCStartCustomSceneResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("FuncLineID", c_ushort), |
| | | ("Result", c_ubyte), #是否允许
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x16
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.Result = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCStartCustomSceneResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | Result:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.Result
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
|
| | |
|
| | | class tagMCPushNotificationsSetting(Structure):
|
| | |
| | |
|
| | | m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo
|
| | |
|
| | | class tagMCZhuXianTowerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Floor", c_int), # 已通关层
|
| | | ("LastFloor", c_int), # 上次挑战层
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | 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 = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | self.LastFloor = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhuXianTowerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Floor:%d,
|
| | | LastFloor:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Floor,
|
| | | self.LastFloor
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|