From 66741b9971e49d7c99f998c3ea65945d55a81c63 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 23 十二月 2020 17:02:32 +0800 Subject: [PATCH] 8668 【主干】可拍卖道具取消拍卖时间限制并可以叠加后,上架时可选择拍卖的数量 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2705 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 2,538 insertions(+), 167 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 58315ef..ba2b798 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -2329,6 +2329,325 @@ #------------------------------------------------------ +# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList + +class tagGCArenaBattleRecord(Structure): + PlayerID = 0 #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界 + FightPower = 0 #(DWORD FightPower)//战力,机器人读等级表取等级对应战力 + AddScoreLen = 0 #(BYTE AddScoreLen) + AddScore = "" #(String AddScore)//本次对战增加的积分,有正负 + IsWin = 0 #(BYTE IsWin)//是否获胜 + Time = 0 #(DWORD Time)//时间戳 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen) + self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.FightPower = 0 + self.AddScoreLen = 0 + self.AddScore = "" + self.IsWin = 0 + self.Time = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 1 + length += 2 + length += 2 + length += 4 + length += 1 + length += len(self.AddScore) + length += 1 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteBYTE(data, self.AddScoreLen) + data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore) + data = CommFunc.WriteBYTE(data, self.IsWin) + data = CommFunc.WriteDWORD(data, self.Time) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + FightPower:%d, + AddScoreLen:%d, + AddScore:%s, + IsWin:%d, + Time:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.FightPower, + self.AddScoreLen, + self.AddScore, + self.IsWin, + self.Time + ) + return DumpString + + +class tagGCArenaBattleRecordList(Structure): + Head = tagHead() + RecordCount = 0 #(BYTE RecordCount) + BattleRecordList = list() #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x23 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RecordCount): + temBattleRecordList = tagGCArenaBattleRecord() + _pos = temBattleRecordList.ReadData(_lpData, _pos) + self.BattleRecordList.append(temBattleRecordList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x23 + self.RecordCount = 0 + self.BattleRecordList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.RecordCount): + length += self.BattleRecordList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.RecordCount) + for i in range(self.RecordCount): + data = CommFunc.WriteString(data, self.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RecordCount:%d, + BattleRecordList:%s + '''\ + %( + self.Head.OutputString(), + self.RecordCount, + "..." + ) + return DumpString + + +m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList + + +#------------------------------------------------------ +# A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList + +class tagGCArenaMatchInfo(Structure): + PlayerID = 0 #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界 + FightPower = 0 #(DWORD FightPower)//战力,机器人读等级表取等级对应战力 + Score = 0 #(DWORD Score)//积分 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.FightPower = 0 + self.Score = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 1 + length += 2 + length += 2 + 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.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.Score) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + FightPower:%d, + Score:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.FightPower, + self.Score + ) + return DumpString + + +class tagGCArenaMatchList(Structure): + Head = tagHead() + MatchCount = 0 #(BYTE MatchCount) + MatchList = list() #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x22 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MatchCount): + temMatchList = tagGCArenaMatchInfo() + _pos = temMatchList.ReadData(_lpData, _pos) + self.MatchList.append(temMatchList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x22 + self.MatchCount = 0 + self.MatchList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.MatchCount): + length += self.MatchList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.MatchCount) + for i in range(self.MatchCount): + data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MatchCount:%d, + MatchList:%s + '''\ + %( + self.Head.OutputString(), + self.MatchCount, + "..." + ) + return DumpString + + +m_NAtagGCArenaMatchList=tagGCArenaMatchList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList + + +#------------------------------------------------------ # A9 09 通知BOSS关注记录 #tagGCBossAttentionInfo class tagGCBossAttention(Structure): @@ -4693,7 +5012,8 @@ ("SubCmd", c_ubyte), ("Point", c_int), # 复活点数 ("TotalPoint", c_int), # 复活总点数 - ("RebornCnt", c_ushort), # 复活次数 + ("RebornCnt", c_ushort), # 今日已复活次数 + ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制 ] def __init__(self): @@ -4713,6 +5033,7 @@ self.Point = 0 self.TotalPoint = 0 self.RebornCnt = 0 + self.TotalRebornCnt = 0 return def GetLength(self): @@ -4727,14 +5048,16 @@ SubCmd:%s, Point:%d, TotalPoint:%d, - RebornCnt:%d + RebornCnt:%d, + TotalRebornCnt:%d '''\ %( self.Cmd, self.SubCmd, self.Point, self.TotalPoint, - self.RebornCnt + self.RebornCnt, + self.TotalRebornCnt ) return DumpString @@ -5781,19 +6104,17 @@ # B0 01 新增协助 #tagGCAssistInfoList class tagGCAssistInfo(Structure): - GUID = "" #(char GUID[40]) + AssistGUID = "" #(char AssistGUID[40])//协助GUID + PlayerID = 0 #(DWORD PlayerID) PlayerName = "" #(char PlayerName[33]) Job = 0 #(BYTE Job) LV = 0 #(WORD LV)//等级 RealmLV = 0 #(BYTE RealmLV)//境界 - AssistType = 0 #(BYTE AssistType)//协助类型 1-boss, 2-副本, 3- - AssistValue1 = 0 #(DWORD AssistValue1)//协助参数1,由协助类型决定 - AssistValue2 = 0 #(DWORD AssistValue2)//协助参数2 - AssistValue3 = 0 #(DWORD AssistValue3)//协助参数3 - AssistValue4 = 0 #(DWORD AssistValue4)//协助参数4 - AssistValue5 = 0 #(DWORD AssistValue5)//协助参数5 - AssistDataLen = 0 #(WORD AssistDataLen) - AssistData = "" #(String AssistData)//其他自定义数据 + MapID = 0 #(DWORD MapID) + LineID = 0 #(DWORD LineID) + NPCID = 0 #(DWORD NPCID) + ExDataLen = 0 #(WORD ExDataLen) + ExData = "" #(String ExData)//其他自定义数据 data = None def __init__(self): @@ -5802,102 +6123,90 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + 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.AssistType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.AssistValue1,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.AssistValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.AssistValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.AssistValue4,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.AssistValue5,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.AssistDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.AssistData,_pos = CommFunc.ReadString(_lpData, _pos,self.AssistDataLen) + 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.GUID = "" + self.AssistGUID = "" + self.PlayerID = 0 self.PlayerName = "" self.Job = 0 self.LV = 0 self.RealmLV = 0 - self.AssistType = 0 - self.AssistValue1 = 0 - self.AssistValue2 = 0 - self.AssistValue3 = 0 - self.AssistValue4 = 0 - self.AssistValue5 = 0 - self.AssistDataLen = 0 - self.AssistData = "" + self.MapID = 0 + self.LineID = 0 + self.NPCID = 0 + self.ExDataLen = 0 + self.ExData = "" return def GetLength(self): length = 0 length += 40 + length += 4 length += 33 length += 1 length += 2 length += 1 - length += 1 - length += 4 - length += 4 length += 4 length += 4 length += 4 length += 2 - length += len(self.AssistData) + length += len(self.ExData) return length def GetBuffer(self): data = '' - data = CommFunc.WriteString(data, 40, self.GUID) + data = CommFunc.WriteString(data, 40, self.AssistGUID) + 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.WriteBYTE(data, self.AssistType) - data = CommFunc.WriteDWORD(data, self.AssistValue1) - data = CommFunc.WriteDWORD(data, self.AssistValue2) - data = CommFunc.WriteDWORD(data, self.AssistValue3) - data = CommFunc.WriteDWORD(data, self.AssistValue4) - data = CommFunc.WriteDWORD(data, self.AssistValue5) - data = CommFunc.WriteWORD(data, self.AssistDataLen) - data = CommFunc.WriteString(data, self.AssistDataLen, self.AssistData) + 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 = ''' - GUID:%s, + AssistGUID:%s, + PlayerID:%d, PlayerName:%s, Job:%d, LV:%d, RealmLV:%d, - AssistType:%d, - AssistValue1:%d, - AssistValue2:%d, - AssistValue3:%d, - AssistValue4:%d, - AssistValue5:%d, - AssistDataLen:%d, - AssistData:%s + MapID:%d, + LineID:%d, + NPCID:%d, + ExDataLen:%d, + ExData:%s '''\ %( - self.GUID, + self.AssistGUID, + self.PlayerID, self.PlayerName, self.Job, self.LV, self.RealmLV, - self.AssistType, - self.AssistValue1, - self.AssistValue2, - self.AssistValue3, - self.AssistValue4, - self.AssistValue5, - self.AssistDataLen, - self.AssistData + self.MapID, + self.LineID, + self.NPCID, + self.ExDataLen, + self.ExData ) return DumpString @@ -5969,31 +6278,31 @@ #------------------------------------------------------ -# B0 02 删除协助 #tagGCClearAssist +# B0 03 正在进行中的协助 #tagGCAssistingInfo -class tagGCClearAssist(Structure): +class tagGCAssistingInfo(Structure): Head = tagHead() - GUID = "" #(char GUID[40]) + AssistGUID = "" #(char AssistGUID[40])//协助GUID data = None def __init__(self): self.Clear() self.Head.Cmd = 0xB0 - self.Head.SubCmd = 0x02 + self.Head.SubCmd = 0x03 return def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() _pos = self.Head.ReadData(_lpData, _pos) - self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + 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.GUID = "" + self.Head.SubCmd = 0x03 + self.AssistGUID = "" return def GetLength(self): @@ -6006,17 +6315,204 @@ def GetBuffer(self): data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteString(data, 40, self.GUID) + data = CommFunc.WriteString(data, 40, self.AssistGUID) return data def OutputString(self): DumpString = ''' Head:%s, - GUID:%s + AssistGUID:%s '''\ %( self.Head.OutputString(), - self.GUID + self.AssistGUID + ) + return DumpString + + +m_NAtagGCAssistingInfo=tagGCAssistingInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo + + +#------------------------------------------------------ +# B0 08 协助结束 #tagGCAssistOver + +class tagGCAssistOver(Structure): + Head = tagHead() + IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因 + ReasonLen = 0 #(BYTE ReasonLen) + Reason = "" #(String Reason)//原因 + AssistGUID = "" #(char AssistGUID[40])//协助GUID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x08 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen) + 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 = 0x08 + self.IsTagPlayerReason = 0 + self.ReasonLen = 0 + self.Reason = "" + self.AssistGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += len(self.Reason) + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason) + data = CommFunc.WriteBYTE(data, self.ReasonLen) + data = CommFunc.WriteString(data, self.ReasonLen, self.Reason) + data = CommFunc.WriteString(data, 40, self.AssistGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + IsTagPlayerReason:%d, + ReasonLen:%d, + Reason:%s, + AssistGUID:%s + '''\ + %( + self.Head.OutputString(), + self.IsTagPlayerReason, + self.ReasonLen, + self.Reason, + self.AssistGUID + ) + return DumpString + + +m_NAtagGCAssistOver=tagGCAssistOver() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver + + +#------------------------------------------------------ +# 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 @@ -6151,6 +6647,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 #------------------------------------------------------ @@ -8048,7 +8862,7 @@ ("EquipPlace", c_ubyte), #当前要升星的装备位 ("CurStar", c_ubyte), #当前星级 ("CurRate", c_ubyte), #当前自动购买后的总概率,不满100则代表拍品库存不足 - ("AutoBuyCostMoney", c_ushort), #自动购买所需总消耗 + ("AutoBuyCostMoney", c_int), #自动购买所需总消耗 ] def __init__(self): @@ -13058,6 +13872,74 @@ #------------------------------------------------------ +# A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo + +class tagMCArenaPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsReset", c_ubyte), #是否是重置的 + ("Score", c_int), #当前积分 + ("BattleCountToday", c_ubyte), #今日已挑战次数 + ("MatchRefreshCount", c_ubyte), #当前已刷新匹配列表次数,每次挑战后会重置 + ("ItemAddBattleCountToday", c_ubyte), #今日已使用物品增加的挑战次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0xC3 + 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 = 0xC3 + self.IsReset = 0 + self.Score = 0 + self.BattleCountToday = 0 + self.MatchRefreshCount = 0 + self.ItemAddBattleCountToday = 0 + return + + def GetLength(self): + return sizeof(tagMCArenaPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo: + Cmd:%s, + SubCmd:%s, + IsReset:%d, + Score:%d, + BattleCountToday:%d, + MatchRefreshCount:%d, + ItemAddBattleCountToday:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsReset, + self.Score, + self.BattleCountToday, + self.MatchRefreshCount, + self.ItemAddBattleCountToday + ) + return DumpString + + +m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo + + +#------------------------------------------------------ # A3 0F 通知玩家悬赏任务信息 #tagMCArrestTaskInfo class tagMCArrestTaskInfo(Structure): @@ -17439,7 +18321,7 @@ StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级 StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验 ItemID = 0 #(DWORD ItemID)// 合成物品id - ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量 + ItemCnt = 0 #(WORD ItemCnt)// 丹药数量 StoveCnt = 0 #(WORD StoveCnt)// 丹药数量 InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList) data = None @@ -17456,7 +18338,7 @@ self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) for i in range(self.StoveCnt): temInfoList = tagMCPlayerStoveInfo() @@ -17483,7 +18365,7 @@ length += 1 length += 4 length += 4 - length += 1 + length += 2 length += 2 for i in range(self.StoveCnt): length += self.InfoList[i].GetLength() @@ -17496,7 +18378,7 @@ data = CommFunc.WriteBYTE(data, self.StoveLV) data = CommFunc.WriteDWORD(data, self.StoveExp) data = CommFunc.WriteDWORD(data, self.ItemID) - data = CommFunc.WriteBYTE(data, self.ItemCnt) + data = CommFunc.WriteWORD(data, self.ItemCnt) data = CommFunc.WriteWORD(data, self.StoveCnt) for i in range(self.StoveCnt): data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) @@ -18272,6 +19154,7 @@ _fields_ = [ ("RecordIndex", c_ushort), #第几个记录值 每个key存31个succid 0-30为0, 31-61为1.. ("Record", c_int), #对应是否领取值 + ("PassportRecord", c_int), #通行证奖励是否领取值 ] def __init__(self): @@ -18286,6 +19169,7 @@ def Clear(self): self.RecordIndex = 0 self.Record = 0 + self.PassportRecord = 0 return def GetLength(self): @@ -18297,11 +19181,13 @@ def OutputString(self): DumpString = '''//A3 42 成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList: RecordIndex:%d, - Record:%d + Record:%d, + PassportRecord:%d '''\ %( self.RecordIndex, - self.Record + self.Record, + self.PassportRecord ) return DumpString @@ -18737,16 +19623,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_int), #当前阶已吃丹个数 + ("SkinPlusState", c_int), #幻化激活状态,按位存储是否激活,幻化编号ID对应位 ] def __init__(self): self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x01 return def ReadData(self, stringData, _pos=0, _len=0): @@ -18755,102 +19645,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 #------------------------------------------------------ @@ -20542,6 +21369,58 @@ m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo + + +#------------------------------------------------------ +# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState + +class tagMCCreateRoleAwardState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("GetState", c_ubyte), # 是否已领取 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA7 + self.SubCmd = 0x20 + 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 = 0xA7 + self.SubCmd = 0x20 + self.GetState = 0 + return + + def GetLength(self): + return sizeof(tagMCCreateRoleAwardState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState: + Cmd:%s, + SubCmd:%s, + GetState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.GetState + ) + return DumpString + + +m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState #------------------------------------------------------ @@ -23005,6 +23884,491 @@ #------------------------------------------------------ +# AA 40 集字活动信息 #tagMCActCollectWordsInfo + +class tagMCActCollectWordsNeedItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), + ] + + def __init__(self): + self.Clear() + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCActCollectWordsNeedItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActCollectWordsExchangeItem(Structure): + ExchangeNum = 0 #(BYTE ExchangeNum)//兑换编号 + ExchangeCountMax = 0 #(BYTE ExchangeCountMax)//最大兑换次数,0不限制 + ItemID = 0 #(DWORD ItemID)//目标物品 + ItemCount = 0 #(WORD ItemCount) + IsBind = 0 #(BYTE IsBind) + NeedItemCount = 0 #(BYTE NeedItemCount) + NeedItemList = list() #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedItemCount): + temNeedItemList = tagMCActCollectWordsNeedItem() + _pos = temNeedItemList.ReadData(_lpData, _pos) + self.NeedItemList.append(temNeedItemList) + return _pos + + def Clear(self): + self.ExchangeNum = 0 + self.ExchangeCountMax = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + self.NeedItemCount = 0 + self.NeedItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 4 + length += 2 + length += 1 + length += 1 + for i in range(self.NeedItemCount): + length += self.NeedItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ExchangeNum) + data = CommFunc.WriteBYTE(data, self.ExchangeCountMax) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteWORD(data, self.ItemCount) + data = CommFunc.WriteBYTE(data, self.IsBind) + data = CommFunc.WriteBYTE(data, self.NeedItemCount) + for i in range(self.NeedItemCount): + data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + ExchangeNum:%d, + ExchangeCountMax:%d, + ItemID:%d, + ItemCount:%d, + IsBind:%d, + NeedItemCount:%d, + NeedItemList:%s + '''\ + %( + self.ExchangeNum, + self.ExchangeCountMax, + self.ItemID, + self.ItemCount, + self.IsBind, + self.NeedItemCount, + "..." + ) + return DumpString + + +class tagMCActCollectWordsInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + LimitLV = 0 #(WORD LimitLV)// 限制等级 + LastDayOnlyExchange = 0 #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换 + ExchangeCount = 0 #(BYTE ExchangeCount) + ExchangeItemList = list() #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x40 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ExchangeCount): + temExchangeItemList = tagMCActCollectWordsExchangeItem() + _pos = temExchangeItemList.ReadData(_lpData, _pos) + self.ExchangeItemList.append(temExchangeItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x40 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.LimitLV = 0 + self.LastDayOnlyExchange = 0 + self.ExchangeCount = 0 + self.ExchangeItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 2 + length += 1 + length += 1 + for i in range(self.ExchangeCount): + length += self.ExchangeItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.LastDayOnlyExchange) + data = CommFunc.WriteBYTE(data, self.ExchangeCount) + for i in range(self.ExchangeCount): + data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + LimitLV:%d, + LastDayOnlyExchange:%d, + ExchangeCount:%d, + ExchangeItemList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.LimitLV, + self.LastDayOnlyExchange, + self.ExchangeCount, + "..." + ) + return DumpString + + +m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo + + +#------------------------------------------------------ +# AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo + +class tagMCActCollectWordsExchangeInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("ExchangeNum", c_ubyte), #兑换编号 + ("ExchangeCount", 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.ExchangeNum = 0 + self.ExchangeCount = 0 + return + + def GetLength(self): + return sizeof(tagMCActCollectWordsExchangeInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo: + ExchangeNum:%d, + ExchangeCount:%d + '''\ + %( + self.ExchangeNum, + self.ExchangeCount + ) + return DumpString + + +class tagMCActCollectWordsPlayerInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 + ExchangeCount = 0 #(BYTE ExchangeCount) + ExchangeInfoList = list() #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x41 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ExchangeCount): + temExchangeInfoList = tagMCActCollectWordsExchangeInfo() + _pos = temExchangeInfoList.ReadData(_lpData, _pos) + self.ExchangeInfoList.append(temExchangeInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x41 + self.ActNum = 0 + self.ExchangeCount = 0 + self.ExchangeInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + for i in range(self.ExchangeCount): + length += self.ExchangeInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteBYTE(data, self.ExchangeCount) + for i in range(self.ExchangeCount): + data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + ExchangeCount:%d, + ExchangeInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.ExchangeCount, + "..." + ) + return DumpString + + +m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo + + +#------------------------------------------------------ +# AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo + +class tagMCActGrowupBuyGroup(Structure): + BuyCount = 0 #(BYTE BuyCount)// 循环购买礼包数 + BuyCTGIDList = list() #(vector<DWORD> BuyCTGIDList)// 循环购买礼包充值ID列表 + PlayerBuyIndex = 0 #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BuyCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.BuyCTGIDList.append(value) + self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.BuyCount = 0 + self.BuyCTGIDList = list() + self.PlayerBuyIndex = 0 + return + + def GetLength(self): + length = 0 + length += 1 + length += 4 * self.BuyCount + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.BuyCount) + for i in range(self.BuyCount): + data = CommFunc.WriteDWORD(data, self.BuyCTGIDList[i]) + data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex) + return data + + def OutputString(self): + DumpString = ''' + BuyCount:%d, + BuyCTGIDList:%s, + PlayerBuyIndex:%d + '''\ + %( + self.BuyCount, + "...", + self.PlayerBuyIndex + ) + return DumpString + + +class tagMCActGrowupBuyInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + GroupCount = 0 #(BYTE GroupCount)// 循环购买礼包组数 + GroupList = list() #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x31 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GroupCount): + temGroupList = tagMCActGrowupBuyGroup() + _pos = temGroupList.ReadData(_lpData, _pos) + self.GroupList.append(temGroupList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x31 + self.StartDate = "" + self.EndtDate = "" + self.GroupCount = 0 + self.GroupList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + for i in range(self.GroupCount): + length += self.GroupList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.GroupCount) + for i in range(self.GroupCount): + data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + GroupCount:%d, + GroupList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.GroupCount, + "..." + ) + return DumpString + + +m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo + + +#------------------------------------------------------ # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo class tagMCActLoginAwardAction(Structure): @@ -23432,6 +24796,189 @@ #------------------------------------------------------ +# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo + +class tagMCActRechargePrize(Structure): + _pack_ = 1 + _fields_ = [ + ("CTGID", c_ushort), # 对应充值表充值ID + ("GoldPrize", c_int), #返利仙玉数 + ("PrizeCountLimit", 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.CTGID = 0 + self.GoldPrize = 0 + self.PrizeCountLimit = 0 + return + + def GetLength(self): + return sizeof(tagMCActRechargePrize) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo: + CTGID:%d, + GoldPrize:%d, + PrizeCountLimit:%d + '''\ + %( + self.CTGID, + self.GoldPrize, + self.PrizeCountLimit + ) + return DumpString + + +class tagMCActRechargePrizeDay(Structure): + Prizes = 0 #(BYTE Prizes)// 返利档数 + PrizeInfo = list() #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Prizes): + temPrizeInfo = tagMCActRechargePrize() + _pos = temPrizeInfo.ReadData(_lpData, _pos) + self.PrizeInfo.append(temPrizeInfo) + return _pos + + def Clear(self): + self.Prizes = 0 + self.PrizeInfo = list() + return + + def GetLength(self): + length = 0 + length += 1 + for i in range(self.Prizes): + length += self.PrizeInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.Prizes) + for i in range(self.Prizes): + data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Prizes:%d, + PrizeInfo:%s + '''\ + %( + self.Prizes, + "..." + ) + return DumpString + + +class tagMCActRechargePrizeInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 + PrizeDays = 0 #(BYTE PrizeDays) + PrizeDayInfo = list() #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x27 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PrizeDays): + temPrizeDayInfo = tagMCActRechargePrizeDay() + _pos = temPrizeDayInfo.ReadData(_lpData, _pos) + self.PrizeDayInfo.append(temPrizeDayInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x27 + self.StartDate = "" + self.EndtDate = "" + self.IsDayReset = 0 + self.PrizeDays = 0 + self.PrizeDayInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + length += 1 + for i in range(self.PrizeDays): + length += self.PrizeDayInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteBYTE(data, self.PrizeDays) + for i in range(self.PrizeDays): + data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + IsDayReset:%d, + PrizeDays:%d, + PrizeDayInfo:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.IsDayReset, + self.PrizeDays, + "..." + ) + return DumpString + + +m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo + + +#------------------------------------------------------ # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo class tagMCTotalRechargeAwardItem(Structure): @@ -23593,6 +25140,7 @@ class tagMCActTotalRechargeInfo(Structure): Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2 StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 @@ -23610,6 +25158,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) @@ -23626,6 +25175,7 @@ self.Head.Clear() self.Head.Cmd = 0xAA self.Head.SubCmd = 0x1D + self.ActNum = 0 self.StartDate = "" self.EndtDate = "" self.IsDayReset = 0 @@ -23637,6 +25187,7 @@ def GetLength(self): length = 0 length += self.Head.GetLength() + length += 1 length += 10 length += 10 length += 1 @@ -23650,6 +25201,7 @@ def GetBuffer(self): data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) data = CommFunc.WriteString(data, 10, self.StartDate) data = CommFunc.WriteString(data, 10, self.EndtDate) data = CommFunc.WriteBYTE(data, self.IsDayReset) @@ -23662,6 +25214,7 @@ def OutputString(self): DumpString = ''' Head:%s, + ActNum:%d, StartDate:%s, EndtDate:%s, IsDayReset:%d, @@ -23671,6 +25224,7 @@ '''\ %( self.Head.OutputString(), + self.ActNum, self.StartDate, self.EndtDate, self.IsDayReset, @@ -24261,7 +25815,7 @@ _pack_ = 1 _fields_ = [ ("ItemID", c_int), - ("ItemCount", c_ushort), + ("ItemCount", c_int), ("IsBind", c_ubyte), ] @@ -24562,6 +26116,307 @@ m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo + + +#------------------------------------------------------ +# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo + +class tagMCDailyGiftbagItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", 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.ItemID = 0 + self.ItemCount = 0 + return + + def GetLength(self): + return sizeof(tagMCDailyGiftbagItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo: + ItemID:%d, + ItemCount:%d + '''\ + %( + self.ItemID, + self.ItemCount + ) + return DumpString + + +class tagMCDailyGiftbag(Structure): + GiftID = 0 #(DWORD GiftID)//礼包ID,0为免费 + OrderInfoLen = 0 #(BYTE OrderInfoLen) + OrderInfo = "" #(String OrderInfo)//商品编号 + BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数 + RMB = 0 #(DWORD RMB)//所需RMB,元 + GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数 + ItemInfo = list() #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen) + self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GiftItemCount): + temItemInfo = tagMCDailyGiftbagItem() + _pos = temItemInfo.ReadData(_lpData, _pos) + self.ItemInfo.append(temItemInfo) + return _pos + + def Clear(self): + self.GiftID = 0 + self.OrderInfoLen = 0 + self.OrderInfo = "" + self.BuyCountLimit = 0 + self.RMB = 0 + self.GiftItemCount = 0 + self.ItemInfo = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += len(self.OrderInfo) + length += 1 + length += 4 + length += 1 + for i in range(self.GiftItemCount): + length += self.ItemInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.GiftID) + data = CommFunc.WriteBYTE(data, self.OrderInfoLen) + data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo) + data = CommFunc.WriteBYTE(data, self.BuyCountLimit) + data = CommFunc.WriteDWORD(data, self.RMB) + data = CommFunc.WriteBYTE(data, self.GiftItemCount) + for i in range(self.GiftItemCount): + data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + GiftID:%d, + OrderInfoLen:%d, + OrderInfo:%s, + BuyCountLimit:%d, + RMB:%d, + GiftItemCount:%d, + ItemInfo:%s + '''\ + %( + self.GiftID, + self.OrderInfoLen, + self.OrderInfo, + self.BuyCountLimit, + self.RMB, + self.GiftItemCount, + "..." + ) + return DumpString + + +class tagMCDailyGiftbagInfo(Structure): + Head = tagHead() + GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数 + GiftbagInfo = list() #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x25 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GiftbagCount): + temGiftbagInfo = tagMCDailyGiftbag() + _pos = temGiftbagInfo.ReadData(_lpData, _pos) + self.GiftbagInfo.append(temGiftbagInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x25 + self.GiftbagCount = 0 + self.GiftbagInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.GiftbagCount): + length += self.GiftbagInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.GiftbagCount) + for i in range(self.GiftbagCount): + data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + GiftbagCount:%d, + GiftbagInfo:%s + '''\ + %( + self.Head.OutputString(), + self.GiftbagCount, + "..." + ) + return DumpString + + +m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo + + +#------------------------------------------------------ +# AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo + +class tagMCDailyGiftbagBuyCount(Structure): + _pack_ = 1 + _fields_ = [ + ("GiftbagID", c_int), #礼包ID + ("BuyCount", 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.GiftbagID = 0 + self.BuyCount = 0 + return + + def GetLength(self): + return sizeof(tagMCDailyGiftbagBuyCount) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo: + GiftbagID:%d, + BuyCount:%d + '''\ + %( + self.GiftbagID, + self.BuyCount + ) + return DumpString + + +class tagMCDailyGiftbagPlayerInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + BuyCountList = list() #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x26 + 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): + temBuyCountList = tagMCDailyGiftbagBuyCount() + _pos = temBuyCountList.ReadData(_lpData, _pos) + self.BuyCountList.append(temBuyCountList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x26 + self.Count = 0 + self.BuyCountList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.BuyCountList[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.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + BuyCountList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo #------------------------------------------------------ @@ -25136,8 +26991,9 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖 + ("FirstGoldRewardState", c_ubyte), #首充奖励领奖记录,按位记录首充第X天是否已领取,第1天为第0索引位 ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用 + ("FirstGoldServerDay", c_ushort), #首充时是开服第几天,从1开始,0代表未记录充值 ] def __init__(self): @@ -25156,6 +27012,7 @@ self.SubCmd = 0x02 self.FirstGoldRewardState = 0 self.FirstGoldTry = 0 + self.FirstGoldServerDay = 0 return def GetLength(self): @@ -25169,13 +27026,15 @@ Cmd:%s, SubCmd:%s, FirstGoldRewardState:%d, - FirstGoldTry:%d + FirstGoldTry:%d, + FirstGoldServerDay:%d '''\ %( self.Cmd, self.SubCmd, self.FirstGoldRewardState, - self.FirstGoldTry + self.FirstGoldTry, + self.FirstGoldServerDay ) return DumpString @@ -26505,6 +28364,114 @@ #------------------------------------------------------ +# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo + +class tagMCRechargePrizeInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("CTGID", c_ushort), # 对应充值表充值ID + ("PrizeCount", 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.CTGID = 0 + self.PrizeCount = 0 + return + + def GetLength(self): + return sizeof(tagMCRechargePrizeInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo: + CTGID:%d, + PrizeCount:%d + '''\ + %( + self.CTGID, + self.PrizeCount + ) + return DumpString + + +class tagMCRechargePrizePlayerInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + PlayerInfoList = list() #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x28 + 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): + temPlayerInfoList = tagMCRechargePrizeInfo() + _pos = temPlayerInfoList.ReadData(_lpData, _pos) + self.PlayerInfoList.append(temPlayerInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x28 + self.Count = 0 + self.PlayerInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.PlayerInfoList[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.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + PlayerInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo + + +#------------------------------------------------------ # AA 11 限时特惠活动信息 #tagMCSpringSaleInfo class tagMCSpringSaleItem(Structure): @@ -26970,6 +28937,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2 ("GoldTotal", c_int), #本次活动已累计充值仙玉数 ("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取 ] @@ -26988,6 +28956,7 @@ def Clear(self): self.Cmd = 0xAA self.SubCmd = 0x1C + self.ActNum = 0 self.GoldTotal = 0 self.AwardRecord = 0 return @@ -27002,12 +28971,14 @@ DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo: Cmd:%s, SubCmd:%s, + ActNum:%d, GoldTotal:%d, AwardRecord:%d '''\ %( self.Cmd, self.SubCmd, + self.ActNum, self.GoldTotal, self.AwardRecord ) @@ -28850,6 +30821,119 @@ #------------------------------------------------------ +# B0 27 活跃放置信息 #tagMCActivityPlaceInfo + +class tagMCActivityPlaceInfo(Structure): + Head = tagHead() + StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间 + PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数 + RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数 + RewardLen = 0 #(BYTE RewardLen) + RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...] + TodayExp = 0 #(DWORD TodayExp) + TodayExpPoint = 0 #(DWORD TodayExpPoint) + YestordayExp = 0 #(DWORD YestordayExp) + YestordayExpPoint = 0 #(DWORD YestordayExpPoint) + 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.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlaceCount,_pos = CommFunc.ReadBYTE(_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) + self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x27 + self.StartTime = 0 + self.PlaceCount = 0 + self.RewardCount = 0 + self.RewardLen = 0 + self.RewardInfo = "" + self.TodayExp = 0 + self.TodayExpPoint = 0 + self.YestordayExp = 0 + self.YestordayExpPoint = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 1 + length += 1 + length += len(self.RewardInfo) + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.StartTime) + data = CommFunc.WriteBYTE(data, self.PlaceCount) + data = CommFunc.WriteBYTE(data, self.RewardCount) + data = CommFunc.WriteBYTE(data, self.RewardLen) + data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo) + data = CommFunc.WriteDWORD(data, self.TodayExp) + data = CommFunc.WriteDWORD(data, self.TodayExpPoint) + data = CommFunc.WriteDWORD(data, self.YestordayExp) + data = CommFunc.WriteDWORD(data, self.YestordayExpPoint) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartTime:%d, + PlaceCount:%d, + RewardCount:%d, + RewardLen:%d, + RewardInfo:%s, + TodayExp:%d, + TodayExpPoint:%d, + YestordayExp:%d, + YestordayExpPoint:%d + '''\ + %( + self.Head.OutputString(), + self.StartTime, + self.PlaceCount, + self.RewardCount, + self.RewardLen, + self.RewardInfo, + self.TodayExp, + self.TodayExpPoint, + self.YestordayExp, + self.YestordayExpPoint + ) + 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): @@ -28947,6 +31031,62 @@ m_NAtagMCFishResult=tagMCFishResult() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFishResult.Cmd,m_NAtagMCFishResult.SubCmd))] = m_NAtagMCFishResult + + +#------------------------------------------------------ +# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo + +class tagMCTodayAssistMoneyInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成 + ("SocialMoney", c_ushort), #社交额外加成 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + self.SubCmd = 0x07 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB0 + self.SubCmd = 0x07 + self.TodayAssistMoney = 0 + self.SocialMoney = 0 + return + + def GetLength(self): + return sizeof(tagMCTodayAssistMoneyInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo: + Cmd:%s, + SubCmd:%s, + TodayAssistMoney:%d, + SocialMoney:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TodayAssistMoney, + self.SocialMoney + ) + return DumpString + + +m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo #------------------------------------------------------ @@ -30795,6 +32935,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Floor", c_int), # 已通关层 + ("ServerRewardRecord", c_int), #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取 ] def __init__(self): @@ -30812,6 +32953,7 @@ self.Cmd = 0xB2 self.SubCmd = 0x13 self.Floor = 0 + self.ServerRewardRecord = 0 return def GetLength(self): @@ -30824,12 +32966,14 @@ DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo: Cmd:%s, SubCmd:%s, - Floor:%d + Floor:%d, + ServerRewardRecord:%d '''\ %( self.Cmd, self.SubCmd, - self.Floor + self.Floor, + self.ServerRewardRecord ) return DumpString @@ -31071,6 +33215,226 @@ m_NAtagMCAddMaliciousAtkPlayer=tagMCAddMaliciousAtkPlayer() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddMaliciousAtkPlayer.Cmd,m_NAtagMCAddMaliciousAtkPlayer.SubCmd))] = m_NAtagMCAddMaliciousAtkPlayer + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -32000,6 +34364,7 @@ PosY = 0 #(WORD PosY) HurtCount = 0 #(WORD HurtCount)//伤害数目 HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount + SkillElementID = 0 #(WORD SkillElementID)//专精技能ID data = None def __init__(self): @@ -32021,6 +34386,7 @@ temHurtList = tagSkillPosHurtObj() _pos = temHurtList.ReadData(_lpData, _pos) self.HurtList.append(temHurtList) + self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos) return _pos def Clear(self): @@ -32035,6 +34401,7 @@ self.PosY = 0 self.HurtCount = 0 self.HurtList = list() + self.SkillElementID = 0 return def GetLength(self): @@ -32048,6 +34415,7 @@ length += 2 for i in range(self.HurtCount): length += self.HurtList[i].GetLength() + length += 2 return length @@ -32062,6 +34430,7 @@ data = CommFunc.WriteWORD(data, self.HurtCount) for i in range(self.HurtCount): data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.SkillElementID) return data def OutputString(self): @@ -32073,7 +34442,8 @@ PosX:%d, PosY:%d, HurtCount:%d, - HurtList:%s + HurtList:%s, + SkillElementID:%d '''\ %( self.Head.OutputString(), @@ -32083,7 +34453,8 @@ self.PosX, self.PosY, self.HurtCount, - "..." + "...", + self.SkillElementID ) return DumpString -- Gitblit v1.8.0