5424 【后端】【1.4】跨服竞技场开发(封包)
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #C1 03 领取奖励表奖励 #tagMSGetReward
|
| | |
|
| | | class tagMSGetReward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RewardType", c_ubyte), #奖励表奖励类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | self.RewardType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMSGetReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RewardType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RewardType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMSGetReward=tagMSGetReward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #C1 08 玩家执行膜拜 #tagPlayerMergeWorship
|
| | |
|
| | | class tagPlayerMergeWorship(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy
|
| | |
|
| | | class tagCMCrossRealmPKBuy(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossRealmPKBuy)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 02 跨服PK购买次数 //tagCMCrossRealmPKBuy:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossRealmPKBuy=tagCMCrossRealmPKBuy()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKBuy.Cmd,m_NAtagCMCrossRealmPKBuy.SubCmd))] = m_NAtagCMCrossRealmPKBuy
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward
|
| | |
|
| | | class tagCMCrossRealmPKGetAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardType", c_ubyte), # 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励
|
| | | ("AwardData", c_ubyte), # 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | self.AwardType = 0
|
| | | self.AwardData = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossRealmPKGetAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 03 跨服PK领取奖励 //tagCMCrossRealmPKGetAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardType:%d,
|
| | | AwardData:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardType,
|
| | | self.AwardData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossRealmPKGetAward=tagCMCrossRealmPKGetAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKGetAward.Cmd,m_NAtagCMCrossRealmPKGetAward.SubCmd))] = m_NAtagCMCrossRealmPKGetAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
|
| | |
|
| | | class tagCMCrossRealmPKMatch(Structure):
|
| | |
| | | #------------------------------------------------------
|
| | | # C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
|
| | |
|
| | | class tagGCCrossRealmPKMatchOK(Structure):
|
| | | Head = tagHead()
|
| | | class tagGCCrossRealmPKMatchPlayer(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)// 跨服名字
|
| | | TagNameLen = 0 #(BYTE TagNameLen)
|
| | | TagPlayerName = "" #(String TagPlayerName)// 对手名字
|
| | | TagJob = 0 #(BYTE TagJob)// 对手职业
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | MaxHP = 0 #(DWORD MaxHP)// 默认满血
|
| | | 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.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.MaxHP = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | MaxHP:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.MaxHP
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKMatchOK(Structure):
|
| | | Head = tagHead()
|
| | | RoomID = 0 #(WORD RoomID)// 房间ID
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)// 跨服名字
|
| | | MatchPlayer=tagGCCrossRealmPKMatchPlayer() #(tagGCCrossRealmPKMatchPlayer MatchPlayer)// 匹配到的玩家
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | _pos = self.MatchPlayer.ReadData(_lpData,_pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x01
|
| | | self.RoomID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.TagNameLen = 0
|
| | | self.TagPlayerName = ""
|
| | | self.TagJob = 0
|
| | | self.MatchPlayer=tagGCCrossRealmPKMatchPlayer()
|
| | | self.MatchPlayer.Clear()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | length += len(self.TagPlayerName)
|
| | | length += 1
|
| | | length += self.MatchPlayer.GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.RoomID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.TagNameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.TagPlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.TagJob)
|
| | | data = CommFunc.WriteString(data,self.MatchPlayer.GetLength(),self.MatchPlayer.GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RoomID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | TagNameLen:%d,
|
| | | TagPlayerName:%s,
|
| | | TagJob:%d
|
| | | MatchPlayer:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RoomID,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.TagNameLen,
|
| | | self.TagPlayerName,
|
| | | self.TagJob
|
| | | self.MatchPlayer.OutputString()
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
|
| | |
|
| | | class tagGCCrossRealmPKSeason(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 所有赛区个数
|
| | | ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有赛区列表
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
|
| | | SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd
|
| | | EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd
|
| | | EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
|
| | | NextStartDate = "" #(char NextStartDate[10])// 下赛季开始日期 yyyy-MM-dd
|
| | | NextEndDate = "" #(char NextEndDate[10])// 下赛季结束日期 yyyy-MM-dd
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ZoneCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ZoneIDList.append(value)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ZoneCount = 0
|
| | | self.ZoneIDList = list()
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ZoneCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneCount)
|
| | | for i in range(self.ZoneCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneCount:%d,
|
| | | ZoneIDList:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneCount,
|
| | | "...",
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeason=tagGCCrossRealmPKSeason()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeason.Head.Cmd,m_NAtagGCCrossRealmPKSeason.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeason
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("APosY", c_ushort),
|
| | | ("BPosX", c_ushort),
|
| | | ("BPosY", c_ushort),
|
| | | ("Angle", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.APosY = 0
|
| | | self.BPosX = 0
|
| | | self.BPosY = 0
|
| | | self.Angle = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | APosX:%d,
|
| | | APosY:%d,
|
| | | BPosX:%d,
|
| | | BPosY:%d
|
| | | BPosY:%d,
|
| | | Angle:%d
|
| | | '''\
|
| | | %(
|
| | | self.APosX,
|
| | | self.APosY,
|
| | | self.BPosX,
|
| | | self.BPosY
|
| | | self.BPosY,
|
| | | self.Angle
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState
|
| | |
|
| | | class tagMCCrossRealmPKAwardState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayPKCountAwardState", c_int), # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
|
| | | ("DayWinCountAwardState", c_int), # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
|
| | | ("DanLVAwardState", c_int), # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
|
| | | ("SeasonAwardState", c_ubyte), # 赛季结算奖励是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x02
|
| | | self.DayPKCountAwardState = 0
|
| | | self.DayWinCountAwardState = 0
|
| | | self.DanLVAwardState = 0
|
| | | self.SeasonAwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCrossRealmPKAwardState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 02 跨服PK玩家奖励记录 //tagMCCrossRealmPKAwardState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayPKCountAwardState:%d,
|
| | | DayWinCountAwardState:%d,
|
| | | DanLVAwardState:%d,
|
| | | SeasonAwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayPKCountAwardState,
|
| | | self.DayWinCountAwardState,
|
| | | self.DanLVAwardState,
|
| | | self.SeasonAwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossRealmPKAwardState=tagMCCrossRealmPKAwardState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKAwardState.Cmd,m_NAtagMCCrossRealmPKAwardState.SubCmd))] = m_NAtagMCCrossRealmPKAwardState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
|
| | |
|
| | | class tagMCCrossRealmPKPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Score", c_int), # 当前积分
|
| | | ("DanLV", c_ubyte), # 当前段位
|
| | | ("PKCount", c_ushort), # PK次数
|
| | | ("WinCount", c_ushort), # 胜利次数
|
| | | ("CWinCount", c_ushort), # 连胜次数
|
| | | ("DayPKCount", c_ubyte), # 当日已PK次数
|
| | | ("DayWinCount", c_ubyte), # 当日已胜利次数
|
| | | ("DayBuyCount", c_ubyte), # 当日已购买次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x01
|
| | | self.Score = 0
|
| | | self.DanLV = 0
|
| | | self.PKCount = 0
|
| | | self.WinCount = 0
|
| | | self.CWinCount = 0
|
| | | self.DayPKCount = 0
|
| | | self.DayWinCount = 0
|
| | | self.DayBuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCrossRealmPKPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 01 跨服PK玩家信息 //tagMCCrossRealmPKPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Score:%d,
|
| | | DanLV:%d,
|
| | | PKCount:%d,
|
| | | WinCount:%d,
|
| | | CWinCount:%d,
|
| | | DayPKCount:%d,
|
| | | DayWinCount:%d,
|
| | | DayBuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Score,
|
| | | self.DanLV,
|
| | | self.PKCount,
|
| | | self.WinCount,
|
| | | self.CWinCount,
|
| | | self.DayPKCount,
|
| | | self.DayWinCount,
|
| | | self.DayBuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #D2 01 跨服赛报名(上传数据)状态 #tagMergeWarRegisterState
|
| | |
|
| | | class tagMergeWarRegisterState(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #C1 03 领取奖励表奖励 #tagMSGetReward
|
| | |
|
| | | class tagMSGetReward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RewardType", c_ubyte), #奖励表奖励类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | self.RewardType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMSGetReward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RewardType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RewardType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMSGetReward=tagMSGetReward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #C1 08 玩家执行膜拜 #tagPlayerMergeWorship
|
| | |
|
| | | class tagPlayerMergeWorship(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy
|
| | |
|
| | | class tagCMCrossRealmPKBuy(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossRealmPKBuy)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 02 跨服PK购买次数 //tagCMCrossRealmPKBuy:
|
| | | Cmd:%s,
|
| | | SubCmd:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossRealmPKBuy=tagCMCrossRealmPKBuy()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKBuy.Cmd,m_NAtagCMCrossRealmPKBuy.SubCmd))] = m_NAtagCMCrossRealmPKBuy
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward
|
| | |
|
| | | class tagCMCrossRealmPKGetAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardType", c_ubyte), # 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励
|
| | | ("AwardData", c_ubyte), # 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x03
|
| | | self.AwardType = 0
|
| | | self.AwardData = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMCrossRealmPKGetAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 03 跨服PK领取奖励 //tagCMCrossRealmPKGetAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardType:%d,
|
| | | AwardData:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardType,
|
| | | self.AwardData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMCrossRealmPKGetAward=tagCMCrossRealmPKGetAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKGetAward.Cmd,m_NAtagCMCrossRealmPKGetAward.SubCmd))] = m_NAtagCMCrossRealmPKGetAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
|
| | |
|
| | | class tagCMCrossRealmPKMatch(Structure):
|
| | |
| | | #------------------------------------------------------
|
| | | # C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
|
| | |
|
| | | class tagGCCrossRealmPKMatchOK(Structure):
|
| | | Head = tagHead()
|
| | | class tagGCCrossRealmPKMatchPlayer(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)// 跨服名字
|
| | | TagNameLen = 0 #(BYTE TagNameLen)
|
| | | TagPlayerName = "" #(String TagPlayerName)// 对手名字
|
| | | TagJob = 0 #(BYTE TagJob)// 对手职业
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | MaxHP = 0 #(DWORD MaxHP)// 默认满血
|
| | | 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.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.MaxHP = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxHP)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | MaxHP:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.MaxHP
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCCrossRealmPKMatchOK(Structure):
|
| | | Head = tagHead()
|
| | | RoomID = 0 #(WORD RoomID)// 房间ID
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | PlayerName = "" #(String PlayerName)// 跨服名字
|
| | | MatchPlayer=tagGCCrossRealmPKMatchPlayer() #(tagGCCrossRealmPKMatchPlayer MatchPlayer)// 匹配到的玩家
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | _pos = self.MatchPlayer.ReadData(_lpData,_pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x01
|
| | | self.RoomID = 0
|
| | | self.NameLen = 0
|
| | | self.PlayerName = ""
|
| | | self.TagNameLen = 0
|
| | | self.TagPlayerName = ""
|
| | | self.TagJob = 0
|
| | | self.MatchPlayer=tagGCCrossRealmPKMatchPlayer()
|
| | | self.MatchPlayer.Clear()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | length += len(self.PlayerName)
|
| | | length += 1
|
| | | length += len(self.TagPlayerName)
|
| | | length += 1
|
| | | length += self.MatchPlayer.GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.RoomID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.TagNameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.TagPlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.TagJob)
|
| | | data = CommFunc.WriteString(data,self.MatchPlayer.GetLength(),self.MatchPlayer.GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RoomID:%d,
|
| | | NameLen:%d,
|
| | | PlayerName:%s,
|
| | | TagNameLen:%d,
|
| | | TagPlayerName:%s,
|
| | | TagJob:%d
|
| | | MatchPlayer:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RoomID,
|
| | | self.NameLen,
|
| | | self.PlayerName,
|
| | | self.TagNameLen,
|
| | | self.TagPlayerName,
|
| | | self.TagJob
|
| | | self.MatchPlayer.OutputString()
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
|
| | |
|
| | | class tagGCCrossRealmPKSeason(Structure):
|
| | | Head = tagHead()
|
| | | ZoneCount = 0 #(BYTE ZoneCount)// 所有赛区个数
|
| | | ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有赛区列表
|
| | | ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
|
| | | SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd
|
| | | EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd
|
| | | EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
|
| | | NextStartDate = "" #(char NextStartDate[10])// 下赛季开始日期 yyyy-MM-dd
|
| | | NextEndDate = "" #(char NextEndDate[10])// 下赛季结束日期 yyyy-MM-dd
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ZoneCount):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.ZoneIDList.append(value)
|
| | | self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.NextStartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.NextEndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ZoneCount = 0
|
| | | self.ZoneIDList = list()
|
| | | self.ZoneID = 0
|
| | | self.SeasonID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.EndTime = ""
|
| | | self.NextStartDate = ""
|
| | | self.NextEndDate = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.ZoneCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += 10
|
| | | length += 10
|
| | | length += 5
|
| | | length += 10
|
| | | length += 10
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneCount)
|
| | | for i in range(self.ZoneCount):
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ZoneID)
|
| | | data = CommFunc.WriteWORD(data, self.SeasonID)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndDate)
|
| | | data = CommFunc.WriteString(data, 5, self.EndTime)
|
| | | data = CommFunc.WriteString(data, 10, self.NextStartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.NextEndDate)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ZoneCount:%d,
|
| | | ZoneIDList:%s,
|
| | | ZoneID:%d,
|
| | | SeasonID:%d,
|
| | | StartDate:%s,
|
| | | EndDate:%s,
|
| | | EndTime:%s,
|
| | | NextStartDate:%s,
|
| | | NextEndDate:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ZoneCount,
|
| | | "...",
|
| | | self.ZoneID,
|
| | | self.SeasonID,
|
| | | self.StartDate,
|
| | | self.EndDate,
|
| | | self.EndTime,
|
| | | self.NextStartDate,
|
| | | self.NextEndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCrossRealmPKSeason=tagGCCrossRealmPKSeason()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeason.Head.Cmd,m_NAtagGCCrossRealmPKSeason.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeason
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("APosY", c_ushort),
|
| | | ("BPosX", c_ushort),
|
| | | ("BPosY", c_ushort),
|
| | | ("Angle", c_ushort), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.APosY = 0
|
| | | self.BPosX = 0
|
| | | self.BPosY = 0
|
| | | self.Angle = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | APosX:%d,
|
| | | APosY:%d,
|
| | | BPosX:%d,
|
| | | BPosY:%d
|
| | | BPosY:%d,
|
| | | Angle:%d
|
| | | '''\
|
| | | %(
|
| | | self.APosX,
|
| | | self.APosY,
|
| | | self.BPosX,
|
| | | self.BPosY
|
| | | self.BPosY,
|
| | | self.Angle
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState
|
| | |
|
| | | class tagMCCrossRealmPKAwardState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayPKCountAwardState", c_int), # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
|
| | | ("DayWinCountAwardState", c_int), # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
|
| | | ("DanLVAwardState", c_int), # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
|
| | | ("SeasonAwardState", c_ubyte), # 赛季结算奖励是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x02
|
| | | self.DayPKCountAwardState = 0
|
| | | self.DayWinCountAwardState = 0
|
| | | self.DanLVAwardState = 0
|
| | | self.SeasonAwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCrossRealmPKAwardState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 02 跨服PK玩家奖励记录 //tagMCCrossRealmPKAwardState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayPKCountAwardState:%d,
|
| | | DayWinCountAwardState:%d,
|
| | | DanLVAwardState:%d,
|
| | | SeasonAwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayPKCountAwardState,
|
| | | self.DayWinCountAwardState,
|
| | | self.DanLVAwardState,
|
| | | self.SeasonAwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossRealmPKAwardState=tagMCCrossRealmPKAwardState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKAwardState.Cmd,m_NAtagMCCrossRealmPKAwardState.SubCmd))] = m_NAtagMCCrossRealmPKAwardState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
|
| | |
|
| | | class tagMCCrossRealmPKPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Score", c_int), # 当前积分
|
| | | ("DanLV", c_ubyte), # 当前段位
|
| | | ("PKCount", c_ushort), # PK次数
|
| | | ("WinCount", c_ushort), # 胜利次数
|
| | | ("CWinCount", c_ushort), # 连胜次数
|
| | | ("DayPKCount", c_ubyte), # 当日已PK次数
|
| | | ("DayWinCount", c_ubyte), # 当日已胜利次数
|
| | | ("DayBuyCount", c_ubyte), # 当日已购买次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC1
|
| | | 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 = 0xC1
|
| | | self.SubCmd = 0x01
|
| | | self.Score = 0
|
| | | self.DanLV = 0
|
| | | self.PKCount = 0
|
| | | self.WinCount = 0
|
| | | self.CWinCount = 0
|
| | | self.DayPKCount = 0
|
| | | self.DayWinCount = 0
|
| | | self.DayBuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCrossRealmPKPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C1 01 跨服PK玩家信息 //tagMCCrossRealmPKPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Score:%d,
|
| | | DanLV:%d,
|
| | | PKCount:%d,
|
| | | WinCount:%d,
|
| | | CWinCount:%d,
|
| | | DayPKCount:%d,
|
| | | DayWinCount:%d,
|
| | | DayBuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Score,
|
| | | self.DanLV,
|
| | | self.PKCount,
|
| | | self.WinCount,
|
| | | self.CWinCount,
|
| | | self.DayPKCount,
|
| | | self.DayWinCount,
|
| | | self.DayBuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #D2 01 跨服赛报名(上传数据)状态 #tagMergeWarRegisterState
|
| | |
|
| | | class tagMergeWarRegisterState(Structure):
|