| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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):
|
| | |
| | |
|
| | | m_NAtagMCGrabRedPacketCnt=tagMCGrabRedPacketCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGrabRedPacketCnt.Cmd,m_NAtagMCGrabRedPacketCnt.SubCmd))] = m_NAtagMCGrabRedPacketCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | ("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
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
|
| | |
|
| | | class tagMCBossRebornData(Structure):
|