| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo
|
| | |
|
| | | class tagGCFamilyBosFBInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HurtTotal", c_int), # 仙盟累计伤血,亿求余部分
|
| | | ("HurtTotalPoint", c_int), # 仙盟累计伤血,亿整除部分
|
| | | ("FightMemCount", c_ubyte), # 目前正在仙盟boss副本中的成员数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA4
|
| | | self.SubCmd = 0x0E
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA4
|
| | | self.SubCmd = 0x0E
|
| | | self.HurtTotal = 0
|
| | | self.HurtTotalPoint = 0
|
| | | self.FightMemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCFamilyBosFBInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A4 0E 家族boss副本信息 //tagGCFamilyBosFBInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HurtTotal:%d,
|
| | | HurtTotalPoint:%d,
|
| | | FightMemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HurtTotal,
|
| | | self.HurtTotalPoint,
|
| | | self.FightMemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 02 家族boss副本开启及击杀信息 #tagGCFamilyBossFBInfo
|
| | |
|
| | | class tagGCFamilyBossFBInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 AD 通知天星塔全服奖励通关玩家信息 #tagGCSkyTowerPassPlayerInfo
|
| | |
|
| | | class tagGCSkyTowerPassPlayer(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)//等级
|
| | | RealmLV = 0 #(WORD RealmLV)//境界
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteWORD(data, self.RealmLV)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCSkyTowerPassFloor(Structure):
|
| | | FloorID = 0 #(DWORD FloorID)// 层ID
|
| | | PassPlayerCount = 0 #(BYTE PassPlayerCount)// 通关记录玩家数
|
| | | PassPlayerIDList = list() #(vector<DWORD> PassPlayerIDList)// 通关记录玩家ID列表 [第1个通过玩家ID, 第2个, ...]
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.FloorID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PassPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PassPlayerCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PassPlayerIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.FloorID = 0
|
| | | self.PassPlayerCount = 0
|
| | | self.PassPlayerIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.PassPlayerCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.FloorID)
|
| | | data = CommFunc.WriteBYTE(data, self.PassPlayerCount)
|
| | | for i in range(self.PassPlayerCount):
|
| | | data = CommFunc.WriteDWORD(data, self.PassPlayerIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | FloorID:%d,
|
| | | PassPlayerCount:%d,
|
| | | PassPlayerIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.FloorID,
|
| | | self.PassPlayerCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCSkyTowerPassPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | FloorCount = 0 #(WORD FloorCount)
|
| | | PassFloorList = list() #(vector<tagGCSkyTowerPassFloor> PassFloorList)// 通关塔层信息列表
|
| | | PlayerCount = 0 #(WORD PlayerCount)
|
| | | PassPlayerList = list() #(vector<tagGCSkyTowerPassPlayer> PassPlayerList)// 通关玩家信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xAD
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FloorCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.FloorCount):
|
| | | temPassFloorList = tagGCSkyTowerPassFloor()
|
| | | _pos = temPassFloorList.ReadData(_lpData, _pos)
|
| | | self.PassFloorList.append(temPassFloorList)
|
| | | self.PlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.PlayerCount):
|
| | | temPassPlayerList = tagGCSkyTowerPassPlayer()
|
| | | _pos = temPassPlayerList.ReadData(_lpData, _pos)
|
| | | self.PassPlayerList.append(temPassPlayerList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xAD
|
| | | self.FloorCount = 0
|
| | | self.PassFloorList = list()
|
| | | self.PlayerCount = 0
|
| | | self.PassPlayerList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.FloorCount):
|
| | | length += self.PassFloorList[i].GetLength()
|
| | | length += 2
|
| | | for i in range(self.PlayerCount):
|
| | | length += self.PassPlayerList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.FloorCount)
|
| | | for i in range(self.FloorCount):
|
| | | data = CommFunc.WriteString(data, self.PassFloorList[i].GetLength(), self.PassFloorList[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.PlayerCount)
|
| | | for i in range(self.PlayerCount):
|
| | | data = CommFunc.WriteString(data, self.PassPlayerList[i].GetLength(), self.PassPlayerList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FloorCount:%d,
|
| | | PassFloorList:%s,
|
| | | PlayerCount:%d,
|
| | | PassPlayerList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FloorCount,
|
| | | "...",
|
| | | self.PlayerCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCSkyTowerPassPlayerInfo=tagGCSkyTowerPassPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSkyTowerPassPlayerInfo.Head.Cmd,m_NAtagGCSkyTowerPassPlayerInfo.Head.SubCmd))] = m_NAtagGCSkyTowerPassPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("RecordID", c_ubyte),
|
| | | ("TodayPayCount", c_ushort), # 今日已购买次数
|
| | | ("TotalPayCount", c_int), # 累计总购买次数
|
| | | ("WeekPayCount", c_ushort), # 周总购买次数
|
| | | ("MonthPayCount", c_ushort), # 月总购买次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.RecordID = 0
|
| | | self.TodayPayCount = 0
|
| | | self.TotalPayCount = 0
|
| | | self.WeekPayCount = 0
|
| | | self.MonthPayCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | DumpString = '''// A1 10 充值购买次数信息 //tagMCCoinToGoldCountInfo:
|
| | | RecordID:%d,
|
| | | TodayPayCount:%d,
|
| | | TotalPayCount:%d
|
| | | TotalPayCount:%d,
|
| | | WeekPayCount:%d,
|
| | | MonthPayCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordID,
|
| | | self.TodayPayCount,
|
| | | self.TotalPayCount
|
| | | self.TotalPayCount,
|
| | | self.WeekPayCount,
|
| | | self.MonthPayCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | class tagMCCustomAwardState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("KeyNum", c_ubyte), # 奖励记录key编号,0~255,每个key存31个ID记录 0-30为编号0, 31-61为编号1..
|
| | | ("KeyNum", c_ushort), # 奖励记录key编号,0~255,每个key存31个ID记录 0-30为编号0, 31-61为编号1..
|
| | | ("CanGetState", c_int), # 是否可领取;按位记录是否可领取
|
| | | ("GetState", c_int), # 是否已领取;按位记录是否已领取
|
| | | ]
|
| | |
| | |
|
| | | class tagMCCustomAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | RecordStateCnt = 0 #(BYTE RecordStateCnt)// 记录个数
|
| | | RecordStateCnt = 0 #(WORD RecordStateCnt)// 记录个数
|
| | | RecordStateList = list() #(vector<tagMCCustomAwardState> RecordStateList)// 记录列表
|
| | | data = None
|
| | |
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordStateCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RecordStateCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.RecordStateCnt):
|
| | | temRecordStateList = tagMCCustomAwardState()
|
| | | _pos = temRecordStateList.ReadData(_lpData, _pos)
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.RecordStateCnt):
|
| | | length += self.RecordStateList[i].GetLength()
|
| | |
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RecordStateCnt)
|
| | | data = CommFunc.WriteWORD(data, self.RecordStateCnt)
|
| | | for i in range(self.RecordStateCnt):
|
| | | data = CommFunc.WriteString(data, self.RecordStateList[i].GetLength(), self.RecordStateList[i].GetBuffer())
|
| | | return data
|
| | |
| | |
|
| | | m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CD 坐骑星级信息 #tagMCHorseStarInfo
|
| | |
|
| | | class tagMCHorseStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("HorseID", c_int), # 坐骑表ID
|
| | | ("Star", 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.HorseID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorseStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
|
| | | HorseID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.HorseID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorseStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | 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):
|
| | | temHorseStarList = tagMCHorseStar()
|
| | | _pos = temHorseStarList.ReadData(_lpData, _pos)
|
| | | self.HorseStarList.append(temHorseStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | self.Count = 0
|
| | | self.HorseStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.HorseStarList[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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | HorseStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CE 称号星级信息 #tagMCTitleStarInfo
|
| | |
|
| | | class tagMCTitleStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TitleID", c_int), # 称号ID
|
| | | ("Star", 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.TitleID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTitleStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
|
| | | TitleID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.TitleID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTitleStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | TitleStarList = list() #(vector<tagMCTitleStar> TitleStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | 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):
|
| | | temTitleStarList = tagMCTitleStar()
|
| | | _pos = temTitleStarList.ReadData(_lpData, _pos)
|
| | | self.TitleStarList.append(temTitleStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | self.Count = 0
|
| | | self.TitleStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TitleStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
|
| | |
|
| | | class tagMCFamilyBosFBPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HurtTotal", c_int), # 累计伤血,亿求余部分
|
| | | ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分
|
| | | ("FightSeconds", c_int), # 已累计战斗时长,秒
|
| | | ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
|
| | | ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x07
|
| | | self.HurtTotal = 0
|
| | | self.HurtTotalPoint = 0
|
| | | self.FightSeconds = 0
|
| | | self.HurtAwardState = 0
|
| | | self.HurtAwardStateFamily = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyBosFBPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HurtTotal:%d,
|
| | | HurtTotalPoint:%d,
|
| | | FightSeconds:%d,
|
| | | HurtAwardState:%d,
|
| | | HurtAwardStateFamily:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HurtTotal,
|
| | | self.HurtTotalPoint,
|
| | | self.FightSeconds,
|
| | | self.HurtAwardState,
|
| | | self.HurtAwardStateFamily
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | #------------------------------------------------------
|
| | | # B2 13 天星塔通关层数 #tagMCSkyTowerInfo
|
| | |
|
| | | class tagMCSkyTowerInfo(Structure):
|
| | | class tagMCSkyTowerServerReward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Floor", c_int), # 已通关层
|
| | | ("ServerRewardRecord", c_int), #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
|
| | | ("Floor", c_int), # 全服奖励层ID
|
| | | ("ServerRewardRecord", c_int), #该层全服领奖记录,按所需人数作为二进制位进行位运算判断是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | self.ServerRewardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSkyTowerInfo)
|
| | | return sizeof(tagMCSkyTowerServerReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Floor:%d,
|
| | | ServerRewardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Floor,
|
| | | self.ServerRewardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSkyTowerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Floor = 0 #(DWORD Floor)// 已通关层
|
| | | ServerRewardCount = 0 #(WORD ServerRewardCount)
|
| | | ServerRewardList = list() #(vector<tagMCSkyTowerServerReward> ServerRewardList)// 全服奖励领取记录列表,下发的层记录替换更新即可,领奖记录没有变化时服务端不会下发
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Floor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerRewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.ServerRewardCount):
|
| | | temServerRewardList = tagMCSkyTowerServerReward()
|
| | | _pos = temServerRewardList.ReadData(_lpData, _pos)
|
| | | self.ServerRewardList.append(temServerRewardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x13
|
| | | self.Floor = 0
|
| | | self.ServerRewardCount = 0
|
| | | self.ServerRewardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | for i in range(self.ServerRewardCount):
|
| | | length += self.ServerRewardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Floor)
|
| | | data = CommFunc.WriteWORD(data, self.ServerRewardCount)
|
| | | for i in range(self.ServerRewardCount):
|
| | | data = CommFunc.WriteString(data, self.ServerRewardList[i].GetLength(), self.ServerRewardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Floor:%d,
|
| | | ServerRewardCount:%d,
|
| | | ServerRewardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Floor,
|
| | | self.ServerRewardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Head.Cmd,m_NAtagMCSkyTowerInfo.Head.SubCmd))] = m_NAtagMCSkyTowerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|