From 1c96b414fcd15749131c8eeb1857de82cfbe981e Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 18 九月 2018 20:04:58 +0800
Subject: [PATCH] 3647 【后端】思璞游戏SDK接入 同步脱机挂封包
---
Tool/Robot/AI/AIFile/AILoginout.py | 2
Tool/Robot/Protocol/PacketsReceivedPY.py | 7703 ++++++++++++++++++++++++++----------------
Tool/Robot/Protocol/PacketsSend.py | 18
Tool/Robot/Protocol/PacketsSendPY.py | 2996 ++++++++--------
Tool/Robot/Protocol/PacketsReceived.py | 106
5 files changed, 6,447 insertions(+), 4,378 deletions(-)
diff --git a/Tool/Robot/AI/AIFile/AILoginout.py b/Tool/Robot/AI/AIFile/AILoginout.py
index 29b8732..814360a 100644
--- a/Tool/Robot/AI/AIFile/AILoginout.py
+++ b/Tool/Robot/AI/AIFile/AILoginout.py
@@ -269,6 +269,8 @@
cAccessLogin.AppID = appID
cAccessLogin.ServerID = int(sid[1:])
cAccessLogin.Adult = self.robot.GetRobotConfig()[3]
+ cAccessLogin.ExtraLen = 0
+ cAccessLogin.Extra = ""
self.robot.Send(cAccessLogin)
#print "New Player Login ---------- ", self.robot.GetRobotConfig()[1]
diff --git a/Tool/Robot/Protocol/PacketsReceived.py b/Tool/Robot/Protocol/PacketsReceived.py
index c927066..fe93a7f 100644
--- a/Tool/Robot/Protocol/PacketsReceived.py
+++ b/Tool/Robot/Protocol/PacketsReceived.py
@@ -2552,6 +2552,70 @@
#------------------------------------------------------
+#01 32 创角成功 #tagCreateRoleSucess
+
+class tagCreateRoleSucess(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0x01
+ self.Head.SubCmd = 0x32
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0x01
+ self.Head.SubCmd = 0x32
+ self.PlayerID = 0
+ self.PlayerName = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 33
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ PlayerName:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.PlayerName
+ )
+ return DumpString
+
+
+m_NAtagCreateRoleSucess=tagCreateRoleSucess()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCreateRoleSucess.Head.Cmd,m_NAtagCreateRoleSucess.Head.SubCmd))] = m_NAtagCreateRoleSucess
+
+
+#------------------------------------------------------
#01 2A领取计时新手包结果#tagGetNewGuyCountBackwardsAwardResult对性能影响小
class tagGetNewGuyCountBackwardsAwardResult(Structure):
@@ -6543,6 +6607,7 @@
GradID = 0 #(DWORD GradID)//头衔ID
State = 0 #(BYTE State)//装备和使用状态 按位判定,第一位0未装备1已装备 第二位0未使用 1使用
CreateTime = "" #(char CreateTime[30])//获得时间
+ ExpireTime = 0 #(DWORD ExpireTime)// 持续时间,0为配表固定时间
data = None
def __init__(self):
@@ -6554,12 +6619,14 @@
self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
+ self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
self.GradID = 0
self.State = 0
self.CreateTime = ""
+ self.ExpireTime = 0
return
def GetLength(self):
@@ -6567,6 +6634,7 @@
length += 4
length += 1
length += 30
+ length += 4
return length
@@ -6575,18 +6643,21 @@
data = CommFunc.WriteDWORD(data, self.GradID)
data = CommFunc.WriteBYTE(data, self.State)
data = CommFunc.WriteString(data, 30, self.CreateTime)
+ data = CommFunc.WriteDWORD(data, self.ExpireTime)
return data
def OutputString(self):
DumpString = '''
GradID:%d,
State:%d,
- CreateTime:%s
+ CreateTime:%s,
+ ExpireTime:%d
'''\
%(
self.GradID,
self.State,
- self.CreateTime
+ self.CreateTime,
+ self.ExpireTime
)
return DumpString
@@ -6664,6 +6735,7 @@
Head = tagHead()
GradID = 0 #(DWORD GradID)//头衔ID
CreateTime = "" #(char CreateTime[30])//获得时间
+ ExpireTime = 0 #(DWORD ExpireTime)// 持续时间,0为配表固定时间
data = None
def __init__(self):
@@ -6677,6 +6749,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
+ self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -6686,6 +6759,7 @@
self.Head.SubCmd = 0x36
self.GradID = 0
self.CreateTime = ""
+ self.ExpireTime = 0
return
def GetLength(self):
@@ -6693,6 +6767,7 @@
length += self.Head.GetLength()
length += 4
length += 30
+ length += 4
return length
@@ -6701,18 +6776,21 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteDWORD(data, self.GradID)
data = CommFunc.WriteString(data, 30, self.CreateTime)
+ data = CommFunc.WriteDWORD(data, self.ExpireTime)
return data
def OutputString(self):
DumpString = '''
Head:%s,
GradID:%d,
- CreateTime:%s
+ CreateTime:%s,
+ ExpireTime:%d
'''\
%(
self.Head.OutputString(),
self.GradID,
- self.CreateTime
+ self.CreateTime,
+ self.ExpireTime
)
return DumpString
@@ -9485,6 +9563,7 @@
("ObjType", c_ubyte), #对象类型
("PosX", c_ushort),
("PosY", c_ushort),
+ ("Reason", c_int), # 0为游戏通用,其他未决定的为技能ID
]
def __init__(self):
@@ -9505,6 +9584,7 @@
self.ObjType = 0
self.PosX = 0
self.PosY = 0
+ self.Reason = 0
return
def GetLength(self):
@@ -9520,7 +9600,8 @@
ObjID:%d,
ObjType:%d,
PosX:%d,
- PosY:%d
+ PosY:%d,
+ Reason:%d
'''\
%(
self.Cmd,
@@ -9528,7 +9609,8 @@
self.ObjID,
self.ObjType,
self.PosX,
- self.PosY
+ self.PosY,
+ self.Reason
)
return DumpString
@@ -12424,6 +12506,8 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
+ ("KillerID", c_int),
+ ("KillerType", c_ubyte),
]
def __init__(self):
@@ -12441,6 +12525,8 @@
self.Cmd = 0x06
self.SubCmd = 0x09
self.PlayerID = 0
+ self.KillerID = 0
+ self.KillerType = 0
return
def GetLength(self):
@@ -12453,12 +12539,16 @@
DumpString = '''//06 09 玩家死亡//tagPlayerDie:
Cmd:%s,
SubCmd:%s,
- PlayerID:%d
+ PlayerID:%d,
+ KillerID:%d,
+ KillerType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PlayerID
+ self.PlayerID,
+ self.KillerID,
+ self.KillerType
)
return DumpString
diff --git a/Tool/Robot/Protocol/PacketsReceivedPY.py b/Tool/Robot/Protocol/PacketsReceivedPY.py
index 22f9a78..a8171fe 100644
--- a/Tool/Robot/Protocol/PacketsReceivedPY.py
+++ b/Tool/Robot/Protocol/PacketsReceivedPY.py
@@ -311,60 +311,78 @@
#A0 05 同步开服天数 #tagOpenServerDay
class tagOpenServerDay(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Day", c_ushort), # 已开服天数,从0开始
- ("IsMixServer", c_ubyte), #是否是合服服务器
- ("MixDay", c_ushort), # 已合服天数,从0开始
- ]
+ Head = tagHead()
+ Day = 0 #(WORD Day)// 已开服天数,从0开始
+ IsMixServer = 0 #(BYTE IsMixServer)//是否是合服服务器
+ MixDay = 0 #(WORD MixDay)// 已合服天数,从0开始
+ OpenServerTime = "" #(char OpenServerTime[19])//开服时间yyyy-MM-dd HH:mm:ss
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA0
- self.SubCmd = 0x05
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x05
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Day,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsMixServer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MixDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OpenServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ return _pos
def Clear(self):
- self.Cmd = 0xA0
- self.SubCmd = 0x05
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x05
self.Day = 0
self.IsMixServer = 0
self.MixDay = 0
+ self.OpenServerTime = ""
return
def GetLength(self):
- return sizeof(tagOpenServerDay)
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 2
+ length += 19
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Day)
+ data = CommFunc.WriteBYTE(data, self.IsMixServer)
+ data = CommFunc.WriteWORD(data, self.MixDay)
+ data = CommFunc.WriteString(data, 19, self.OpenServerTime)
+ return data
def OutputString(self):
- DumpString = '''//A0 05 同步开服天数 //tagOpenServerDay:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
Day:%d,
IsMixServer:%d,
- MixDay:%d
+ MixDay:%d,
+ OpenServerTime:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.Day,
self.IsMixServer,
- self.MixDay
+ self.MixDay,
+ self.OpenServerTime
)
return DumpString
m_NAtagOpenServerDay=tagOpenServerDay()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Cmd,m_NAtagOpenServerDay.SubCmd))] = m_NAtagOpenServerDay
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagOpenServerDay.Head.Cmd,m_NAtagOpenServerDay.Head.SubCmd))] = m_NAtagOpenServerDay
#------------------------------------------------------
@@ -847,6 +865,73 @@
#------------------------------------------------------
+# A4 0A 假仙盟信息 #tagGCFakeFamilyInfo
+
+class tagGCFakeFamilyInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ FakeIDList = list() #(vector<DWORD> FakeIDList)// 假仙盟名字索引1开始
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x0A
+ 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.FakeIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x0A
+ self.Count = 0
+ self.FakeIDList = 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.FakeIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ FakeIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFakeFamilyInfo=tagGCFakeFamilyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFakeFamilyInfo.Head.Cmd,m_NAtagGCFakeFamilyInfo.Head.SubCmd))] = m_NAtagGCFakeFamilyInfo
+
+
+#------------------------------------------------------
# A4 03 家族行为信息 #tagGCFamilyActionInfo
class tagGCFamilyAction(Structure):
@@ -1045,7 +1130,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("IsOpen", c_ubyte), # 是否已开启
+ ("IsOpen", c_int), # 是否已开启
("OpenCnt", c_ubyte), # 本周已开启次数
]
@@ -1537,18 +1622,91 @@
# A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
class tagGCFamilyStoreItemClear(Structure):
+ Head = tagHead()
+ ClearType = 0 #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
+ IndexCount = 0 #(BYTE IndexCount)
+ IndexList = list() #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.IndexList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x07
+ self.ClearType = 0
+ self.IndexCount = 0
+ self.IndexList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1 * self.IndexCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ClearType)
+ data = CommFunc.WriteBYTE(data, self.IndexCount)
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ClearType:%d,
+ IndexCount:%d,
+ IndexList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ClearType,
+ self.IndexCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
+
+
+#------------------------------------------------------
+# A4 09 家族守卫人皇信息通知 #tagGCFamilySWRHInfo
+
+class tagGCFamilySWRHInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ClearType", c_ubyte), #0-单格子清除; 1-所有物品清除
- ("Index", c_ubyte), #清除的格子索引, 仅单格子清除时有效,从0开始代表第一格
+ ("HasJoin", c_ubyte), # 是否已参与
]
def __init__(self):
self.Clear()
self.Cmd = 0xA4
- self.SubCmd = 0x07
+ self.SubCmd = 0x09
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -1558,35 +1716,103 @@
def Clear(self):
self.Cmd = 0xA4
- self.SubCmd = 0x07
- self.ClearType = 0
- self.Index = 0
+ self.SubCmd = 0x09
+ self.HasJoin = 0
return
def GetLength(self):
- return sizeof(tagGCFamilyStoreItemClear)
+ return sizeof(tagGCFamilySWRHInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A4 07 家族仓库物品清除 //tagGCFamilyStoreItemClear:
+ DumpString = '''// A4 09 家族守卫人皇信息通知 //tagGCFamilySWRHInfo:
Cmd:%s,
SubCmd:%s,
- ClearType:%d,
- Index:%d
+ HasJoin:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ClearType,
- self.Index
+ self.HasJoin
)
return DumpString
-m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Cmd,m_NAtagGCFamilyStoreItemClear.SubCmd))] = m_NAtagGCFamilyStoreItemClear
+m_NAtagGCFamilySWRHInfo=tagGCFamilySWRHInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilySWRHInfo.Cmd,m_NAtagGCFamilySWRHInfo.SubCmd))] = m_NAtagGCFamilySWRHInfo
+
+
+#------------------------------------------------------
+# A4 0B 玩家参与的仙盟联赛仙盟信息 #tagGCPlayerJoinFamilyWarInfo
+
+class tagGCPlayerJoinFamilyWarInfo(Structure):
+ Head = tagHead()
+ JoinFamilyID = 0 #(DWORD JoinFamilyID)//参与的仙盟ID,默认0本仙盟,仙盟不同时才会收到本包
+ JoinFamilyNameLen = 0 #(BYTE JoinFamilyNameLen)
+ JoinFamilyName = "" #(String JoinFamilyName)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x0B
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.JoinFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.JoinFamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.JoinFamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.JoinFamilyNameLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x0B
+ self.JoinFamilyID = 0
+ self.JoinFamilyNameLen = 0
+ self.JoinFamilyName = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.JoinFamilyName)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.JoinFamilyID)
+ data = CommFunc.WriteBYTE(data, self.JoinFamilyNameLen)
+ data = CommFunc.WriteString(data, self.JoinFamilyNameLen, self.JoinFamilyName)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ JoinFamilyID:%d,
+ JoinFamilyNameLen:%d,
+ JoinFamilyName:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.JoinFamilyID,
+ self.JoinFamilyNameLen,
+ self.JoinFamilyName
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerJoinFamilyWarInfo=tagGCPlayerJoinFamilyWarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerJoinFamilyWarInfo.Head.Cmd,m_NAtagGCPlayerJoinFamilyWarInfo.Head.SubCmd))] = m_NAtagGCPlayerJoinFamilyWarInfo
#------------------------------------------------------
@@ -2073,6 +2299,130 @@
#------------------------------------------------------
+# A9 01 世界boss分流线路boss状态 #tagGCBossShuntLineStateInfo
+
+class tagGCBossShuntLineState(Structure):
+ BossID = 0 #(DWORD BossID)// bossID
+ DeadLineCount = 0 #(BYTE DeadLineCount)
+ DeadLineList = list() #(vector<BYTE> DeadLineList)// 已死亡的线路列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.DeadLineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DeadLineCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.DeadLineList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.BossID = 0
+ self.DeadLineCount = 0
+ self.DeadLineList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1 * self.DeadLineCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.BossID)
+ data = CommFunc.WriteBYTE(data, self.DeadLineCount)
+ for i in range(self.DeadLineCount):
+ data = CommFunc.WriteBYTE(data, self.DeadLineList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ BossID:%d,
+ DeadLineCount:%d,
+ DeadLineList:%s
+ '''\
+ %(
+ self.BossID,
+ self.DeadLineCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCBossShuntLineStateInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BossLineStateInfo = list() #(vector<tagGCBossShuntLineState> BossLineStateInfo)//boss分流线路信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ 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):
+ temBossLineStateInfo = tagGCBossShuntLineState()
+ _pos = temBossLineStateInfo.ReadData(_lpData, _pos)
+ self.BossLineStateInfo.append(temBossLineStateInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x01
+ self.Count = 0
+ self.BossLineStateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.BossLineStateInfo[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.BossLineStateInfo[i].GetLength(), self.BossLineStateInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ BossLineStateInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCBossShuntLineStateInfo=tagGCBossShuntLineStateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossShuntLineStateInfo.Head.Cmd,m_NAtagGCBossShuntLineStateInfo.Head.SubCmd))] = m_NAtagGCBossShuntLineStateInfo
+
+
+#------------------------------------------------------
# A9 AC 交易所物品最新成交价通知 #tagGCBourseItemPrice
class tagGCBourseItemPrice(Structure):
@@ -2335,24 +2685,17 @@
#------------------------------------------------------
-# A9 A5 通知摇骰子数据 #tagGCDiceData
+# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
-class tagGCDiceData(Structure):
+class tagDogzTimeInfoObj(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("HasDiceCnt", c_ubyte), #已摇次数
- ("HasBestCnt", c_ubyte), #已出状元数量
- ("DiceState", c_ubyte), #活动状态0 结束 1第一轮 99暂停
- ("CurPoint", c_int), #当前积分
- ("PointPrizeState", c_int), # 积分奖励 按二进制位标示领取记录
+ ("NPCID", c_int), # npcid
+ ("RefreshSecond", c_int), # 刷新倒计时, 秒
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0xA5
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -2361,137 +2704,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0xA5
- self.HasDiceCnt = 0
- self.HasBestCnt = 0
- self.DiceState = 0
- self.CurPoint = 0
- self.PointPrizeState = 0
+ self.NPCID = 0
+ self.RefreshSecond = 0
return
def GetLength(self):
- return sizeof(tagGCDiceData)
+ return sizeof(tagDogzTimeInfoObj)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A9 A5 通知摇骰子数据 //tagGCDiceData:
- Cmd:%s,
- SubCmd:%s,
- HasDiceCnt:%d,
- HasBestCnt:%d,
- DiceState:%d,
- CurPoint:%d,
- PointPrizeState:%d
+ DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
+ NPCID:%d,
+ RefreshSecond:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.HasDiceCnt,
- self.HasBestCnt,
- self.DiceState,
- self.CurPoint,
- self.PointPrizeState
+ self.NPCID,
+ self.RefreshSecond
)
return DumpString
-m_NAtagGCDiceData=tagGCDiceData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDiceData.Cmd,m_NAtagGCDiceData.SubCmd))] = m_NAtagGCDiceData
-
-
-#------------------------------------------------------
-# A9 A4 通知摇骰子结果 #tagGCDiceResult
-
-class tagGCDiceResult(Structure):
+class tagGCDogzNPCRefreshTime(Structure):
Head = tagHead()
- DiceType = 0 #(BYTE DiceType)//骰子组合类型
- AddPoint = 0 #(DWORD AddPoint)//增加的积分
- MoneyType = 0 #(BYTE MoneyType)//获得金钱类型
- MoneyNum = 0 #(DWORD MoneyNum)//获得金钱数量
- DataSize = 0 #(DWORD DataSize)
- DiceNum = "" #(String DiceNum)//具体骰子数
+ Cnt = 0 #(BYTE Cnt)//信息个数
+ InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA4
+ self.Head.SubCmd = 0x04
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.DiceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AddPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.DiceNum,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagDogzTimeInfoObj()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0xA4
- self.DiceType = 0
- self.AddPoint = 0
- self.MoneyType = 0
- self.MoneyNum = 0
- self.DataSize = 0
- self.DiceNum = ""
+ self.Head.SubCmd = 0x04
+ self.Cnt = 0
+ self.InfoList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
- length += 4
- length += 1
- length += 4
- length += 4
- length += len(self.DiceNum)
+ for i in range(self.Cnt):
+ 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.DiceType)
- data = CommFunc.WriteDWORD(data, self.AddPoint)
- data = CommFunc.WriteBYTE(data, self.MoneyType)
- data = CommFunc.WriteDWORD(data, self.MoneyNum)
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.DiceNum)
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- DiceType:%d,
- AddPoint:%d,
- MoneyType:%d,
- MoneyNum:%d,
- DataSize:%d,
- DiceNum:%s
+ Cnt:%d,
+ InfoList:%s
'''\
%(
self.Head.OutputString(),
- self.DiceType,
- self.AddPoint,
- self.MoneyType,
- self.MoneyNum,
- self.DataSize,
- self.DiceNum
+ self.Cnt,
+ "..."
)
return DumpString
-m_NAtagGCDiceResult=tagGCDiceResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDiceResult.Head.Cmd,m_NAtagGCDiceResult.Head.SubCmd))] = m_NAtagGCDiceResult
+m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
#------------------------------------------------------
@@ -3301,7 +3599,7 @@
NameLen = 0 #(BYTE NameLen)
Name = "" #(String Name)//size = NameLen
SpeakerType = 0 #(BYTE SpeakerType)
- TextLen = 0 #(BYTE TextLen)
+ TextLen = 0 #(WORD TextLen)
Text = "" #(String Text)//size = TextLen
ExtraValue = 0 #(DWORD ExtraValue)//附加值
Extras = "" #(char Extras[256])//附加值列表
@@ -3322,7 +3620,7 @@
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.SpeakerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TextLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TextLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
@@ -3354,7 +3652,7 @@
length += 1
length += len(self.Name)
length += 1
- length += 1
+ length += 2
length += len(self.Text)
length += 4
length += 256
@@ -3370,7 +3668,7 @@
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.Name)
data = CommFunc.WriteBYTE(data, self.SpeakerType)
- data = CommFunc.WriteBYTE(data, self.TextLen)
+ data = CommFunc.WriteWORD(data, self.TextLen)
data = CommFunc.WriteString(data, self.TextLen, self.Text)
data = CommFunc.WriteDWORD(data, self.ExtraValue)
data = CommFunc.WriteString(data, 256, self.Extras)
@@ -3659,6 +3957,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -3671,6 +3970,7 @@
self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
self.LV,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -3678,6 +3978,7 @@
self.Name = ""
self.LV = 0
self.Job = 0
+ self.RealmLV = 0
return
def GetLength(self):
@@ -3686,6 +3987,7 @@
length += 33
length += 4
length += 1
+ length += 2
return length
@@ -3695,6 +3997,7 @@
data = CommFunc.WriteString(data, 33, self.Name)
data = CommFunc.WriteDWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
return data
def OutputString(self):
@@ -3702,13 +4005,15 @@
ID:%d,
Name:%s,
LV:%d,
- Job:%d
+ Job:%d,
+ RealmLV:%d
'''\
%(
self.ID,
self.Name,
self.LV,
- self.Job
+ self.Job,
+ self.RealmLV
)
return DumpString
@@ -3950,177 +4255,297 @@
#------------------------------------------------------
-# AC 15 嘉年华抽奖结果 #tagGCCarnivalResult
+# AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
-class tagGCCarnivalResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Index", c_ubyte), # 抽奖索引
- ("Multiple", c_int), # 倍数150代表1.5倍
- ]
+class tagGCFamilyBossHurtInfo(Structure):
+ NPCID = 0 #(DWORD NPCID)
+ CurHP = 0 #(DWORD CurHP)
+ CurHPEx = 0 #(DWORD CurHPEx)
+ MaxHP = 0 #(DWORD MaxHP)
+ MaxHPEx = 0 #(DWORD MaxHPEx)
+ FamilyID = 0 #(DWORD FamilyID)// 最大实时伤血仙盟
+ NameLen = 0 #(BYTE NameLen)
+ FamilyName = "" #(String FamilyName)
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xAC
- self.SubCmd = 0x15
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ return _pos
def Clear(self):
- self.Cmd = 0xAC
- self.SubCmd = 0x15
- self.Index = 0
- self.Multiple = 0
+ self.NPCID = 0
+ self.CurHP = 0
+ self.CurHPEx = 0
+ self.MaxHP = 0
+ self.MaxHPEx = 0
+ self.FamilyID = 0
+ self.NameLen = 0
+ self.FamilyName = ""
return
def GetLength(self):
- return sizeof(tagGCCarnivalResult)
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.FamilyName)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteDWORD(data, self.CurHP)
+ data = CommFunc.WriteDWORD(data, self.CurHPEx)
+ data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxHPEx)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.FamilyName)
+ return data
def OutputString(self):
- DumpString = '''// AC 15 嘉年华抽奖结果 //tagGCCarnivalResult:
- Cmd:%s,
- SubCmd:%s,
- Index:%d,
- Multiple:%d
+ DumpString = '''
+ NPCID:%d,
+ CurHP:%d,
+ CurHPEx:%d,
+ MaxHP:%d,
+ MaxHPEx:%d,
+ FamilyID:%d,
+ NameLen:%d,
+ FamilyName:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Index,
- self.Multiple
+ self.NPCID,
+ self.CurHP,
+ self.CurHPEx,
+ self.MaxHP,
+ self.MaxHPEx,
+ self.FamilyID,
+ self.NameLen,
+ self.FamilyName
)
return DumpString
-m_NAtagGCCarnivalResult=tagGCCarnivalResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCarnivalResult.Cmd,m_NAtagGCCarnivalResult.SubCmd))] = m_NAtagGCCarnivalResult
-
-
-#------------------------------------------------------
-# AC 13 通知活动怪信息 #tagGCFestivalNPCInfoList
-
-class tagGCFestivalNPCInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int), # 活动地图ID
- ("NPCCnt", c_ushort), # 剩余活动怪数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAC
- self.SubCmd = 0x13
- 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 = 0xAC
- self.SubCmd = 0x13
- self.MapID = 0
- self.NPCCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCFestivalNPCInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 13 通知活动怪信息 //tagGCFestivalNPCInfoList:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- NPCCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.NPCCnt
- )
- return DumpString
-
-
-class tagGCFestivalNPCInfoList(Structure):
+class tagGCAllFamilyBossHurtInfoList(Structure):
Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//信息个数
- MapNPCInfoList = list() #(vector<tagGCFestivalNPCInfo> MapNPCInfoList)//地图活动怪列表
+ NPCCount = 0 #(BYTE NPCCount)// 个数
+ NPCHurtInfo = list() #(vector<tagGCFamilyBossHurtInfo> NPCHurtInfo)// NPC伤血信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x13
+ self.Head.SubCmd = 0x10
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temMapNPCInfoList = tagGCFestivalNPCInfo()
- _pos = temMapNPCInfoList.ReadData(_lpData, _pos)
- self.MapNPCInfoList.append(temMapNPCInfoList)
+ self.NPCCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NPCCount):
+ temNPCHurtInfo = tagGCFamilyBossHurtInfo()
+ _pos = temNPCHurtInfo.ReadData(_lpData, _pos)
+ self.NPCHurtInfo.append(temNPCHurtInfo)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x13
- self.Cnt = 0
- self.MapNPCInfoList = list()
+ self.Head.SubCmd = 0x10
+ self.NPCCount = 0
+ self.NPCHurtInfo = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
- for i in range(self.Cnt):
- length += self.MapNPCInfoList[i].GetLength()
+ for i in range(self.NPCCount):
+ length += self.NPCHurtInfo[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.MapNPCInfoList[i].GetLength(), self.MapNPCInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.NPCCount)
+ for i in range(self.NPCCount):
+ data = CommFunc.WriteString(data, self.NPCHurtInfo[i].GetLength(), self.NPCHurtInfo[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- Cnt:%d,
- MapNPCInfoList:%s
+ NPCCount:%d,
+ NPCHurtInfo:%s
'''\
%(
self.Head.OutputString(),
- self.Cnt,
+ self.NPCCount,
"..."
)
return DumpString
-m_NAtagGCFestivalNPCInfoList=tagGCFestivalNPCInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFestivalNPCInfoList.Head.Cmd,m_NAtagGCFestivalNPCInfoList.Head.SubCmd))] = m_NAtagGCFestivalNPCInfoList
+m_NAtagGCAllFamilyBossHurtInfoList=tagGCAllFamilyBossHurtInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossHurtInfoList.Head.Cmd,m_NAtagGCAllFamilyBossHurtInfoList.Head.SubCmd))] = m_NAtagGCAllFamilyBossHurtInfoList
+
+
+#------------------------------------------------------
+# AC 08 boss复活点数通知 #tagGCBossRebornPoint
+
+class tagGCBossRebornPoint(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Point", c_int), # 复活点数
+ ("TotalPoint", c_int), # 复活总点数
+ ("RebornCnt", c_ushort), # 复活次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAC
+ self.SubCmd = 0x08
+ 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 = 0xAC
+ self.SubCmd = 0x08
+ self.Point = 0
+ self.TotalPoint = 0
+ self.RebornCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCBossRebornPoint)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
+ Cmd:%s,
+ SubCmd:%s,
+ Point:%d,
+ TotalPoint:%d,
+ RebornCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Point,
+ self.TotalPoint,
+ self.RebornCnt
+ )
+ return DumpString
+
+
+m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
+
+
+#------------------------------------------------------
+# AC 09 仙界盛典活动信息 #tagGCFairyCeremonyInfo
+
+class tagGCFairyCeremonyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ WorldLV = 0 #(WORD WorldLV)// 世界等级
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x09
+ 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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x09
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.WorldLV = 0
+ self.LimitLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 2
+
+ 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.WriteWORD(data, self.WorldLV)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ WorldLV:%d,
+ LimitLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.WorldLV,
+ self.LimitLV
+ )
+ return DumpString
+
+
+m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
#------------------------------------------------------
@@ -4308,62 +4733,6 @@
#------------------------------------------------------
-# AC 14 百服活动状态 #tagGCHundredServerAction
-
-class tagGCHundredServerAction(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("StartDate", c_int), # 开始时间time
- ("IsHundredServer", c_ubyte), # 是否百服服务器
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAC
- self.SubCmd = 0x14
- 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 = 0xAC
- self.SubCmd = 0x14
- self.StartDate = 0
- self.IsHundredServer = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCHundredServerAction)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 14 百服活动状态 //tagGCHundredServerAction:
- Cmd:%s,
- SubCmd:%s,
- StartDate:%d,
- IsHundredServer:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.StartDate,
- self.IsHundredServer
- )
- return DumpString
-
-
-m_NAtagGCHundredServerAction=tagGCHundredServerAction()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHundredServerAction.Cmd,m_NAtagGCHundredServerAction.SubCmd))] = m_NAtagGCHundredServerAction
-
-
-#------------------------------------------------------
# AC 01 通知领地争夺占领情况 #tagGCManorWarInfo
class tagGCManorInfo(Structure):
@@ -4529,6 +4898,293 @@
m_NAtagGCManorWarInfo=tagGCManorWarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo
+
+
+#------------------------------------------------------
+# AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
+
+class tagGCMultiExpRateTime(Structure):
+ StartTime = "" #(char StartTime[5])// 开始时间 H:M
+ EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ return _pos
+
+ def Clear(self):
+ self.StartTime = ""
+ self.EndtTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 5
+ length += 5
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 5, self.StartTime)
+ data = CommFunc.WriteString(data, 5, self.EndtTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ StartTime:%s,
+ EndtTime:%s
+ '''\
+ %(
+ self.StartTime,
+ self.EndtTime
+ )
+ return DumpString
+
+
+class tagGCMultiExpRateInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
+ ActivityTime = list() #(vector<tagGCMultiExpRateTime> ActivityTime)//活动时间
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ AddExpRate = 0 #(DWORD AddExpRate)// 增加的经验倍率,万分率
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x06
+ 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.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActivityTimeCount):
+ temActivityTime = tagGCMultiExpRateTime()
+ _pos = temActivityTime.ReadData(_lpData, _pos)
+ self.ActivityTime.append(temActivityTime)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddExpRate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x06
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ActivityTimeCount = 0
+ self.ActivityTime = list()
+ self.LimitLV = 0
+ self.AddExpRate = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ for i in range(self.ActivityTimeCount):
+ length += self.ActivityTime[i].GetLength()
+ length += 2
+ length += 4
+
+ 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.ActivityTimeCount)
+ for i in range(self.ActivityTimeCount):
+ data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteDWORD(data, self.AddExpRate)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ActivityTimeCount:%d,
+ ActivityTime:%s,
+ LimitLV:%d,
+ AddExpRate:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ActivityTimeCount,
+ "...",
+ self.LimitLV,
+ self.AddExpRate
+ )
+ return DumpString
+
+
+m_NAtagGCMultiExpRateInfo=tagGCMultiExpRateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiExpRateInfo.Head.Cmd,m_NAtagGCMultiExpRateInfo.Head.SubCmd))] = m_NAtagGCMultiExpRateInfo
+
+
+#------------------------------------------------------
+# AC 0A 多倍修行点活动信息 #tagGCMultiRealmPointInfo
+
+class tagGCMultiRealmPointInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ Multiple = 0 #(BYTE Multiple)// 倍数
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0A
+ 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.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0A
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.Multiple = 0
+ self.LimitLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+
+ 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.Multiple)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ Multiple:%d,
+ LimitLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.Multiple,
+ self.LimitLV
+ )
+ return DumpString
+
+
+m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
+
+
+#------------------------------------------------------
+# AC 05 红包删除 #tagGCRedPacketDel
+
+class tagGCRedPacketDel(Structure):
+ Head = tagHead()
+ Cnt = 0 #(DWORD Cnt)// 个数
+ DelRedPacketID = list() #(vector<DWORD> DelRedPacketID)// 红包ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.Cnt):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.DelRedPacketID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x05
+ self.Cnt = 0
+ self.DelRedPacketID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4 * self.Cnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteDWORD(data, self.DelRedPacketID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ DelRedPacketID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCRedPacketDel=tagGCRedPacketDel()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRedPacketDel.Head.Cmd,m_NAtagGCRedPacketDel.Head.SubCmd))] = m_NAtagGCRedPacketDel
#------------------------------------------------------
@@ -5650,6 +6306,136 @@
m_NAtagGCSocialRefreshType=tagGCSocialRefreshType()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSocialRefreshType.Cmd,m_NAtagGCSocialRefreshType.SubCmd))] = m_NAtagGCSocialRefreshType
+
+
+#------------------------------------------------------
+#B3 10 语音聊天 #tagGCVoiceChat
+
+class tagGCVoiceChat(Structure):
+ Head = tagHead()
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ SrcNameLen = 0 #(BYTE SrcNameLen)
+ SrcName = "" #(String SrcName)//size = SrcNameLen
+ PlayerID = 0 #(DWORD PlayerID)
+ ToNameLen = 0 #(BYTE ToNameLen)
+ ToName = "" #(String ToName)//size = ToNameLen
+ ToPlayerID = 0 #(DWORD ToPlayerID)
+ Len = 0 #(WORD Len)
+ Content = list() #(vector<BYTE> Content)//size = Len
+ ExtraValue = 0 #(DWORD ExtraValue)//附加值
+ Extras = "" #(char Extras[256])//附加值列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SrcNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SrcName,_pos = CommFunc.ReadString(_lpData, _pos,self.SrcNameLen)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ToNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ToName,_pos = CommFunc.ReadString(_lpData, _pos,self.ToNameLen)
+ self.ToPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.Content.append(value)
+ self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x10
+ self.ChannelType = 0
+ self.SrcNameLen = 0
+ self.SrcName = ""
+ self.PlayerID = 0
+ self.ToNameLen = 0
+ self.ToName = ""
+ self.ToPlayerID = 0
+ self.Len = 0
+ self.Content = list()
+ self.ExtraValue = 0
+ self.Extras = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += len(self.SrcName)
+ length += 4
+ length += 1
+ length += len(self.ToName)
+ length += 4
+ length += 2
+ length += 1 * self.Len
+ length += 4
+ length += 256
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ChannelType)
+ data = CommFunc.WriteBYTE(data, self.SrcNameLen)
+ data = CommFunc.WriteString(data, self.SrcNameLen, self.SrcName)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.ToNameLen)
+ data = CommFunc.WriteString(data, self.ToNameLen, self.ToName)
+ data = CommFunc.WriteDWORD(data, self.ToPlayerID)
+ data = CommFunc.WriteWORD(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteBYTE(data, self.Content[i])
+ data = CommFunc.WriteDWORD(data, self.ExtraValue)
+ data = CommFunc.WriteString(data, 256, self.Extras)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ChannelType:%d,
+ SrcNameLen:%d,
+ SrcName:%s,
+ PlayerID:%d,
+ ToNameLen:%d,
+ ToName:%s,
+ ToPlayerID:%d,
+ Len:%d,
+ Content:%s,
+ ExtraValue:%d,
+ Extras:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ChannelType,
+ self.SrcNameLen,
+ self.SrcName,
+ self.PlayerID,
+ self.ToNameLen,
+ self.ToName,
+ self.ToPlayerID,
+ self.Len,
+ "...",
+ self.ExtraValue,
+ self.Extras
+ )
+ return DumpString
+
+
+m_NAtagGCVoiceChat=tagGCVoiceChat()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
#------------------------------------------------------
@@ -8000,6 +8786,118 @@
#------------------------------------------------------
+# A1 10 充值购买次数信息 #tagMCCoinToGoldCountInfo
+
+class tagMCCoinToGoldCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RecordID", c_ubyte),
+ ("TodayPayCount", c_ushort), # 今日已购买次数
+ ("TotalPayCount", c_int), # 累计总购买次数
+ ]
+
+ 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.RecordID = 0
+ self.TodayPayCount = 0
+ self.TotalPayCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCoinToGoldCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 10 充值购买次数信息 //tagMCCoinToGoldCountInfo:
+ RecordID:%d,
+ TodayPayCount:%d,
+ TotalPayCount:%d
+ '''\
+ %(
+ self.RecordID,
+ self.TodayPayCount,
+ self.TotalPayCount
+ )
+ return DumpString
+
+
+class tagMCCoinToGoldCountInfo(Structure):
+ Head = tagHead()
+ RecordCount = 0 #(BYTE RecordCount)
+ CTGCountInfoList = list() #(vector<tagMCCoinToGoldCount> CTGCountInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x10
+ 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):
+ temCTGCountInfoList = tagMCCoinToGoldCount()
+ _pos = temCTGCountInfoList.ReadData(_lpData, _pos)
+ self.CTGCountInfoList.append(temCTGCountInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x10
+ self.RecordCount = 0
+ self.CTGCountInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.RecordCount):
+ length += self.CTGCountInfoList[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.CTGCountInfoList[i].GetLength(), self.CTGCountInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RecordCount:%d,
+ CTGCountInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCoinToGoldCountInfo=tagMCCoinToGoldCountInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoinToGoldCountInfo.Head.Cmd,m_NAtagMCCoinToGoldCountInfo.Head.SubCmd))] = m_NAtagMCCoinToGoldCountInfo
+
+
+#------------------------------------------------------
#A1 06 点卷转化元宝充值记录 #tagMCCoinToGoldReport
class tagMCCoinToGoldReport(Structure):
@@ -8295,94 +9193,6 @@
#------------------------------------------------------
-#A1 04 玩家经验加成 #tagMCPlayerExpRate
-
-class tagMCPlayerExpRate(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SysExpRate", c_int), #系统经验
- ("VipExpRate", c_int), #VIP经验
- ("CaromExpRate", c_int), #连斩经验
- ("FightExpRate", c_int), #buff经验等
- ("ActionExpRate", c_int), #节日活动经验
- ("WorldAverageExpRate", c_int), #世界等级经验
- ("GameEventExpRate", c_int), #小游戏事件经验倍率
- ("WeiClientExpRate", c_int), #微端登录经验倍率
- ("NobleExpRate", c_int), #贵族经验倍率
- ("CommMapExpRate", c_int), #野外常规地图经验倍率
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA1
- self.SubCmd = 0x04
- 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 = 0xA1
- self.SubCmd = 0x04
- self.SysExpRate = 0
- self.VipExpRate = 0
- self.CaromExpRate = 0
- self.FightExpRate = 0
- self.ActionExpRate = 0
- self.WorldAverageExpRate = 0
- self.GameEventExpRate = 0
- self.WeiClientExpRate = 0
- self.NobleExpRate = 0
- self.CommMapExpRate = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCPlayerExpRate)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A1 04 玩家经验加成 //tagMCPlayerExpRate:
- Cmd:%s,
- SubCmd:%s,
- SysExpRate:%d,
- VipExpRate:%d,
- CaromExpRate:%d,
- FightExpRate:%d,
- ActionExpRate:%d,
- WorldAverageExpRate:%d,
- GameEventExpRate:%d,
- WeiClientExpRate:%d,
- NobleExpRate:%d,
- CommMapExpRate:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SysExpRate,
- self.VipExpRate,
- self.CaromExpRate,
- self.FightExpRate,
- self.ActionExpRate,
- self.WorldAverageExpRate,
- self.GameEventExpRate,
- self.WeiClientExpRate,
- self.NobleExpRate,
- self.CommMapExpRate
- )
- return DumpString
-
-
-m_NAtagMCPlayerExpRate=tagMCPlayerExpRate()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerExpRate.Cmd,m_NAtagMCPlayerExpRate.SubCmd))] = m_NAtagMCPlayerExpRate
-
-
-#------------------------------------------------------
# A1 24 玩家初始化扩展信息 #tagMCPlayerInfo
class tagMCPlayerInfo(Structure):
@@ -8502,6 +9312,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("MapID", c_ushort),
+ ("FuncLineID", c_ushort), #功能线路ID
]
def __init__(self):
@@ -8518,6 +9330,8 @@
def Clear(self):
self.Cmd = 0xA1
self.SubCmd = 0x26
+ self.MapID = 0
+ self.FuncLineID = 0
return
def GetLength(self):
@@ -8529,11 +9343,15 @@
def OutputString(self):
DumpString = '''//A1 26 准备切换地图 //tagMCPrepareChangeMap:
Cmd:%s,
- SubCmd:%s
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d
'''\
%(
self.Cmd,
- self.SubCmd
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID
)
return DumpString
@@ -8551,6 +9369,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("MapID", c_int),
+ ("FuncLineID", c_ushort), #功能线路ID
]
def __init__(self):
@@ -8568,6 +9387,7 @@
self.Cmd = 0xA1
self.SubCmd = 0x27
self.MapID = 0
+ self.FuncLineID = 0
return
def GetLength(self):
@@ -8580,12 +9400,14 @@
DumpString = '''//A1 27 开始切换地图 //tagMCStartChangeMap:
Cmd:%s,
SubCmd:%s,
- MapID:%d
+ MapID:%d,
+ FuncLineID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.MapID
+ self.MapID,
+ self.FuncLineID
)
return DumpString
@@ -9002,7 +9824,8 @@
_pack_ = 1
_fields_ = [
("Type", c_ubyte), #14铜钱,15经验
- ("BuyCnt", c_ubyte), #已购买次数
+ ("BuyCnt", c_ubyte), #今日已购买次数
+ ("HistoryBuyCnt", c_ubyte), #历史已购买次数
("LastFreeTime", c_int), #上次的免费时间
]
@@ -9018,6 +9841,7 @@
def Clear(self):
self.Type = 0
self.BuyCnt = 0
+ self.HistoryBuyCnt = 0
self.LastFreeTime = 0
return
@@ -9031,11 +9855,13 @@
DumpString = '''//A3 30 购买魔魂铜钱经验什么的通知 //tagMCBuySomething:
Type:%d,
BuyCnt:%d,
+ HistoryBuyCnt:%d,
LastFreeTime:%d
'''\
%(
self.Type,
self.BuyCnt,
+ self.HistoryBuyCnt,
self.LastFreeTime
)
return DumpString
@@ -9105,6 +9931,114 @@
m_NAtagMCBuySomething=tagMCBuySomething()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBuySomething.Head.Cmd,m_NAtagMCBuySomething.Head.SubCmd))] = m_NAtagMCBuySomething
+
+
+#------------------------------------------------------
+# A3 17 全身属性激活数量通知 #tagMCAllEquipAttrActiveInfo
+
+class tagMCEquipActiveInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Type", c_ubyte), # 0强化 1星数
+ ("Cnt", c_int), # 激活数量
+ ]
+
+ 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.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEquipActiveInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 17 全身属性激活数量通知 //tagMCAllEquipAttrActiveInfo:
+ Type:%d,
+ Cnt:%d
+ '''\
+ %(
+ self.Type,
+ self.Cnt
+ )
+ return DumpString
+
+
+class tagMCAllEquipAttrActiveInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 个数
+ ActiveInfo = list() #(vector<tagMCEquipActiveInfo> ActiveInfo)//信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x17
+ 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):
+ temActiveInfo = tagMCEquipActiveInfo()
+ _pos = temActiveInfo.ReadData(_lpData, _pos)
+ self.ActiveInfo.append(temActiveInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x17
+ self.Count = 0
+ self.ActiveInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.ActiveInfo[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.ActiveInfo[i].GetLength(), self.ActiveInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ ActiveInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCAllEquipAttrActiveInfo=tagMCAllEquipAttrActiveInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllEquipAttrActiveInfo.Head.Cmd,m_NAtagMCAllEquipAttrActiveInfo.Head.SubCmd))] = m_NAtagMCAllEquipAttrActiveInfo
#------------------------------------------------------
@@ -9304,95 +10238,18 @@
#------------------------------------------------------
-# A3 27 玩家命格信息 #tagMCBirthChartInfo
+#A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt
-class tagMCBirthChartInfo(Structure):
- Head = tagHead()
- OpenState = 0 #(DWORD OpenState)//命格孔状态, 按索引表示激活状态
- Count = 0 #(BYTE Count)// 命格孔信息数
- BirthChartDataList = list() #(vector<DWORD> BirthChartDataList)// 命格孔数据信息, 数据与背包数据相同
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.OpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.BirthChartDataList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x27
- self.OpenState = 0
- self.Count = 0
- self.BirthChartDataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 4 * self.Count
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.OpenState)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteDWORD(data, self.BirthChartDataList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- OpenState:%d,
- Count:%d,
- BirthChartDataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.OpenState,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBirthChartInfo=tagMCBirthChartInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBirthChartInfo.Head.Cmd,m_NAtagMCBirthChartInfo.Head.SubCmd))] = m_NAtagMCBirthChartInfo
-
-
-#------------------------------------------------------
-# A3 47 当前精血和获取次数信息 #tagMCBloodAndGetNumInfo
-
-class tagMCBloodAndGetNumInfo(Structure):
+class tagMCBossCntInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Blood", c_int), # 精血
- ("GetNum", c_int), # 当日获取次数
+ ("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
+ ("KillCnt", c_ubyte), #击杀次数
+ ("ItemAddCnt", c_ubyte), #物品增加次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x47
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -9401,45 +10258,35 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x47
- self.Blood = 0
- self.GetNum = 0
+ self.BossType = 0
+ self.KillCnt = 0
+ self.ItemAddCnt = 0
return
def GetLength(self):
- return sizeof(tagMCBloodAndGetNumInfo)
+ return sizeof(tagMCBossCntInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 47 当前精血和获取次数信息 //tagMCBloodAndGetNumInfo:
- Cmd:%s,
- SubCmd:%s,
- Blood:%d,
- GetNum:%d
+ DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
+ BossType:%d,
+ KillCnt:%d,
+ ItemAddCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Blood,
- self.GetNum
+ self.BossType,
+ self.KillCnt,
+ self.ItemAddCnt
)
return DumpString
-m_NAtagMCBloodAndGetNumInfo=tagMCBloodAndGetNumInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBloodAndGetNumInfo.Cmd,m_NAtagMCBloodAndGetNumInfo.SubCmd))] = m_NAtagMCBloodAndGetNumInfo
-
-
-#------------------------------------------------------
-#A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt
-
class tagMCBOSSAttactCnt(Structure):
Head = tagHead()
- DataSize = 0 #(DWORD DataSize)
- KillCntInfo = "" #(String KillCntInfo)//'{编号:击杀次数}'
+ Cnt = 0 #(BYTE Cnt)
+ KillCntInfoList = list() #(vector<tagMCBossCntInfo> KillCntInfoList)
data = None
def __init__(self):
@@ -9451,8 +10298,11 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.KillCntInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temKillCntInfoList = tagMCBossCntInfo()
+ _pos = temKillCntInfoList.ReadData(_lpData, _pos)
+ self.KillCntInfoList.append(temKillCntInfoList)
return _pos
def Clear(self):
@@ -9460,35 +10310,37 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0xB7
- self.DataSize = 0
- self.KillCntInfo = ""
+ self.Cnt = 0
+ self.KillCntInfoList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 4
- length += len(self.KillCntInfo)
+ length += 1
+ for i in range(self.Cnt):
+ length += self.KillCntInfoList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.KillCntInfo)
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.KillCntInfoList[i].GetLength(), self.KillCntInfoList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- DataSize:%d,
- KillCntInfo:%s
+ Cnt:%d,
+ KillCntInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.DataSize,
- self.KillCntInfo
+ self.Cnt,
+ "..."
)
return DumpString
@@ -9667,119 +10519,6 @@
m_NAtagMCBuySomethingReward=tagMCBuySomethingReward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBuySomethingReward.Cmd,m_NAtagMCBuySomethingReward.SubCmd))] = m_NAtagMCBuySomethingReward
-
-
-#------------------------------------------------------
-# A3 B5 通知收集装备信息 #tagMCCollectEquipInfo
-
-class tagMCCollectEquipInfo(Structure):
- Head = tagHead()
- DataSize = 0 #(DWORD DataSize)
- CollectData = "" #(String CollectData)//收集记录
- ActiveSize = 0 #(DWORD ActiveSize)
- ActiveData = "" #(String ActiveData)//属性激活记录
- GoalDataSize = 0 #(DWORD GoalDataSize)
- GoalCollectData = "" #(String GoalCollectData)//目标收集记录
- GoalActiveData = 0 #(DWORD GoalActiveData)//目标属性激活记录
- GoaAwardSize = 0 #(DWORD GoaAwardSize)
- GoalAwardData = "" #(String GoalAwardData)//目标收集领奖记录
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xB5
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CollectData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
- self.ActiveSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ActiveData,_pos = CommFunc.ReadString(_lpData, _pos,self.ActiveSize)
- self.GoalDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GoalCollectData,_pos = CommFunc.ReadString(_lpData, _pos,self.GoalDataSize)
- self.GoalActiveData,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GoaAwardSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GoalAwardData,_pos = CommFunc.ReadString(_lpData, _pos,self.GoaAwardSize)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xB5
- self.DataSize = 0
- self.CollectData = ""
- self.ActiveSize = 0
- self.ActiveData = ""
- self.GoalDataSize = 0
- self.GoalCollectData = ""
- self.GoalActiveData = 0
- self.GoaAwardSize = 0
- self.GoalAwardData = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += len(self.CollectData)
- length += 4
- length += len(self.ActiveData)
- length += 4
- length += len(self.GoalCollectData)
- length += 4
- length += 4
- length += len(self.GoalAwardData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.CollectData)
- data = CommFunc.WriteDWORD(data, self.ActiveSize)
- data = CommFunc.WriteString(data, self.ActiveSize, self.ActiveData)
- data = CommFunc.WriteDWORD(data, self.GoalDataSize)
- data = CommFunc.WriteString(data, self.GoalDataSize, self.GoalCollectData)
- data = CommFunc.WriteDWORD(data, self.GoalActiveData)
- data = CommFunc.WriteDWORD(data, self.GoaAwardSize)
- data = CommFunc.WriteString(data, self.GoaAwardSize, self.GoalAwardData)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- DataSize:%d,
- CollectData:%s,
- ActiveSize:%d,
- ActiveData:%s,
- GoalDataSize:%d,
- GoalCollectData:%s,
- GoalActiveData:%d,
- GoaAwardSize:%d,
- GoalAwardData:%s
- '''\
- %(
- self.Head.OutputString(),
- self.DataSize,
- self.CollectData,
- self.ActiveSize,
- self.ActiveData,
- self.GoalDataSize,
- self.GoalCollectData,
- self.GoalActiveData,
- self.GoaAwardSize,
- self.GoalAwardData
- )
- return DumpString
-
-
-m_NAtagMCCollectEquipInfo=tagMCCollectEquipInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectEquipInfo.Head.Cmd,m_NAtagMCCollectEquipInfo.Head.SubCmd))] = m_NAtagMCCollectEquipInfo
#------------------------------------------------------
@@ -10085,6 +10824,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("CurValue", c_int), # 当前总活跃度
+ ("RealmPoint", c_int), # 可领取修行点
("StageIndex", c_ubyte), # 当前阶段索引
("AwardRecord", c_int), # 领奖记录 按位存储
]
@@ -10104,6 +10844,7 @@
self.Cmd = 0xA3
self.SubCmd = 0x33
self.CurValue = 0
+ self.RealmPoint = 0
self.StageIndex = 0
self.AwardRecord = 0
return
@@ -10119,6 +10860,7 @@
Cmd:%s,
SubCmd:%s,
CurValue:%d,
+ RealmPoint:%d,
StageIndex:%d,
AwardRecord:%d
'''\
@@ -10126,6 +10868,7 @@
self.Cmd,
self.SubCmd,
self.CurValue,
+ self.RealmPoint,
self.StageIndex,
self.AwardRecord
)
@@ -10134,66 +10877,6 @@
m_NAtagMCDailyActivityInfoList=tagMCDailyActivityInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActivityInfoList.Cmd,m_NAtagMCDailyActivityInfoList.SubCmd))] = m_NAtagMCDailyActivityInfoList
-
-
-#------------------------------------------------------
-#A3 A2 每日一购购物记录 # tagMCDailyGoldShop
-
-class tagMCDailyGoldShop(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BuyRecord", c_int), # 当日购买记录, 按二进制位表示是否购买对应索引物品,0-未购买,1-已购买
- ("BuyCnt", c_int), # 累积购买次数
- ("AwardRecord", c_int), # 累积购买次数奖励记录
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xA2
- 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 = 0xA2
- self.BuyRecord = 0
- self.BuyCnt = 0
- self.AwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDailyGoldShop)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 A2 每日一购购物记录 // tagMCDailyGoldShop:
- Cmd:%s,
- SubCmd:%s,
- BuyRecord:%d,
- BuyCnt:%d,
- AwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BuyRecord,
- self.BuyCnt,
- self.AwardRecord
- )
- return DumpString
-
-
-m_NAtagMCDailyGoldShop=tagMCDailyGoldShop()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGoldShop.Cmd,m_NAtagMCDailyGoldShop.SubCmd))] = m_NAtagMCDailyGoldShop
#------------------------------------------------------
@@ -10208,6 +10891,7 @@
("ReplenishSignCount", c_ubyte), # 可以补签天数
("IsSign", c_ubyte), #当天是否已经签到,发送0和1
("IsFrist", c_ubyte), #是否是第一个月
+ ("TotalSignCount", c_ushort), #累计总签到天数
]
def __init__(self):
@@ -10228,6 +10912,7 @@
self.ReplenishSignCount = 0
self.IsSign = 0
self.IsFrist = 0
+ self.TotalSignCount = 0
return
def GetLength(self):
@@ -10243,7 +10928,8 @@
DaySignCount:%d,
ReplenishSignCount:%d,
IsSign:%d,
- IsFrist:%d
+ IsFrist:%d,
+ TotalSignCount:%d
'''\
%(
self.Cmd,
@@ -10251,7 +10937,8 @@
self.DaySignCount,
self.ReplenishSignCount,
self.IsSign,
- self.IsFrist
+ self.IsFrist,
+ self.TotalSignCount
)
return DumpString
@@ -10261,20 +10948,21 @@
#------------------------------------------------------
-# A3 B6 通知是否参与过天降钻石 #tagMCDiceRecord
+# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
-class tagMCDiceRecord(Structure):
+class tagMCDogzHelpbattleState(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("IsJoin", c_ubyte), #是否参加过
+ ("DogzID", c_ubyte), # 神兽ID
+ ("BatteState", c_ubyte), #是否已助战, 0否1是
]
def __init__(self):
self.Clear()
self.Cmd = 0xA3
- self.SubCmd = 0xB6
+ self.SubCmd = 0xC1
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -10284,32 +10972,179 @@
def Clear(self):
self.Cmd = 0xA3
- self.SubCmd = 0xB6
- self.IsJoin = 0
+ self.SubCmd = 0xC1
+ self.DogzID = 0
+ self.BatteState = 0
return
def GetLength(self):
- return sizeof(tagMCDiceRecord)
+ return sizeof(tagMCDogzHelpbattleState)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 B6 通知是否参与过天降钻石 //tagMCDiceRecord:
+ DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
Cmd:%s,
SubCmd:%s,
- IsJoin:%d
+ DogzID:%d,
+ BatteState:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsJoin
+ self.DogzID,
+ self.BatteState
)
return DumpString
-m_NAtagMCDiceRecord=tagMCDiceRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceRecord.Cmd,m_NAtagMCDiceRecord.SubCmd))] = m_NAtagMCDiceRecord
+m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
+
+
+#------------------------------------------------------
+# A3 C0 神兽信息 #tagMCDogzInfo
+
+class tagMCDogzInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0xC0
+ 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 = 0xC0
+ self.BuyHelpbattleCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDogzInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BuyHelpbattleCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BuyHelpbattleCount
+ )
+ return DumpString
+
+
+m_NAtagMCDogzInfo=tagMCDogzInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
+
+
+#------------------------------------------------------
+# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
+
+class tagMCEquipDecomposeInfo(Structure):
+ Head = tagHead()
+ LV = 0 #(WORD LV)// 等级
+ Exp = 0 #(DWORD Exp)// 升级经验
+ Seting = 0 #(DWORD Seting)// 操作数据记录
+ DecomposeCnt = 0 #(BYTE DecomposeCnt)// 分解件数进度
+ GetItemLen = 0 #(WORD GetItemLen)
+ GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x1C
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Seting,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.DecomposeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x1C
+ self.LV = 0
+ self.Exp = 0
+ self.Seting = 0
+ self.DecomposeCnt = 0
+ self.GetItemLen = 0
+ self.GetItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ length += len(self.GetItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.Exp)
+ data = CommFunc.WriteDWORD(data, self.Seting)
+ data = CommFunc.WriteBYTE(data, self.DecomposeCnt)
+ data = CommFunc.WriteWORD(data, self.GetItemLen)
+ data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ LV:%d,
+ Exp:%d,
+ Seting:%d,
+ DecomposeCnt:%d,
+ GetItemLen:%d,
+ GetItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.LV,
+ self.Exp,
+ self.Seting,
+ self.DecomposeCnt,
+ self.GetItemLen,
+ self.GetItemData
+ )
+ return DumpString
+
+
+m_NAtagMCEquipDecomposeInfo=tagMCEquipDecomposeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipDecomposeInfo.Head.Cmd,m_NAtagMCEquipDecomposeInfo.Head.SubCmd))] = m_NAtagMCEquipDecomposeInfo
#------------------------------------------------------
@@ -10606,118 +11441,6 @@
#------------------------------------------------------
-# A3 45 转生灵力信息 #tagMCExchangeReikiCnt
-
-class tagMCExchangeReikiCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ExCnt", c_ubyte), #今日降级兑换灵力次数
- ("AddChangeReikiCnt", c_ubyte), #增加的兑换灵力次数
- ("CurReiki", c_int), #当前灵力
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x45
- 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 = 0x45
- self.ExCnt = 0
- self.AddChangeReikiCnt = 0
- self.CurReiki = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCExchangeReikiCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 45 转生灵力信息 //tagMCExchangeReikiCnt:
- Cmd:%s,
- SubCmd:%s,
- ExCnt:%d,
- AddChangeReikiCnt:%d,
- CurReiki:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ExCnt,
- self.AddChangeReikiCnt,
- self.CurReiki
- )
- return DumpString
-
-
-m_NAtagMCExchangeReikiCnt=tagMCExchangeReikiCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeReikiCnt.Cmd,m_NAtagMCExchangeReikiCnt.SubCmd))] = m_NAtagMCExchangeReikiCnt
-
-
-#------------------------------------------------------
-#A3 A4 表情包开通状态#tagMCFacePackageState
-
-class tagMCFacePackageState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PackageInfo", c_int), # 按二进制位标示表情包开启状态
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xA4
- 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 = 0xA4
- self.PackageInfo = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFacePackageState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 A4 表情包开通状态//tagMCFacePackageState:
- Cmd:%s,
- SubCmd:%s,
- PackageInfo:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PackageInfo
- )
- return DumpString
-
-
-m_NAtagMCFacePackageState=tagMCFacePackageState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFacePackageState.Cmd,m_NAtagMCFacePackageState.SubCmd))] = m_NAtagMCFacePackageState
-
-
-#------------------------------------------------------
# A3 16 仙盟活跃信息通知 #tagMCFamilyActivityInfo
class tagMCFamilyActionCnt(Structure):
@@ -10835,18 +11558,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
-class tagMCFBEncourageInfo(Structure):
+class tagMCFBEncourageCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LV", c_ubyte), # 当前鼓舞等级
+ ("MoneyType", c_ubyte), # 金钱类型
+ ("EncourageCnt", c_ubyte), # 当前鼓舞次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -10855,33 +11575,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
- self.LV = 0
+ self.MoneyType = 0
+ self.EncourageCnt = 0
return
def GetLength(self):
- return sizeof(tagMCFBEncourageInfo)
+ return sizeof(tagMCFBEncourageCnt)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo:
- Cmd:%s,
- SubCmd:%s,
- LV:%d
+ MoneyType:%d,
+ EncourageCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.LV
+ self.MoneyType,
+ self.EncourageCnt
+ )
+ return DumpString
+
+
+class tagMCFBEncourageInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//
+ InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFBEncourageCnt()
+ _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 = 0x0A
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
)
return DumpString
m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo
#------------------------------------------------------
@@ -11005,6 +11784,121 @@
m_NAtagMCFBWipeOutData=tagMCFBWipeOutData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBWipeOutData.Head.Cmd,m_NAtagMCFBWipeOutData.Head.SubCmd))] = m_NAtagMCFBWipeOutData
+
+
+#------------------------------------------------------
+# A3 18 极品白拿信息 #tagMCFreeGoodsInfo
+
+class tagMCFreeGoods(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ID", c_ubyte), # 礼包ID
+ ("BuyState", c_int), # 购买状态 0-未购买 1-已领返还 time值-购买时间
+ ]
+
+ 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.ID = 0
+ self.BuyState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFreeGoods)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 18 极品白拿信息 //tagMCFreeGoodsInfo:
+ ID:%d,
+ BuyState:%d
+ '''\
+ %(
+ self.ID,
+ self.BuyState
+ )
+ return DumpString
+
+
+class tagMCFreeGoodsInfo(Structure):
+ Head = tagHead()
+ OpenTime = 0 #(DWORD OpenTime)// 活动开启时间
+ Count = 0 #(BYTE Count)// 个数
+ FreeGoodsList = list() #(vector<tagMCFreeGoods> FreeGoodsList)// 信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OpenTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temFreeGoodsList = tagMCFreeGoods()
+ _pos = temFreeGoodsList.ReadData(_lpData, _pos)
+ self.FreeGoodsList.append(temFreeGoodsList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x18
+ self.OpenTime = 0
+ self.Count = 0
+ self.FreeGoodsList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.FreeGoodsList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OpenTime)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.FreeGoodsList[i].GetLength(), self.FreeGoodsList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OpenTime:%d,
+ Count:%d,
+ FreeGoodsList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OpenTime,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFreeGoodsInfo=tagMCFreeGoodsInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFreeGoodsInfo.Head.Cmd,m_NAtagMCFreeGoodsInfo.Head.SubCmd))] = m_NAtagMCFreeGoodsInfo
#------------------------------------------------------
@@ -11290,19 +12184,15 @@
#------------------------------------------------------
# A3 37 投资理财信息 #tagMCGoldInvestInfo
-class tagMCLVInvestReward(Structure):
+class tagMCInvestReward(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RewardLV", c_ushort), # 回报等级
- ("RewardValue", c_int), # 该等级已领取回报额度,0可认为未领取
+ ("RewardIndex", c_ushort), # 索引
+ ("RewardValue", c_ubyte), # 该等级已领取数据,0可认为未领取
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x37
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11311,29 +12201,23 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x37
- self.RewardLV = 0
+ self.RewardIndex = 0
self.RewardValue = 0
return
def GetLength(self):
- return sizeof(tagMCLVInvestReward)
+ return sizeof(tagMCInvestReward)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 37 投资理财信息 //tagMCGoldInvestInfo:
- Cmd:%s,
- SubCmd:%s,
- RewardLV:%d,
+ RewardIndex:%d,
RewardValue:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.RewardLV,
+ self.RewardIndex,
self.RewardValue
)
return DumpString
@@ -11342,11 +12226,10 @@
class tagMCGoldInvestInfo(Structure):
Head = tagHead()
InvestType = 0 #(BYTE InvestType)// 投资类型
- ServerDay = 0 #(DWORD ServerDay)// 投资时的开服天数
+ CurDay = 0 #(DWORD CurDay)// 当前天数
InvestGold = 0 #(DWORD InvestGold)// 投资额度
- RewardRecord = 0 #(DWORD RewardRecord)// 回报领取记录, 按位表示每一档回报是否已领取
- LVRewardRecordCnt = 0 #(BYTE LVRewardRecordCnt)// 等级投资回报个数
- LVInvestRewardList = list() #(vector<tagMCLVInvestReward> LVInvestRewardList)// 等级投资回报记录
+ RewardRecordCnt = 0 #(BYTE RewardRecordCnt)// 投资回报个数
+ InvestRewardList = list() #(vector<tagMCInvestReward> InvestRewardList)// 投资回报记录
data = None
def __init__(self):
@@ -11359,14 +12242,13 @@
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ServerDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.InvestGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RewardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LVRewardRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.LVRewardRecordCnt):
- temLVInvestRewardList = tagMCLVInvestReward()
- _pos = temLVInvestRewardList.ReadData(_lpData, _pos)
- self.LVInvestRewardList.append(temLVInvestRewardList)
+ self.RewardRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RewardRecordCnt):
+ temInvestRewardList = tagMCInvestReward()
+ _pos = temInvestRewardList.ReadData(_lpData, _pos)
+ self.InvestRewardList.append(temInvestRewardList)
return _pos
def Clear(self):
@@ -11375,11 +12257,10 @@
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x37
self.InvestType = 0
- self.ServerDay = 0
+ self.CurDay = 0
self.InvestGold = 0
- self.RewardRecord = 0
- self.LVRewardRecordCnt = 0
- self.LVInvestRewardList = list()
+ self.RewardRecordCnt = 0
+ self.InvestRewardList = list()
return
def GetLength(self):
@@ -11388,10 +12269,9 @@
length += 1
length += 4
length += 4
- length += 4
length += 1
- for i in range(self.LVRewardRecordCnt):
- length += self.LVInvestRewardList[i].GetLength()
+ for i in range(self.RewardRecordCnt):
+ length += self.InvestRewardList[i].GetLength()
return length
@@ -11399,31 +12279,28 @@
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteBYTE(data, self.InvestType)
- data = CommFunc.WriteDWORD(data, self.ServerDay)
+ data = CommFunc.WriteDWORD(data, self.CurDay)
data = CommFunc.WriteDWORD(data, self.InvestGold)
- data = CommFunc.WriteDWORD(data, self.RewardRecord)
- data = CommFunc.WriteBYTE(data, self.LVRewardRecordCnt)
- for i in range(self.LVRewardRecordCnt):
- data = CommFunc.WriteString(data, self.LVInvestRewardList[i].GetLength(), self.LVInvestRewardList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RewardRecordCnt)
+ for i in range(self.RewardRecordCnt):
+ data = CommFunc.WriteString(data, self.InvestRewardList[i].GetLength(), self.InvestRewardList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
InvestType:%d,
- ServerDay:%d,
+ CurDay:%d,
InvestGold:%d,
- RewardRecord:%d,
- LVRewardRecordCnt:%d,
- LVInvestRewardList:%s
+ RewardRecordCnt:%d,
+ InvestRewardList:%s
'''\
%(
self.Head.OutputString(),
self.InvestType,
- self.ServerDay,
+ self.CurDay,
self.InvestGold,
- self.RewardRecord,
- self.LVRewardRecordCnt,
+ self.RewardRecordCnt,
"..."
)
return DumpString
@@ -11483,272 +12360,6 @@
m_NAtagMCGrabRedPacketCnt=tagMCGrabRedPacketCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGrabRedPacketCnt.Cmd,m_NAtagMCGrabRedPacketCnt.SubCmd))] = m_NAtagMCGrabRedPacketCnt
-
-
-#------------------------------------------------------
-#A3 07 该组玩家激活的卡片等级信息 #tagMCGroupMonsterTags
-
-class tagMCGroupMonsterTags(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MonsterTags1", c_int), #字典一中的数据(以数位存卡片等级)
- ("MonsterTags2", c_int), #字典二中的数据
- ("GroupIndex", c_ubyte), #怪物组别索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- 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 = 0xA3
- self.SubCmd = 0x07
- self.MonsterTags1 = 0
- self.MonsterTags2 = 0
- self.GroupIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCGroupMonsterTags)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 07 该组玩家激活的卡片等级信息 //tagMCGroupMonsterTags:
- Cmd:%s,
- SubCmd:%s,
- MonsterTags1:%d,
- MonsterTags2:%d,
- GroupIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MonsterTags1,
- self.MonsterTags2,
- self.GroupIndex
- )
- return DumpString
-
-
-m_NAtagMCGroupMonsterTags=tagMCGroupMonsterTags()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGroupMonsterTags.Cmd,m_NAtagMCGroupMonsterTags.SubCmd))] = m_NAtagMCGroupMonsterTags
-
-
-#------------------------------------------------------
-# A3 B1 守护激活信息 #tagMCGuardData
-
-class tagMCGuard(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GuardID", c_int), #守护ID
- ("StarLV", c_ubyte), # 星级(从0开始)
- ("ClassLV", c_ubyte), # 当前品质等级(0为未激活)
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xB1
- 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 = 0xB1
- self.GuardID = 0
- self.StarLV = 0
- self.ClassLV = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCGuard)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 B1 守护激活信息 //tagMCGuardData:
- Cmd:%s,
- SubCmd:%s,
- GuardID:%d,
- StarLV:%d,
- ClassLV:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GuardID,
- self.StarLV,
- self.ClassLV
- )
- return DumpString
-
-
-class tagMCGuardData(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)// 守护信息个数
- InfoList = list() #(vector<tagMCGuard> InfoList)// 守护信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xB1
- 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):
- temInfoList = tagMCGuard()
- _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 = 0xB1
- self.Count = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- 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.WriteBYTE(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_NAtagMCGuardData=tagMCGuardData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGuardData.Head.Cmd,m_NAtagMCGuardData.Head.SubCmd))] = m_NAtagMCGuardData
-
-
-#------------------------------------------------------
-# A3 29 魔方寻宝信息 #tagMCMagicTreasureInfo
-
-class tagMCMagicTreasureInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MTCnt", c_int), # 今日已寻宝次数
- ("GiftState", c_int), # 寻宝次数返利领取状态, 按位表示0-未领, 1-已领
- ("SpecialType", c_int), # 特殊寻宝活动类型
- ("CurLucky", c_int), # 当前幸运值
- ("LuckyTime", c_int), # 幸运寻宝开始时间, time值
- ("CurFreeCnt", c_ubyte), # 当前可用免费次数
- ("OLTotalFreeCnt", c_ubyte), # 今日在线时长总累计免费次数
- ("OLFreeTick", c_int), # 单次在线奖励次数累计时长, 毫秒
- ("OLFreeLastRefreshTick", c_int), # 上次刷新在线奖励寻宝次数tick
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x29
- 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 = 0x29
- self.MTCnt = 0
- self.GiftState = 0
- self.SpecialType = 0
- self.CurLucky = 0
- self.LuckyTime = 0
- self.CurFreeCnt = 0
- self.OLTotalFreeCnt = 0
- self.OLFreeTick = 0
- self.OLFreeLastRefreshTick = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMagicTreasureInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 29 魔方寻宝信息 //tagMCMagicTreasureInfo:
- Cmd:%s,
- SubCmd:%s,
- MTCnt:%d,
- GiftState:%d,
- SpecialType:%d,
- CurLucky:%d,
- LuckyTime:%d,
- CurFreeCnt:%d,
- OLTotalFreeCnt:%d,
- OLFreeTick:%d,
- OLFreeLastRefreshTick:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MTCnt,
- self.GiftState,
- self.SpecialType,
- self.CurLucky,
- self.LuckyTime,
- self.CurFreeCnt,
- self.OLTotalFreeCnt,
- self.OLFreeTick,
- self.OLFreeLastRefreshTick
- )
- return DumpString
-
-
-m_NAtagMCMagicTreasureInfo=tagMCMagicTreasureInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicTreasureInfo.Cmd,m_NAtagMCMagicTreasureInfo.SubCmd))] = m_NAtagMCMagicTreasureInfo
#------------------------------------------------------
@@ -11816,6 +12427,122 @@
m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
+
+
+#------------------------------------------------------
+# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
+
+class tagMCMagicWeaponInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MWID", c_int),
+ ("LV", c_ubyte),
+ ("Exp", c_int),
+ ("State", 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.MWID = 0
+ self.LV = 0
+ self.Exp = 0
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMagicWeaponInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 52 法宝等级信息 //tagMCMagicWeaponLVInfo:
+ MWID:%d,
+ LV:%d,
+ Exp:%d,
+ State:%d
+ '''\
+ %(
+ self.MWID,
+ self.LV,
+ self.Exp,
+ self.State
+ )
+ return DumpString
+
+
+class tagMCMagicWeaponLVInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCMagicWeaponInfo> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x52
+ 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):
+ temInfoList = tagMCMagicWeaponInfo()
+ _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 = 0x52
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ 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.WriteBYTE(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_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo
#------------------------------------------------------
@@ -12342,18 +13069,69 @@
#------------------------------------------------------
-#A3 AB 抽取图鉴卡片结果 #tagCMMonsterCardLottery
+# A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
-class tagCMMonsterCardLottery(Structure):
+class tagMCMWPrivilegeData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("PriID", c_int), # 特权ID
+ ("State", c_ubyte), #激活状态
+ ("CurValue", c_int), #当前总进度
+ ("GotValue", c_int), #已领取进度
+ ("ItemAwardState", 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.PriID = 0
+ self.State = 0
+ self.CurValue = 0
+ self.GotValue = 0
+ self.ItemAwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMWPrivilegeData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
+ PriID:%d,
+ State:%d,
+ CurValue:%d,
+ GotValue:%d,
+ ItemAwardState:%d
+ '''\
+ %(
+ self.PriID,
+ self.State,
+ self.CurValue,
+ self.GotValue,
+ self.ItemAwardState
+ )
+ return DumpString
+
+
+class tagMCMWPrivilegeDataInfo(Structure):
Head = tagHead()
- Count = 0 #(BYTE Count)//抽奖结果数
- ResultList = list() #(vector<DWORD> ResultList)//抽奖结果列表size = Count
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xAB
+ self.Head.SubCmd = 0x53
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -12361,24 +13139,26 @@
_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.ResultList.append(value)
+ temInfoList = tagMCMWPrivilegeData()
+ _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 = 0xAB
+ self.Head.SubCmd = 0x53
self.Count = 0
- self.ResultList = list()
+ self.InfoList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
- length += 4 * self.Count
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
return length
@@ -12387,14 +13167,14 @@
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.ResultList[i])
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
Count:%d,
- ResultList:%s
+ InfoList:%s
'''\
%(
self.Head.OutputString(),
@@ -12404,64 +13184,8 @@
return DumpString
-m_NAtagCMMonsterCardLottery=tagCMMonsterCardLottery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMonsterCardLottery.Head.Cmd,m_NAtagCMMonsterCardLottery.Head.SubCmd))] = m_NAtagCMMonsterCardLottery
-
-
-#------------------------------------------------------
-#A3 06 怪物图鉴馆等级,经验信息 #tagMCMonsterLabInfo
-
-class tagMCMonsterLabInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LabLV", c_int), #图鉴馆等级
- ("LabExp", c_int), #图鉴馆经验
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- 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 = 0xA3
- self.SubCmd = 0x06
- self.LabLV = 0
- self.LabExp = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMonsterLabInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 06 怪物图鉴馆等级,经验信息 //tagMCMonsterLabInfo:
- Cmd:%s,
- SubCmd:%s,
- LabLV:%d,
- LabExp:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LabLV,
- self.LabExp
- )
- return DumpString
-
-
-m_NAtagMCMonsterLabInfo=tagMCMonsterLabInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMonsterLabInfo.Cmd,m_NAtagMCMonsterLabInfo.SubCmd))] = m_NAtagMCMonsterLabInfo
+m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
#------------------------------------------------------
@@ -12470,16 +13194,12 @@
class tagMCNPCIDCollectionCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("NPCID", c_int), #NPCID
("CollectionCnt", c_ubyte), #已采集次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x26
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -12488,8 +13208,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x26
self.NPCID = 0
self.CollectionCnt = 0
return
@@ -12502,14 +13220,10 @@
def OutputString(self):
DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo:
- Cmd:%s,
- SubCmd:%s,
NPCID:%d,
CollectionCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.NPCID,
self.CollectionCnt
)
@@ -12586,18 +13300,91 @@
#A3 08 在线奖励信息 #tagMCOnlinePrize
class tagMCOnlinePrize(Structure):
+ Head = tagHead()
+ OnlineTime = 0 #(DWORD OnlineTime)//在线时间毫秒
+ Len = 0 #(BYTE Len)
+ PrizeInfo = list() #(vector<DWORD> PrizeInfo)//领奖记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PrizeInfo.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x08
+ self.OnlineTime = 0
+ self.Len = 0
+ self.PrizeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 4 * self.Len
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OnlineTime)
+ data = CommFunc.WriteBYTE(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OnlineTime:%d,
+ Len:%d,
+ PrizeInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OnlineTime,
+ self.Len,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCOnlinePrize=tagMCOnlinePrize()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrize.Head.Cmd,m_NAtagMCOnlinePrize.Head.SubCmd))] = m_NAtagMCOnlinePrize
+
+
+#------------------------------------------------------
+# A3 19 分包下载奖励记录 #tagMCPackDownloadRecord
+
+class tagMCPackDownloadRecord(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("OnlineTime", c_int), #在线时间毫秒
- ("PrizeInfo", c_int), #领奖记录
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
self.Clear()
self.Cmd = 0xA3
- self.SubCmd = 0x08
+ self.SubCmd = 0x19
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -12607,35 +13394,32 @@
def Clear(self):
self.Cmd = 0xA3
- self.SubCmd = 0x08
- self.OnlineTime = 0
- self.PrizeInfo = 0
+ self.SubCmd = 0x19
+ self.Record = 0
return
def GetLength(self):
- return sizeof(tagMCOnlinePrize)
+ return sizeof(tagMCPackDownloadRecord)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A3 08 在线奖励信息 //tagMCOnlinePrize:
+ DumpString = '''// A3 19 分包下载奖励记录 //tagMCPackDownloadRecord:
Cmd:%s,
SubCmd:%s,
- OnlineTime:%d,
- PrizeInfo:%d
+ Record:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.OnlineTime,
- self.PrizeInfo
+ self.Record
)
return DumpString
-m_NAtagMCOnlinePrize=tagMCOnlinePrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrize.Cmd,m_NAtagMCOnlinePrize.SubCmd))] = m_NAtagMCOnlinePrize
+m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
#------------------------------------------------------
@@ -12645,6 +13429,7 @@
FBID = 0 #(DWORD FBID)//fbId
EnterCnt = 0 #(WORD EnterCnt)//当日进入次数
RecoverCnt = 0 #(WORD RecoverCnt)//找回次数
+ ItemAddCnt = 0 #(WORD ItemAddCnt)//物品增加次数
PassGradeCnt = 0 #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
PassGrade = list() #(vector<DWORD> PassGrade)//副本线路对应星级值列表
data = None
@@ -12658,6 +13443,7 @@
self.FBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.EnterCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RecoverCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemAddCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PassGradeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PassGradeCnt):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
@@ -12668,6 +13454,7 @@
self.FBID = 0
self.EnterCnt = 0
self.RecoverCnt = 0
+ self.ItemAddCnt = 0
self.PassGradeCnt = 0
self.PassGrade = list()
return
@@ -12675,6 +13462,7 @@
def GetLength(self):
length = 0
length += 4
+ length += 2
length += 2
length += 2
length += 1
@@ -12687,6 +13475,7 @@
data = CommFunc.WriteDWORD(data, self.FBID)
data = CommFunc.WriteWORD(data, self.EnterCnt)
data = CommFunc.WriteWORD(data, self.RecoverCnt)
+ data = CommFunc.WriteWORD(data, self.ItemAddCnt)
data = CommFunc.WriteBYTE(data, self.PassGradeCnt)
for i in range(self.PassGradeCnt):
data = CommFunc.WriteDWORD(data, self.PassGrade[i])
@@ -12697,6 +13486,7 @@
FBID:%d,
EnterCnt:%d,
RecoverCnt:%d,
+ ItemAddCnt:%d,
PassGradeCnt:%d,
PassGrade:%s
'''\
@@ -12704,6 +13494,7 @@
self.FBID,
self.EnterCnt,
self.RecoverCnt,
+ self.ItemAddCnt,
self.PassGradeCnt,
"..."
)
@@ -12785,6 +13576,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("LVAwardGetRecord", c_int), # 按二进制位标示领取记录,每位对应的等级在配表中配置,服务端客户端对应
+ ("VIPAwardRecord", c_int), # 按二进制位标示vip领取记录,每位对应的等级在配表中配置,服务端客户端对应
]
def __init__(self):
@@ -12802,6 +13594,7 @@
self.Cmd = 0xA3
self.SubCmd = 0x0B
self.LVAwardGetRecord = 0
+ self.VIPAwardRecord = 0
return
def GetLength(self):
@@ -12814,12 +13607,14 @@
DumpString = '''//A3 0B 玩家等级奖励领取记录信息 //tagMCPlayerLVAwardGetRecord:
Cmd:%s,
SubCmd:%s,
- LVAwardGetRecord:%d
+ LVAwardGetRecord:%d,
+ VIPAwardRecord:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.LVAwardGetRecord
+ self.LVAwardGetRecord,
+ self.VIPAwardRecord
)
return DumpString
@@ -13024,58 +13819,6 @@
#------------------------------------------------------
-#A3 0E 玩家累计签到次数 # tagMCPlayerSignCntTotal
-
-class tagMCPlayerSignCntTotal(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SignCount", c_ubyte), # 累计签到次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x0E
- 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 = 0x0E
- self.SignCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCPlayerSignCntTotal)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 0E 玩家累计签到次数 // tagMCPlayerSignCntTotal:
- Cmd:%s,
- SubCmd:%s,
- SignCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SignCount
- )
- return DumpString
-
-
-m_NAtagMCPlayerSignCntTotal=tagMCPlayerSignCntTotal()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSignCntTotal.Cmd,m_NAtagMCPlayerSignCntTotal.SubCmd))] = m_NAtagMCPlayerSignCntTotal
-
-
-#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
class tagMCPlayerStoveMsg(Structure):
@@ -13136,18 +13879,21 @@
#------------------------------------------------------
-#A3 38 新符文系统符文信息#tagMCPropEnhanceInfo
+# A3 21 祈福丹药结果 #tagMCPrayElixirResult
-class tagPropEnhanceStone(Structure):
+class tagMCPrayElixirResult(Structure):
_pack_ = 1
_fields_ = [
- ("index", c_ubyte), #符文索引
- ("LV", c_ubyte), #当前等级
- ("Exp", c_int), #当前经验
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), # 物品ID
+ ("PrayCnt", c_ubyte), # 今日祈福次数
]
def __init__(self):
self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x21
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -13156,95 +13902,36 @@
return _pos + self.GetLength()
def Clear(self):
- self.index = 0
- self.LV = 0
- self.Exp = 0
+ self.Cmd = 0xA3
+ self.SubCmd = 0x21
+ self.ItemID = 0
+ self.PrayCnt = 0
return
def GetLength(self):
- return sizeof(tagPropEnhanceStone)
+ return sizeof(tagMCPrayElixirResult)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A3 38 新符文系统符文信息//tagMCPropEnhanceInfo:
- index:%d,
- LV:%d,
- Exp:%d
+ DumpString = '''// A3 21 祈福丹药结果 //tagMCPrayElixirResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ PrayCnt:%d
'''\
%(
- self.index,
- self.LV,
- self.Exp
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.PrayCnt
)
return DumpString
-class tagMCPropEnhanceInfo(Structure):
- Head = tagHead()
- count = 0 #(BYTE count)//符文信息个数
- InfoList = list() #(vector<tagPropEnhanceStone> InfoList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x38
- 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):
- temInfoList = tagPropEnhanceStone()
- _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 = 0x38
- self.count = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- 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.WriteBYTE(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_NAtagMCPropEnhanceInfo=tagMCPropEnhanceInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPropEnhanceInfo.Head.Cmd,m_NAtagMCPropEnhanceInfo.Head.SubCmd))] = m_NAtagMCPropEnhanceInfo
+m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
#------------------------------------------------------
@@ -13256,7 +13943,8 @@
("Index", c_ubyte), # 找回项索引
("RecoverCnt", c_ubyte), # 可找回次数
("ExtraCnt", c_ubyte), # VIP额外次数
- ("ExtraData", c_ubyte), # 额外参数
+ ("ExtraData", c_ubyte), # 额外参数1
+ ("ExtraData2", c_ubyte), # 额外参数2
]
def __init__(self):
@@ -13273,6 +13961,7 @@
self.RecoverCnt = 0
self.ExtraCnt = 0
self.ExtraData = 0
+ self.ExtraData2 = 0
return
def GetLength(self):
@@ -13286,13 +13975,15 @@
Index:%d,
RecoverCnt:%d,
ExtraCnt:%d,
- ExtraData:%d
+ ExtraData:%d,
+ ExtraData2:%d
'''\
%(
self.Index,
self.RecoverCnt,
self.ExtraCnt,
- self.ExtraData
+ self.ExtraData,
+ self.ExtraData2
)
return DumpString
@@ -13500,6 +14191,7 @@
EquipPlace = 0 #(BYTE EquipPlace)// 装备位
MaxStoneCount = 0 #(BYTE MaxStoneCount)// 最大孔数
StoneInfo = list() #(vector<DWORD> StoneInfo)// 孔内宝石信息
+ StoneBind = list() #(vector<BYTE> StoneBind)// 孔内宝石是否绑定
data = None
def __init__(self):
@@ -13513,12 +14205,16 @@
for i in range(self.MaxStoneCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.StoneInfo.append(value)
+ for i in range(self.MaxStoneCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.StoneBind.append(value)
return _pos
def Clear(self):
self.EquipPlace = 0
self.MaxStoneCount = 0
self.StoneInfo = list()
+ self.StoneBind = list()
return
def GetLength(self):
@@ -13526,6 +14222,7 @@
length += 1
length += 1
length += 4 * self.MaxStoneCount
+ length += 1 * self.MaxStoneCount
return length
@@ -13535,17 +14232,21 @@
data = CommFunc.WriteBYTE(data, self.MaxStoneCount)
for i in range(self.MaxStoneCount):
data = CommFunc.WriteDWORD(data, self.StoneInfo[i])
+ for i in range(self.MaxStoneCount):
+ data = CommFunc.WriteBYTE(data, self.StoneBind[i])
return data
def OutputString(self):
DumpString = '''
EquipPlace:%d,
MaxStoneCount:%d,
- StoneInfo:%s
+ StoneInfo:%s,
+ StoneBind:%s
'''\
%(
self.EquipPlace,
self.MaxStoneCount,
+ "...",
"..."
)
return DumpString
@@ -13672,10 +14373,49 @@
#------------------------------------------------------
#A3 42 成就完成领奖记录列表 #tagMCSuccessFinishAwardRecordList
+class tagMCSuccessFinishAwardRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RecordIndex", c_ushort), #第几个记录值 每个key存31个succid 0-30为0, 31-61为1..
+ ("Record", c_int), #对应是否领取值
+ ]
+
+ 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.RecordIndex = 0
+ self.Record = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSuccessFinishAwardRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//A3 42 成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
+ RecordIndex:%d,
+ Record:%d
+ '''\
+ %(
+ self.RecordIndex,
+ self.Record
+ )
+ return DumpString
+
+
class tagMCSuccessFinishAwardRecordList(Structure):
Head = tagHead()
- RecordCnt = 0 #(BYTE RecordCnt)//记录值对应个数, 每个key存31个succid
- RecordList = list() #(vector<DWORD> RecordList)//对应是否领取值列表
+ RecordCnt = 0 #(WORD RecordCnt)//记录个数
+ RecordList = list() #(vector<tagMCSuccessFinishAwardRecord> RecordList)//记录列表
data = None
def __init__(self):
@@ -13687,10 +14427,11 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.RecordCnt):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.RecordList.append(value)
+ temRecordList = tagMCSuccessFinishAwardRecord()
+ _pos = temRecordList.ReadData(_lpData, _pos)
+ self.RecordList.append(temRecordList)
return _pos
def Clear(self):
@@ -13705,17 +14446,18 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 1
- length += 4 * self.RecordCnt
+ length += 2
+ for i in range(self.RecordCnt):
+ length += self.RecordList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.RecordCnt)
+ data = CommFunc.WriteWORD(data, self.RecordCnt)
for i in range(self.RecordCnt):
- data = CommFunc.WriteDWORD(data, self.RecordList[i])
+ data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
return data
def OutputString(self):
@@ -13740,39 +14482,59 @@
# A3 40 成就信息列表 #tagMCSuccessInfoList
class tagMCSuccessInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("SuccID", c_int), #成就ID
- ("CntValue", c_int), #当前完成进度值
- ]
+ SuccType = 0 #(WORD SuccType)//成就类型
+ Len = 0 #(WORD Len)//条件长度
+ Condition = "" #(String Condition)//成就条件
+ CntValue = 0 #(DWORD CntValue)//当前完成进度值
+ data = None
def __init__(self):
self.Clear()
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.SuccType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Condition,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+ self.CntValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
def Clear(self):
- self.SuccID = 0
+ self.SuccType = 0
+ self.Len = 0
+ self.Condition = ""
self.CntValue = 0
return
def GetLength(self):
- return sizeof(tagMCSuccessInfo)
+ length = 0
+ length += 2
+ length += 2
+ length += len(self.Condition)
+ length += 4
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteWORD(data, self.SuccType)
+ data = CommFunc.WriteWORD(data, self.Len)
+ data = CommFunc.WriteString(data, self.Len, self.Condition)
+ data = CommFunc.WriteDWORD(data, self.CntValue)
+ return data
def OutputString(self):
- DumpString = '''// A3 40 成就信息列表 //tagMCSuccessInfoList:
- SuccID:%d,
+ DumpString = '''
+ SuccType:%d,
+ Len:%d,
+ Condition:%s,
CntValue:%d
'''\
%(
- self.SuccID,
+ self.SuccType,
+ self.Len,
+ self.Condition,
self.CntValue
)
return DumpString
@@ -14095,70 +14857,6 @@
#------------------------------------------------------
-#A3 32 通知魔方寻宝获得物品 #tagMCMagicTreasureGetItem
-
-class tagMCMagicTreasureGetItem(Structure):
- Head = tagHead()
- MTItemLen = 0 #(DWORD MTItemLen)
- MTItemData = "" #(String MTItemData)// 获得物品信息 [[物品1参数列表], [物品2参数列表], ...] ; 参数列表索引0为itemID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.MTItemLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MTItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.MTItemLen)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- self.MTItemLen = 0
- self.MTItemData = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += len(self.MTItemData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.MTItemLen)
- data = CommFunc.WriteString(data, self.MTItemLen, self.MTItemData)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- MTItemLen:%d,
- MTItemData:%s
- '''\
- %(
- self.Head.OutputString(),
- self.MTItemLen,
- self.MTItemData
- )
- return DumpString
-
-
-m_NAtagMCMagicTreasureGetItem=tagMCMagicTreasureGetItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicTreasureGetItem.Head.Cmd,m_NAtagMCMagicTreasureGetItem.Head.SubCmd))] = m_NAtagMCMagicTreasureGetItem
-
-
-#------------------------------------------------------
#A3 01 坐骑培养信息 #tagTrainHorseData
class tagMCHorseInfo(Structure):
@@ -14280,76 +14978,72 @@
#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
-class tagMCTreasureNumInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TreasureNum", c_ubyte), # 自定义的寻宝编号
- ("CurFreeCnt", c_ubyte), # 当前可用免费次数
- ("TodayFreeCnt", c_ubyte), # 今日已累计免费次数
- ("StartCalcFreeCntTime", c_int), # 开始计算免费次数时间time值
- ("IsPlayTreasure", c_ubyte), # 是否寻宝过,含免费次数
- ("IsPlayGoldTreasure", c_ubyte), # 是否钻石寻宝过
- ]
+class tagMCTreasureTypeInfo(Structure):
+ TreasureType = 0 #(BYTE TreasureType)//寻宝类型
+ LuckValue = 0 #(WORD LuckValue)//当前幸运值
+ IndexCount = 0 #(BYTE IndexCount)//索引个数
+ FreeCountTime = list() #(vector<DWORD> FreeCountTime)// 模式对应开始计算免费次数时间time值
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x51
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.FreeCountTime.append(value)
+ return _pos
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x51
- self.TreasureNum = 0
- self.CurFreeCnt = 0
- self.TodayFreeCnt = 0
- self.StartCalcFreeCntTime = 0
- self.IsPlayTreasure = 0
- self.IsPlayGoldTreasure = 0
+ self.TreasureType = 0
+ self.LuckValue = 0
+ self.IndexCount = 0
+ self.FreeCountTime = list()
return
def GetLength(self):
- return sizeof(tagMCTreasureNumInfo)
+ length = 0
+ length += 1
+ length += 2
+ length += 1
+ length += 4 * self.IndexCount
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TreasureType)
+ data = CommFunc.WriteWORD(data, self.LuckValue)
+ data = CommFunc.WriteBYTE(data, self.IndexCount)
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteDWORD(data, self.FreeCountTime[i])
+ return data
def OutputString(self):
- DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
- Cmd:%s,
- SubCmd:%s,
- TreasureNum:%d,
- CurFreeCnt:%d,
- TodayFreeCnt:%d,
- StartCalcFreeCntTime:%d,
- IsPlayTreasure:%d,
- IsPlayGoldTreasure:%d
+ DumpString = '''
+ TreasureType:%d,
+ LuckValue:%d,
+ IndexCount:%d,
+ FreeCountTime:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.TreasureNum,
- self.CurFreeCnt,
- self.TodayFreeCnt,
- self.StartCalcFreeCntTime,
- self.IsPlayTreasure,
- self.IsPlayGoldTreasure
+ self.TreasureType,
+ self.LuckValue,
+ self.IndexCount,
+ "..."
)
return DumpString
class tagMCTreasureInfo(Structure):
Head = tagHead()
- TreauserActionType = 0 #(DWORD TreauserActionType)// 当前寻宝活动类型, 默认0
- TreasuerNumInfoCnt = 0 #(BYTE TreasuerNumInfoCnt)// 寻宝编号信息数
- TreasuerNumInfo = list() #(vector<tagMCTreasureNumInfo> TreasuerNumInfo)// 寻宝编号信息列表
+ InfoCount = 0 #(BYTE InfoCount)// 寻宝类型信息数
+ TreasuerInfoList = list() #(vector<tagMCTreasureTypeInfo> TreasuerInfoList)// 寻宝类型信息列表
data = None
def __init__(self):
@@ -14361,12 +15055,11 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.TreauserActionType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TreasuerNumInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TreasuerNumInfoCnt):
- temTreasuerNumInfo = tagMCTreasureNumInfo()
- _pos = temTreasuerNumInfo.ReadData(_lpData, _pos)
- self.TreasuerNumInfo.append(temTreasuerNumInfo)
+ self.InfoCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.InfoCount):
+ temTreasuerInfoList = tagMCTreasureTypeInfo()
+ _pos = temTreasuerInfoList.ReadData(_lpData, _pos)
+ self.TreasuerInfoList.append(temTreasuerInfoList)
return _pos
def Clear(self):
@@ -14374,41 +15067,36 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x51
- self.TreauserActionType = 0
- self.TreasuerNumInfoCnt = 0
- self.TreasuerNumInfo = list()
+ self.InfoCount = 0
+ self.TreasuerInfoList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 4
length += 1
- for i in range(self.TreasuerNumInfoCnt):
- length += self.TreasuerNumInfo[i].GetLength()
+ for i in range(self.InfoCount):
+ length += self.TreasuerInfoList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.TreauserActionType)
- data = CommFunc.WriteBYTE(data, self.TreasuerNumInfoCnt)
- for i in range(self.TreasuerNumInfoCnt):
- data = CommFunc.WriteString(data, self.TreasuerNumInfo[i].GetLength(), self.TreasuerNumInfo[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.InfoCount)
+ for i in range(self.InfoCount):
+ data = CommFunc.WriteString(data, self.TreasuerInfoList[i].GetLength(), self.TreasuerInfoList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- TreauserActionType:%d,
- TreasuerNumInfoCnt:%d,
- TreasuerNumInfo:%s
+ InfoCount:%d,
+ TreasuerInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.TreauserActionType,
- self.TreasuerNumInfoCnt,
+ self.InfoCount,
"..."
)
return DumpString
@@ -14423,9 +15111,10 @@
class tagMCTreasureResult(Structure):
Head = tagHead()
- AddTreasureMoney = 0 #(WORD AddTreasureMoney)// 本次寻宝增加的货币碎片
+ AddTreasureScore = 0 #(WORD AddTreasureScore)// 本次寻宝增加的寻宝积分
+ AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
- TreasureResult = "" #(String TreasureResult)// 获得物品结果[[物品ID,个数,是否绑定,是否好物品], ...]
+ TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
data = None
def __init__(self):
@@ -14437,7 +15126,8 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.AddTreasureMoney,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTreasureScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
return _pos
@@ -14447,7 +15137,8 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x50
- self.AddTreasureMoney = 0
+ self.AddTreasureScore = 0
+ self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
return
@@ -14457,6 +15148,7 @@
length += self.Head.GetLength()
length += 2
length += 2
+ length += 2
length += len(self.TreasureResult)
return length
@@ -14464,7 +15156,8 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.AddTreasureMoney)
+ data = CommFunc.WriteWORD(data, self.AddTreasureScore)
+ data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
return data
@@ -14472,13 +15165,15 @@
def OutputString(self):
DumpString = '''
Head:%s,
- AddTreasureMoney:%d,
+ AddTreasureScore:%d,
+ AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
'''\
%(
self.Head.OutputString(),
- self.AddTreasureMoney,
+ self.AddTreasureScore,
+ self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
)
@@ -14498,6 +15193,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PassLV", c_int),
+ ("YesterDayPassLV", c_int),
]
def __init__(self):
@@ -14515,6 +15211,7 @@
self.Cmd = 0xA3
self.SubCmd = 0xBA
self.PassLV = 0
+ self.YesterDayPassLV = 0
return
def GetLength(self):
@@ -14527,122 +15224,20 @@
DumpString = '''// A3 BA 通知试炼之塔过关数 //tagMCTrialTowerInfo:
Cmd:%s,
SubCmd:%s,
- PassLV:%d
+ PassLV:%d,
+ YesterDayPassLV:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PassLV
+ self.PassLV,
+ self.YesterDayPassLV
)
return DumpString
m_NAtagMCTrialTowerInfo=tagMCTrialTowerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTrialTowerInfo.Cmd,m_NAtagMCTrialTowerInfo.SubCmd))] = m_NAtagMCTrialTowerInfo
-
-
-#------------------------------------------------------
-#A3 AA 刷新玩家图鉴兑换点数#tagMCUpdatePlayerMonsterCurrency
-
-class tagMCUpdatePlayerMonsterCurrency(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Value", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xAA
- 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 = 0xAA
- self.Value = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCUpdatePlayerMonsterCurrency)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 AA 刷新玩家图鉴兑换点数//tagMCUpdatePlayerMonsterCurrency:
- Cmd:%s,
- SubCmd:%s,
- Value:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Value
- )
- return DumpString
-
-
-m_NAtagMCUpdatePlayerMonsterCurrency=tagMCUpdatePlayerMonsterCurrency()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUpdatePlayerMonsterCurrency.Cmd,m_NAtagMCUpdatePlayerMonsterCurrency.SubCmd))] = m_NAtagMCUpdatePlayerMonsterCurrency
-
-
-#------------------------------------------------------
-# A3 25 VIP副本过关情况 #tagMCVIPFBPassInfo
-
-class tagMCVIPFBPassInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PassInfo", c_int), #按位表示通关次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x25
- 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 = 0x25
- self.PassInfo = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCVIPFBPassInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 25 VIP副本过关情况 //tagMCVIPFBPassInfo:
- Cmd:%s,
- SubCmd:%s,
- PassInfo:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PassInfo
- )
- return DumpString
-
-
-m_NAtagMCVIPFBPassInfo=tagMCVIPFBPassInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVIPFBPassInfo.Cmd,m_NAtagMCVIPFBPassInfo.SubCmd))] = m_NAtagMCVIPFBPassInfo
#------------------------------------------------------
@@ -14845,6 +15440,114 @@
m_NAtagPyMCWorldAverageLv=tagPyMCWorldAverageLv()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyMCWorldAverageLv.Cmd,m_NAtagPyMCWorldAverageLv.SubCmd))] = m_NAtagPyMCWorldAverageLv
+
+
+#------------------------------------------------------
+# A3 48 仙宝寻主领奖记录 #tagMCXBXZAwardRecordList
+
+class tagMCXBXZAwardRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RecordIndex", c_ushort), #第几个记录值 每个key存31个id 0-30为0, 31-61为1..
+ ("Record", c_int), #对应是否领取值
+ ]
+
+ 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.RecordIndex = 0
+ self.Record = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCXBXZAwardRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 48 仙宝寻主领奖记录 //tagMCXBXZAwardRecordList:
+ RecordIndex:%d,
+ Record:%d
+ '''\
+ %(
+ self.RecordIndex,
+ self.Record
+ )
+ return DumpString
+
+
+class tagMCXBXZAwardRecordList(Structure):
+ Head = tagHead()
+ RecordCnt = 0 #(WORD RecordCnt)//记录个数
+ RecordList = list() #(vector<tagMCXBXZAwardRecord> RecordList)//记录列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x48
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.RecordCnt):
+ temRecordList = tagMCXBXZAwardRecord()
+ _pos = temRecordList.ReadData(_lpData, _pos)
+ self.RecordList.append(temRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x48
+ self.RecordCnt = 0
+ self.RecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.RecordCnt):
+ length += self.RecordList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RecordCnt)
+ for i in range(self.RecordCnt):
+ data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RecordCnt:%d,
+ RecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RecordCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCXBXZAwardRecordList=tagMCXBXZAwardRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXBXZAwardRecordList.Head.Cmd,m_NAtagMCXBXZAwardRecordList.Head.SubCmd))] = m_NAtagMCXBXZAwardRecordList
#------------------------------------------------------
@@ -15932,6 +16635,183 @@
#------------------------------------------------------
+# A7 15 通知仙盟抢Boss伤血信息 #tagMCFamilyBossHurtList
+
+class tagMCFamilyBossHurt(Structure):
+ FamilyID = 0 #(DWORD FamilyID)// 所属仙盟ID
+ HurtID = 0 #(DWORD HurtID)// 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ HurtName = "" #(String HurtName)
+ HurtValue = 0 #(DWORD HurtValue)// 累计伤血,求余1亿的值
+ HurtValueEx = 0 #(DWORD HurtValueEx)// 累计伤血,整除1亿的值
+ InitTick = 0 #(DWORD InitTick)// 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.InitTick,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.FamilyID = 0
+ self.HurtID = 0
+ self.NameLen = 0
+ self.HurtName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ self.InitTick = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.HurtName)
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.HurtID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.HurtName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ data = CommFunc.WriteDWORD(data, self.InitTick)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ FamilyID:%d,
+ HurtID:%d,
+ NameLen:%d,
+ HurtName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d,
+ InitTick:%d
+ '''\
+ %(
+ self.FamilyID,
+ self.HurtID,
+ self.NameLen,
+ self.HurtName,
+ self.HurtValue,
+ self.HurtValueEx,
+ self.InitTick
+ )
+ return DumpString
+
+
+class tagMCFamilyBossHurtList(Structure):
+ Head = tagHead()
+ ObjID = 0 #(DWORD ObjID)
+ NPCID = 0 #(DWORD NPCID)
+ HurtType = 0 #(BYTE HurtType)// 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
+ IsSort = 0 #(BYTE IsSort)// 是否排序过的,一般boss被击杀后会统一同步一次排序过的最终结果,其他情况下客户端自己排序
+ HurtCount = 0 #(WORD HurtCount)// 伤血个数
+ HurtList = list() #(vector<tagMCFamilyBossHurt> HurtList)// 伤血列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ 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.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsSort,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtList = tagMCFamilyBossHurt()
+ _pos = temHurtList.ReadData(_lpData, _pos)
+ self.HurtList.append(temHurtList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x15
+ self.ObjID = 0
+ self.NPCID = 0
+ self.HurtType = 0
+ self.IsSort = 0
+ self.HurtCount = 0
+ self.HurtList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 2
+ for i in range(self.HurtCount):
+ length += self.HurtList[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.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteBYTE(data, self.HurtType)
+ data = CommFunc.WriteBYTE(data, self.IsSort)
+ data = CommFunc.WriteWORD(data, self.HurtCount)
+ for i in range(self.HurtCount):
+ data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ObjID:%d,
+ NPCID:%d,
+ HurtType:%d,
+ IsSort:%d,
+ HurtCount:%d,
+ HurtList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ObjID,
+ self.NPCID,
+ self.HurtType,
+ self.IsSort,
+ self.HurtCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyBossHurtList=tagMCFamilyBossHurtList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBossHurtList.Head.Cmd,m_NAtagMCFamilyBossHurtList.Head.SubCmd))] = m_NAtagMCFamilyBossHurtList
+
+
+#------------------------------------------------------
# A7 03 通知进入副本时间 #tagMCFBEnterTickList
class tagMCFBEnterTick(Structure):
@@ -16107,6 +16987,121 @@
#------------------------------------------------------
+# A7 14 通知查询的NPC数量 #tagMCNPCCntList
+
+class tagMCNPCCntInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int),
+ ("Cnt", c_int),
+ ]
+
+ 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.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNPCCntInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList:
+ NPCID:%d,
+ Cnt:%d
+ '''\
+ %(
+ self.NPCID,
+ self.Cnt
+ )
+ return DumpString
+
+
+class tagMCNPCCntList(Structure):
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)
+ NPCInfoCnt = 0 #(BYTE NPCInfoCnt)
+ NPCInfoList = list() #(vector<tagMCNPCCntInfo> NPCInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x14
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NPCInfoCnt):
+ temNPCInfoList = tagMCNPCCntInfo()
+ _pos = temNPCInfoList.ReadData(_lpData, _pos)
+ self.NPCInfoList.append(temNPCInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x14
+ self.MapID = 0
+ self.NPCInfoCnt = 0
+ self.NPCInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.NPCInfoCnt):
+ length += self.NPCInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteBYTE(data, self.NPCInfoCnt)
+ for i in range(self.NPCInfoCnt):
+ data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MapID:%d,
+ NPCInfoCnt:%d,
+ NPCInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MapID,
+ self.NPCInfoCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCNPCCntList=tagMCNPCCntList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList
+
+
+#------------------------------------------------------
#A7 01 通知选中对象 # tagMCNotifySelectObj
class tagMCNotifySelectObj(Structure):
@@ -16172,8 +17167,6 @@
class tagMCNPCInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("ObjID", c_int),
("NPCID", c_int),
("NPCHP", c_int),
@@ -16186,8 +17179,6 @@
def __init__(self):
self.Clear()
- self.Cmd = 0xA7
- self.SubCmd = 0x06
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -16196,8 +17187,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA7
- self.SubCmd = 0x06
self.ObjID = 0
self.NPCID = 0
self.NPCHP = 0
@@ -16216,8 +17205,6 @@
def OutputString(self):
DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList:
- Cmd:%s,
- SubCmd:%s,
ObjID:%d,
NPCID:%d,
NPCHP:%d,
@@ -16228,8 +17215,6 @@
RefreshSecond:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.ObjID,
self.NPCID,
self.NPCHP,
@@ -16926,132 +17911,6 @@
#------------------------------------------------------
-# A8 07 通知使用皇室宝箱情况 #tagMCCRBoxInfoList
-
-class tagMCCRBoxInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FuncIndex", c_ubyte), #功能索引
- ("BoxIndex", c_ubyte), #宝箱格子索引
- ("ItemID", c_int), #物品ID
- ("UnlockTime", c_int), # 解锁时间
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA8
- 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 = 0xA8
- self.SubCmd = 0x07
- self.FuncIndex = 0
- self.BoxIndex = 0
- self.ItemID = 0
- self.UnlockTime = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCRBoxInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 07 通知使用皇室宝箱情况 //tagMCCRBoxInfoList:
- Cmd:%s,
- SubCmd:%s,
- FuncIndex:%d,
- BoxIndex:%d,
- ItemID:%d,
- UnlockTime:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FuncIndex,
- self.BoxIndex,
- self.ItemID,
- self.UnlockTime
- )
- return DumpString
-
-
-class tagMCCRBoxInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//通知个数
- InfoList = list() #(vector<tagMCCRBoxInfo> InfoList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x07
- 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):
- temInfoList = tagMCCRBoxInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x07
- self.Count = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- 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.WriteBYTE(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_NAtagMCCRBoxInfoList=tagMCCRBoxInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCRBoxInfoList.Head.Cmd,m_NAtagMCCRBoxInfoList.Head.SubCmd))] = m_NAtagMCCRBoxInfoList
-
-
-#------------------------------------------------------
# A8 12 守护成功拾取物品 #tagMCGuradPickupItemSucc
class tagMCGuradPickupItemSucc(Structure):
@@ -17227,6 +18086,66 @@
#------------------------------------------------------
+# A8 14 合成结果通知 #tagMCMakeItemAnswer
+
+class tagMCMakeItemAnswer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("Result", c_ubyte), #是否成功
+ ("MakeItemID", c_int), #合成的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ self.SubCmd = 0x14
+ 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 = 0x14
+ self.MakeType = 0
+ self.Result = 0
+ self.MakeItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMakeItemAnswer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 14 合成结果通知 //tagMCMakeItemAnswer:
+ Cmd:%s,
+ SubCmd:%s,
+ MakeType:%d,
+ Result:%d,
+ MakeItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MakeType,
+ self.Result,
+ self.MakeItemID
+ )
+ return DumpString
+
+
+m_NAtagMCMakeItemAnswer=tagMCMakeItemAnswer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMakeItemAnswer.Cmd,m_NAtagMCMakeItemAnswer.SubCmd))] = m_NAtagMCMakeItemAnswer
+
+
+#------------------------------------------------------
# A8 11 商店购买结果 #tagMCShoppingResult
class tagMCShoppingResult(Structure):
@@ -17372,84 +18291,6 @@
m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
-
-
-#------------------------------------------------------
-# A8 08 通知开启皇室宝箱后奖励结果 #tagMCOpenCRBoxResult
-
-class tagMCOpenCRBoxResult(Structure):
- Head = tagHead()
- UseItemID = 0 #(DWORD UseItemID)// 使用的物品ID
- IsBind = 0 #(BYTE IsBind)// 奖励是否绑定
- Num = 0 #(BYTE Num)// 奖励个数
- RewardList = "" #(String RewardList)// 奖励列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x08
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RewardList,_pos = CommFunc.ReadString(_lpData, _pos,self.Num)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x08
- self.UseItemID = 0
- self.IsBind = 0
- self.Num = 0
- self.RewardList = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 1
- length += len(self.RewardList)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.UseItemID)
- data = CommFunc.WriteBYTE(data, self.IsBind)
- data = CommFunc.WriteBYTE(data, self.Num)
- data = CommFunc.WriteString(data, self.Num, self.RewardList)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- UseItemID:%d,
- IsBind:%d,
- Num:%d,
- RewardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.UseItemID,
- self.IsBind,
- self.Num,
- self.RewardList
- )
- return DumpString
-
-
-m_NAtagMCOpenCRBoxResult=tagMCOpenCRBoxResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenCRBoxResult.Head.Cmd,m_NAtagMCOpenCRBoxResult.Head.SubCmd))] = m_NAtagMCOpenCRBoxResult
#------------------------------------------------------
@@ -17918,90 +18759,6 @@
#------------------------------------------------------
-# A8 06 使用翻牌物品结果 #tagMCUseTurnCardItemResult
-
-class tagMCUseTurnCardItemResult(Structure):
- Head = tagHead()
- UseItemID = 0 #(DWORD UseItemID)// 使用的物品ID
- AllCardNum = 0 #(BYTE AllCardNum)// 总牌数
- AllCfgIndexList = list() #(vector<WORD> AllCfgIndexList)// 总牌配置索引列表
- TurnCardList = list() #(vector<WORD> TurnCardList)// 已翻牌配置索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AllCardNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AllCardNum):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.AllCfgIndexList.append(value)
- for i in range(self.AllCardNum):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.TurnCardList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x06
- self.UseItemID = 0
- self.AllCardNum = 0
- self.AllCfgIndexList = list()
- self.TurnCardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 2 * self.AllCardNum
- length += 2 * self.AllCardNum
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.UseItemID)
- data = CommFunc.WriteBYTE(data, self.AllCardNum)
- for i in range(self.AllCardNum):
- data = CommFunc.WriteWORD(data, self.AllCfgIndexList[i])
- for i in range(self.AllCardNum):
- data = CommFunc.WriteWORD(data, self.TurnCardList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- UseItemID:%d,
- AllCardNum:%d,
- AllCfgIndexList:%s,
- TurnCardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.UseItemID,
- self.AllCardNum,
- "...",
- "..."
- )
- return DumpString
-
-
-m_NAtagMCUseTurnCardItemResult=tagMCUseTurnCardItemResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseTurnCardItemResult.Head.Cmd,m_NAtagMCUseTurnCardItemResult.Head.SubCmd))] = m_NAtagMCUseTurnCardItemResult
-
-
-#------------------------------------------------------
# A8 13 虚拟掉落物品 #tagMCVirtualItemDrop
class tagMCVirtualItemDrop(Structure):
@@ -18084,6 +18841,128 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
+
+
+#------------------------------------------------------
+# AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo
+
+class tagMCAllPeoplePartyCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ActID", c_int), #活动ID
+ ("CurTimes", 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.ActID = 0
+ self.CurTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCAllPeoplePartyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 15 仙界盛典全民来嗨玩家信息 //tagMCAllPeoplePartyInfo:
+ ActID:%d,
+ CurTimes:%d
+ '''\
+ %(
+ self.ActID,
+ self.CurTimes
+ )
+ return DumpString
+
+
+class tagMCAllPeoplePartyInfo(Structure):
+ Head = tagHead()
+ CurPoint = 0 #(DWORD CurPoint)//当前总点数
+ AwardRecord = 0 #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCAllPeoplePartyCount> BuyCountList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyCountList = tagMCAllPeoplePartyCount()
+ _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 = 0x15
+ self.CurPoint = 0
+ self.AwardRecord = 0
+ self.Count = 0
+ self.BuyCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ 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.WriteDWORD(data, self.CurPoint)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ 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,
+ CurPoint:%d,
+ AwardRecord:%d,
+ Count:%d,
+ BuyCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CurPoint,
+ self.AwardRecord,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
#------------------------------------------------------
@@ -18321,14 +19200,325 @@
#------------------------------------------------------
-# AA 02 天天首充活动开启状态 #tagMCDailyGoldState
+# AA 09 消费返利活动信息 #tagMCCostRebateInfo
-class tagMCDailyGoldState(Structure):
+class tagMCCostRebateAwardItem(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(tagMCCostRebateAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 09 消费返利活动信息 //tagMCCostRebateInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCostRebateAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedGold = 0 #(DWORD NeedGold)// 所需仙玉数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCCostRebateAwardItem> AwardItem)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItem = tagMCCostRebateAwardItem()
+ _pos = temAwardItem.ReadData(_lpData, _pos)
+ self.AwardItem.append(temAwardItem)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedGold = 0
+ self.AwardItemCount = 0
+ self.AwardItem = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItem[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedGold)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedGold:%d,
+ AwardItemCount:%d,
+ AwardItem:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedGold,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCostRebateAwardDay(Structure):
+ AwardCount = 0 #(BYTE AwardCount)// 奖励档数
+ AwardInfo = list() #(vector<tagMCCostRebateAward> AwardInfo)// 奖励档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardInfo = tagMCCostRebateAward()
+ _pos = temAwardInfo.ReadData(_lpData, _pos)
+ self.AwardInfo.append(temAwardInfo)
+ return _pos
+
+ def Clear(self):
+ self.AwardCount = 0
+ self.AwardInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardCount:%d,
+ AwardInfo:%s
+ '''\
+ %(
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCostRebateInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ AwardDays = 0 #(BYTE AwardDays)
+ AwardDayInfo = list() #(vector<tagMCCostRebateAwardDay> AwardDayInfo)//每天对应返利信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x09
+ 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardDays):
+ temAwardDayInfo = tagMCCostRebateAwardDay()
+ _pos = temAwardDayInfo.ReadData(_lpData, _pos)
+ self.AwardDayInfo.append(temAwardDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x09
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.AwardDays = 0
+ self.AwardDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.AwardDays):
+ length += self.AwardDayInfo[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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.AwardDays)
+ for i in range(self.AwardDays):
+ data = CommFunc.WriteString(data, self.AwardDayInfo[i].GetLength(), self.AwardDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ AwardDays:%d,
+ AwardDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.AwardDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCostRebateInfo=tagMCCostRebateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebateInfo.Head.Cmd,m_NAtagMCCostRebateInfo.Head.SubCmd))] = m_NAtagMCCostRebateInfo
+
+
+#------------------------------------------------------
+# AA 10 消费返利玩家活动信息 #tagMCCostRebatePlayerInfo
+
+class tagMCCostRebatePlayerInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("State", c_ubyte), # 0-未开启;1-已开启
+ ("CostGoldTotal", c_int), #本次活动已累计消费仙玉数
+ ("AwardRecord", c_int), #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x10
+ 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 = 0x10
+ self.CostGoldTotal = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCostRebatePlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CostGoldTotal:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CostGoldTotal,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
+
+
+#------------------------------------------------------
+# AA 02 首充信息 #tagMCFirstGoldInfo
+
+class tagMCFirstGoldInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖
+ ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用
]
def __init__(self):
@@ -18345,31 +19535,551 @@
def Clear(self):
self.Cmd = 0xAA
self.SubCmd = 0x02
- self.State = 0
+ self.FirstGoldRewardState = 0
+ self.FirstGoldTry = 0
return
def GetLength(self):
- return sizeof(tagMCDailyGoldState)
+ return sizeof(tagMCFirstGoldInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 02 天天首充活动开启状态 //tagMCDailyGoldState:
+ DumpString = '''// AA 02 首充信息 //tagMCFirstGoldInfo:
Cmd:%s,
SubCmd:%s,
- State:%d
+ FirstGoldRewardState:%d,
+ FirstGoldTry:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.State
+ self.FirstGoldRewardState,
+ self.FirstGoldTry
)
return DumpString
-m_NAtagMCDailyGoldState=tagMCDailyGoldState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGoldState.Cmd,m_NAtagMCDailyGoldState.SubCmd))] = m_NAtagMCDailyGoldState
+m_NAtagMCFirstGoldInfo=tagMCFirstGoldInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFirstGoldInfo.Cmd,m_NAtagMCFirstGoldInfo.SubCmd))] = m_NAtagMCFirstGoldInfo
+
+
+#------------------------------------------------------
+# AA 08 首充提示剩余时间 #tagMCFirstGoldTime
+
+class tagMCFirstGoldTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FirstGoldRemainTime", c_int), #首充提示剩余时间
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x08
+ 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 = 0x08
+ self.FirstGoldRemainTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFirstGoldTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 08 首充提示剩余时间 //tagMCFirstGoldTime:
+ Cmd:%s,
+ SubCmd:%s,
+ FirstGoldRemainTime:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.FirstGoldRemainTime
+ )
+ return DumpString
+
+
+m_NAtagMCFirstGoldTime=tagMCFirstGoldTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFirstGoldTime.Cmd,m_NAtagMCFirstGoldTime.SubCmd))] = m_NAtagMCFirstGoldTime
+
+
+#------------------------------------------------------
+# AA 12 限时礼包活动信息 #tagMCFlashGiftbagInfo
+
+class tagMCFlashGiftbagItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ("IsMainItem", 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
+ self.IsMainItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFlashGiftbagItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 12 限时礼包活动信息 //tagMCFlashGiftbagInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ IsMainItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.IsMainItem
+ )
+ return DumpString
+
+
+class tagMCFlashGiftbag(Structure):
+ GiftID = 0 #(DWORD GiftID)//礼包ID
+ OrderInfoLen = 0 #(BYTE OrderInfoLen)
+ OrderInfo = "" #(String OrderInfo)//商品编号
+ BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
+ RMB = 0 #(DWORD RMB)//所需RMB,元
+ RMBOriginal = 0 #(DWORD RMBOriginal)//原价
+ GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
+ ItemInfo = list() #(vector<tagMCFlashGiftbagItem> 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.RMBOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftItemCount):
+ temItemInfo = tagMCFlashGiftbagItem()
+ _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.RMBOriginal = 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 += 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.WriteDWORD(data, self.RMBOriginal)
+ 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,
+ RMBOriginal:%d,
+ GiftItemCount:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.GiftID,
+ self.OrderInfoLen,
+ self.OrderInfo,
+ self.BuyCountLimit,
+ self.RMB,
+ self.RMBOriginal,
+ self.GiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFlashGiftbagType(Structure):
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数
+ GiftbagInfo = list() #(vector<tagMCFlashGiftbag> GiftbagInfo)// 礼包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagInfo = tagMCFlashGiftbag()
+ _pos = temGiftbagInfo.ReadData(_lpData, _pos)
+ self.GiftbagInfo.append(temGiftbagInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftbagCount = 0
+ self.GiftbagInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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 = '''
+ GiftbagCount:%d,
+ GiftbagInfo:%s
+ '''\
+ %(
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFlashGiftbagTime(Structure):
+ StartTime = "" #(char StartTime[5])// 开始时间 H:M
+ EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ return _pos
+
+ def Clear(self):
+ self.StartTime = ""
+ self.EndtTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 5
+ length += 5
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 5, self.StartTime)
+ data = CommFunc.WriteString(data, 5, self.EndtTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ StartTime:%s,
+ EndtTime:%s
+ '''\
+ %(
+ self.StartTime,
+ self.EndtTime
+ )
+ return DumpString
+
+
+class tagMCFlashGiftbagInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
+ ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ GiftbagTypeCount = 0 #(BYTE GiftbagTypeCount)// 礼包类型数
+ GiftbagTypeInfo = list() #(vector<tagMCFlashGiftbagType> GiftbagTypeInfo)// 礼包类型信息, 当有多个且有多个活动时间段时则每个时间段对应一个礼包类型;
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x12
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActivityTimeCount):
+ temActivityTime = tagMCFlashGiftbagTime()
+ _pos = temActivityTime.ReadData(_lpData, _pos)
+ self.ActivityTime.append(temActivityTime)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GiftbagTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagTypeCount):
+ temGiftbagTypeInfo = tagMCFlashGiftbagType()
+ _pos = temGiftbagTypeInfo.ReadData(_lpData, _pos)
+ self.GiftbagTypeInfo.append(temGiftbagTypeInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x12
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.ActivityTimeCount = 0
+ self.ActivityTime = list()
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.GiftbagTypeCount = 0
+ self.GiftbagTypeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.ActivityTimeCount):
+ length += self.ActivityTime[i].GetLength()
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.GiftbagTypeCount):
+ length += self.GiftbagTypeInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
+ for i in range(self.ActivityTimeCount):
+ data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.GiftbagTypeCount)
+ for i in range(self.GiftbagTypeCount):
+ data = CommFunc.WriteString(data, self.GiftbagTypeInfo[i].GetLength(), self.GiftbagTypeInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ ActivityTimeCount:%d,
+ ActivityTime:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ GiftbagTypeCount:%d,
+ GiftbagTypeInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.ActivityTimeCount,
+ "...",
+ self.IsDayReset,
+ self.LimitLV,
+ self.GiftbagTypeCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFlashGiftbagInfo=tagMCFlashGiftbagInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagInfo.Head.Cmd,m_NAtagMCFlashGiftbagInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagInfo
+
+
+#------------------------------------------------------
+# AA 13 限时礼包玩家活动信息 #tagMCFlashGiftbagPlayerInfo
+
+class tagMCFlashGiftbagBuyCount(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(tagMCFlashGiftbagBuyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 13 限时礼包玩家活动信息 //tagMCFlashGiftbagPlayerInfo:
+ GiftbagID:%d,
+ BuyCount:%d
+ '''\
+ %(
+ self.GiftbagID,
+ self.BuyCount
+ )
+ return DumpString
+
+
+class tagMCFlashGiftbagPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCFlashGiftbagBuyCount> BuyCountList)//礼包购买次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x13
+ 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 = tagMCFlashGiftbagBuyCount()
+ _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 = 0x13
+ 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_NAtagMCFlashGiftbagPlayerInfo=tagMCFlashGiftbagPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagPlayerInfo.Head.Cmd,m_NAtagMCFlashGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagPlayerInfo
#------------------------------------------------------
@@ -18565,6 +20275,420 @@
#------------------------------------------------------
+# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
+
+class tagMCSpringSaleItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ("IsMainItem", 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
+ self.IsMainItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSpringSaleItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 11 限时特惠活动信息 //tagMCSpringSaleInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ IsMainItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.IsMainItem
+ )
+ return DumpString
+
+
+class tagMCSpringSaleGiftbag(Structure):
+ GiftID = 0 #(DWORD GiftID)//商城表的物品ID
+ BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
+ MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
+ MoneyNumber = 0 #(DWORD MoneyNumber)//消耗货币数量
+ MoneyOriginal = 0 #(DWORD MoneyOriginal)//原价
+ GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
+ ItemInfo = list() #(vector<tagMCSpringSaleItem> 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.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyNumber,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MoneyOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftItemCount):
+ temItemInfo = tagMCSpringSaleItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftID = 0
+ self.BuyCountLimit = 0
+ self.MoneyType = 0
+ self.MoneyNumber = 0
+ self.MoneyOriginal = 0
+ self.GiftItemCount = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ 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.BuyCountLimit)
+ data = CommFunc.WriteBYTE(data, self.MoneyType)
+ data = CommFunc.WriteDWORD(data, self.MoneyNumber)
+ data = CommFunc.WriteDWORD(data, self.MoneyOriginal)
+ 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,
+ BuyCountLimit:%d,
+ MoneyType:%d,
+ MoneyNumber:%d,
+ MoneyOriginal:%d,
+ GiftItemCount:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.GiftID,
+ self.BuyCountLimit,
+ self.MoneyType,
+ self.MoneyNumber,
+ self.MoneyOriginal,
+ self.GiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCSpringSaleShop(Structure):
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 商店礼包数
+ GiftbagInfo = list() #(vector<tagMCSpringSaleGiftbag> GiftbagInfo)// 礼包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagInfo = tagMCSpringSaleGiftbag()
+ _pos = temGiftbagInfo.ReadData(_lpData, _pos)
+ self.GiftbagInfo.append(temGiftbagInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftbagCount = 0
+ self.GiftbagInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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 = '''
+ GiftbagCount:%d,
+ GiftbagInfo:%s
+ '''\
+ %(
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCSpringSaleTime(Structure):
+ StartTime = "" #(char StartTime[5])// 开始时间 H:M
+ EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ return _pos
+
+ def Clear(self):
+ self.StartTime = ""
+ self.EndtTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 5
+ length += 5
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 5, self.StartTime)
+ data = CommFunc.WriteString(data, 5, self.EndtTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ StartTime:%s,
+ EndtTime:%s
+ '''\
+ %(
+ self.StartTime,
+ self.EndtTime
+ )
+ return DumpString
+
+
+class tagMCSpringSaleInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
+ ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ShopCount = 0 #(BYTE ShopCount)// 商店数
+ ShopInfo = list() #(vector<tagMCSpringSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x11
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActivityTimeCount):
+ temActivityTime = tagMCSpringSaleTime()
+ _pos = temActivityTime.ReadData(_lpData, _pos)
+ self.ActivityTime.append(temActivityTime)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ShopCount):
+ temShopInfo = tagMCSpringSaleShop()
+ _pos = temShopInfo.ReadData(_lpData, _pos)
+ self.ShopInfo.append(temShopInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x11
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.ActivityTimeCount = 0
+ self.ActivityTime = list()
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.ShopCount = 0
+ self.ShopInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.ActivityTimeCount):
+ length += self.ActivityTime[i].GetLength()
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.ShopCount):
+ length += self.ShopInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
+ for i in range(self.ActivityTimeCount):
+ data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ShopCount)
+ for i in range(self.ShopCount):
+ data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ ActivityTimeCount:%d,
+ ActivityTime:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ ShopCount:%d,
+ ShopInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.ActivityTimeCount,
+ "...",
+ self.IsDayReset,
+ self.LimitLV,
+ self.ShopCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
+
+
+#------------------------------------------------------
+# AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
+
+class tagMCSuperGiftInfo(Structure):
+ Head = tagHead()
+ GiftID = 0 #(DWORD GiftID)//商品ID
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ self.GiftID = 0
+ self.EndtDate = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 10
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.GiftID)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ GiftID:%d,
+ EndtDate:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.GiftID,
+ self.EndtDate
+ )
+ return DumpString
+
+
+m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Head.Cmd,m_NAtagMCSuperGiftInfo.Head.SubCmd))] = m_NAtagMCSuperGiftInfo
+
+
+#------------------------------------------------------
#AA 01 累计登陆天数信息 #tagMCTotalLoginDayCntInfo
class tagMCTotalLoginDayCntInfo(Structure):
@@ -18621,20 +20745,20 @@
#------------------------------------------------------
-# AB 20 嘉年华抽奖记录 #tagMCCarnivalRecord
+# AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
-class tagMCCarnivalRecord(Structure):
+class tagMCXJSDRecharge(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("JoinRecord", c_int),
+ ("State", c_ubyte), #0-不可领 1-可领 2-已领取
]
def __init__(self):
self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x20
+ self.Cmd = 0xAA
+ self.SubCmd = 0x14
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -18643,55 +20767,48 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xAB
- self.SubCmd = 0x20
- self.JoinRecord = 0
+ self.Cmd = 0xAA
+ self.SubCmd = 0x14
+ self.State = 0
return
def GetLength(self):
- return sizeof(tagMCCarnivalRecord)
+ return sizeof(tagMCXJSDRecharge)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AB 20 嘉年华抽奖记录 //tagMCCarnivalRecord:
+ DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
Cmd:%s,
SubCmd:%s,
- JoinRecord:%d
+ State:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.JoinRecord
+ self.State
)
return DumpString
-m_NAtagMCCarnivalRecord=tagMCCarnivalRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCarnivalRecord.Cmd,m_NAtagMCCarnivalRecord.SubCmd))] = m_NAtagMCCarnivalRecord
+m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
#------------------------------------------------------
-# AB 15 骰子投掷结果 #tagMCDiceTakeResult
+# AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
-class tagMCDiceTakeResult(Structure):
+class tagMCBossRebornData(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PosIndex", c_int), # 骰子的位置
- ("CfgIndex", c_ushort), # 物品配置索引
- ("TakeNum", c_ushort), # 已投掷次数
- ("TimeNum", c_ushort), # 按时间增加的次数
- ("BuyNum", c_ushort), # 已购买的次数
- ("AwardNum", c_ushort), # 奖励的次数
+ ("ActID", c_ubyte), #活动ID
+ ("CurTimes", c_ushort), #已完成次数
+ ("GotTimes", c_ushort), #已领取次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x15
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -18700,48 +20817,95 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xAB
- self.SubCmd = 0x15
- self.PosIndex = 0
- self.CfgIndex = 0
- self.TakeNum = 0
- self.TimeNum = 0
- self.BuyNum = 0
- self.AwardNum = 0
+ self.ActID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
return
def GetLength(self):
- return sizeof(tagMCDiceTakeResult)
+ return sizeof(tagMCBossRebornData)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AB 15 骰子投掷结果 //tagMCDiceTakeResult:
- Cmd:%s,
- SubCmd:%s,
- PosIndex:%d,
- CfgIndex:%d,
- TakeNum:%d,
- TimeNum:%d,
- BuyNum:%d,
- AwardNum:%d
+ DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
+ ActID:%d,
+ CurTimes:%d,
+ GotTimes:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.PosIndex,
- self.CfgIndex,
- self.TakeNum,
- self.TimeNum,
- self.BuyNum,
- self.AwardNum
+ self.ActID,
+ self.CurTimes,
+ self.GotTimes
)
return DumpString
-m_NAtagMCDiceTakeResult=tagMCDiceTakeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceTakeResult.Cmd,m_NAtagMCDiceTakeResult.SubCmd))] = m_NAtagMCDiceTakeResult
+class tagMCBossRebornPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//活动个数
+ DataList = list() #(vector<tagMCBossRebornData> DataList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x03
+ 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):
+ temDataList = tagMCBossRebornData()
+ _pos = temDataList.ReadData(_lpData, _pos)
+ self.DataList.append(temDataList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x03
+ self.Count = 0
+ self.DataList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DataList[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.DataList[i].GetLength(), self.DataList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DataList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
#------------------------------------------------------
@@ -18933,294 +21097,6 @@
#------------------------------------------------------
-# AB 11 全民进阶总动员活动奖励情况 #tagMCFuncUpgrade
-
-class tagMCFuncUpgrade(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FuncAwardState1", c_int),
- ("FuncAwardState2", c_int),
- ("FuncAwardState3", c_int),
- ("FuncAwardState4", c_int),
- ("FuncAwardState5", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x11
- self.FuncAwardState1 = 0
- self.FuncAwardState2 = 0
- self.FuncAwardState3 = 0
- self.FuncAwardState4 = 0
- self.FuncAwardState5 = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFuncUpgrade)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 11 全民进阶总动员活动奖励情况 //tagMCFuncUpgrade:
- Cmd:%s,
- SubCmd:%s,
- FuncAwardState1:%d,
- FuncAwardState2:%d,
- FuncAwardState3:%d,
- FuncAwardState4:%d,
- FuncAwardState5:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FuncAwardState1,
- self.FuncAwardState2,
- self.FuncAwardState3,
- self.FuncAwardState4,
- self.FuncAwardState5
- )
- return DumpString
-
-
-m_NAtagMCFuncUpgrade=tagMCFuncUpgrade()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncUpgrade.Cmd,m_NAtagMCFuncUpgrade.SubCmd))] = m_NAtagMCFuncUpgrade
-
-
-#------------------------------------------------------
-# AB 10 首充团购每日充值钻石数 #tagMCGroupFirstRechargeGold
-
-class tagMCGroupFirstRechargeGold(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)
- GoldList = list() #(vector<DWORD> GoldList)//size = Count
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x10
- 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):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.GoldList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x10
- self.Count = 0
- self.GoldList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 4 * self.Count
-
- 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.WriteDWORD(data, self.GoldList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- GoldList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCGroupFirstRechargeGold=tagMCGroupFirstRechargeGold()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGroupFirstRechargeGold.Head.Cmd,m_NAtagMCGroupFirstRechargeGold.Head.SubCmd))] = m_NAtagMCGroupFirstRechargeGold
-
-
-#------------------------------------------------------
-# AB 21 领主之路活动信息 #tagMCLingZhuZhiLuInfo
-
-class tagMCLingZhuZhiLuScore(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LingZhuZLScoreNum", c_ubyte), # 积分类型编号
- ("LingZhuZLScore", c_int), # 已获得积分
- ("LingZhuZLData", c_int), # 积分类型数据
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x21
- 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 = 0xAB
- self.SubCmd = 0x21
- self.LingZhuZLScoreNum = 0
- self.LingZhuZLScore = 0
- self.LingZhuZLData = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLingZhuZhiLuScore)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 21 领主之路活动信息 //tagMCLingZhuZhiLuInfo:
- Cmd:%s,
- SubCmd:%s,
- LingZhuZLScoreNum:%d,
- LingZhuZLScore:%d,
- LingZhuZLData:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LingZhuZLScoreNum,
- self.LingZhuZLScore,
- self.LingZhuZLData
- )
- return DumpString
-
-
-class tagMCLingZhuZhiLuInfo(Structure):
- Head = tagHead()
- LingZhuZLActionNum = 0 #(DWORD LingZhuZLActionNum)// 领主之路活动当前活动编号
- LingZhuZLPrizeRecordCnt = 0 #(BYTE LingZhuZLPrizeRecordCnt)// 进度奖励领取记录个数
- LingZhuZLPrizeRecord = list() #(vector<DWORD> LingZhuZLPrizeRecord)// 进度奖励领取记录, 每级奖励一个值, 按奖励索引位二进制存储是否已领
- LingZhuZLTotalScore = 0 #(DWORD LingZhuZLTotalScore)// 当前总积分
- LingZhuZLScoreCount = 0 #(BYTE LingZhuZLScoreCount)// 同步的积分个数, 有变更的才会同步
- LingZhuZLScoreList = list() #(vector<tagMCLingZhuZhiLuScore> LingZhuZLScoreList)// 同步积分信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x21
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.LingZhuZLActionNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LingZhuZLPrizeRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.LingZhuZLPrizeRecordCnt):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.LingZhuZLPrizeRecord.append(value)
- self.LingZhuZLTotalScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LingZhuZLScoreCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.LingZhuZLScoreCount):
- temLingZhuZLScoreList = tagMCLingZhuZhiLuScore()
- _pos = temLingZhuZLScoreList.ReadData(_lpData, _pos)
- self.LingZhuZLScoreList.append(temLingZhuZLScoreList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x21
- self.LingZhuZLActionNum = 0
- self.LingZhuZLPrizeRecordCnt = 0
- self.LingZhuZLPrizeRecord = list()
- self.LingZhuZLTotalScore = 0
- self.LingZhuZLScoreCount = 0
- self.LingZhuZLScoreList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 4 * self.LingZhuZLPrizeRecordCnt
- length += 4
- length += 1
- for i in range(self.LingZhuZLScoreCount):
- length += self.LingZhuZLScoreList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.LingZhuZLActionNum)
- data = CommFunc.WriteBYTE(data, self.LingZhuZLPrizeRecordCnt)
- for i in range(self.LingZhuZLPrizeRecordCnt):
- data = CommFunc.WriteDWORD(data, self.LingZhuZLPrizeRecord[i])
- data = CommFunc.WriteDWORD(data, self.LingZhuZLTotalScore)
- data = CommFunc.WriteBYTE(data, self.LingZhuZLScoreCount)
- for i in range(self.LingZhuZLScoreCount):
- data = CommFunc.WriteString(data, self.LingZhuZLScoreList[i].GetLength(), self.LingZhuZLScoreList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- LingZhuZLActionNum:%d,
- LingZhuZLPrizeRecordCnt:%d,
- LingZhuZLPrizeRecord:%s,
- LingZhuZLTotalScore:%d,
- LingZhuZLScoreCount:%d,
- LingZhuZLScoreList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.LingZhuZLActionNum,
- self.LingZhuZLPrizeRecordCnt,
- "...",
- self.LingZhuZLTotalScore,
- self.LingZhuZLScoreCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCLingZhuZhiLuInfo=tagMCLingZhuZhiLuInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingZhuZhiLuInfo.Head.Cmd,m_NAtagMCLingZhuZhiLuInfo.Head.SubCmd))] = m_NAtagMCLingZhuZhiLuInfo
-
-
-#------------------------------------------------------
# AB 02 领地占领每日奖励领奖情况 #tagMCManorDailyAward
class tagMCManorDailyAward(Structure):
@@ -19334,6 +21210,217 @@
m_NAtagMCManorWarResult=tagMCManorWarResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
+
+
+#------------------------------------------------------
+# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
+
+class tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCBossRebornTaskInfo(Structure):
+ TaskID = 0 #(BYTE TaskID)// id
+ TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
+ SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItem = tagMCBossRebornAwardItem()
+ _pos = temAwardItem.ReadData(_lpData, _pos)
+ self.AwardItem.append(temAwardItem)
+ return _pos
+
+ def Clear(self):
+ self.TaskID = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.AwardItemCount = 0
+ self.AwardItem = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItem[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TaskID)
+ data = CommFunc.WriteBYTE(data, self.TotalTimes)
+ data = CommFunc.WriteBYTE(data, self.SingleTimes)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TaskID:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ AwardItemCount:%d,
+ AwardItem:%s
+ '''\
+ %(
+ self.TaskID,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCBossRebornInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ TaskCnt = 0 #(BYTE TaskCnt)
+ TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TaskCnt):
+ temTaskInfo = tagMCBossRebornTaskInfo()
+ _pos = temTaskInfo.ReadData(_lpData, _pos)
+ self.TaskInfo.append(temTaskInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x04
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.TaskCnt = 0
+ self.TaskInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.TaskCnt):
+ length += self.TaskInfo[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.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.TaskCnt)
+ for i in range(self.TaskCnt):
+ data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ TaskCnt:%d,
+ TaskInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.TaskCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
#------------------------------------------------------
@@ -19505,157 +21592,63 @@
#------------------------------------------------------
-# AB 18 二维码红包 #tagMCQRCodeRedpack
+# AB 24 开服红包信息 #tagMCOpenServerRedPacketInfo
-class tagMCQRCodeRedpackUrl(Structure):
- Head = tagHead()
- PackMoneyMark = 0 #(BYTE PackMoneyMark)// 红包金额标识, 1是1元, 2是1.88元, 依次递增
- PackOpenTime = 0 #(DWORD PackOpenTime)// 红包开启时间
- RedpackUrlLen = 0 #(WORD RedpackUrlLen)
- RedpackUrl = "" #(String RedpackUrl)
- data = None
+class tagMCOpenServerRedPacketInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MoneyNum", c_int), # 累积抢到多少钱
+ ("GrabCnt", c_ushort), # 已抢红包次数
+ ("StartTime", c_int), # 开始倒计时时间
+ ]
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x18
+ self.Cmd = 0xAB
+ self.SubCmd = 0x24
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PackMoneyMark,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PackOpenTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RedpackUrlLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RedpackUrl,_pos = CommFunc.ReadString(_lpData, _pos,self.RedpackUrlLen)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x18
- self.PackMoneyMark = 0
- self.PackOpenTime = 0
- self.RedpackUrlLen = 0
- self.RedpackUrl = ""
+ self.Cmd = 0xAB
+ self.SubCmd = 0x24
+ self.MoneyNum = 0
+ self.GrabCnt = 0
+ self.StartTime = 0
return
def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4
- length += 2
- length += len(self.RedpackUrl)
-
- return length
+ return sizeof(tagMCOpenServerRedPacketInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.PackMoneyMark)
- data = CommFunc.WriteDWORD(data, self.PackOpenTime)
- data = CommFunc.WriteWORD(data, self.RedpackUrlLen)
- data = CommFunc.WriteString(data, self.RedpackUrlLen, self.RedpackUrl)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Head:%s,
- PackMoneyMark:%d,
- PackOpenTime:%d,
- RedpackUrlLen:%d,
- RedpackUrl:%s
+ DumpString = '''// AB 24 开服红包信息 //tagMCOpenServerRedPacketInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ MoneyNum:%d,
+ GrabCnt:%d,
+ StartTime:%d
'''\
%(
- self.Head.OutputString(),
- self.PackMoneyMark,
- self.PackOpenTime,
- self.RedpackUrlLen,
- self.RedpackUrl
+ self.Cmd,
+ self.SubCmd,
+ self.MoneyNum,
+ self.GrabCnt,
+ self.StartTime
)
return DumpString
-class tagMCQRCodeRedpack(Structure):
- Head = tagHead()
- CanOpenCnt = 0 #(BYTE CanOpenCnt)//总共可打开红包次数
- TotalOpenCnt = 0 #(BYTE TotalOpenCnt)//总共已打开红包次数
- TodayOpenCnt = 0 #(BYTE TodayOpenCnt)//今日已打开红包次数
- RedpackUrlList = list() #(vector<tagMCQRCodeRedpackUrl> RedpackUrlList)// 红包二维码领取地址
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x18
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CanOpenCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TotalOpenCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TodayOpenCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TotalOpenCnt):
- temRedpackUrlList = tagMCQRCodeRedpackUrl()
- _pos = temRedpackUrlList.ReadData(_lpData, _pos)
- self.RedpackUrlList.append(temRedpackUrlList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x18
- self.CanOpenCnt = 0
- self.TotalOpenCnt = 0
- self.TodayOpenCnt = 0
- self.RedpackUrlList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1
- for i in range(self.TotalOpenCnt):
- length += self.RedpackUrlList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.CanOpenCnt)
- data = CommFunc.WriteBYTE(data, self.TotalOpenCnt)
- data = CommFunc.WriteBYTE(data, self.TodayOpenCnt)
- for i in range(self.TotalOpenCnt):
- data = CommFunc.WriteString(data, self.RedpackUrlList[i].GetLength(), self.RedpackUrlList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CanOpenCnt:%d,
- TotalOpenCnt:%d,
- TodayOpenCnt:%d,
- RedpackUrlList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.CanOpenCnt,
- self.TotalOpenCnt,
- self.TodayOpenCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCQRCodeRedpack=tagMCQRCodeRedpack()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCQRCodeRedpack.Head.Cmd,m_NAtagMCQRCodeRedpack.Head.SubCmd))] = m_NAtagMCQRCodeRedpack
+m_NAtagMCOpenServerRedPacketInfo=tagMCOpenServerRedPacketInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerRedPacketInfo.Cmd,m_NAtagMCOpenServerRedPacketInfo.SubCmd))] = m_NAtagMCOpenServerRedPacketInfo
#------------------------------------------------------
@@ -19723,191 +21716,6 @@
#------------------------------------------------------
-# AB 16 天神信息 #tagMCSkyGodInfo
-
-class tagMCSkyGodInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SkyGodLV", c_ushort), # 天神等级
- ("SkyGodExp", c_int), # 天神经验
- ("SummonNum", c_ushort), # 已召唤次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x16
- 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 = 0xAB
- self.SubCmd = 0x16
- self.SkyGodLV = 0
- self.SkyGodExp = 0
- self.SummonNum = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCSkyGodInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 16 天神信息 //tagMCSkyGodInfo:
- Cmd:%s,
- SubCmd:%s,
- SkyGodLV:%d,
- SkyGodExp:%d,
- SummonNum:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SkyGodLV,
- self.SkyGodExp,
- self.SummonNum
- )
- return DumpString
-
-
-m_NAtagMCSkyGodInfo=tagMCSkyGodInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyGodInfo.Cmd,m_NAtagMCSkyGodInfo.SubCmd))] = m_NAtagMCSkyGodInfo
-
-
-#------------------------------------------------------
-# AB 14 老虎机抽奖结果 #tagMCSlotsTakeResult
-
-class tagMCSlotsItemInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RecordType", c_ubyte), # 记录类型
- ("Index", c_ushort), # 物品在老虎机上索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x14
- 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 = 0xAB
- self.SubCmd = 0x14
- self.RecordType = 0
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCSlotsItemInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 14 老虎机抽奖结果 //tagMCSlotsTakeResult:
- Cmd:%s,
- SubCmd:%s,
- RecordType:%d,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.RecordType,
- self.Index
- )
- return DumpString
-
-
-class tagMCSlotsTakeResult(Structure):
- Head = tagHead()
- Type = 0 #(BYTE Type)// 老虎机类型
- Num = 0 #(WORD Num)// 物品个数
- ItemList = list() #(vector<tagMCSlotsItemInfo> ItemList)// 物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Num):
- temItemList = tagMCSlotsItemInfo()
- _pos = temItemList.ReadData(_lpData, _pos)
- self.ItemList.append(temItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x14
- self.Type = 0
- self.Num = 0
- self.ItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 2
- for i in range(self.Num):
- length += self.ItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Type)
- data = CommFunc.WriteWORD(data, self.Num)
- for i in range(self.Num):
- data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Type:%d,
- Num:%d,
- ItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Type,
- self.Num,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCSlotsTakeResult=tagMCSlotsTakeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSlotsTakeResult.Head.Cmd,m_NAtagMCSlotsTakeResult.Head.SubCmd))] = m_NAtagMCSlotsTakeResult
-
-
-#------------------------------------------------------
# AB 22 摇骰子结果 #tagMCDiceExResult
class tagMCDiceExResult(Structure):
@@ -19965,58 +21773,6 @@
m_NAtagMCDiceExResult=tagMCDiceExResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceExResult.Cmd,m_NAtagMCDiceExResult.SubCmd))] = m_NAtagMCDiceExResult
-
-
-#------------------------------------------------------
-# AB 09 许愿值 #tagMCWishTreeValue
-
-class tagMCWishTreeValue(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("WishValue", c_int), #当前许愿值
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x09
- 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 = 0xAB
- self.SubCmd = 0x09
- self.WishValue = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCWishTreeValue)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 09 许愿值 //tagMCWishTreeValue:
- Cmd:%s,
- SubCmd:%s,
- WishValue:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.WishValue
- )
- return DumpString
-
-
-m_NAtagMCWishTreeValue=tagMCWishTreeValue()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWishTreeValue.Cmd,m_NAtagMCWishTreeValue.SubCmd))] = m_NAtagMCWishTreeValue
#------------------------------------------------------
@@ -20433,170 +22189,6 @@
m_NAtagMCMixLoginDayAwardState=tagMCMixLoginDayAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMixLoginDayAwardState.Cmd,m_NAtagMCMixLoginDayAwardState.SubCmd))] = m_NAtagMCMixLoginDayAwardState
-
-
-#------------------------------------------------------
-#B0 06 转转乐盘面信息 #tagGamblingDiskInfo
-
-class tagGamblingDiskInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MerchantLv", c_ubyte), #商人等级
- ("DiskIndex", c_ubyte), # 盘面索引
- ("DiskItemSequence", c_ushort), #盘面物品顺序
- ]
-
- 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.MerchantLv = 0
- self.DiskIndex = 0
- self.DiskItemSequence = 0
- return
-
- def GetLength(self):
- return sizeof(tagGamblingDiskInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 06 转转乐盘面信息 //tagGamblingDiskInfo:
- Cmd:%s,
- SubCmd:%s,
- MerchantLv:%d,
- DiskIndex:%d,
- DiskItemSequence:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MerchantLv,
- self.DiskIndex,
- self.DiskItemSequence
- )
- return DumpString
-
-
-m_NAtagGamblingDiskInfo=tagGamblingDiskInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGamblingDiskInfo.Cmd,m_NAtagGamblingDiskInfo.SubCmd))] = m_NAtagGamblingDiskInfo
-
-
-#------------------------------------------------------
-#B0 07 转转乐结果 #tagGamblingResult
-
-class tagGamblingResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemIndex", 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.ItemIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagGamblingResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 07 转转乐结果 //tagGamblingResult:
- Cmd:%s,
- SubCmd:%s,
- ItemIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemIndex
- )
- return DumpString
-
-
-m_NAtagGamblingResult=tagGamblingResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGamblingResult.Cmd,m_NAtagGamblingResult.SubCmd))] = m_NAtagGamblingResult
-
-
-#------------------------------------------------------
-#B0 08 转转乐次数 #tagGamblingCount
-
-class tagGamblingCount(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Count", c_ushort), #次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x08
- 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 = 0x08
- self.Count = 0
- return
-
- def GetLength(self):
- return sizeof(tagGamblingCount)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 08 转转乐次数 //tagGamblingCount:
- Cmd:%s,
- SubCmd:%s,
- Count:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Count
- )
- return DumpString
-
-
-m_NAtagGamblingCount=tagGamblingCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGamblingCount.Cmd,m_NAtagGamblingCount.SubCmd))] = m_NAtagGamblingCount
#------------------------------------------------------
@@ -21045,6 +22637,62 @@
#------------------------------------------------------
+#B1 05 防沉迷 #tagMCPlayerWallow
+
+class tagMCPlayerWallow(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Open", c_ubyte), # 0 关 1开
+ ("OnlineTime", c_int), # 在线时间
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x05
+ 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 = 0xB1
+ self.SubCmd = 0x05
+ self.Open = 0
+ self.OnlineTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPlayerWallow)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B1 05 防沉迷 //tagMCPlayerWallow:
+ Cmd:%s,
+ SubCmd:%s,
+ Open:%d,
+ OnlineTime:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Open,
+ self.OnlineTime
+ )
+ return DumpString
+
+
+m_NAtagMCPlayerWallow=tagMCPlayerWallow()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerWallow.Cmd,m_NAtagMCPlayerWallow.SubCmd))] = m_NAtagMCPlayerWallow
+
+
+#------------------------------------------------------
# B2 10 仙盟联赛玩家排名信息 #tagMCFamilyWarBillboard
class tagMCFamilyWarPlayer(Structure):
@@ -21337,6 +22985,58 @@
#------------------------------------------------------
+# B2 01 通知封魔坛双倍击杀状态 #tagMCFMTDoubleState
+
+class tagMCFMTDoubleState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsDouble", c_ubyte), #是否双倍
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x01
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x01
+ self.IsDouble = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFMTDoubleState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 01 通知封魔坛双倍击杀状态 //tagMCFMTDoubleState:
+ Cmd:%s,
+ SubCmd:%s,
+ IsDouble:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsDouble
+ )
+ return DumpString
+
+
+m_NAtagMCFMTDoubleState=tagMCFMTDoubleState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFMTDoubleState.Cmd,m_NAtagMCFMTDoubleState.SubCmd))] = m_NAtagMCFMTDoubleState
+
+
+#------------------------------------------------------
# B2 03 公共副本扫荡信息 #tagMCPubFBSweepData
class tagMCPubFBSweep(Structure):
@@ -21464,6 +23164,77 @@
m_NAtagMCPubFBSweepData=tagMCPubFBSweepData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPubFBSweepData.Head.Cmd,m_NAtagMCPubFBSweepData.Head.SubCmd))] = m_NAtagMCPubFBSweepData
+
+
+#------------------------------------------------------
+#B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
+
+class tagMCPushNotificationsSetting(Structure):
+ Head = tagHead()
+ OnoffBit = 0 #(DWORD OnoffBit)// 按位约定开关
+ TimeLen = 0 #(BYTE TimeLen)
+ TimeStr = "" #(String TimeStr)// 时间字符串 01:02-05:00
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OnoffBit,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TimeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,self.TimeLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x02
+ self.OnoffBit = 0
+ self.TimeLen = 0
+ self.TimeStr = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.TimeStr)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OnoffBit)
+ data = CommFunc.WriteBYTE(data, self.TimeLen)
+ data = CommFunc.WriteString(data, self.TimeLen, self.TimeStr)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OnoffBit:%d,
+ TimeLen:%d,
+ TimeStr:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OnoffBit,
+ self.TimeLen,
+ self.TimeStr
+ )
+ return DumpString
+
+
+m_NAtagMCPushNotificationsSetting=tagMCPushNotificationsSetting()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPushNotificationsSetting.Head.Cmd,m_NAtagMCPushNotificationsSetting.Head.SubCmd))] = m_NAtagMCPushNotificationsSetting
#------------------------------------------------------
@@ -21782,6 +23553,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("SkillID", c_int), #技能ID
+ ("Reason", c_ubyte), #原因 默认0
]
def __init__(self):
@@ -21799,6 +23571,7 @@
self.Cmd = 0xB4
self.SubCmd = 0x03
self.SkillID = 0
+ self.Reason = 0
return
def GetLength(self):
@@ -21811,12 +23584,14 @@
DumpString = '''//B4 03 技能攻击失败 //tagMCAttackFail:
Cmd:%s,
SubCmd:%s,
- SkillID:%d
+ SkillID:%d,
+ Reason:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.SkillID
+ self.SkillID,
+ self.Reason
)
return DumpString
@@ -22052,6 +23827,90 @@
m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
+
+
+#------------------------------------------------------
+#B4 0A 玩家移动 #tagMCPYPlayerMove
+
+class tagMCPYPlayerMove(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Dir", c_ushort), # 朝向
+ ("ClientPosX", c_ushort), # 客户端坐标X 毫米
+ ("ClientPosY", c_ushort), # 客户端坐标Y
+ ("SeverPosX", c_ushort), # 服务端坐标X 格子
+ ("SeverPosY", c_ushort), # 服务端坐标Y
+ ("ObjID", c_int),
+ ("ObjType", c_ubyte),
+ ("Speed", c_ushort),
+ ("MoveType", c_ubyte), # 0 停止 1移动
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0A
+ 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 = 0xB4
+ self.SubCmd = 0x0A
+ self.Dir = 0
+ self.ClientPosX = 0
+ self.ClientPosY = 0
+ self.SeverPosX = 0
+ self.SeverPosY = 0
+ self.ObjID = 0
+ self.ObjType = 0
+ self.Speed = 0
+ self.MoveType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPYPlayerMove)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B4 0A 玩家移动 //tagMCPYPlayerMove:
+ Cmd:%s,
+ SubCmd:%s,
+ Dir:%d,
+ ClientPosX:%d,
+ ClientPosY:%d,
+ SeverPosX:%d,
+ SeverPosY:%d,
+ ObjID:%d,
+ ObjType:%d,
+ Speed:%d,
+ MoveType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Dir,
+ self.ClientPosX,
+ self.ClientPosY,
+ self.SeverPosX,
+ self.SeverPosY,
+ self.ObjID,
+ self.ObjType,
+ self.Speed,
+ self.MoveType
+ )
+ return DumpString
+
+
+m_NAtagMCPYPlayerMove=tagMCPYPlayerMove()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPYPlayerMove.Cmd,m_NAtagMCPYPlayerMove.SubCmd))] = m_NAtagMCPYPlayerMove
#------------------------------------------------------
@@ -22340,23 +24199,15 @@
#------------------------------------------------------
#B4 09 通知脱机挂结果 #tagMCTJGInfo
-class tagMCTJGInfo(Structure):
+class tagMCTJGItems(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Exp1", c_int), # 经验
- ("Exp2", c_int), # 超亿经验
- ("Times", c_int), # 使用时间秒
- ("PurpleEquip", c_ushort), # 产出紫装数量
- ("OrangeEquip", c_ushort), # 产出橙装数量
- ("EatPurpleEquip", c_ushort), # 吞噬紫装数量
+ ("ItemID", c_int),
+ ("Count", c_ushort),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xB4
- self.SubCmd = 0x09
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -22365,112 +24216,148 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xB4
- self.SubCmd = 0x09
- self.Exp1 = 0
- self.Exp2 = 0
- self.Times = 0
- self.PurpleEquip = 0
- self.OrangeEquip = 0
- self.EatPurpleEquip = 0
+ self.ItemID = 0
+ self.Count = 0
return
def GetLength(self):
- return sizeof(tagMCTJGInfo)
+ return sizeof(tagMCTJGItems)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//B4 09 通知脱机挂结果 //tagMCTJGInfo:
- Cmd:%s,
- SubCmd:%s,
+ ItemID:%d,
+ Count:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count
+ )
+ return DumpString
+
+
+class tagMCTJGInfo(Structure):
+ Head = tagHead()
+ Exp1 = 0 #(DWORD Exp1)// 经验
+ Exp2 = 0 #(DWORD Exp2)// 超亿经验
+ Times = 0 #(DWORD Times)// 使用时间秒
+ PurpleEquip = 0 #(WORD PurpleEquip)// 产出紫装数量
+ OrangeEquip = 0 #(WORD OrangeEquip)// 产出橙装数量
+ EatPurpleEquip = 0 #(WORD EatPurpleEquip)// 吞噬紫装数量
+ BeforeLV = 0 #(WORD BeforeLV)//脱机前记录的等级
+ GiveCnt = 0 #(WORD GiveCnt)//获得炼丹材料数量
+ Cnt = 0 #(BYTE Cnt)//物品类别数量
+ Items = list() #(vector<tagMCTJGItems> Items)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Exp1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Exp2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Times,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OrangeEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.EatPurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BeforeLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GiveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temItems = tagMCTJGItems()
+ _pos = temItems.ReadData(_lpData, _pos)
+ self.Items.append(temItems)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x09
+ self.Exp1 = 0
+ self.Exp2 = 0
+ self.Times = 0
+ self.PurpleEquip = 0
+ self.OrangeEquip = 0
+ self.EatPurpleEquip = 0
+ self.BeforeLV = 0
+ self.GiveCnt = 0
+ self.Cnt = 0
+ self.Items = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.Cnt):
+ length += self.Items[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.Exp1)
+ data = CommFunc.WriteDWORD(data, self.Exp2)
+ data = CommFunc.WriteDWORD(data, self.Times)
+ data = CommFunc.WriteWORD(data, self.PurpleEquip)
+ data = CommFunc.WriteWORD(data, self.OrangeEquip)
+ data = CommFunc.WriteWORD(data, self.EatPurpleEquip)
+ data = CommFunc.WriteWORD(data, self.BeforeLV)
+ data = CommFunc.WriteWORD(data, self.GiveCnt)
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
Exp1:%d,
Exp2:%d,
Times:%d,
PurpleEquip:%d,
OrangeEquip:%d,
- EatPurpleEquip:%d
+ EatPurpleEquip:%d,
+ BeforeLV:%d,
+ GiveCnt:%d,
+ Cnt:%d,
+ Items:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.Exp1,
self.Exp2,
self.Times,
self.PurpleEquip,
self.OrangeEquip,
- self.EatPurpleEquip
+ self.EatPurpleEquip,
+ self.BeforeLV,
+ self.GiveCnt,
+ self.Cnt,
+ "..."
)
return DumpString
m_NAtagMCTJGInfo=tagMCTJGInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGInfo.Cmd,m_NAtagMCTJGInfo.SubCmd))] = m_NAtagMCTJGInfo
-
-
-#------------------------------------------------------
-# B7 01 宠物等级 #tagMCPetLV
-
-class tagMCPetLV(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PetLV", c_ushort), # 等级
- ("PetExp", c_int), # 升级经验
- ("PetClassExp", c_int), # 升阶经验
- ("PetSeting", c_int), # 宠物操作数据记录
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB7
- self.SubCmd = 0x01
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB7
- self.SubCmd = 0x01
- self.PetLV = 0
- self.PetExp = 0
- self.PetClassExp = 0
- self.PetSeting = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCPetLV)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B7 01 宠物等级 //tagMCPetLV:
- Cmd:%s,
- SubCmd:%s,
- PetLV:%d,
- PetExp:%d,
- PetClassExp:%d,
- PetSeting:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PetLV,
- self.PetExp,
- self.PetClassExp,
- self.PetSeting
- )
- return DumpString
-
-
-m_NAtagMCPetLV=tagMCPetLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPetLV.Cmd,m_NAtagMCPetLV.SubCmd))] = m_NAtagMCPetLV
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGInfo.Head.Cmd,m_NAtagMCTJGInfo.Head.SubCmd))] = m_NAtagMCTJGInfo
#------------------------------------------------------
diff --git a/Tool/Robot/Protocol/PacketsSend.py b/Tool/Robot/Protocol/PacketsSend.py
index 2c3f4c8..df74de3 100644
--- a/Tool/Robot/Protocol/PacketsSend.py
+++ b/Tool/Robot/Protocol/PacketsSend.py
@@ -5204,6 +5204,8 @@
Phone = 0 #(BYTE Phone)//是否绑定手机
ServerID = 0 #(DWORD ServerID)//服务器ID
Adult = 0 #(BYTE Adult)//是否成年 0未成年 1成年
+ ExtraLen = 0 #(BYTE ExtraLen)//扩展长度
+ Extra = "" #(String Extra)//扩展内容,根据不同平台而定
data = None
def __init__(self):
@@ -5227,6 +5229,8 @@
self.Phone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Adult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExtraLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Extra,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraLen)
return _pos
def Clear(self):
@@ -5246,6 +5250,8 @@
self.Phone = 0
self.ServerID = 0
self.Adult = 0
+ self.ExtraLen = 0
+ self.Extra = ""
return
def GetLength(self):
@@ -5263,6 +5269,8 @@
length += 1
length += 4
length += 1
+ length += 1
+ length += len(self.Extra)
return length
@@ -5281,6 +5289,8 @@
data = CommFunc.WriteBYTE(data, self.Phone)
data = CommFunc.WriteDWORD(data, self.ServerID)
data = CommFunc.WriteBYTE(data, self.Adult)
+ data = CommFunc.WriteBYTE(data, self.ExtraLen)
+ data = CommFunc.WriteString(data, self.ExtraLen, self.Extra)
return data
def OutputString(self):
@@ -5297,7 +5307,9 @@
TokenExpire:%s,
Phone:%d,
ServerID:%d,
- Adult:%d
+ Adult:%d,
+ ExtraLen:%d,
+ Extra:%s
'''\
%(
self.Head.OutputString(),
@@ -5312,7 +5324,9 @@
self.TokenExpire,
self.Phone,
self.ServerID,
- self.Adult
+ self.Adult,
+ self.ExtraLen,
+ self.Extra
)
return DumpString
diff --git a/Tool/Robot/Protocol/PacketsSendPY.py b/Tool/Robot/Protocol/PacketsSendPY.py
index 0af2d67..ff5f5b4 100644
--- a/Tool/Robot/Protocol/PacketsSendPY.py
+++ b/Tool/Robot/Protocol/PacketsSendPY.py
@@ -588,58 +588,6 @@
#------------------------------------------------------
-# A4 04 抢家族红包 #tagCGGrabFamilyRedPacket
-
-class tagCGGrabFamilyRedPacket(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RedPaketID", c_int), # 红包ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA4
- self.SubCmd = 0x04
- 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 = 0xA4
- self.SubCmd = 0x04
- self.RedPaketID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGGrabFamilyRedPacket)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A4 04 抢家族红包 //tagCGGrabFamilyRedPacket:
- Cmd:%s,
- SubCmd:%s,
- RedPaketID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.RedPaketID
- )
- return DumpString
-
-
-m_NAtagCGGrabFamilyRedPacket=tagCGGrabFamilyRedPacket()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGrabFamilyRedPacket.Cmd,m_NAtagCGGrabFamilyRedPacket.SubCmd))] = m_NAtagCGGrabFamilyRedPacket
-
-
-#------------------------------------------------------
#A4 03 加入家族审核情况 #tagCGJoinFamilyReply
class tagCGJoinFamilyReply(Structure):
@@ -793,6 +741,155 @@
m_NAtagCGOpenFamilyBossFB=tagCGOpenFamilyBossFB()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGOpenFamilyBossFB.Cmd,m_NAtagCGOpenFamilyBossFB.SubCmd))] = m_NAtagCGOpenFamilyBossFB
+
+
+#------------------------------------------------------
+# A4 04 创建家族 #tagCGPyCreatFamily
+
+class tagCGPyCreatFamily(Structure):
+ Head = tagHead()
+ Name = "" #(char Name[33])
+ FakeID = 0 #(WORD FakeID)//假仙盟编号
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.FakeID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x04
+ self.Name = ""
+ self.FakeID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 33
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 33, self.Name)
+ data = CommFunc.WriteWORD(data, self.FakeID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Name:%s,
+ FakeID:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Name,
+ self.FakeID
+ )
+ return DumpString
+
+
+m_NAtagCGPyCreatFamily=tagCGPyCreatFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPyCreatFamily.Head.Cmd,m_NAtagCGPyCreatFamily.Head.SubCmd))] = m_NAtagCGPyCreatFamily
+
+
+#------------------------------------------------------
+# A4 12 搜索家族 #tagCGPySearchFamily
+
+class tagCGPySearchFamily(Structure):
+ Head = tagHead()
+ MsgLen = 0 #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
+ Msg = "" #(String Msg)//size = MsgLen
+ LV = 0 #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
+ MaxCount = 0 #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
+ IsSearching = 0 #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
+ self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x12
+ self.MsgLen = 0
+ self.Msg = ""
+ self.LV = 0
+ self.MaxCount = 0
+ self.IsSearching = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.Msg)
+ length += 1
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.MsgLen)
+ data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
+ data = CommFunc.WriteBYTE(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.MaxCount)
+ data = CommFunc.WriteBYTE(data, self.IsSearching)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MsgLen:%d,
+ Msg:%s,
+ LV:%d,
+ MaxCount:%d,
+ IsSearching:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MsgLen,
+ self.Msg,
+ self.LV,
+ self.MaxCount,
+ self.IsSearching
+ )
+ return DumpString
+
+
+m_NAtagCGPySearchFamily=tagCGPySearchFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
#------------------------------------------------------
@@ -1347,19 +1444,20 @@
#------------------------------------------------------
-#A9 10 请求魔方寻宝记录 #tagCGMagicTreasureRecord
+# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
-class tagCGMagicTreasureRecord(Structure):
+class tagCGCallupFamilyMemberToBoss(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("NPCID", c_int),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x10
+ self.Cmd = 0xAC
+ self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -1368,30 +1466,33 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0x10
+ self.Cmd = 0xAC
+ self.SubCmd = 0x05
+ self.NPCID = 0
return
def GetLength(self):
- return sizeof(tagCGMagicTreasureRecord)
+ return sizeof(tagCGCallupFamilyMemberToBoss)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A9 10 请求魔方寻宝记录 //tagCGMagicTreasureRecord:
+ DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
Cmd:%s,
- SubCmd:%s
+ SubCmd:%s,
+ NPCID:%d
'''\
%(
self.Cmd,
- self.SubCmd
+ self.SubCmd,
+ self.NPCID
)
return DumpString
-m_NAtagCGMagicTreasureRecord=tagCGMagicTreasureRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMagicTreasureRecord.Cmd,m_NAtagCGMagicTreasureRecord.SubCmd))] = m_NAtagCGMagicTreasureRecord
+m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
#------------------------------------------------------
@@ -1473,54 +1574,6 @@
#------------------------------------------------------
-# AC 09 查询活动怪信息 #tagCGQueryFestivalNPC
-
-class tagCGQueryFestivalNPC(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAC
- self.SubCmd = 0x09
- 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 = 0xAC
- self.SubCmd = 0x09
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryFestivalNPC)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 09 查询活动怪信息 //tagCGQueryFestivalNPC:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCGQueryFestivalNPC=tagCGQueryFestivalNPC()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryFestivalNPC.Cmd,m_NAtagCGQueryFestivalNPC.SubCmd))] = m_NAtagCGQueryFestivalNPC
-
-
-#------------------------------------------------------
# AC 01 仙魔之争报名 #tagCGJoinXMZZ
class tagCGJoinXMZZ(Structure):
@@ -1566,6 +1619,102 @@
m_NAtagCGJoinXMZZ=tagCGJoinXMZZ()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinXMZZ.Cmd,m_NAtagCGJoinXMZZ.SubCmd))] = m_NAtagCGJoinXMZZ
+
+
+#------------------------------------------------------
+# AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
+
+class tagCGQueryAllFamilyBossHurt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAC
+ self.SubCmd = 0x04
+ 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 = 0xAC
+ self.SubCmd = 0x04
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryAllFamilyBossHurt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 04 查询仙盟抢Boss所有Boss当前进度 //tagCGQueryAllFamilyBossHurt:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAllFamilyBossHurt=tagCGQueryAllFamilyBossHurt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAllFamilyBossHurt.Cmd,m_NAtagCGQueryAllFamilyBossHurt.SubCmd))] = m_NAtagCGQueryAllFamilyBossHurt
+
+
+#------------------------------------------------------
+# AC 03 仙魔之争信息查询 #tagCGXMZZInfoQuery
+
+class tagCGXMZZInfoQuery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAC
+ self.SubCmd = 0x03
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAC
+ self.SubCmd = 0x03
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGXMZZInfoQuery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 03 仙魔之争信息查询 //tagCGXMZZInfoQuery:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGXMZZInfoQuery=tagCGXMZZInfoQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZInfoQuery.Cmd,m_NAtagCGXMZZInfoQuery.SubCmd))] = m_NAtagCGXMZZInfoQuery
#------------------------------------------------------
@@ -1989,6 +2138,101 @@
#------------------------------------------------------
+#B3 07 语音聊天 #tagCGVoiceChat
+
+class tagCGVoiceChat(Structure):
+ Head = tagHead()
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
+ TargetNameLen = 0 #(BYTE TargetNameLen)
+ TargetName = "" #(String TargetName)//size = TargetNameLen
+ TargetID = 0 #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
+ Len = 0 #(WORD Len)
+ Content = list() #(vector<BYTE> Content)//size = Len
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TargetNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TargetName,_pos = CommFunc.ReadString(_lpData, _pos,self.TargetNameLen)
+ self.TargetID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.Content.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x07
+ self.ChannelType = 0
+ self.TargetNameLen = 0
+ self.TargetName = ""
+ self.TargetID = 0
+ self.Len = 0
+ self.Content = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += len(self.TargetName)
+ length += 4
+ length += 2
+ length += 1 * self.Len
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ChannelType)
+ data = CommFunc.WriteBYTE(data, self.TargetNameLen)
+ data = CommFunc.WriteString(data, self.TargetNameLen, self.TargetName)
+ data = CommFunc.WriteDWORD(data, self.TargetID)
+ data = CommFunc.WriteWORD(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteBYTE(data, self.Content[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ChannelType:%d,
+ TargetNameLen:%d,
+ TargetName:%s,
+ TargetID:%d,
+ Len:%d,
+ Content:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ChannelType,
+ self.TargetNameLen,
+ self.TargetName,
+ self.TargetID,
+ self.Len,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCGVoiceChat=tagCGVoiceChat()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGVoiceChat.Head.Cmd,m_NAtagCGVoiceChat.Head.SubCmd))] = m_NAtagCGVoiceChat
+
+
+#------------------------------------------------------
#B3 03 是否允许加入好友的回应#tagCGJoinFriendAnswer
class tagCGJoinFriendAnswer(Structure):
@@ -2397,6 +2641,62 @@
m_NAtagCGInvitePlayerJoinTeam=tagCGInvitePlayerJoinTeam()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeam.Cmd,m_NAtagCGInvitePlayerJoinTeam.SubCmd))] = m_NAtagCGInvitePlayerJoinTeam
+
+
+#------------------------------------------------------
+# B9 0A 按条件邀请玩家加入队伍 #tagCGInvitePlayerJoinTeamByLV
+
+class tagCGInvitePlayerJoinTeamByLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LVLimit", c_ushort), # 目标玩家大于等于此等级
+ ("InviteCnt", c_ubyte), # 邀请玩家个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB9
+ self.SubCmd = 0x0A
+ 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 = 0xB9
+ self.SubCmd = 0x0A
+ self.LVLimit = 0
+ self.InviteCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGInvitePlayerJoinTeamByLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B9 0A 按条件邀请玩家加入队伍 //tagCGInvitePlayerJoinTeamByLV:
+ Cmd:%s,
+ SubCmd:%s,
+ LVLimit:%d,
+ InviteCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LVLimit,
+ self.InviteCnt
+ )
+ return DumpString
+
+
+m_NAtagCGInvitePlayerJoinTeamByLV=tagCGInvitePlayerJoinTeamByLV()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeamByLV.Cmd,m_NAtagCGInvitePlayerJoinTeamByLV.SubCmd))] = m_NAtagCGInvitePlayerJoinTeamByLV
#------------------------------------------------------
@@ -3748,7 +4048,7 @@
SpeakerType = 0 #(BYTE SpeakerType)//1-本服;2-跨服
IsUseGold = 0 #(BYTE IsUseGold)//是否使用钻石
ItemIndex = 0 #(BYTE ItemIndex)//使用物品说话时, 物品Index
- TextLen = 0 #(BYTE TextLen)//字符长度
+ TextLen = 0 #(WORD TextLen)//字符长度
Text = "" #(String Text)//size = TextLen
data = None
@@ -3764,7 +4064,7 @@
self.SpeakerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsUseGold,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ItemIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TextLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TextLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
return _pos
@@ -3786,7 +4086,7 @@
length += 1
length += 1
length += 1
- length += 1
+ length += 2
length += len(self.Text)
return length
@@ -3797,7 +4097,7 @@
data = CommFunc.WriteBYTE(data, self.SpeakerType)
data = CommFunc.WriteBYTE(data, self.IsUseGold)
data = CommFunc.WriteBYTE(data, self.ItemIndex)
- data = CommFunc.WriteBYTE(data, self.TextLen)
+ data = CommFunc.WriteWORD(data, self.TextLen)
data = CommFunc.WriteString(data, self.TextLen, self.Text)
return data
@@ -3950,6 +4250,151 @@
m_NAtagCMQueryBossHurtList=tagCMQueryBossHurtList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryBossHurtList.Cmd,m_NAtagCMQueryBossHurtList.SubCmd))] = m_NAtagCMQueryBossHurtList
+
+
+#------------------------------------------------------
+# A2 28 查询仙盟抢Boss伤血列表 #tagCMQueryFamilyBossHurt
+
+class tagCMQueryFamilyBossHurt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ("QueryType", c_ubyte), # 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ 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 = 0xA2
+ self.SubCmd = 0x28
+ self.ObjID = 0
+ self.NPCID = 0
+ self.QueryType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMQueryFamilyBossHurt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 28 查询仙盟抢Boss伤血列表 //tagCMQueryFamilyBossHurt:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ NPCID:%d,
+ QueryType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.NPCID,
+ self.QueryType
+ )
+ return DumpString
+
+
+m_NAtagCMQueryFamilyBossHurt=tagCMQueryFamilyBossHurt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryFamilyBossHurt.Cmd,m_NAtagCMQueryFamilyBossHurt.SubCmd))] = m_NAtagCMQueryFamilyBossHurt
+
+
+#------------------------------------------------------
+# A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
+
+class tagCMQueryNPCCntInfo(Structure):
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)// 目标地图ID
+ LineID = 0 #(WORD LineID)// 线路ID
+ IsNoTimeLimit = 0 #(BYTE IsNoTimeLimit)//是否没有查询时间限制,默认有限制
+ NPCIDListLen = 0 #(BYTE NPCIDListLen)
+ NPCIDList = "" #(String NPCIDList)// 需要查询的NPCID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA2
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsNoTimeLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NPCIDListLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NPCIDList,_pos = CommFunc.ReadString(_lpData, _pos,self.NPCIDListLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA2
+ self.Head.SubCmd = 0x27
+ self.MapID = 0
+ self.LineID = 0
+ self.IsNoTimeLimit = 0
+ self.NPCIDListLen = 0
+ self.NPCIDList = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 2
+ length += 1
+ length += 1
+ length += len(self.NPCIDList)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteWORD(data, self.LineID)
+ data = CommFunc.WriteBYTE(data, self.IsNoTimeLimit)
+ data = CommFunc.WriteBYTE(data, self.NPCIDListLen)
+ data = CommFunc.WriteString(data, self.NPCIDListLen, self.NPCIDList)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MapID:%d,
+ LineID:%d,
+ IsNoTimeLimit:%d,
+ NPCIDListLen:%d,
+ NPCIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MapID,
+ self.LineID,
+ self.IsNoTimeLimit,
+ self.NPCIDListLen,
+ self.NPCIDList
+ )
+ return DumpString
+
+
+m_NAtagCMQueryNPCCntInfo=tagCMQueryNPCCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryNPCCntInfo.Head.Cmd,m_NAtagCMQueryNPCCntInfo.Head.SubCmd))] = m_NAtagCMQueryNPCCntInfo
#------------------------------------------------------
@@ -4470,6 +4915,101 @@
#------------------------------------------------------
+#A2 26 语音聊天 #tagCMVoiceChat
+
+class tagCMVoiceChat(Structure):
+ Head = tagHead()
+ ChannelType = 0 #(BYTE ChannelType)// 5 区域 --- 查看封包tagCGVoiceChat 1 世界 2 仙盟 3 私聊(好友) 4 队伍
+ TargetNameLen = 0 #(BYTE TargetNameLen)
+ TargetName = "" #(String TargetName)//size = TargetNameLen
+ TargetID = 0 #(DWORD TargetID)// 私聊默认发玩家ID,没有ID才发名称
+ Len = 0 #(WORD Len)
+ Content = list() #(vector<BYTE> Content)//size = Len
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA2
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TargetNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TargetName,_pos = CommFunc.ReadString(_lpData, _pos,self.TargetNameLen)
+ self.TargetID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.Content.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA2
+ self.Head.SubCmd = 0x26
+ self.ChannelType = 0
+ self.TargetNameLen = 0
+ self.TargetName = ""
+ self.TargetID = 0
+ self.Len = 0
+ self.Content = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += len(self.TargetName)
+ length += 4
+ length += 2
+ length += 1 * self.Len
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ChannelType)
+ data = CommFunc.WriteBYTE(data, self.TargetNameLen)
+ data = CommFunc.WriteString(data, self.TargetNameLen, self.TargetName)
+ data = CommFunc.WriteDWORD(data, self.TargetID)
+ data = CommFunc.WriteWORD(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteBYTE(data, self.Content[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ChannelType:%d,
+ TargetNameLen:%d,
+ TargetName:%s,
+ TargetID:%d,
+ Len:%d,
+ Content:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ChannelType,
+ self.TargetNameLen,
+ self.TargetName,
+ self.TargetID,
+ self.Len,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMVoiceChat=tagCMVoiceChat()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVoiceChat.Head.Cmd,m_NAtagCMVoiceChat.Head.SubCmd))] = m_NAtagCMVoiceChat
+
+
+#------------------------------------------------------
#A2 12 查看玩家详细信息#tagCMViewPlayerInfo
class tagCMViewPlayerInfo(Structure):
@@ -4519,66 +5059,6 @@
m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
-
-
-#------------------------------------------------------
-# A3 16 购买物品 #tagCMBuyItem
-
-class tagCMBuyItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemID", c_int), #物品id
- ("Cnt", c_int), #个数
- ("MoneyType", c_ubyte), #金钱类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x16
- 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 = 0x16
- self.ItemID = 0
- self.Cnt = 0
- self.MoneyType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 16 购买物品 //tagCMBuyItem:
- Cmd:%s,
- SubCmd:%s,
- ItemID:%d,
- Cnt:%d,
- MoneyType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemID,
- self.Cnt,
- self.MoneyType
- )
- return DumpString
-
-
-m_NAtagCMBuyItem=tagCMBuyItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItem.Cmd,m_NAtagCMBuyItem.SubCmd))] = m_NAtagCMBuyItem
#------------------------------------------------------
@@ -4706,6 +5186,122 @@
#------------------------------------------------------
+# A3 2D 装备分解设置 #tagCMDecomposeSeting
+
+class tagCMDecomposeSeting(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Seting", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x2D
+ 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 = 0x2D
+ self.Seting = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDecomposeSeting)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 2D 装备分解设置 //tagCMDecomposeSeting:
+ Cmd:%s,
+ SubCmd:%s,
+ Seting:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Seting
+ )
+ return DumpString
+
+
+m_NAtagCMDecomposeSeting=tagCMDecomposeSeting()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDecomposeSeting.Cmd,m_NAtagCMDecomposeSeting.SubCmd))] = m_NAtagCMDecomposeSeting
+
+
+#------------------------------------------------------
+# A3 09 转移物品到其他背包 #tagCMDropItemToOtherPack
+
+class tagCMDropItemToOtherPack(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SrcBackpack", c_ubyte), #源背包类型
+ ("DesBackPack", c_ubyte), #目标背包类型
+ ("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
+ ("IsAll", c_ubyte), #是否全部转移
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x09
+ 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 = 0x09
+ self.SrcBackpack = 0
+ self.DesBackPack = 0
+ self.SrcIndex = 0
+ self.IsAll = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDropItemToOtherPack)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 09 转移物品到其他背包 //tagCMDropItemToOtherPack:
+ Cmd:%s,
+ SubCmd:%s,
+ SrcBackpack:%d,
+ DesBackPack:%d,
+ SrcIndex:%d,
+ IsAll:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SrcBackpack,
+ self.DesBackPack,
+ self.SrcIndex,
+ self.IsAll
+ )
+ return DumpString
+
+
+m_NAtagCMDropItemToOtherPack=tagCMDropItemToOtherPack()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDropItemToOtherPack.Cmd,m_NAtagCMDropItemToOtherPack.SubCmd))] = m_NAtagCMDropItemToOtherPack
+
+
+#------------------------------------------------------
#A3 15 装备打孔 # tagCMEquipAddHole
class tagCMEquipAddHole(Structure):
@@ -4770,7 +5366,6 @@
class tagCMEquipDecompose(Structure):
Head = tagHead()
- PackType = 0 #(BYTE PackType)//背包类型
IndexCount = 0 #(BYTE IndexCount)//材料所在背包索引的数量
IndexList = list() #(vector<BYTE> IndexList)//材料所在背包索引列表
data = None
@@ -4784,7 +5379,6 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.PackType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.IndexCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
@@ -4796,7 +5390,6 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x2C
- self.PackType = 0
self.IndexCount = 0
self.IndexList = list()
return
@@ -4805,7 +5398,6 @@
length = 0
length += self.Head.GetLength()
length += 1
- length += 1
length += 1 * self.IndexCount
return length
@@ -4813,7 +5405,6 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.PackType)
data = CommFunc.WriteBYTE(data, self.IndexCount)
for i in range(self.IndexCount):
data = CommFunc.WriteBYTE(data, self.IndexList[i])
@@ -4822,13 +5413,11 @@
def OutputString(self):
DumpString = '''
Head:%s,
- PackType:%d,
IndexCount:%d,
IndexList:%s
'''\
%(
self.Head.OutputString(),
- self.PackType,
self.IndexCount,
"..."
)
@@ -5303,78 +5892,6 @@
#------------------------------------------------------
-#A3 13 装备继承#tagCMInheritEquip
-
-class tagCMInheritEquip(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SrcPackType", c_ubyte), #背包类型:rptItem, rptEquip, rptPetEquip1~5
- ("SrcEquipIndex", c_ubyte), #材料装备在对应背包中索引
- ("DesPackType", c_ubyte), #目标装备所在背包类型:rptItem, rptEquip, rptPetEquip1~5
- ("DesEquipIndex", c_ubyte), #目标装备所在背包索引
- ("AutoBuy", c_ubyte), #自动购买
- ("InheritGreatAttr", c_ubyte), #是否继承主装备卓越属性
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x13
- 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 = 0x13
- self.SrcPackType = 0
- self.SrcEquipIndex = 0
- self.DesPackType = 0
- self.DesEquipIndex = 0
- self.AutoBuy = 0
- self.InheritGreatAttr = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMInheritEquip)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 13 装备继承//tagCMInheritEquip:
- Cmd:%s,
- SubCmd:%s,
- SrcPackType:%d,
- SrcEquipIndex:%d,
- DesPackType:%d,
- DesEquipIndex:%d,
- AutoBuy:%d,
- InheritGreatAttr:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SrcPackType,
- self.SrcEquipIndex,
- self.DesPackType,
- self.DesEquipIndex,
- self.AutoBuy,
- self.InheritGreatAttr
- )
- return DumpString
-
-
-m_NAtagCMInheritEquip=tagCMInheritEquip()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMInheritEquip.Cmd,m_NAtagCMInheritEquip.SubCmd))] = m_NAtagCMInheritEquip
-
-
-#------------------------------------------------------
#A3 02 丢弃背包物品 #tagPlayerDropItem
class tagPlayerDropItem(Structure):
@@ -5436,6 +5953,83 @@
m_NAtagPlayerDropItem=tagPlayerDropItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerDropItem.Cmd,m_NAtagPlayerDropItem.SubCmd))] = m_NAtagPlayerDropItem
+
+
+#------------------------------------------------------
+# A3 2A 回收魂石 #tagCMRecycleAttrFruit
+
+class tagCMRecycleAttrFruit(Structure):
+ Head = tagHead()
+ IndexCount = 0 #(BYTE IndexCount)//索引个数
+ IndexList = list() #(vector<BYTE> IndexList)//物品在背包中索引列表
+ RecycleCountList = list() #(vector<WORD> RecycleCountList)//索引对应回收个数列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x2A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.IndexList.append(value)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.RecycleCountList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x2A
+ self.IndexCount = 0
+ self.IndexList = list()
+ self.RecycleCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.IndexCount
+ length += 2 * self.IndexCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IndexCount)
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteWORD(data, self.RecycleCountList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IndexCount:%d,
+ IndexList:%s,
+ RecycleCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IndexCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMRecycleAttrFruit=tagCMRecycleAttrFruit()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecycleAttrFruit.Head.Cmd,m_NAtagCMRecycleAttrFruit.Head.SubCmd))] = m_NAtagCMRecycleAttrFruit
#------------------------------------------------------
@@ -5676,62 +6270,6 @@
#------------------------------------------------------
-# A3 2D 红装剥离 #tagCMSuitEquipStrip
-
-class tagCMSuitEquipStrip(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PackType", c_ubyte), #背包类型
- ("ItemIndex", c_ubyte), #材料所在背包索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x2D
- 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 = 0x2D
- self.PackType = 0
- self.ItemIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSuitEquipStrip)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 2D 红装剥离 //tagCMSuitEquipStrip:
- Cmd:%s,
- SubCmd:%s,
- PackType:%d,
- ItemIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PackType,
- self.ItemIndex
- )
- return DumpString
-
-
-m_NAtagCMSuitEquipStrip=tagCMSuitEquipStrip()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitEquipStrip.Cmd,m_NAtagCMSuitEquipStrip.SubCmd))] = m_NAtagCMSuitEquipStrip
-
-
-#------------------------------------------------------
#A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack
class tagCMMagicItemPutInItemPack(Structure):
@@ -5926,6 +6464,58 @@
#------------------------------------------------------
+# A3 2F 宗门试炼兑换 #tagCMTrialExchange
+
+class tagCMTrialExchange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ID", c_int), #兑换ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x2F
+ 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 = 0x2F
+ self.ID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTrialExchange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 2F 宗门试炼兑换 //tagCMTrialExchange:
+ Cmd:%s,
+ SubCmd:%s,
+ ID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ID
+ )
+ return DumpString
+
+
+m_NAtagCMTrialExchange=tagCMTrialExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange
+
+
+#------------------------------------------------------
# A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
class tagCMUseAllAttrFruit(Structure):
@@ -5975,122 +6565,6 @@
m_NAtagCMUseAllAttrFruit=tagCMUseAllAttrFruit()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseAllAttrFruit.Cmd,m_NAtagCMUseAllAttrFruit.SubCmd))] = m_NAtagCMUseAllAttrFruit
-
-
-#------------------------------------------------------
-#A3 10 一键使用图鉴 #tagCMUseAllCard
-
-class tagCMUseAllCard(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CardColor", c_ushort), #使用的图鉴颜色品质,可配置多个颜色品质,颜色品质从0开始,对应到二进制位
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x10
- 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 = 0x10
- self.CardColor = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUseAllCard)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 10 一键使用图鉴 //tagCMUseAllCard:
- Cmd:%s,
- SubCmd:%s,
- CardColor:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CardColor
- )
- return DumpString
-
-
-m_NAtagCMUseAllCard=tagCMUseAllCard()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseAllCard.Cmd,m_NAtagCMUseAllCard.SubCmd))] = m_NAtagCMUseAllCard
-
-
-#------------------------------------------------------
-# A3 2A 使用皇室宝箱 #tagCMUseCRBox
-
-class tagCMUseCRBox(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FuncIndex", c_ubyte), #功能索引
- ("BoxIndex", c_ubyte), #宝箱格子索引
- ("UseItemIndex", c_ubyte), # 物品在背包中的索引
- ("UseType", c_ubyte), #使用类型<0-开始使用,1-开始解锁,2-立即开启>
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x2A
- 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 = 0x2A
- self.FuncIndex = 0
- self.BoxIndex = 0
- self.UseItemIndex = 0
- self.UseType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUseCRBox)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 2A 使用皇室宝箱 //tagCMUseCRBox:
- Cmd:%s,
- SubCmd:%s,
- FuncIndex:%d,
- BoxIndex:%d,
- UseItemIndex:%d,
- UseType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FuncIndex,
- self.BoxIndex,
- self.UseItemIndex,
- self.UseType
- )
- return DumpString
-
-
-m_NAtagCMUseCRBox=tagCMUseCRBox()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseCRBox.Cmd,m_NAtagCMUseCRBox.SubCmd))] = m_NAtagCMUseCRBox
#------------------------------------------------------
@@ -6151,66 +6625,6 @@
m_NAtagCMUseItems=tagCMUseItems()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseItems.Cmd,m_NAtagCMUseItems.SubCmd))] = m_NAtagCMUseItems
-
-
-#------------------------------------------------------
-# A3 27 使用过程物品 #tagCMUseProcessItem
-
-class tagCMUseProcessItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("UseType", c_ubyte), # 使用类型 <0-开始使用, 1-使用操作, 2-结束使用>
- ("UseItemIndex", c_ubyte), # 物品在背包中的索引
- ("ExtraInfo", c_ubyte), # 预留信息
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x27
- 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 = 0x27
- self.UseType = 0
- self.UseItemIndex = 0
- self.ExtraInfo = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUseProcessItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 27 使用过程物品 //tagCMUseProcessItem:
- Cmd:%s,
- SubCmd:%s,
- UseType:%d,
- UseItemIndex:%d,
- ExtraInfo:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.UseType,
- self.UseItemIndex,
- self.ExtraInfo
- )
- return DumpString
-
-
-m_NAtagCMUseProcessItem=tagCMUseProcessItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseProcessItem.Cmd,m_NAtagCMUseProcessItem.SubCmd))] = m_NAtagCMUseProcessItem
#------------------------------------------------------
@@ -6400,7 +6814,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_ubyte), #坐骑ID
+ ("HorseID", c_int), #坐骑ID
]
def __init__(self):
@@ -6498,6 +6912,58 @@
m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr
+
+
+#------------------------------------------------------
+# A5 12 激活法宝之魂 #tagCMActiveMWSoul
+
+class tagCMActiveMWSoul(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ID", c_ubyte), #编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x12
+ 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 = 0xA5
+ self.SubCmd = 0x12
+ self.ID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActiveMWSoul)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
+ Cmd:%s,
+ SubCmd:%s,
+ ID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ID
+ )
+ return DumpString
+
+
+m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
#------------------------------------------------------
@@ -6964,58 +7430,6 @@
#------------------------------------------------------
-#A5 12 购买每日一购商品 #tagCMBuyDailyGoldShopItem
-
-class tagCMBuyDailyGoldShopItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Index", c_ubyte), #购买物品的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x12
- 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 = 0xA5
- self.SubCmd = 0x12
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyDailyGoldShopItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 12 购买每日一购商品 //tagCMBuyDailyGoldShopItem:
- Cmd:%s,
- SubCmd:%s,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Index
- )
- return DumpString
-
-
-m_NAtagCMBuyDailyGoldShopItem=tagCMBuyDailyGoldShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyGoldShopItem.Cmd,m_NAtagCMBuyDailyGoldShopItem.SubCmd))] = m_NAtagCMBuyDailyGoldShopItem
-
-
-#------------------------------------------------------
#A5 75 购买副本进入次数#tagCMBuyEnterCount
class tagCMBuyEnterCount(Structure):
@@ -7065,58 +7479,6 @@
m_NAtagCMBuyEnterCount=tagCMBuyEnterCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyEnterCount.Cmd,m_NAtagCMBuyEnterCount.SubCmd))] = m_NAtagCMBuyEnterCount
-
-
-#------------------------------------------------------
-#A5 14 开通表情包#tagPyCMBuyFacePackage
-
-class tagPyCMBuyFacePackage(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PackageID", c_ubyte), #购买表情包的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x14
- 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 = 0xA5
- self.SubCmd = 0x14
- self.PackageID = 0
- return
-
- def GetLength(self):
- return sizeof(tagPyCMBuyFacePackage)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 14 开通表情包//tagPyCMBuyFacePackage:
- Cmd:%s,
- SubCmd:%s,
- PackageID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PackageID
- )
- return DumpString
-
-
-m_NAtagPyCMBuyFacePackage=tagPyCMBuyFacePackage()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyCMBuyFacePackage.Cmd,m_NAtagPyCMBuyFacePackage.SubCmd))] = m_NAtagPyCMBuyFacePackage
#------------------------------------------------------
@@ -7577,62 +7939,6 @@
#------------------------------------------------------
-# A5 62 装备收集属性激活 #tagCMCollectEquipAttrActive
-
-class tagCMCollectEquipAttrActive(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CollectType", c_ubyte), #收集类型 0-目标收集 1-战装收集
- ("Data", c_ubyte), #额外数据
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x62
- 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 = 0xA5
- self.SubCmd = 0x62
- self.CollectType = 0
- self.Data = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMCollectEquipAttrActive)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 62 装备收集属性激活 //tagCMCollectEquipAttrActive:
- Cmd:%s,
- SubCmd:%s,
- CollectType:%d,
- Data:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CollectType,
- self.Data
- )
- return DumpString
-
-
-m_NAtagCMCollectEquipAttrActive=tagCMCollectEquipAttrActive()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCollectEquipAttrActive.Cmd,m_NAtagCMCollectEquipAttrActive.SubCmd))] = m_NAtagCMCollectEquipAttrActive
-
-
-#------------------------------------------------------
# A5 28 常规副本扫荡 #tagCMCommFBWipeOut
class tagCMCommFBWipeOut(Structure):
@@ -7794,6 +8100,303 @@
m_NAtagCMDoFBAction=tagCMDoFBAction()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDoFBAction.Cmd,m_NAtagCMDoFBAction.SubCmd))] = m_NAtagCMDoFBAction
+
+
+#------------------------------------------------------
+# A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
+
+class tagCMDogzBattleStateChange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DogzID", c_ubyte), # 神兽ID
+ ("BatteState", c_ubyte), #助战状态,0-召回,1-助战
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC2
+ 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 = 0xA5
+ self.SubCmd = 0xC2
+ self.DogzID = 0
+ self.BatteState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDogzBattleStateChange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
+ Cmd:%s,
+ SubCmd:%s,
+ DogzID:%d,
+ BatteState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DogzID,
+ self.BatteState
+ )
+ return DumpString
+
+
+m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
+
+
+#------------------------------------------------------
+# A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
+
+class tagCMDogzBuyBatteCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ 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 = 0xA5
+ self.SubCmd = 0xC3
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDogzBuyBatteCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
+
+
+#------------------------------------------------------
+# A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
+
+class tagCMDogzEquipItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DogzID", c_ubyte), # 神兽ID
+ ("EquipIndex", c_ubyte), #神兽装备所在神兽背包索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC0
+ 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 = 0xA5
+ self.SubCmd = 0xC0
+ self.DogzID = 0
+ self.EquipIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDogzEquipItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C0 神兽穿戴装备 //tagCMDogzEquipItem:
+ Cmd:%s,
+ SubCmd:%s,
+ DogzID:%d,
+ EquipIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DogzID,
+ self.EquipIndex
+ )
+ return DumpString
+
+
+m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Cmd,m_NAtagCMDogzEquipItem.SubCmd))] = m_NAtagCMDogzEquipItem
+
+
+#------------------------------------------------------
+# A5 C4 神兽装备强化 #tagCMDogzEquipPlus
+
+class tagCMDogzEquipPlus(Structure):
+ Head = tagHead()
+ EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
+ IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
+ IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+ IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC4
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.IndexList.append(value)
+ self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC4
+ self.EquipIndex = 0
+ self.IndexCount = 0
+ self.IndexList = list()
+ self.IsDouble = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1 * self.IndexCount
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EquipIndex)
+ data = CommFunc.WriteBYTE(data, self.IndexCount)
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ data = CommFunc.WriteBYTE(data, self.IsDouble)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipIndex:%d,
+ IndexCount:%d,
+ IndexList:%s,
+ IsDouble:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipIndex,
+ self.IndexCount,
+ "...",
+ self.IsDouble
+ )
+ return DumpString
+
+
+m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
+
+
+#------------------------------------------------------
+# A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
+
+class tagCMDogzUnEquipItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DogzID", c_ubyte), # 神兽ID
+ ("EquipPlace", c_ubyte), #卸下的装备位, 0代表卸下全部
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC1
+ 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 = 0xA5
+ self.SubCmd = 0xC1
+ self.DogzID = 0
+ self.EquipPlace = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMDogzUnEquipItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
+ Cmd:%s,
+ SubCmd:%s,
+ DogzID:%d,
+ EquipPlace:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DogzID,
+ self.EquipPlace
+ )
+ return DumpString
+
+
+m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
#------------------------------------------------------
@@ -8181,114 +8784,6 @@
#------------------------------------------------------
-# A5 64 抢红包 #tagCMGrabRedPacket
-
-class tagCMGrabRedPacket(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), # 0抢 1 查询
- ("RedPacketID", c_int), # 红包ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x64
- 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 = 0xA5
- self.SubCmd = 0x64
- self.Type = 0
- self.RedPacketID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGrabRedPacket)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 64 抢红包 //tagCMGrabRedPacket:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- RedPacketID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.RedPacketID
- )
- return DumpString
-
-
-m_NAtagCMGrabRedPacket=tagCMGrabRedPacket()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGrabRedPacket.Cmd,m_NAtagCMGrabRedPacket.SubCmd))] = m_NAtagCMGrabRedPacket
-
-
-#------------------------------------------------------
-# A5 56 守护升级 #tagCMGuardUp
-
-class tagCMGuardUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GuardID", c_int), # 守护物品id
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x56
- 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 = 0xA5
- self.SubCmd = 0x56
- self.GuardID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGuardUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 56 守护升级 //tagCMGuardUp:
- Cmd:%s,
- SubCmd:%s,
- GuardID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GuardID
- )
- return DumpString
-
-
-m_NAtagCMGuardUp=tagCMGuardUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGuardUp.Cmd,m_NAtagCMGuardUp.SubCmd))] = m_NAtagCMGuardUp
-
-
-#------------------------------------------------------
#A5 37 天梯增加挑战次数#tagCMHighLadderAddCount
class tagCMHighLadderAddCount(Structure):
@@ -8344,7 +8839,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_ubyte), #坐骑ID
+ ("HorseID", c_int), #坐骑ID
("UseItemCnt", c_ubyte), #消耗材料个数
("IsAutoBuy", c_ubyte), #是否自动购买
]
@@ -8394,54 +8889,6 @@
m_NAtagCMHorseUp=tagCMHorseUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
-
-
-#------------------------------------------------------
-# A5 5B 寻宝免费次数倒计时结束 #tagCMMagicTreasureFreeCnt
-
-class tagCMMagicTreasureFreeCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x5B
- 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 = 0xA5
- self.SubCmd = 0x5B
- return
-
- def GetLength(self):
- return sizeof(tagCMMagicTreasureFreeCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 5B 寻宝免费次数倒计时结束 //tagCMMagicTreasureFreeCnt:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMMagicTreasureFreeCnt=tagCMMagicTreasureFreeCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicTreasureFreeCnt.Cmd,m_NAtagCMMagicTreasureFreeCnt.SubCmd))] = m_NAtagCMMagicTreasureFreeCnt
#------------------------------------------------------
@@ -8501,21 +8948,20 @@
#------------------------------------------------------
-#A5 21 抽取图鉴卡片#tagCMMonsterCardLottery
+# A5 16 法宝状态记录 #tagCMMagicWeaponState
-class tagCMMonsterCardLottery(Structure):
+class tagCMMagicWeaponState(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Type", c_ubyte), #抽奖类型 0 普通 1 高级
- ("AutoBuy", c_ubyte), #是否自动购买道具
+ ("MWID", c_int), #法宝ID
]
def __init__(self):
self.Clear()
self.Cmd = 0xA5
- self.SubCmd = 0x21
+ self.SubCmd = 0x16
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -8525,35 +8971,84 @@
def Clear(self):
self.Cmd = 0xA5
- self.SubCmd = 0x21
- self.Type = 0
- self.AutoBuy = 0
+ self.SubCmd = 0x16
+ self.MWID = 0
return
def GetLength(self):
- return sizeof(tagCMMonsterCardLottery)
+ return sizeof(tagCMMagicWeaponState)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A5 21 抽取图鉴卡片//tagCMMonsterCardLottery:
+ DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
Cmd:%s,
SubCmd:%s,
- Type:%d,
- AutoBuy:%d
+ MWID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Type,
- self.AutoBuy
+ self.MWID
)
return DumpString
-m_NAtagCMMonsterCardLottery=tagCMMonsterCardLottery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMonsterCardLottery.Cmd,m_NAtagCMMonsterCardLottery.SubCmd))] = m_NAtagCMMonsterCardLottery
+m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
+
+
+#------------------------------------------------------
+# A5 15 提升法宝等级 #tagCMMagicWeaponUp
+
+class tagCMMagicWeaponUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MWID", c_int), #法宝ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ 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 = 0xA5
+ self.SubCmd = 0x15
+ self.MWID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMagicWeaponUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 15 提升法宝等级 //tagCMMagicWeaponUp:
+ Cmd:%s,
+ SubCmd:%s,
+ MWID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MWID
+ )
+ return DumpString
+
+
+m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp
#------------------------------------------------------
@@ -8720,7 +9215,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Index", c_ubyte), #选择索引
+ ("Index", c_int), #选择索引
]
def __init__(self):
@@ -8762,54 +9257,6 @@
m_NAtagPlayerChooseHorse=tagPlayerChooseHorse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerChooseHorse.Cmd,m_NAtagPlayerChooseHorse.SubCmd))] = m_NAtagPlayerChooseHorse
-
-
-#------------------------------------------------------
-# A5 61 掷骰子 #tagCMPlayerDice
-
-class tagCMPlayerDice(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x61
- 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 = 0xA5
- self.SubCmd = 0x61
- return
-
- def GetLength(self):
- return sizeof(tagCMPlayerDice)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 61 掷骰子 //tagCMPlayerDice:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMPlayerDice=tagCMPlayerDice()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPlayerDice.Cmd,m_NAtagCMPlayerDice.SubCmd))] = m_NAtagCMPlayerDice
#------------------------------------------------------
@@ -8947,65 +9394,9 @@
#------------------------------------------------------
-#A5 3A 新符文系统符文升级#tagCMPropEnhanceLVUp
+# A5 14 祈福丹药 #tagCMPrayElixir
-class tagCMPropEnhanceLVUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("index", c_ubyte), #要升级的符文索引 (从0开始)
- ("count", c_ushort), #连续升级次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x3A
- 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 = 0xA5
- self.SubCmd = 0x3A
- self.index = 0
- self.count = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMPropEnhanceLVUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 3A 新符文系统符文升级//tagCMPropEnhanceLVUp:
- Cmd:%s,
- SubCmd:%s,
- index:%d,
- count:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.index,
- self.count
- )
- return DumpString
-
-
-m_NAtagCMPropEnhanceLVUp=tagCMPropEnhanceLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPropEnhanceLVUp.Cmd,m_NAtagCMPropEnhanceLVUp.SubCmd))] = m_NAtagCMPropEnhanceLVUp
-
-
-#------------------------------------------------------
-#A5 13 查询表情包开通状态#tagPyCMQueryFacePackage
-
-class tagPyCMQueryFacePackage(Structure):
+class tagCMPrayElixir(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
@@ -9015,7 +9406,7 @@
def __init__(self):
self.Clear()
self.Cmd = 0xA5
- self.SubCmd = 0x13
+ self.SubCmd = 0x14
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -9025,17 +9416,17 @@
def Clear(self):
self.Cmd = 0xA5
- self.SubCmd = 0x13
+ self.SubCmd = 0x14
return
def GetLength(self):
- return sizeof(tagPyCMQueryFacePackage)
+ return sizeof(tagCMPrayElixir)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A5 13 查询表情包开通状态//tagPyCMQueryFacePackage:
+ DumpString = '''// A5 14 祈福丹药 //tagCMPrayElixir:
Cmd:%s,
SubCmd:%s
'''\
@@ -9046,8 +9437,8 @@
return DumpString
-m_NAtagPyCMQueryFacePackage=tagPyCMQueryFacePackage()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyCMQueryFacePackage.Cmd,m_NAtagPyCMQueryFacePackage.SubCmd))] = m_NAtagPyCMQueryFacePackage
+m_NAtagCMPrayElixir=tagCMPrayElixir()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
#------------------------------------------------------
@@ -9144,54 +9535,6 @@
m_NAtagCMQueryOnlinePrizeInfo=tagCMQueryOnlinePrizeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryOnlinePrizeInfo.Cmd,m_NAtagCMQueryOnlinePrizeInfo.SubCmd))] = m_NAtagCMQueryOnlinePrizeInfo
-
-
-#------------------------------------------------------
-#A5 20 查询图鉴兑换点数#tagCMQueryPlayerMonsterCurrency
-
-class tagCMQueryPlayerMonsterCurrency(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x20
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryPlayerMonsterCurrency)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 20 查询图鉴兑换点数//tagCMQueryPlayerMonsterCurrency:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMQueryPlayerMonsterCurrency=tagCMQueryPlayerMonsterCurrency()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryPlayerMonsterCurrency.Cmd,m_NAtagCMQueryPlayerMonsterCurrency.SubCmd))] = m_NAtagCMQueryPlayerMonsterCurrency
#------------------------------------------------------
@@ -9534,7 +9877,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("TreasureNum", c_ubyte), # 自定义的寻宝编号
+ ("TreasureType", c_ubyte), #寻宝类型
+ ("TreasureIndex", c_ubyte), #寻宝索引
+ ("CostType", c_ubyte), #消耗类型:0-默认仙玉;1-免费次数;2-寻宝道具
]
def __init__(self):
@@ -9551,7 +9896,9 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x68
- self.TreasureNum = 0
+ self.TreasureType = 0
+ self.TreasureIndex = 0
+ self.CostType = 0
return
def GetLength(self):
@@ -9564,12 +9911,16 @@
DumpString = '''// A5 68 请求寻宝 //tagCMRequestTreasure:
Cmd:%s,
SubCmd:%s,
- TreasureNum:%d
+ TreasureType:%d,
+ TreasureIndex:%d,
+ CostType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.TreasureNum
+ self.TreasureType,
+ self.TreasureIndex,
+ self.CostType
)
return DumpString
@@ -9896,21 +10247,19 @@
#------------------------------------------------------
-#A5 33 开始魔方寻宝 #tagCMMagicTreasure
+# A5 11 试用首充武器 #tagCMTryFirstGoldItem
-class tagCMMagicTreasure(Structure):
+class tagCMTryFirstGoldItem(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Type", c_ubyte), #寻宝类型 1玩家装备 2玩家首饰 3坐骑装备
- ("Count", c_ubyte), #寻宝次数
]
def __init__(self):
self.Clear()
self.Cmd = 0xA5
- self.SubCmd = 0x33
+ self.SubCmd = 0x11
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -9920,35 +10269,29 @@
def Clear(self):
self.Cmd = 0xA5
- self.SubCmd = 0x33
- self.Type = 0
- self.Count = 0
+ self.SubCmd = 0x11
return
def GetLength(self):
- return sizeof(tagCMMagicTreasure)
+ return sizeof(tagCMTryFirstGoldItem)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A5 33 开始魔方寻宝 //tagCMMagicTreasure:
+ DumpString = '''// A5 11 试用首充武器 //tagCMTryFirstGoldItem:
Cmd:%s,
- SubCmd:%s,
- Type:%d,
- Count:%d
+ SubCmd:%s
'''\
%(
self.Cmd,
- self.SubCmd,
- self.Type,
- self.Count
+ self.SubCmd
)
return DumpString
-m_NAtagCMMagicTreasure=tagCMMagicTreasure()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicTreasure.Cmd,m_NAtagCMMagicTreasure.SubCmd))] = m_NAtagCMMagicTreasure
+m_NAtagCMTryFirstGoldItem=tagCMTryFirstGoldItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTryFirstGoldItem.Cmd,m_NAtagCMTryFirstGoldItem.SubCmd))] = m_NAtagCMTryFirstGoldItem
#------------------------------------------------------
@@ -10001,6 +10344,58 @@
m_NAtagCMUnLockBirthChartHole=tagCMUnLockBirthChartHole()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnLockBirthChartHole.Cmd,m_NAtagCMUnLockBirthChartHole.SubCmd))] = m_NAtagCMUnLockBirthChartHole
+
+
+#------------------------------------------------------
+# A5 13 解锁符印孔 #tagCMUnlockRuneHole
+
+class tagCMUnlockRuneHole(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HoleIndex", c_ubyte), # 孔索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x13
+ 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 = 0xA5
+ self.SubCmd = 0x13
+ self.HoleIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMUnlockRuneHole)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 13 解锁符印孔 //tagCMUnlockRuneHole:
+ Cmd:%s,
+ SubCmd:%s,
+ HoleIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HoleIndex
+ )
+ return DumpString
+
+
+m_NAtagCMUnlockRuneHole=tagCMUnlockRuneHole()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnlockRuneHole.Cmd,m_NAtagCMUnlockRuneHole.SubCmd))] = m_NAtagCMUnlockRuneHole
#------------------------------------------------------
@@ -10593,73 +10988,6 @@
#------------------------------------------------------
-# A7 03 宠物精华分解 #tagCMPetAddClassExp
-
-class tagCMPetAddClassExp(Structure):
- Head = tagHead()
- IndexCnt = 0 #(WORD IndexCnt)//被吞噬经验物品索引个数
- IndexList = list() #(vector<WORD> IndexList)// 被吞噬经验物品所在背包索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.IndexCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.IndexCnt):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.IndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x03
- self.IndexCnt = 0
- self.IndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 2 * self.IndexCnt
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.IndexCnt)
- for i in range(self.IndexCnt):
- data = CommFunc.WriteWORD(data, self.IndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- IndexCnt:%d,
- IndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.IndexCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMPetAddClassExp=tagCMPetAddClassExp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetAddClassExp.Head.Cmd,m_NAtagCMPetAddClassExp.Head.SubCmd))] = m_NAtagCMPetAddClassExp
-
-
-#------------------------------------------------------
# A7 04 宠物升阶 #tagCMPetClassUP
class tagCMPetClassUP(Structure):
@@ -10668,6 +10996,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PetItemIndex", c_ubyte), #宠物数据背包索引
+ ("UseItemCnt", c_ushort), #消耗材料个数
]
def __init__(self):
@@ -10685,6 +11014,7 @@
self.Cmd = 0xA7
self.SubCmd = 0x04
self.PetItemIndex = 0
+ self.UseItemCnt = 0
return
def GetLength(self):
@@ -10697,137 +11027,20 @@
DumpString = '''// A7 04 宠物升阶 //tagCMPetClassUP:
Cmd:%s,
SubCmd:%s,
- PetItemIndex:%d
+ PetItemIndex:%d,
+ UseItemCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PetItemIndex
+ self.PetItemIndex,
+ self.UseItemCnt
)
return DumpString
m_NAtagCMPetClassUP=tagCMPetClassUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetClassUP.Cmd,m_NAtagCMPetClassUP.SubCmd))] = m_NAtagCMPetClassUP
-
-
-#------------------------------------------------------
-# A7 01 灵兽装备吸收 #tagCMPetEatEquip
-
-class tagCMPetEatEquip(Structure):
- Head = tagHead()
- IndexCnt = 0 #(WORD IndexCnt)//被吞噬经验物品索引个数
- IndexList = list() #(vector<WORD> IndexList)// 被吞噬经验物品所在背包索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.IndexCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.IndexCnt):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.IndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x01
- self.IndexCnt = 0
- self.IndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 2 * self.IndexCnt
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.IndexCnt)
- for i in range(self.IndexCnt):
- data = CommFunc.WriteWORD(data, self.IndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- IndexCnt:%d,
- IndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.IndexCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMPetEatEquip=tagCMPetEatEquip()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetEatEquip.Head.Cmd,m_NAtagCMPetEatEquip.Head.SubCmd))] = m_NAtagCMPetEatEquip
-
-
-#------------------------------------------------------
-# A7 05 宠物设置数据 #tagCMPetSeting
-
-class tagCMPetSeting(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Seting", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA7
- self.SubCmd = 0x05
- 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 = 0x05
- self.Seting = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMPetSeting)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A7 05 宠物设置数据 //tagCMPetSeting:
- Cmd:%s,
- SubCmd:%s,
- Seting:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Seting
- )
- return DumpString
-
-
-m_NAtagCMPetSeting=tagCMPetSeting()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetSeting.Cmd,m_NAtagCMPetSeting.SubCmd))] = m_NAtagCMPetSeting
#------------------------------------------------------
@@ -11307,21 +11520,20 @@
#------------------------------------------------------
-#AB 13 嘉年华抽奖 #tagCMCarnivalDraw
+# AB 12 抢红包 #tagCMGrabFamilyRedPacket
-class tagCMCarnivalDraw(Structure):
+class tagCMGrabFamilyRedPacket(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Index", c_ubyte), # 抽奖索引
- ("Type", c_ubyte), # 抽奖类型 0:只获取结果,1:获取奖励,2:获取结果和奖励
+ ("RedPaketID", c_int), # 红包ID
]
def __init__(self):
self.Clear()
self.Cmd = 0xAB
- self.SubCmd = 0x13
+ self.SubCmd = 0x12
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11331,35 +11543,32 @@
def Clear(self):
self.Cmd = 0xAB
- self.SubCmd = 0x13
- self.Index = 0
- self.Type = 0
+ self.SubCmd = 0x12
+ self.RedPaketID = 0
return
def GetLength(self):
- return sizeof(tagCMCarnivalDraw)
+ return sizeof(tagCMGrabFamilyRedPacket)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//AB 13 嘉年华抽奖 //tagCMCarnivalDraw:
+ DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket:
Cmd:%s,
SubCmd:%s,
- Index:%d,
- Type:%d
+ RedPaketID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index,
- self.Type
+ self.RedPaketID
)
return DumpString
-m_NAtagCMCarnivalDraw=tagCMCarnivalDraw()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCarnivalDraw.Cmd,m_NAtagCMCarnivalDraw.SubCmd))] = m_NAtagCMCarnivalDraw
+m_NAtagCMGrabFamilyRedPacket=tagCMGrabFamilyRedPacket()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGrabFamilyRedPacket.Cmd,m_NAtagCMGrabFamilyRedPacket.SubCmd))] = m_NAtagCMGrabFamilyRedPacket
#------------------------------------------------------
@@ -11765,66 +11974,6 @@
#------------------------------------------------------
-# AB 09 老虎机抽奖 #tagCMSlotsTake
-
-class tagCMSlotsTake(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), # 老虎机类型
- ("Num", c_int), # 抽奖次数
- ("IsAutoBuy", c_ubyte), # 是否自动购买材料 0-否 1-是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x09
- 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 = 0xAB
- self.SubCmd = 0x09
- self.Type = 0
- self.Num = 0
- self.IsAutoBuy = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSlotsTake)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 09 老虎机抽奖 //tagCMSlotsTake:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- Num:%d,
- IsAutoBuy:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.Num,
- self.IsAutoBuy
- )
- return DumpString
-
-
-m_NAtagCMSlotsTake=tagCMSlotsTake()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSlotsTake.Cmd,m_NAtagCMSlotsTake.SubCmd))] = m_NAtagCMSlotsTake
-
-
-#------------------------------------------------------
# AB 0C 摇骰子 #tagCMDiceEx
class tagCMDiceEx(Structure):
@@ -11874,54 +12023,6 @@
m_NAtagCMDiceEx=tagCMDiceEx()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceEx.Cmd,m_NAtagCMDiceEx.SubCmd))] = m_NAtagCMDiceEx
-
-
-#------------------------------------------------------
-# AB 08 许愿 #tagCMWishingTree
-
-class tagCMWishingTree(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- self.SubCmd = 0x08
- 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 = 0xAB
- self.SubCmd = 0x08
- return
-
- def GetLength(self):
- return sizeof(tagCMWishingTree)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 08 许愿 //tagCMWishingTree:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMWishingTree=tagCMWishingTree()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWishingTree.Cmd,m_NAtagCMWishingTree.SubCmd))] = m_NAtagCMWishingTree
#------------------------------------------------------
@@ -12349,150 +12450,6 @@
#------------------------------------------------------
-#B0 12 开始转转乐 #tagBeginGambling
-
-class tagBeginGambling(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x12
- 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 = 0x12
- return
-
- def GetLength(self):
- return sizeof(tagBeginGambling)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 12 开始转转乐 //tagBeginGambling:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagBeginGambling=tagBeginGambling()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagBeginGambling.Cmd,m_NAtagBeginGambling.SubCmd))] = m_NAtagBeginGambling
-
-
-#------------------------------------------------------
-#B0 13 转转乐商人升级 #tagGamblingMerchantLvUp
-
-class tagGamblingMerchantLvUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x13
- 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 = 0x13
- return
-
- def GetLength(self):
- return sizeof(tagGamblingMerchantLvUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 13 转转乐商人升级 //tagGamblingMerchantLvUp:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagGamblingMerchantLvUp=tagGamblingMerchantLvUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGamblingMerchantLvUp.Cmd,m_NAtagGamblingMerchantLvUp.SubCmd))] = m_NAtagGamblingMerchantLvUp
-
-
-#------------------------------------------------------
-#B0 14 转转乐换盘 #tagGamblingDiskChange
-
-class tagGamblingDiskChange(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x14
- 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 = 0x14
- return
-
- def GetLength(self):
- return sizeof(tagGamblingDiskChange)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 14 转转乐换盘 //tagGamblingDiskChange:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagGamblingDiskChange=tagGamblingDiskChange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGamblingDiskChange.Cmd,m_NAtagGamblingDiskChange.SubCmd))] = m_NAtagGamblingDiskChange
-
-
-#------------------------------------------------------
# B0 50 钓鱼收杆 #tagCMDoFish
class tagCMDoFish(Structure):
@@ -12785,6 +12742,54 @@
#------------------------------------------------------
+# B1 04 客户端发送开始副本 #tagCMClientStartFB
+
+class tagCMClientStartFB(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x04
+ 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 = 0xB1
+ self.SubCmd = 0x04
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMClientStartFB)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 04 客户端发送开始副本 //tagCMClientStartFB:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMClientStartFB=tagCMClientStartFB()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartFB.Cmd,m_NAtagCMClientStartFB.SubCmd))] = m_NAtagCMClientStartFB
+
+
+#------------------------------------------------------
# B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
class tagCMGetMultiFBPrize(Structure):
@@ -12949,6 +12954,77 @@
#------------------------------------------------------
+#B2 05 推送提醒设置 #tagCMPushNotificationsSetting
+
+class tagCMPushNotificationsSetting(Structure):
+ Head = tagHead()
+ OnoffBit = 0 #(DWORD OnoffBit)// 按位约定开关
+ TimeLen = 0 #(BYTE TimeLen)
+ TimeStr = "" #(String TimeStr)// 时间字符串 01:02-05:00
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OnoffBit,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TimeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,self.TimeLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x05
+ self.OnoffBit = 0
+ self.TimeLen = 0
+ self.TimeStr = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.TimeStr)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OnoffBit)
+ data = CommFunc.WriteBYTE(data, self.TimeLen)
+ data = CommFunc.WriteString(data, self.TimeLen, self.TimeStr)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OnoffBit:%d,
+ TimeLen:%d,
+ TimeStr:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OnoffBit,
+ self.TimeLen,
+ self.TimeStr
+ )
+ return DumpString
+
+
+m_NAtagCMPushNotificationsSetting=tagCMPushNotificationsSetting()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPushNotificationsSetting.Head.Cmd,m_NAtagCMPushNotificationsSetting.Head.SubCmd))] = m_NAtagCMPushNotificationsSetting
+
+
+#------------------------------------------------------
#B2 02 视野缩放 #tagCMSightZoom
class tagCMSightZoom(Structure):
--
Gitblit v1.8.0