From 500ec8854ce74f1e4f09a062cecc9cd508a7b1d0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 18 十二月 2019 20:51:28 +0800 Subject: [PATCH] 8359 【主干】活跃兑换(封包) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 1833 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 1,744 insertions(+), 89 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index e1abbfd..270b221 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -5778,6 +5778,342 @@ #------------------------------------------------------ +# B0 01 新增协助 #tagGCAssistInfoList + +class tagGCAssistInfo(Structure): + AssistGUID = "" #(char AssistGUID[40])//协助GUID + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(BYTE RealmLV)//境界 + MapID = 0 #(DWORD MapID) + LineID = 0 #(DWORD LineID) + NPCID = 0 #(DWORD NPCID) + ExDataLen = 0 #(WORD ExDataLen) + ExData = "" #(String ExData)//其他自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + 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.ReadBYTE(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen) + return _pos + + def Clear(self): + self.AssistGUID = "" + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.MapID = 0 + self.LineID = 0 + self.NPCID = 0 + self.ExDataLen = 0 + self.ExData = "" + return + + def GetLength(self): + length = 0 + length += 40 + length += 33 + length += 1 + length += 2 + length += 1 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.ExData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.AssistGUID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteDWORD(data, self.LineID) + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteWORD(data, self.ExDataLen) + data = CommFunc.WriteString(data, self.ExDataLen, self.ExData) + return data + + def OutputString(self): + DumpString = ''' + AssistGUID:%s, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + MapID:%d, + LineID:%d, + NPCID:%d, + ExDataLen:%d, + ExData:%s + '''\ + %( + self.AssistGUID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.MapID, + self.LineID, + self.NPCID, + self.ExDataLen, + self.ExData + ) + return DumpString + + +class tagGCAssistInfoList(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x01 + 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): + temAssistInfoList = tagGCAssistInfo() + _pos = temAssistInfoList.ReadData(_lpData, _pos) + self.AssistInfoList.append(temAssistInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x01 + self.Count = 0 + self.AssistInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.AssistInfoList[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.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + AssistInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagGCAssistInfoList=tagGCAssistInfoList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList + + +#------------------------------------------------------ +# B0 03 正在进行中的协助 #tagGCAssistingInfo + +class tagGCAssistingInfo(Structure): + Head = tagHead() + AssistGUID = "" #(char AssistGUID[40])//协助GUID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x03 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x03 + self.AssistGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.AssistGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AssistGUID:%s + '''\ + %( + self.Head.OutputString(), + self.AssistGUID + ) + return DumpString + + +m_NAtagGCAssistingInfo=tagGCAssistingInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo + + +#------------------------------------------------------ +# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount + +class tagGCCanGetAssistThanksGiftCount(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("CanGetCount", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x06 + self.CanGetCount = 0 + return + + def GetLength(self): + return sizeof(tagGCCanGetAssistThanksGiftCount) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount: + Cmd:%s, + SubCmd:%s, + CanGetCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.CanGetCount + ) + return DumpString + + +m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount + + +#------------------------------------------------------ +# B0 02 删除协助 #tagGCClearAssist + +class tagGCClearAssist(Structure): + Head = tagHead() + AssistGUID = "" #(char AssistGUID[40])//协助GUID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x02 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x02 + self.AssistGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.AssistGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AssistGUID:%s + '''\ + %( + self.Head.OutputString(), + self.AssistGUID + ) + return DumpString + + +m_NAtagGCClearAssist=tagGCClearAssist() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist + + +#------------------------------------------------------ #B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo class tagFamilyArrestOverState(Structure): @@ -5903,6 +6239,324 @@ m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo + + +#------------------------------------------------------ +# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview + +class tagGCGetAssistThanksGiftPreview(Structure): + Head = tagHead() + ItemID = 0 #(DWORD ItemID)//礼盒ID + PlayerID = 0 #(DWORD PlayerID)//发起玩家ID + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV) + RealmLV = 0 #(BYTE RealmLV)//境界 + MapID = 0 #(DWORD MapID) + LineID = 0 #(DWORD LineID) + NPCID = 0 #(DWORD NPCID) + ExDataLen = 0 #(WORD ExDataLen) + ExData = "" #(String ExData)//其他自定义数据 + TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss + ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x05 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.ReadBYTE(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen) + self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19) + self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x05 + self.ItemID = 0 + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.MapID = 0 + self.LineID = 0 + self.NPCID = 0 + self.ExDataLen = 0 + self.ExData = "" + self.TimeStr = "" + self.ExtraAward = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 33 + length += 1 + length += 2 + length += 1 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.ExData) + length += 19 + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ItemID) + 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.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteDWORD(data, self.LineID) + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteWORD(data, self.ExDataLen) + data = CommFunc.WriteString(data, self.ExDataLen, self.ExData) + data = CommFunc.WriteString(data, 19, self.TimeStr) + data = CommFunc.WriteBYTE(data, self.ExtraAward) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemID:%d, + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + MapID:%d, + LineID:%d, + NPCID:%d, + ExDataLen:%d, + ExData:%s, + TimeStr:%s, + ExtraAward:%d + '''\ + %( + self.Head.OutputString(), + self.ItemID, + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.MapID, + self.LineID, + self.NPCID, + self.ExDataLen, + self.ExData, + self.TimeStr, + self.ExtraAward + ) + return DumpString + + +m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview + + +#------------------------------------------------------ +# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview + +class tagGCAssistPlayerInfo(Structure): + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV) + RealmLV = 0 #(BYTE 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.ReadBYTE(_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 += 1 + + 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.WriteBYTE(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 tagGCUseAssistThanksGiftPreview(Structure): + Head = tagHead() + ItemID = 0 #(DWORD ItemID)//礼盒ID + MapID = 0 #(DWORD MapID) + LineID = 0 #(DWORD LineID) + NPCID = 0 #(DWORD NPCID) + ExDataLen = 0 #(WORD ExDataLen) + ExData = "" #(String ExData)//其他自定义数据 + AssistPlayerCount = 0 #(BYTE AssistPlayerCount) + AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x04 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen) + self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AssistPlayerCount): + temAssistPlayerList = tagGCAssistPlayerInfo() + _pos = temAssistPlayerList.ReadData(_lpData, _pos) + self.AssistPlayerList.append(temAssistPlayerList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x04 + self.ItemID = 0 + self.MapID = 0 + self.LineID = 0 + self.NPCID = 0 + self.ExDataLen = 0 + self.ExData = "" + self.AssistPlayerCount = 0 + self.AssistPlayerList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.ExData) + length += 1 + for i in range(self.AssistPlayerCount): + length += self.AssistPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteDWORD(data, self.LineID) + data = CommFunc.WriteDWORD(data, self.NPCID) + data = CommFunc.WriteWORD(data, self.ExDataLen) + data = CommFunc.WriteString(data, self.ExDataLen, self.ExData) + data = CommFunc.WriteBYTE(data, self.AssistPlayerCount) + for i in range(self.AssistPlayerCount): + data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemID:%d, + MapID:%d, + LineID:%d, + NPCID:%d, + ExDataLen:%d, + ExData:%s, + AssistPlayerCount:%d, + AssistPlayerList:%s + '''\ + %( + self.Head.OutputString(), + self.ItemID, + self.MapID, + self.LineID, + self.NPCID, + self.ExDataLen, + self.ExData, + self.AssistPlayerCount, + "..." + ) + return DumpString + + +m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview #------------------------------------------------------ @@ -6773,6 +7427,162 @@ #------------------------------------------------------ +# 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): @@ -7630,6 +8440,74 @@ m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo + + +#------------------------------------------------------ +# B5 11 部位升星自动购买拍品消耗信息 #tagGCEquipStarAutoBuyCostInfo + +class tagGCEquipStarAutoBuyCostInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ClassLV", c_ubyte), # 当前要升星的境界阶 + ("EquipPlace", c_ubyte), #当前要升星的装备位 + ("CurStar", c_ubyte), #当前星级 + ("CurRate", c_ubyte), #当前自动购买后的总概率,不满100则代表拍品库存不足 + ("AutoBuyCostMoney", c_ushort), #自动购买所需总消耗 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + self.SubCmd = 0x11 + 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 = 0xB5 + self.SubCmd = 0x11 + self.ClassLV = 0 + self.EquipPlace = 0 + self.CurStar = 0 + self.CurRate = 0 + self.AutoBuyCostMoney = 0 + return + + def GetLength(self): + return sizeof(tagGCEquipStarAutoBuyCostInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 11 部位升星自动购买拍品消耗信息 //tagGCEquipStarAutoBuyCostInfo: + Cmd:%s, + SubCmd:%s, + ClassLV:%d, + EquipPlace:%d, + CurStar:%d, + CurRate:%d, + AutoBuyCostMoney:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ClassLV, + self.EquipPlace, + self.CurStar, + self.CurRate, + self.AutoBuyCostMoney + ) + return DumpString + + +m_NAtagGCEquipStarAutoBuyCostInfo=tagGCEquipStarAutoBuyCostInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEquipStarAutoBuyCostInfo.Cmd,m_NAtagGCEquipStarAutoBuyCostInfo.SubCmd))] = m_NAtagGCEquipStarAutoBuyCostInfo #------------------------------------------------------ @@ -10529,6 +11407,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("IsRobot", c_ubyte), # 是否匹配机器人 ] def __init__(self): @@ -10545,6 +11424,7 @@ def Clear(self): self.Cmd = 0xC0 self.SubCmd = 0x02 + self.IsRobot = 0 return def GetLength(self): @@ -10556,11 +11436,13 @@ 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 @@ -12850,6 +13732,7 @@ ("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家 ("KillCnt", c_int), #击杀次数 ("ItemAddCnt", c_int), #物品增加次数 + ("BuyCnt", c_ubyte), #购买次数 ] def __init__(self): @@ -12865,6 +13748,7 @@ self.BossType = 0 self.KillCnt = 0 self.ItemAddCnt = 0 + self.BuyCnt = 0 return def GetLength(self): @@ -12877,12 +13761,14 @@ 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 @@ -13869,6 +14755,73 @@ m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo + + +#------------------------------------------------------ +# A3 B2 装备部位星级套装激活信息 #tagMCEquipPartSuiteActivateInfo + +class tagMCEquipPartSuiteActivateInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + SuiteActivateStateInfo = list() #(vector<DWORD> SuiteActivateStateInfo)//激活状态值列表,每个数按位存31个激活索引,每个位代表对应的激活索引是否已激活 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xB2 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.SuiteActivateStateInfo.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xB2 + self.Count = 0 + self.SuiteActivateStateInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.SuiteActivateStateInfo[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + SuiteActivateStateInfo:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCEquipPartSuiteActivateInfo=tagMCEquipPartSuiteActivateInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteActivateInfo.Head.Cmd,m_NAtagMCEquipPartSuiteActivateInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteActivateInfo #------------------------------------------------------ @@ -15285,6 +16238,178 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ +# 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)//个数 + InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Num): + temInfoList = tagMCHorsePetSkinInfo() + _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 = 0x12 + self.Num = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Num): + 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.Num) + for i in range(self.Num): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Num:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Num, + "..." + ) + return DumpString + + +m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData + + +#------------------------------------------------------ # A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo class tagMCMagicWeaponInfo(Structure): @@ -15458,6 +16583,114 @@ m_NAtagMCGreatMasterExp=tagMCGreatMasterExp() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGreatMasterExp.Cmd,m_NAtagMCGreatMasterExp.SubCmd))] = m_NAtagMCGreatMasterExp + + +#------------------------------------------------------ +# A3 C2 大师强化等级激活信息 #tagMCMasterPlusLVInfo + +class tagMCMasterPlusLV(Structure): + _pack_ = 1 + _fields_ = [ + ("ClassLV", c_ubyte), + ("MasterPlusLV", c_ushort), # 已经激活的最高大师强化等级,向下兼容 + ] + + 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.ClassLV = 0 + self.MasterPlusLV = 0 + return + + def GetLength(self): + return sizeof(tagMCMasterPlusLV) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C2 大师强化等级激活信息 //tagMCMasterPlusLVInfo: + ClassLV:%d, + MasterPlusLV:%d + '''\ + %( + self.ClassLV, + self.MasterPlusLV + ) + return DumpString + + +class tagMCMasterPlusLVInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)// 信息个数 + MasterPlusLVInfoList = list() #(vector<tagMCMasterPlusLV> MasterPlusLVInfoList)// 信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xC2 + 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): + temMasterPlusLVInfoList = tagMCMasterPlusLV() + _pos = temMasterPlusLVInfoList.ReadData(_lpData, _pos) + self.MasterPlusLVInfoList.append(temMasterPlusLVInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xC2 + self.Count = 0 + self.MasterPlusLVInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.MasterPlusLVInfoList[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.MasterPlusLVInfoList[i].GetLength(), self.MasterPlusLVInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + MasterPlusLVInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCMasterPlusLVInfo=tagMCMasterPlusLVInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMasterPlusLVInfo.Head.Cmd,m_NAtagMCMasterPlusLVInfo.Head.SubCmd))] = m_NAtagMCMasterPlusLVInfo #------------------------------------------------------ @@ -17910,16 +19143,20 @@ #------------------------------------------------------ #A3 01 坐骑培养信息 #tagTrainHorseData -class tagMCHorseInfo(Structure): +class tagTrainHorseData(Structure): _pack_ = 1 _fields_ = [ - ("HorseID", c_int), #ID - ("LV", c_ubyte), #等级 - ("Exp", c_int), #经验 + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LV", c_ubyte), #等阶 + ("EatItemCount", c_ushort), #当前阶已吃丹个数 + ("SkinPlusState", c_int), #幻化激活状态,按位存储是否激活,幻化编号ID对应位 ] def __init__(self): self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x01 return def ReadData(self, stringData, _pos=0, _len=0): @@ -17928,102 +19165,39 @@ return _pos + self.GetLength() def Clear(self): - self.HorseID = 0 + self.Cmd = 0xA3 + self.SubCmd = 0x01 self.LV = 0 - self.Exp = 0 + self.EatItemCount = 0 + self.SkinPlusState = 0 return def GetLength(self): - return sizeof(tagMCHorseInfo) + return sizeof(tagTrainHorseData) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData: - HorseID:%d, + Cmd:%s, + SubCmd:%s, LV:%d, - Exp:%d + EatItemCount:%d, + SkinPlusState:%d '''\ %( - self.HorseID, + self.Cmd, + self.SubCmd, self.LV, - self.Exp - ) - return DumpString - - -class tagTrainHorseData(Structure): - Head = tagHead() - Multiple = 0 #(BYTE Multiple)//下次暴击倍数 - Num = 0 #(BYTE Num)//个数 - InfoList = list() #(vector<tagMCHorseInfo> InfoList)// 坐骑数据列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x01 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Num): - temInfoList = tagMCHorseInfo() - _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 = 0x01 - self.Multiple = 0 - self.Num = 0 - self.InfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - for i in range(self.Num): - 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.Multiple) - data = CommFunc.WriteBYTE(data, self.Num) - for i in range(self.Num): - data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Multiple:%d, - Num:%d, - InfoList:%s - '''\ - %( - self.Head.OutputString(), - self.Multiple, - self.Num, - "..." + self.EatItemCount, + self.SkinPlusState ) return DumpString m_NAtagTrainHorseData=tagTrainHorseData() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Cmd,m_NAtagTrainHorseData.SubCmd))] = m_NAtagTrainHorseData #------------------------------------------------------ @@ -23738,6 +24912,58 @@ #------------------------------------------------------ +# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState + +class tagMCDayFreeGoldGiftState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x24 + 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 = 0xAA + self.SubCmd = 0x24 + self.DayFreeGoldGiftState = 0 + return + + def GetLength(self): + return sizeof(tagMCDayFreeGoldGiftState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState: + Cmd:%s, + SubCmd:%s, + DayFreeGoldGiftState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DayFreeGoldGiftState + ) + return DumpString + + +m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState + + +#------------------------------------------------------ # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo class tagMCFeastWeekPartyItem(Structure): @@ -26660,6 +27886,9 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("State", c_ubyte), #0-不可领 1-可领 2-已领取 + ("CTGTotal", c_int), #本次活动已累计充值,单位元 + ("FireworksBuyCount", c_ushort), #已购买高级烟花数 + ("FirewordsScore", c_int), #当前累计所有烟花总积分 ] def __init__(self): @@ -26677,6 +27906,9 @@ self.Cmd = 0xAA self.SubCmd = 0x14 self.State = 0 + self.CTGTotal = 0 + self.FireworksBuyCount = 0 + self.FirewordsScore = 0 return def GetLength(self): @@ -26689,18 +27921,132 @@ 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 #------------------------------------------------------ @@ -27851,6 +29197,91 @@ #------------------------------------------------------ +# B0 27 活跃放置信息 #tagMCActivityPlaceInfo + +class tagMCActivityPlaceInfo(Structure): + Head = tagHead() + PlaceState = 0 #(BYTE PlaceState)// 是否启动状态 + StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间 + RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数 + RewardLen = 0 #(BYTE RewardLen) + RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...] + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x27 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PlaceState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x27 + self.PlaceState = 0 + self.StartTime = 0 + self.RewardCount = 0 + self.RewardLen = 0 + self.RewardInfo = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 + length += 1 + length += 1 + length += len(self.RewardInfo) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.PlaceState) + data = CommFunc.WriteDWORD(data, self.StartTime) + data = CommFunc.WriteBYTE(data, self.RewardCount) + data = CommFunc.WriteBYTE(data, self.RewardLen) + data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlaceState:%d, + StartTime:%d, + RewardCount:%d, + RewardLen:%d, + RewardInfo:%s + '''\ + %( + self.Head.OutputString(), + self.PlaceState, + self.StartTime, + self.RewardCount, + self.RewardLen, + self.RewardInfo + ) + return DumpString + + +m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo + + +#------------------------------------------------------ #B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState class tagFamilyArrestAwardReceiveState(Structure): @@ -28953,6 +30384,7 @@ _fields_ = [ ("DataMapID", c_int), # 地图ID ("RemainTime", c_int), # 剩余时间秒 + ("RegainCnt", c_ubyte), # 今日已恢复次数 ] def __init__(self): @@ -28967,6 +30399,7 @@ def Clear(self): self.DataMapID = 0 self.RemainTime = 0 + self.RegainCnt = 0 return def GetLength(self): @@ -28978,11 +30411,13 @@ def OutputString(self): DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime: DataMapID:%d, - RemainTime:%d + RemainTime:%d, + RegainCnt:%d '''\ %( self.DataMapID, - self.RemainTime + self.RemainTime, + self.RegainCnt ) return DumpString @@ -30071,6 +31506,226 @@ #------------------------------------------------------ +# B4 15 Boss伤血排行榜信息 #tagMCBossHurtValueRankInfo + +class tagMCBossHurtValueAssist(Structure): + PlayerID = 0 #(DWORD PlayerID)// 助战玩家ID + PlayerName = "" #(char PlayerName[33]) + HurtValue = 0 #(DWORD HurtValue)//不超过亿部分 + HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿 + 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.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.HurtValue = 0 + self.HurtValueEx = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteDWORD(data, self.HurtValue) + data = CommFunc.WriteDWORD(data, self.HurtValueEx) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + HurtValue:%d, + HurtValueEx:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.HurtValue, + self.HurtValueEx + ) + return DumpString + + +class tagMCBossHurtValue(Structure): + HurtType = 0 #(BYTE HurtType)// 伤血类型 1-玩家,2-队伍 + HurtID = 0 #(DWORD HurtID)//玩家时为玩家ID,队伍时为队伍ID + HurtName = "" #(char HurtName[33])// 名称 + HurtValue = 0 #(DWORD HurtValue)//不超过亿部分 + HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.HurtType = 0 + self.HurtID = 0 + self.HurtName = "" + self.HurtValue = 0 + self.HurtValueEx = 0 + return + + def GetLength(self): + length = 0 + length += 1 + length += 4 + length += 33 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.HurtType) + data = CommFunc.WriteDWORD(data, self.HurtID) + data = CommFunc.WriteString(data, 33, self.HurtName) + data = CommFunc.WriteDWORD(data, self.HurtValue) + data = CommFunc.WriteDWORD(data, self.HurtValueEx) + return data + + def OutputString(self): + DumpString = ''' + HurtType:%d, + HurtID:%d, + HurtName:%s, + HurtValue:%d, + HurtValueEx:%d + '''\ + %( + self.HurtType, + self.HurtID, + self.HurtName, + self.HurtValue, + self.HurtValueEx + ) + return DumpString + + +class tagMCBossHurtValueRankInfo(Structure): + Head = tagHead() + ObjID = 0 #(DWORD ObjID)//NPC实例ID + HurtCount = 0 #(BYTE HurtCount)//伤血数目 + HurtValueList = list() #(vector<tagMCBossHurtValue> HurtValueList) + AssistHurtCount = 0 #(BYTE AssistHurtCount)//助战伤血数目 + AssistHurtValueList = list() #(vector<tagMCBossHurtValueAssist> AssistHurtValueList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB4 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.HurtCount): + temHurtValueList = tagMCBossHurtValue() + _pos = temHurtValueList.ReadData(_lpData, _pos) + self.HurtValueList.append(temHurtValueList) + self.AssistHurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AssistHurtCount): + temAssistHurtValueList = tagMCBossHurtValueAssist() + _pos = temAssistHurtValueList.ReadData(_lpData, _pos) + self.AssistHurtValueList.append(temAssistHurtValueList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB4 + self.Head.SubCmd = 0x15 + self.ObjID = 0 + self.HurtCount = 0 + self.HurtValueList = list() + self.AssistHurtCount = 0 + self.AssistHurtValueList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.HurtCount): + length += self.HurtValueList[i].GetLength() + length += 1 + for i in range(self.AssistHurtCount): + length += self.AssistHurtValueList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ObjID) + data = CommFunc.WriteBYTE(data, self.HurtCount) + for i in range(self.HurtCount): + data = CommFunc.WriteString(data, self.HurtValueList[i].GetLength(), self.HurtValueList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AssistHurtCount) + for i in range(self.AssistHurtCount): + data = CommFunc.WriteString(data, self.AssistHurtValueList[i].GetLength(), self.AssistHurtValueList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ObjID:%d, + HurtCount:%d, + HurtValueList:%s, + AssistHurtCount:%d, + AssistHurtValueList:%s + '''\ + %( + self.Head.OutputString(), + self.ObjID, + self.HurtCount, + "...", + self.AssistHurtCount, + "..." + ) + return DumpString + + +m_NAtagMCBossHurtValueRankInfo=tagMCBossHurtValueRankInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossHurtValueRankInfo.Head.Cmd,m_NAtagMCBossHurtValueRankInfo.Head.SubCmd))] = m_NAtagMCBossHurtValueRankInfo + + +#------------------------------------------------------ # B4 12 删除恶意攻击玩家 #tagMCDelMaliciousAtkPlayer class tagMCDelMaliciousAtkPlayer(Structure): -- Gitblit v1.8.0