From 9aec2993fb9c257870afaa7f8fb4e8020b2c2ca2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 18 十二月 2020 11:14:57 +0800
Subject: [PATCH] 1111 【主干】【BT】 curBuff.GetSkill()、curEquip.GetAddSkill(0) 获取错误防范;
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 3505 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 3,393 insertions(+), 112 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 8b60580..cdcc800 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
@@ -5778,6 +6101,427 @@
#------------------------------------------------------
+# B0 01 新增协助 #tagGCAssistInfoList
+
+class tagGCAssistInfo(Structure):
+ 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)//境界
+ 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.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)
+ return _pos
+
+ def Clear(self):
+ self.AssistGUID = ""
+ 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 = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ 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.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)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AssistGUID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s
+ '''\
+ %(
+ self.AssistGUID,
+ self.PlayerID,
+ 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 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
+
+
+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 +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
#------------------------------------------------------
@@ -6773,6 +7835,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 +8848,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_int), #自动购买所需总消耗
+ ]
+
+ 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 +11815,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("IsRobot", c_ubyte), # 是否匹配机器人
]
def __init__(self):
@@ -10545,6 +11832,7 @@
def Clear(self):
self.Cmd = 0xC0
self.SubCmd = 0x02
+ self.IsRobot = 0
return
def GetLength(self):
@@ -10556,11 +11844,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
@@ -12582,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):
@@ -12850,6 +14208,7 @@
("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
("KillCnt", c_int), #击杀次数
("ItemAddCnt", c_int), #物品增加次数
+ ("BuyCnt", c_ubyte), #购买次数
]
def __init__(self):
@@ -12865,6 +14224,7 @@
self.BossType = 0
self.KillCnt = 0
self.ItemAddCnt = 0
+ self.BuyCnt = 0
return
def GetLength(self):
@@ -12877,12 +14237,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 +15231,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 +16714,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 +17059,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
#------------------------------------------------------
@@ -16612,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
@@ -16629,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()
@@ -16656,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()
@@ -16669,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())
@@ -16836,6 +18545,7 @@
("ExtraCnt", c_ubyte), # VIP额外次数
("ExtraData", c_ubyte), # 额外参数1
("ExtraData2", c_ubyte), # 额外参数2
+ ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回
]
def __init__(self):
@@ -16853,6 +18563,7 @@
self.ExtraCnt = 0
self.ExtraData = 0
self.ExtraData2 = 0
+ self.HaveRecover = 0
return
def GetLength(self):
@@ -16867,14 +18578,16 @@
RecoverCnt:%d,
ExtraCnt:%d,
ExtraData:%d,
- ExtraData2:%d
+ ExtraData2:%d,
+ HaveRecover:%d
'''\
%(
self.Index,
self.RecoverCnt,
self.ExtraCnt,
self.ExtraData,
- self.ExtraData2
+ self.ExtraData2,
+ self.HaveRecover
)
return DumpString
@@ -17441,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):
@@ -17455,6 +19169,7 @@
def Clear(self):
self.RecordIndex = 0
self.Record = 0
+ self.PassportRecord = 0
return
def GetLength(self):
@@ -17466,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
@@ -17906,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):
@@ -17924,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
#------------------------------------------------------
@@ -19711,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
#------------------------------------------------------
@@ -21498,6 +23208,58 @@
#------------------------------------------------------
+# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
+
+class tagMCLingQiEquipBreakResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MakeItemID", c_int), #突破后的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ self.SubCmd = 0x15
+ 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 = 0xA8
+ self.SubCmd = 0x15
+ self.MakeItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLingQiEquipBreakResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MakeItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MakeItemID
+ )
+ return DumpString
+
+
+m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
+
+
+#------------------------------------------------------
# A8 14 合成结果通知 #tagMCMakeItemAnswer
class tagMCMakeItemAnswer(Structure):
@@ -22122,6 +23884,353 @@
#------------------------------------------------------
+# 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 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
class tagMCActLoginAwardAction(Structure):
@@ -22546,6 +24655,189 @@
m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -23378,7 +25670,7 @@
_pack_ = 1
_fields_ = [
("ItemID", c_int),
- ("ItemCount", c_ushort),
+ ("ItemCount", c_int),
("IsBind", c_ubyte),
]
@@ -23679,6 +25971,359 @@
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
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -24201,8 +26846,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):
@@ -24221,6 +26867,7 @@
self.SubCmd = 0x02
self.FirstGoldRewardState = 0
self.FirstGoldTry = 0
+ self.FirstGoldServerDay = 0
return
def GetLength(self):
@@ -24234,13 +26881,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
@@ -25570,6 +28219,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):
@@ -26604,6 +29361,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):
@@ -26621,6 +29381,9 @@
self.Cmd = 0xAA
self.SubCmd = 0x14
self.State = 0
+ self.CTGTotal = 0
+ self.FireworksBuyCount = 0
+ self.FirewordsScore = 0
return
def GetLength(self):
@@ -26633,18 +29396,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
#------------------------------------------------------
@@ -27795,6 +30672,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):
@@ -27892,6 +30882,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
#------------------------------------------------------
@@ -28135,7 +31181,7 @@
Head = tagHead()
PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
- PointValueList = list() #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+ PointValueList = list() #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
data = None
def __init__(self):
@@ -28152,7 +31198,7 @@
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.PointAttrIDList.append(value)
for i in range(self.PointAttrIDCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PointValueList.append(value)
return _pos
@@ -28171,7 +31217,7 @@
length += self.Head.GetLength()
length += 1
length += 1 * self.PointAttrIDCount
- length += 2 * self.PointAttrIDCount
+ length += 4 * self.PointAttrIDCount
return length
@@ -28182,7 +31228,7 @@
for i in range(self.PointAttrIDCount):
data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
for i in range(self.PointAttrIDCount):
- data = CommFunc.WriteWORD(data, self.PointValueList[i])
+ data = CommFunc.WriteDWORD(data, self.PointValueList[i])
return data
def OutputString(self):
@@ -28897,6 +31943,7 @@
_fields_ = [
("DataMapID", c_int), # 地图ID
("RemainTime", c_int), # 剩余时间秒
+ ("RegainCnt", c_ubyte), # 今日已恢复次数
]
def __init__(self):
@@ -28911,6 +31958,7 @@
def Clear(self):
self.DataMapID = 0
self.RemainTime = 0
+ self.RegainCnt = 0
return
def GetLength(self):
@@ -28922,11 +31970,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
@@ -29736,6 +32786,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Floor", c_int), # 已通关层
+ ("ServerRewardRecord", c_int), #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
]
def __init__(self):
@@ -29753,6 +32804,7 @@
self.Cmd = 0xB2
self.SubCmd = 0x13
self.Floor = 0
+ self.ServerRewardRecord = 0
return
def GetLength(self):
@@ -29765,12 +32817,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
@@ -30012,6 +33066,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
#------------------------------------------------------
@@ -30941,6 +34215,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):
@@ -30962,6 +34237,7 @@
temHurtList = tagSkillPosHurtObj()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -30976,6 +34252,7 @@
self.PosY = 0
self.HurtCount = 0
self.HurtList = list()
+ self.SkillElementID = 0
return
def GetLength(self):
@@ -30989,6 +34266,7 @@
length += 2
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 2
return length
@@ -31003,6 +34281,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):
@@ -31014,7 +34293,8 @@
PosX:%d,
PosY:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ SkillElementID:%d
'''\
%(
self.Head.OutputString(),
@@ -31024,7 +34304,8 @@
self.PosX,
self.PosY,
self.HurtCount,
- "..."
+ "...",
+ self.SkillElementID
)
return DumpString
--
Gitblit v1.8.0