From ecfe8b45ee59dcc926fec0ece5a4b6b2b583121d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 15 一月 2019 23:35:03 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(跨服聊天名字默认使用跨服名字格式)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 6604 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 5,561 insertions(+), 1,043 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index a49e731..702c9eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -318,6 +318,14 @@
("Day", c_ushort), # 已开服天数,从0开始
("IsMixServer", c_ubyte), #是否是合服服务器
("MixDay", c_ushort), # 已合服天数,从0开始
+ ("OpenWeekday", c_ubyte), #开服是周几,1代表周一
+ ("NowYear", c_ushort), #服务器当前时间 - 年
+ ("NowMonth", c_ubyte),
+ ("NowDay", c_ubyte),
+ ("NowHour", c_ubyte),
+ ("NowMinute", c_ubyte),
+ ("NowSecond", c_ubyte),
+ ("NowMicSecond", c_int),
]
def __init__(self):
@@ -337,6 +345,14 @@
self.Day = 0
self.IsMixServer = 0
self.MixDay = 0
+ self.OpenWeekday = 0
+ self.NowYear = 0
+ self.NowMonth = 0
+ self.NowDay = 0
+ self.NowHour = 0
+ self.NowMinute = 0
+ self.NowSecond = 0
+ self.NowMicSecond = 0
return
def GetLength(self):
@@ -351,14 +367,30 @@
SubCmd:%s,
Day:%d,
IsMixServer:%d,
- MixDay:%d
+ MixDay:%d,
+ OpenWeekday:%d,
+ NowYear:%d,
+ NowMonth:%d,
+ NowDay:%d,
+ NowHour:%d,
+ NowMinute:%d,
+ NowSecond:%d,
+ NowMicSecond:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.Day,
self.IsMixServer,
- self.MixDay
+ self.MixDay,
+ self.OpenWeekday,
+ self.NowYear,
+ self.NowMonth,
+ self.NowDay,
+ self.NowHour,
+ self.NowMinute,
+ self.NowSecond,
+ self.NowMicSecond
)
return DumpString
@@ -2285,8 +2317,9 @@
class tagGCBossShuntLineState(Structure):
BossID = 0 #(DWORD BossID)// bossID
- DeadLineCount = 0 #(BYTE DeadLineCount)
- DeadLineList = list() #(vector<BYTE> DeadLineList)// 已死亡的线路列表
+ LineCount = 0 #(BYTE LineCount)
+ LineIDList = list() #(vector<BYTE> LineIDList)// 线路ID列表
+ StateList = list() #(vector<BYTE> StateList)// 对应状态列表, 0-被击杀,1-活着
data = None
def __init__(self):
@@ -2296,43 +2329,52 @@
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):
+ self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.LineCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.DeadLineList.append(value)
+ self.LineIDList.append(value)
+ for i in range(self.LineCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.StateList.append(value)
return _pos
def Clear(self):
self.BossID = 0
- self.DeadLineCount = 0
- self.DeadLineList = list()
+ self.LineCount = 0
+ self.LineIDList = list()
+ self.StateList = list()
return
def GetLength(self):
length = 0
length += 4
length += 1
- length += 1 * self.DeadLineCount
+ length += 1 * self.LineCount
+ length += 1 * self.LineCount
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])
+ data = CommFunc.WriteBYTE(data, self.LineCount)
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.LineIDList[i])
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.StateList[i])
return data
def OutputString(self):
DumpString = '''
BossID:%d,
- DeadLineCount:%d,
- DeadLineList:%s
+ LineCount:%d,
+ LineIDList:%s,
+ StateList:%s
'''\
%(
self.BossID,
- self.DeadLineCount,
+ self.LineCount,
+ "...",
"..."
)
return DumpString
@@ -2667,6 +2709,114 @@
#------------------------------------------------------
+# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
+
+class tagDogzTimeInfoObj(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int), # npcid
+ ("RefreshSecond", 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.RefreshSecond = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagDogzTimeInfoObj)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
+ NPCID:%d,
+ RefreshSecond:%d
+ '''\
+ %(
+ self.NPCID,
+ self.RefreshSecond
+ )
+ return DumpString
+
+
+class tagGCDogzNPCRefreshTime(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//信息个数
+ InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x04
+ 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 = 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 = 0x04
+ 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_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
+
+
+#------------------------------------------------------
# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
class tagGCFriendSendEnergyInfo(Structure):
@@ -2760,6 +2910,7 @@
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -2773,6 +2924,7 @@
self.RecordLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.KillRecord,_pos = CommFunc.ReadString(_lpData, _pos,self.RecordLen)
self.RefreshSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RefreshCD,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -2781,6 +2933,7 @@
self.RecordLen = 0
self.KillRecord = ""
self.RefreshSecond = 0
+ self.RefreshCD = 0
return
def GetLength(self):
@@ -2789,6 +2942,7 @@
length += 1
length += 2
length += len(self.KillRecord)
+ length += 4
length += 4
return length
@@ -2800,6 +2954,7 @@
data = CommFunc.WriteWORD(data, self.RecordLen)
data = CommFunc.WriteString(data, self.RecordLen, self.KillRecord)
data = CommFunc.WriteDWORD(data, self.RefreshSecond)
+ data = CommFunc.WriteDWORD(data, self.RefreshCD)
return data
def OutputString(self):
@@ -2808,14 +2963,16 @@
IsAlive:%d,
RecordLen:%d,
KillRecord:%s,
- RefreshSecond:%d
+ RefreshSecond:%d,
+ RefreshCD:%d
'''\
%(
self.BossID,
self.IsAlive,
self.RecordLen,
self.KillRecord,
- self.RefreshSecond
+ self.RefreshSecond,
+ self.RefreshCD
)
return DumpString
@@ -4077,6 +4234,114 @@
#------------------------------------------------------
+# A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
+
+class tagGCStoreServerBuyCnt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsID", c_int), #商品标识
+ ("BuyCnt", 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.GoodsID = 0
+ self.BuyCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCStoreServerBuyCnt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 06 商城全服购买次数通知 //tagGCStoreServerBuyCntInfo:
+ GoodsID:%d,
+ BuyCnt:%d
+ '''\
+ %(
+ self.GoodsID,
+ self.BuyCnt
+ )
+ return DumpString
+
+
+class tagGCStoreServerBuyCntInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)//数量
+ InfoList = list() #(vector<tagGCStoreServerBuyCnt> InfoList)//次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagGCStoreServerBuyCnt()
+ _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 = 0x06
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
+
+
+#------------------------------------------------------
#A9 21 角色改名结果 #tagUpdatePlayerNameResult
class tagUpdatePlayerNameResult(Structure):
@@ -4129,6 +4394,162 @@
#------------------------------------------------------
+# AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
+
+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()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ 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.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):
+ 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):
+ 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 = '''
+ NPCID:%d,
+ CurHP:%d,
+ CurHPEx:%d,
+ MaxHP:%d,
+ MaxHPEx:%d,
+ FamilyID:%d,
+ NameLen:%d,
+ FamilyName:%s
+ '''\
+ %(
+ self.NPCID,
+ self.CurHP,
+ self.CurHPEx,
+ self.MaxHP,
+ self.MaxHPEx,
+ self.FamilyID,
+ self.NameLen,
+ self.FamilyName
+ )
+ return DumpString
+
+
+class tagGCAllFamilyBossHurtInfoList(Structure):
+ Head = tagHead()
+ NPCCount = 0 #(BYTE NPCCount)// 个数
+ NPCHurtInfo = list() #(vector<tagGCFamilyBossHurtInfo> NPCHurtInfo)// NPC伤血信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ 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 = 0x10
+ self.NPCCount = 0
+ self.NPCHurtInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ 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.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,
+ NPCCount:%d,
+ NPCHurtInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.NPCCount,
+ "..."
+ )
+ return DumpString
+
+
+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):
@@ -4138,6 +4559,7 @@
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
("TotalPoint", c_int), # 复活总点数
+ ("RebornCnt", c_ushort), # 复活次数
]
def __init__(self):
@@ -4156,6 +4578,7 @@
self.SubCmd = 0x08
self.Point = 0
self.TotalPoint = 0
+ self.RebornCnt = 0
return
def GetLength(self):
@@ -4169,13 +4592,15 @@
Cmd:%s,
SubCmd:%s,
Point:%d,
- TotalPoint:%d
+ TotalPoint:%d,
+ RebornCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.Point,
- self.TotalPoint
+ self.TotalPoint,
+ self.RebornCnt
)
return DumpString
@@ -4193,6 +4618,7 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
WorldLV = 0 #(WORD WorldLV)// 世界等级
LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
data = None
def __init__(self):
@@ -4208,6 +4634,7 @@
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -4219,6 +4646,7 @@
self.EndtDate = ""
self.WorldLV = 0
self.LimitLV = 0
+ self.ResetType = 0
return
def GetLength(self):
@@ -4228,6 +4656,7 @@
length += 10
length += 2
length += 2
+ length += 1
return length
@@ -4238,6 +4667,7 @@
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteWORD(data, self.WorldLV)
data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
return data
def OutputString(self):
@@ -4246,14 +4676,16 @@
StartDate:%s,
EndtDate:%s,
WorldLV:%d,
- LimitLV:%d
+ LimitLV:%d,
+ ResetType:%d
'''\
%(
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
self.WorldLV,
- self.LimitLV
+ self.LimitLV,
+ self.ResetType
)
return DumpString
@@ -4765,6 +5197,7 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
Multiple = 0 #(BYTE Multiple)// 倍数
LimitLV = 0 #(WORD LimitLV)// 限制等级
+ LimitPoint = 0 #(DWORD LimitPoint)// 限制获得修行点
data = None
def __init__(self):
@@ -4780,6 +5213,7 @@
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LimitPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -4791,6 +5225,7 @@
self.EndtDate = ""
self.Multiple = 0
self.LimitLV = 0
+ self.LimitPoint = 0
return
def GetLength(self):
@@ -4800,6 +5235,7 @@
length += 10
length += 1
length += 2
+ length += 4
return length
@@ -4810,6 +5246,7 @@
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteBYTE(data, self.Multiple)
data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteDWORD(data, self.LimitPoint)
return data
def OutputString(self):
@@ -4818,14 +5255,16 @@
StartDate:%s,
EndtDate:%s,
Multiple:%d,
- LimitLV:%d
+ LimitLV:%d,
+ LimitPoint:%d
'''\
%(
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
self.Multiple,
- self.LimitLV
+ self.LimitLV,
+ self.LimitPoint
)
return DumpString
@@ -5442,6 +5881,7 @@
RealmLV = 0 #(WORD RealmLV)//境界
OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线
IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍
+ ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID
data = None
def __init__(self):
@@ -5460,6 +5900,7 @@
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -5474,6 +5915,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.IsInTeam = 0
+ self.ServerGroupID = 0
return
def GetLength(self):
@@ -5486,6 +5928,7 @@
length += 2
length += 1
length += 1
+ length += 4
return length
@@ -5499,6 +5942,7 @@
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteBYTE(data, self.OnlineType)
data = CommFunc.WriteBYTE(data, self.IsInTeam)
+ data = CommFunc.WriteDWORD(data, self.ServerGroupID)
return data
def OutputString(self):
@@ -5510,7 +5954,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- IsInTeam:%d
+ IsInTeam:%d,
+ ServerGroupID:%d
'''\
%(
self.Head.OutputString(),
@@ -5520,7 +5965,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.IsInTeam
+ self.IsInTeam,
+ self.ServerGroupID
)
return DumpString
@@ -6150,6 +6596,66 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B9 13 进入组队副本失败原因 #tagGCEnterTeamFBFailReason
+
+class tagGCEnterTeamFBFailReason(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int), # 请求进入的地图ID
+ ("AskType", c_ubyte), # 请求类型: 0-匹配请求;1-进入请求
+ ("Reason", c_ubyte), # 失败原因:2-次数不足;3-进入CD中;6-门票不足
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB9
+ 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 = 0xB9
+ self.SubCmd = 0x13
+ self.MapID = 0
+ self.AskType = 0
+ self.Reason = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCEnterTeamFBFailReason)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B9 13 进入组队副本失败原因 //tagGCEnterTeamFBFailReason:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ AskType:%d,
+ Reason:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.AskType,
+ self.Reason
+ )
+ return DumpString
+
+
+m_NAtagGCEnterTeamFBFailReason=tagGCEnterTeamFBFailReason()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEnterTeamFBFailReason.Cmd,m_NAtagGCEnterTeamFBFailReason.SubCmd))] = m_NAtagGCEnterTeamFBFailReason
#------------------------------------------------------
@@ -7548,875 +8054,699 @@
#------------------------------------------------------
-# D1 25 通知可进入跨服王者争霸 #tagCanEnterMergeKing
+# C0 05 跨服PK赛季排行榜 #tagGCCrossRealmPKBillboardInfo
-class tagCanEnterMergeKing(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GroupType", c_ubyte), # 战斗赛事组类型,如16强等
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xD1
- 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 = 0xD1
- self.SubCmd = 0x25
- self.GroupType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCanEnterMergeKing)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// D1 25 通知可进入跨服王者争霸 //tagCanEnterMergeKing:
- Cmd:%s,
- SubCmd:%s,
- GroupType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GroupType
- )
- return DumpString
-
-
-m_NAtagCanEnterMergeKing=tagCanEnterMergeKing()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCanEnterMergeKing.Cmd,m_NAtagCanEnterMergeKing.SubCmd))] = m_NAtagCanEnterMergeKing
-
-
-#------------------------------------------------------
-# D1 24 通知可进入跨服PK匹配 #tagCanEnterMergePK
-
-class tagCanEnterMergePKMember(Structure):
- Head = tagHead()
- AccIDLen = 0 #(BYTE AccIDLen)
- AccID = "" #(String AccID)
+class tagGCCrossRealmPKBillboardData(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)
Job = 0 #(BYTE Job)
- PKCnt = 0 #(DWORD PKCnt)// 已PK次数
- PKCWinCnt = 0 #(DWORD PKCWinCnt)// 当前连胜次数
- Score = 0 #(DWORD Score)// 赛季积分
- DayScore = 0 #(DWORD DayScore)// 当日积分
- PKWinCnt = 0 #(DWORD PKWinCnt)// 累计胜利次数
- MaxCWinCnt = 0 #(DWORD MaxCWinCnt)// 最大连胜次数
- Grade = 0 #(BYTE Grade)// 当前段位
- FightPower = 0 #(DWORD FightPower)// 战斗力
- PlayerLV = 0 #(WORD PlayerLV)// 等级
- MaxHP = 0 #(DWORD MaxHP)// 最大生命值
+ FightPower = 0 #(DWORD FightPower)
+ RealmLV = 0 #(WORD RealmLV)
+ PKScore = 0 #(DWORD PKScore)
+ DanLV = 0 #(BYTE DanLV)
data = None
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x24
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,self.AccIDLen)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PKCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PKCWinCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.DayScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PKWinCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxCWinCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Grade,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PKScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x24
- self.AccIDLen = 0
- self.AccID = ""
+ self.PlayerID = 0
self.NameLen = 0
self.PlayerName = ""
self.Job = 0
- self.PKCnt = 0
- self.PKCWinCnt = 0
- self.Score = 0
- self.DayScore = 0
- self.PKWinCnt = 0
- self.MaxCWinCnt = 0
- self.Grade = 0
self.FightPower = 0
- self.PlayerLV = 0
- self.MaxHP = 0
+ self.RealmLV = 0
+ self.PKScore = 0
+ self.DanLV = 0
return
def GetLength(self):
length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.AccID)
+ length += 4
length += 1
length += len(self.PlayerName)
length += 1
length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 1
- length += 4
length += 2
length += 4
+ length += 1
return length
def GetBuffer(self):
data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.AccIDLen)
- data = CommFunc.WriteString(data, self.AccIDLen, self.AccID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteDWORD(data, self.PKCnt)
- data = CommFunc.WriteDWORD(data, self.PKCWinCnt)
- data = CommFunc.WriteDWORD(data, self.Score)
- data = CommFunc.WriteDWORD(data, self.DayScore)
- data = CommFunc.WriteDWORD(data, self.PKWinCnt)
- data = CommFunc.WriteDWORD(data, self.MaxCWinCnt)
- data = CommFunc.WriteBYTE(data, self.Grade)
data = CommFunc.WriteDWORD(data, self.FightPower)
- data = CommFunc.WriteWORD(data, self.PlayerLV)
- data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.PKScore)
+ data = CommFunc.WriteBYTE(data, self.DanLV)
return data
def OutputString(self):
DumpString = '''
- Head:%s,
- AccIDLen:%d,
- AccID:%s,
+ PlayerID:%d,
NameLen:%d,
PlayerName:%s,
Job:%d,
- PKCnt:%d,
- PKCWinCnt:%d,
- Score:%d,
- DayScore:%d,
- PKWinCnt:%d,
- MaxCWinCnt:%d,
- Grade:%d,
FightPower:%d,
- PlayerLV:%d,
- MaxHP:%d
+ RealmLV:%d,
+ PKScore:%d,
+ DanLV:%d
'''\
%(
- self.Head.OutputString(),
- self.AccIDLen,
- self.AccID,
+ self.PlayerID,
self.NameLen,
self.PlayerName,
self.Job,
- self.PKCnt,
- self.PKCWinCnt,
- self.Score,
- self.DayScore,
- self.PKWinCnt,
- self.MaxCWinCnt,
- self.Grade,
self.FightPower,
- self.PlayerLV,
- self.MaxHP
+ self.RealmLV,
+ self.PKScore,
+ self.DanLV
)
return DumpString
-class tagCanEnterMergePK(Structure):
+class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- MapID = 0 #(DWORD MapID)// 要进入的地图ID
- RoomID = 0 #(DWORD RoomID)// 要进入的房间ID
- MemberCnt = 0 #(BYTE MemberCnt)// 对战玩家个数
- MemberList = list() #(vector<tagCanEnterMergePKMember> MemberList)// 对战玩家详细信息
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ Count = 0 #(WORD Count)
+ PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x24
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x05
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.RoomID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MemberCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.MemberCnt):
- temMemberList = tagCanEnterMergePKMember()
- _pos = temMemberList.ReadData(_lpData, _pos)
- self.MemberList.append(temMemberList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x24
- self.MapID = 0
- self.RoomID = 0
- self.MemberCnt = 0
- self.MemberList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 1
- for i in range(self.MemberCnt):
- length += self.MemberList[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.WriteDWORD(data, self.RoomID)
- data = CommFunc.WriteBYTE(data, self.MemberCnt)
- for i in range(self.MemberCnt):
- data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- MapID:%d,
- RoomID:%d,
- MemberCnt:%d,
- MemberList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.MapID,
- self.RoomID,
- self.MemberCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagCanEnterMergePK=tagCanEnterMergePK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCanEnterMergePK.Head.Cmd,m_NAtagCanEnterMergePK.Head.SubCmd))] = m_NAtagCanEnterMergePK
-
-
-#------------------------------------------------------
-# D1 23 通知可进入跨服活动 #tagCanEnterMergeServer
-
-class tagCanEnterMergeServer(Structure):
- Head = tagHead()
- ActionType = 0 #(BYTE ActionType)//活动类型
- MapID = 0 #(DWORD MapID)// 登录后在中转地图时要跳转进入的地图ID
- LineID = 0 #(DWORD LineID)// 要进入的线路或地图扩展数据
- NewAccIDLen = 0 #(BYTE NewAccIDLen)
- NewAccID = "" #(String NewAccID)
- NewPswLen = 0 #(BYTE NewPswLen)
- NewPsw = "" #(String NewPsw)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x23
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NewAccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NewAccID,_pos = CommFunc.ReadString(_lpData, _pos,self.NewAccIDLen)
- self.NewPswLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NewPsw,_pos = CommFunc.ReadString(_lpData, _pos,self.NewPswLen)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x23
- self.ActionType = 0
- self.MapID = 0
- self.LineID = 0
- self.NewAccIDLen = 0
- self.NewAccID = ""
- self.NewPswLen = 0
- self.NewPsw = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4
- length += 4
- length += 1
- length += len(self.NewAccID)
- length += 1
- length += len(self.NewPsw)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActionType)
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.LineID)
- data = CommFunc.WriteBYTE(data, self.NewAccIDLen)
- data = CommFunc.WriteString(data, self.NewAccIDLen, self.NewAccID)
- data = CommFunc.WriteBYTE(data, self.NewPswLen)
- data = CommFunc.WriteString(data, self.NewPswLen, self.NewPsw)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActionType:%d,
- MapID:%d,
- LineID:%d,
- NewAccIDLen:%d,
- NewAccID:%s,
- NewPswLen:%d,
- NewPsw:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActionType,
- self.MapID,
- self.LineID,
- self.NewAccIDLen,
- self.NewAccID,
- self.NewPswLen,
- self.NewPsw
- )
- return DumpString
-
-
-m_NAtagCanEnterMergeServer=tagCanEnterMergeServer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCanEnterMergeServer.Head.Cmd,m_NAtagCanEnterMergeServer.Head.SubCmd))] = m_NAtagCanEnterMergeServer
-
-
-#------------------------------------------------------
-#D1 08 上传数据查询结果 #tagMergeRegisterQueryResult
-
-class tagMergeRegisterQueryResult(Structure):
- Head = tagHead()
- NewAccIDLen = 0 #(BYTE NewAccIDLen)
- NewAccID = "" #(String NewAccID)
- NewPswLen = 0 #(BYTE NewPswLen)
- NewPsw = "" #(String NewPsw)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x08
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.NewAccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NewAccID,_pos = CommFunc.ReadString(_lpData, _pos,self.NewAccIDLen)
- self.NewPswLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NewPsw,_pos = CommFunc.ReadString(_lpData, _pos,self.NewPswLen)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x08
- self.NewAccIDLen = 0
- self.NewAccID = ""
- self.NewPswLen = 0
- self.NewPsw = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.NewAccID)
- length += 1
- length += len(self.NewPsw)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.NewAccIDLen)
- data = CommFunc.WriteString(data, self.NewAccIDLen, self.NewAccID)
- data = CommFunc.WriteBYTE(data, self.NewPswLen)
- data = CommFunc.WriteString(data, self.NewPswLen, self.NewPsw)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- NewAccIDLen:%d,
- NewAccID:%s,
- NewPswLen:%d,
- NewPsw:%s
- '''\
- %(
- self.Head.OutputString(),
- self.NewAccIDLen,
- self.NewAccID,
- self.NewPswLen,
- self.NewPsw
- )
- return DumpString
-
-
-m_NAtagMergeRegisterQueryResult=tagMergeRegisterQueryResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMergeRegisterQueryResult.Head.Cmd,m_NAtagMergeRegisterQueryResult.Head.SubCmd))] = m_NAtagMergeRegisterQueryResult
-
-
-#------------------------------------------------------
-#D1 16 跨服赛服务器信息 #tagMergeServerInfo
-
-class tagMergeServerInfo(Structure):
- Head = tagHead()
- ServerIPLen = 0 #(BYTE ServerIPLen)
- ServerIP = "" #(String ServerIP)
- Port = 0 #(DWORD Port)
- IsMergeServer = 0 #(BYTE IsMergeServer)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x16
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ServerIPLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ServerIP,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerIPLen)
- self.Port,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsMergeServer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x16
- self.ServerIPLen = 0
- self.ServerIP = ""
- self.Port = 0
- self.IsMergeServer = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ServerIP)
- length += 4
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ServerIPLen)
- data = CommFunc.WriteString(data, self.ServerIPLen, self.ServerIP)
- data = CommFunc.WriteDWORD(data, self.Port)
- data = CommFunc.WriteBYTE(data, self.IsMergeServer)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ServerIPLen:%d,
- ServerIP:%s,
- Port:%d,
- IsMergeServer:%d
- '''\
- %(
- self.Head.OutputString(),
- self.ServerIPLen,
- self.ServerIP,
- self.Port,
- self.IsMergeServer
- )
- return DumpString
-
-
-m_NAtagMergeServerInfo=tagMergeServerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMergeServerInfo.Head.Cmd,m_NAtagMergeServerInfo.Head.SubCmd))] = m_NAtagMergeServerInfo
-
-
-#------------------------------------------------------
-# D1 27 通知跨服PK战斗结果 #tagMergePKOverInfo
-
-class tagMergePKOver(Structure):
- TimeLen = 0 #(BYTE TimeLen)
- TimeStr = "" #(String TimeStr)// yyyy-MM-dd HH:mm:ss
- RoomID = 0 #(DWORD RoomID)
- OverType = 0 #(BYTE OverType)
- RemainTime = 0 #(DWORD RemainTime)
- WinnerAccIDLen = 0 #(BYTE WinnerAccIDLen)
- WinnerAccID = "" #(String WinnerAccID)
- LoserAccIDLen = 0 #(BYTE LoserAccIDLen)
- LoserAccID = "" #(String LoserAccID)
- WinnerID = 0 #(DWORD WinnerID)
- LoserID = 0 #(DWORD LoserID)
- WinnerNameLen = 0 #(BYTE WinnerNameLen)
- WinnerName = "" #(String WinnerName)
- LoserNameLen = 0 #(BYTE LoserNameLen)
- LoserName = "" #(String LoserName)
- WinnerAddScore = 0 #(WORD WinnerAddScore)
- LoserAddScoreLen = 0 #(BYTE LoserAddScoreLen)
- LoserAddScore = "" #(String LoserAddScore)// 失败附加分,支持负值
- WinnerWinCnt = 0 #(BYTE WinnerWinCnt)// 比分获胜方获胜次数
- LoserWinCnt = 0 #(BYTE LoserWinCnt)// 比分失败方获胜次数
- WinnerCWinCnt = 0 #(WORD WinnerCWinCnt)// 获胜者连胜数
- LuckyItemID = 0 #(DWORD LuckyItemID)
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TimeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,self.TimeLen)
- self.RoomID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.OverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RemainTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.WinnerAccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WinnerAccID,_pos = CommFunc.ReadString(_lpData, _pos,self.WinnerAccIDLen)
- self.LoserAccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LoserAccID,_pos = CommFunc.ReadString(_lpData, _pos,self.LoserAccIDLen)
- self.WinnerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LoserID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.WinnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WinnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.WinnerNameLen)
- self.LoserNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LoserName,_pos = CommFunc.ReadString(_lpData, _pos,self.LoserNameLen)
- self.WinnerAddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LoserAddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LoserAddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.LoserAddScoreLen)
- self.WinnerWinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LoserWinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WinnerCWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LuckyItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.TimeLen = 0
- self.TimeStr = ""
- self.RoomID = 0
- self.OverType = 0
- self.RemainTime = 0
- self.WinnerAccIDLen = 0
- self.WinnerAccID = ""
- self.LoserAccIDLen = 0
- self.LoserAccID = ""
- self.WinnerID = 0
- self.LoserID = 0
- self.WinnerNameLen = 0
- self.WinnerName = ""
- self.LoserNameLen = 0
- self.LoserName = ""
- self.WinnerAddScore = 0
- self.LoserAddScoreLen = 0
- self.LoserAddScore = ""
- self.WinnerWinCnt = 0
- self.LoserWinCnt = 0
- self.WinnerCWinCnt = 0
- self.LuckyItemID = 0
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += len(self.TimeStr)
- length += 4
- length += 1
- length += 4
- length += 1
- length += len(self.WinnerAccID)
- length += 1
- length += len(self.LoserAccID)
- length += 4
- length += 4
- length += 1
- length += len(self.WinnerName)
- length += 1
- length += len(self.LoserName)
- length += 2
- length += 1
- length += len(self.LoserAddScore)
- length += 1
- length += 1
- length += 2
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TimeLen)
- data = CommFunc.WriteString(data, self.TimeLen, self.TimeStr)
- data = CommFunc.WriteDWORD(data, self.RoomID)
- data = CommFunc.WriteBYTE(data, self.OverType)
- data = CommFunc.WriteDWORD(data, self.RemainTime)
- data = CommFunc.WriteBYTE(data, self.WinnerAccIDLen)
- data = CommFunc.WriteString(data, self.WinnerAccIDLen, self.WinnerAccID)
- data = CommFunc.WriteBYTE(data, self.LoserAccIDLen)
- data = CommFunc.WriteString(data, self.LoserAccIDLen, self.LoserAccID)
- data = CommFunc.WriteDWORD(data, self.WinnerID)
- data = CommFunc.WriteDWORD(data, self.LoserID)
- data = CommFunc.WriteBYTE(data, self.WinnerNameLen)
- data = CommFunc.WriteString(data, self.WinnerNameLen, self.WinnerName)
- data = CommFunc.WriteBYTE(data, self.LoserNameLen)
- data = CommFunc.WriteString(data, self.LoserNameLen, self.LoserName)
- data = CommFunc.WriteWORD(data, self.WinnerAddScore)
- data = CommFunc.WriteBYTE(data, self.LoserAddScoreLen)
- data = CommFunc.WriteString(data, self.LoserAddScoreLen, self.LoserAddScore)
- data = CommFunc.WriteBYTE(data, self.WinnerWinCnt)
- data = CommFunc.WriteBYTE(data, self.LoserWinCnt)
- data = CommFunc.WriteWORD(data, self.WinnerCWinCnt)
- data = CommFunc.WriteDWORD(data, self.LuckyItemID)
- return data
-
- def OutputString(self):
- DumpString = '''
- TimeLen:%d,
- TimeStr:%s,
- RoomID:%d,
- OverType:%d,
- RemainTime:%d,
- WinnerAccIDLen:%d,
- WinnerAccID:%s,
- LoserAccIDLen:%d,
- LoserAccID:%s,
- WinnerID:%d,
- LoserID:%d,
- WinnerNameLen:%d,
- WinnerName:%s,
- LoserNameLen:%d,
- LoserName:%s,
- WinnerAddScore:%d,
- LoserAddScoreLen:%d,
- LoserAddScore:%s,
- WinnerWinCnt:%d,
- LoserWinCnt:%d,
- WinnerCWinCnt:%d,
- LuckyItemID:%d
- '''\
- %(
- self.TimeLen,
- self.TimeStr,
- self.RoomID,
- self.OverType,
- self.RemainTime,
- self.WinnerAccIDLen,
- self.WinnerAccID,
- self.LoserAccIDLen,
- self.LoserAccID,
- self.WinnerID,
- self.LoserID,
- self.WinnerNameLen,
- self.WinnerName,
- self.LoserNameLen,
- self.LoserName,
- self.WinnerAddScore,
- self.LoserAddScoreLen,
- self.LoserAddScore,
- self.WinnerWinCnt,
- self.LoserWinCnt,
- self.WinnerCWinCnt,
- self.LuckyItemID
- )
- return DumpString
-
-
-class tagMergePKOverInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- PKOverList = list() #(vector<tagMergePKOver> PKOverList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SeasonID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.Count):
- temPKOverList = tagMergePKOver()
- _pos = temPKOverList.ReadData(_lpData, _pos)
- self.PKOverList.append(temPKOverList)
+ temPKBillboardList = tagGCCrossRealmPKBillboardData()
+ _pos = temPKBillboardList.ReadData(_lpData, _pos)
+ self.PKBillboardList.append(temPKBillboardList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
- self.Head.Cmd = 0xD1
- self.Head.SubCmd = 0x27
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x05
+ self.ZoneID = 0
+ self.SeasonID = 0
self.Count = 0
- self.PKOverList = list()
+ self.PKBillboardList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
+ length += 1
+ length += 2
for i in range(self.Count):
- length += self.PKOverList[i].GetLength()
+ length += self.PKBillboardList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.SeasonID)
+ data = CommFunc.WriteWORD(data, self.Count)
for i in range(self.Count):
- data = CommFunc.WriteString(data, self.PKOverList[i].GetLength(), self.PKOverList[i].GetBuffer())
+ data = CommFunc.WriteString(data, self.PKBillboardList[i].GetLength(), self.PKBillboardList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ ZoneID:%d,
+ SeasonID:%d,
Count:%d,
- PKOverList:%s
+ PKBillboardList:%s
'''\
%(
self.Head.OutputString(),
+ self.ZoneID,
+ self.SeasonID,
self.Count,
"..."
)
return DumpString
-m_NAtagMergePKOverInfo=tagMergePKOverInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMergePKOverInfo.Head.Cmd,m_NAtagMergePKOverInfo.Head.SubCmd))] = m_NAtagMergePKOverInfo
+m_NAtagGCCrossRealmPKBillboardInfo=tagGCCrossRealmPKBillboardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKBillboardInfo.Head.Cmd,m_NAtagGCCrossRealmPKBillboardInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKBillboardInfo
#------------------------------------------------------
-# D1 28 跨服PK赛季信息 #tagGCMergePKSeasonInfo
+# C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK
-class tagGCMergePKSeasonInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SeasonID", c_int), # 赛季ID
- ("SeasonStartTime", c_int), # 赛季开始时间
- ("SeasonCycle", c_ubyte), # 赛季周期天数
- ("IsSeasonEnd", c_ubyte), # 赛季是否结束
- ]
+class tagGCCrossRealmPKMatchPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 跨服名字
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xD1
- self.SubCmd = 0x28
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.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
def Clear(self):
- self.Cmd = 0xD1
- self.SubCmd = 0x28
- self.SeasonID = 0
- self.SeasonStartTime = 0
- self.SeasonCycle = 0
- self.IsSeasonEnd = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.MaxHP = 0
+ self.MaxProDef = 0
return
def GetLength(self):
- return sizeof(tagGCMergePKSeasonInfo)
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 2
+ length += 4
+ length += 4
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxProDef)
+ return data
def OutputString(self):
- DumpString = '''// D1 28 跨服PK赛季信息 //tagGCMergePKSeasonInfo:
- Cmd:%s,
- SubCmd:%s,
- SeasonID:%d,
- SeasonStartTime:%d,
- SeasonCycle:%d,
- IsSeasonEnd:%d
+ DumpString = '''
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ MaxHP:%d,
+ MaxProDef:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.SeasonID,
- self.SeasonStartTime,
- self.SeasonCycle,
- self.IsSeasonEnd
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.MaxHP,
+ self.MaxProDef
)
return DumpString
-m_NAtagGCMergePKSeasonInfo=tagGCMergePKSeasonInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMergePKSeasonInfo.Cmd,m_NAtagGCMergePKSeasonInfo.SubCmd))] = m_NAtagGCMergePKSeasonInfo
+class tagGCCrossRealmPKMatchOK(Structure):
+ Head = tagHead()
+ RoomID = 0 #(WORD RoomID)// 房间ID
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 跨服名字
+ Number = 0 #(BYTE Number)// 位置编号;1-左,2-右
+ MatchPlayerCount = 0 #(BYTE MatchPlayerCount)
+ MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MatchPlayerCount):
+ temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
+ _pos = temMatchPlayer.ReadData(_lpData, _pos)
+ self.MatchPlayer.append(temMatchPlayer)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x01
+ self.RoomID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Number = 0
+ self.MatchPlayerCount = 0
+ self.MatchPlayer = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 1
+ for i in range(self.MatchPlayerCount):
+ length += self.MatchPlayer[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RoomID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Number)
+ data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
+ for i in range(self.MatchPlayerCount):
+ data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RoomID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Number:%d,
+ MatchPlayerCount:%d,
+ MatchPlayer:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RoomID,
+ self.NameLen,
+ self.PlayerName,
+ self.Number,
+ self.MatchPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossRealmPKMatchOK=tagGCCrossRealmPKMatchOK()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKMatchOK.Head.Cmd,m_NAtagGCCrossRealmPKMatchOK.Head.SubCmd))] = m_NAtagGCCrossRealmPKMatchOK
#------------------------------------------------------
-# D1 26 通知跨服PK续胜结果 #tagRecoverMergePKWinOK
+# C0 03 跨服PK战斗结果 #tagGCCrossRealmPKOverInfo
-class tagRecoverMergePKWinOK(Structure):
+class tagGCCrossRealmPKOverInfo(Structure):
+ Head = tagHead()
+ TimeStr = "" #(char TimeStr[19])// 结算时间,格式 yyyy-MM-dd HH:mm:ss
+ OverType = 0 #(BYTE OverType)// 0-正常,1-有人离线
+ WinnerID = 0 #(DWORD WinnerID)// 胜方ID
+ RoundCount = 0 #(BYTE RoundCount)// PK回合数
+ RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
+ AddScore = 0 #(WORD AddScore)// 本场加分
+ Score = 0 #(WORD Score)// 当前积分
+ DanLV = 0 #(BYTE DanLV)// 当前段位
+ CWinCnt = 0 #(WORD CWinCnt)// 当前连胜数
+ TagNameLen = 0 #(BYTE TagNameLen)
+ TagName = "" #(String TagName)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x03
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.OverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WinnerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RoundCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.RoundWinnerID.append(value)
+ self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TagName,_pos = CommFunc.ReadString(_lpData, _pos,self.TagNameLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x03
+ self.TimeStr = ""
+ self.OverType = 0
+ self.WinnerID = 0
+ self.RoundCount = 0
+ self.RoundWinnerID = list()
+ self.AddScore = 0
+ self.Score = 0
+ self.DanLV = 0
+ self.CWinCnt = 0
+ self.TagNameLen = 0
+ self.TagName = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 19
+ length += 1
+ length += 4
+ length += 1
+ length += 4 * self.RoundCount
+ length += 2
+ length += 2
+ length += 1
+ length += 2
+ length += 1
+ length += len(self.TagName)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 19, self.TimeStr)
+ data = CommFunc.WriteBYTE(data, self.OverType)
+ data = CommFunc.WriteDWORD(data, self.WinnerID)
+ data = CommFunc.WriteBYTE(data, self.RoundCount)
+ for i in range(self.RoundCount):
+ data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
+ data = CommFunc.WriteWORD(data, self.AddScore)
+ data = CommFunc.WriteWORD(data, self.Score)
+ data = CommFunc.WriteBYTE(data, self.DanLV)
+ data = CommFunc.WriteWORD(data, self.CWinCnt)
+ data = CommFunc.WriteBYTE(data, self.TagNameLen)
+ data = CommFunc.WriteString(data, self.TagNameLen, self.TagName)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TimeStr:%s,
+ OverType:%d,
+ WinnerID:%d,
+ RoundCount:%d,
+ RoundWinnerID:%s,
+ AddScore:%d,
+ Score:%d,
+ DanLV:%d,
+ CWinCnt:%d,
+ TagNameLen:%d,
+ TagName:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TimeStr,
+ self.OverType,
+ self.WinnerID,
+ self.RoundCount,
+ "...",
+ self.AddScore,
+ self.Score,
+ self.DanLV,
+ self.CWinCnt,
+ self.TagNameLen,
+ self.TagName
+ )
+ return DumpString
+
+
+m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo
+
+
+#------------------------------------------------------
+# C0 04 跨服PK赛区赛季信息 #tagGCCrossRealmPKSeasonInfo
+
+class tagGCCrossRealmPKSeason(Structure):
+ SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
+ StartDate = "" #(char StartDate[10])// 开始日期 yyyy-MM-dd
+ EndDate = "" #(char EndDate[10])// 结束日期 yyyy-MM-dd
+ EndTime = "" #(char EndTime[5])// 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ return _pos
+
+ def Clear(self):
+ self.SeasonID = 0
+ self.StartDate = ""
+ self.EndDate = ""
+ self.EndTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 2
+ length += 10
+ length += 10
+ length += 5
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteWORD(data, self.SeasonID)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndDate)
+ data = CommFunc.WriteString(data, 5, self.EndTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ SeasonID:%d,
+ StartDate:%s,
+ EndDate:%s,
+ EndTime:%s
+ '''\
+ %(
+ self.SeasonID,
+ self.StartDate,
+ self.EndDate,
+ self.EndTime
+ )
+ return DumpString
+
+
+class tagGCCrossRealmPKZone(Structure):
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ ZoneNameLen = 0 #(BYTE ZoneNameLen)
+ ZoneName = "" #(String ZoneName)// 赛区名
+ SeasonCount = 0 #(WORD SeasonCount)
+ SeasonList = list() #(vector<tagGCCrossRealmPKSeason> SeasonList)// 赛季列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.ZoneNameLen)
+ self.SeasonCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.SeasonCount):
+ temSeasonList = tagGCCrossRealmPKSeason()
+ _pos = temSeasonList.ReadData(_lpData, _pos)
+ self.SeasonList.append(temSeasonList)
+ return _pos
+
+ def Clear(self):
+ self.ZoneID = 0
+ self.ZoneNameLen = 0
+ self.ZoneName = ""
+ self.SeasonCount = 0
+ self.SeasonList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += len(self.ZoneName)
+ length += 2
+ for i in range(self.SeasonCount):
+ length += self.SeasonList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.ZoneNameLen)
+ data = CommFunc.WriteString(data, self.ZoneNameLen, self.ZoneName)
+ data = CommFunc.WriteWORD(data, self.SeasonCount)
+ for i in range(self.SeasonCount):
+ data = CommFunc.WriteString(data, self.SeasonList[i].GetLength(), self.SeasonList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ZoneID:%d,
+ ZoneNameLen:%d,
+ ZoneName:%s,
+ SeasonCount:%d,
+ SeasonList:%s
+ '''\
+ %(
+ self.ZoneID,
+ self.ZoneNameLen,
+ self.ZoneName,
+ self.SeasonCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossRealmPKSeasonInfo(Structure):
+ Head = tagHead()
+ ZoneCount = 0 #(BYTE ZoneCount)// 赛区个数
+ ZoneList = list() #(vector<tagGCCrossRealmPKZone> ZoneList)// 赛区列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ZoneCount):
+ temZoneList = tagGCCrossRealmPKZone()
+ _pos = temZoneList.ReadData(_lpData, _pos)
+ self.ZoneList.append(temZoneList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x04
+ self.ZoneCount = 0
+ self.ZoneList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.ZoneCount):
+ length += self.ZoneList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneCount)
+ for i in range(self.ZoneCount):
+ data = CommFunc.WriteString(data, self.ZoneList[i].GetLength(), self.ZoneList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneCount:%d,
+ ZoneList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossRealmPKSeasonInfo=tagGCCrossRealmPKSeasonInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonInfo.Head.Cmd,m_NAtagGCCrossRealmPKSeasonInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonInfo
+
+
+#------------------------------------------------------
+# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
+
+class tagGCCrossRealmPKSeasonState(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), # 所属赛区ID
+ ("SeasonID", c_ushort), # 当前赛季ID
+ ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束
+ ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中
]
def __init__(self):
self.Clear()
- self.Cmd = 0xD1
- self.SubCmd = 0x26
+ self.Cmd = 0xC0
+ self.SubCmd = 0x06
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -8425,18 +8755,78 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xD1
- self.SubCmd = 0x26
+ self.Cmd = 0xC0
+ self.SubCmd = 0x06
+ self.ZoneID = 0
+ self.SeasonID = 0
+ self.SeasonState = 0
+ self.MatchState = 0
return
def GetLength(self):
- return sizeof(tagRecoverMergePKWinOK)
+ return sizeof(tagGCCrossRealmPKSeasonState)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// D1 26 通知跨服PK续胜结果 //tagRecoverMergePKWinOK:
+ DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d,
+ SeasonID:%d,
+ SeasonState:%d,
+ MatchState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID,
+ self.SeasonID,
+ self.SeasonState,
+ self.MatchState
+ )
+ return DumpString
+
+
+m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
+
+
+#------------------------------------------------------
+# C0 02 跨服PK开始匹配 #tagGCCrossRealmPKStartMatch
+
+class tagGCCrossRealmPKStartMatch(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x02
+ 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 = 0xC0
+ self.SubCmd = 0x02
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossRealmPKStartMatch)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
Cmd:%s,
SubCmd:%s
'''\
@@ -8447,8 +8837,8 @@
return DumpString
-m_NAtagRecoverMergePKWinOK=tagRecoverMergePKWinOK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagRecoverMergePKWinOK.Cmd,m_NAtagRecoverMergePKWinOK.SubCmd))] = m_NAtagRecoverMergePKWinOK
+m_NAtagGCCrossRealmPKStartMatch=tagGCCrossRealmPKStartMatch()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKStartMatch.Cmd,m_NAtagGCCrossRealmPKStartMatch.SubCmd))] = m_NAtagGCCrossRealmPKStartMatch
#------------------------------------------------------
@@ -8680,6 +9070,714 @@
m_NAtagMCCoinToGoldReport=tagMCCoinToGoldReport()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoinToGoldReport.Head.Cmd,m_NAtagMCCoinToGoldReport.Head.SubCmd))] = m_NAtagMCCoinToGoldReport
+
+
+#------------------------------------------------------
+# A1 12 玩家初始化 #tagMCDBPlayer
+
+class tagMCDBPlayer(Structure):
+ Head = tagHead()
+ AccID = "" #(char AccID[65])//帐号名, 该角色所在的帐号的用户名
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])//size = 14
+ AccState = 0 #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除
+ GMLevel = 0 #(BYTE GMLevel)//GM等级, 0:不是GM >=1 : GM的等级
+ Sex = 0 #(BYTE Sex)//性别
+ Job = 0 #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士
+ ReincarnationLv = 0 #(WORD ReincarnationLv)// 转生等级
+ LV = 0 #(WORD LV)//等级
+ LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
+ LV2 = 0 #(WORD LV2)//大师等级
+ ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数
+ TotalExp = 0 #(DWORD TotalExp)//总经验
+ Family = 0 #(DWORD Family)//家族
+ FamilyName = "" #(char FamilyName[33])//家族名称
+ TeamHornor = 0 #(int TeamHornor)//组队荣誉
+ FamilyHornor = 0 #(int FamilyHornor)//家族荣耀
+ FamilyActiveValue = 0 #(int FamilyActiveValue)//家族活跃度
+ LastWeekFamilyActiveValue = 0 #(int LastWeekFamilyActiveValue)//上周家族活跃度
+ CountryHornor = 0 #(int CountryHornor)//本周国家功勋值
+ CountryLastWeekHornor = 0 #(int CountryLastWeekHornor)//上周国家功勋值
+ Mate = 0 #(DWORD Mate)
+ Gold = 0 #(DWORD Gold)//金子
+ GoldPaper = 0 #(DWORD GoldPaper)//金票
+ Silver = 0 #(DWORD Silver)//银子
+ SilverPaper = 0 #(DWORD SilverPaper)//银票
+ FightPoint = 0 #(DWORD FightPoint)//战斗值
+ HappyPoint = 0 #(DWORD HappyPoint)//脱机挂时长(秒)
+ LineID = 0 #(BYTE LineID)//角色所在线路
+ MapID = 0 #(WORD MapID)//角色所在地图
+ PosX = 0 #(WORD PosX)//角色坐标
+ PosY = 0 #(WORD PosY)
+ RebornMapID = 0 #(WORD RebornMapID)//重生点地图ID
+ RebornPosX = 0 #(WORD RebornPosX)
+ RebornPosY = 0 #(WORD RebornPosY)
+ State = 0 #(BYTE State)//角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡
+ HP = 0 #(DWORD HP)//当前HP
+ XP = 0 #(DWORD XP)//当前XP
+ HPRestoreSetting = 0 #(WORD HPRestoreSetting)//少于这个值%自动喝血
+ MPRestoreSetting = 0 #(WORD MPRestoreSetting)//少于这个值%自动喝魔
+ FreePoint = 0 #(DWORD FreePoint)//未分配点数
+ FreeSkillPoint = 0 #(DWORD FreeSkillPoint)//未分配的技能点
+ BaseSTR = 0 #(int BaseSTR)//裸体力量
+ BasePNE = 0 #(int BasePNE)//裸体真元
+ BasePHY = 0 #(int BasePHY)//裸体筋骨
+ BaseCON = 0 #(int BaseCON)//裸体体魄
+ STR = 0 #(int STR)//力量
+ PNE = 0 #(int PNE)//真元
+ PHY = 0 #(int PHY)//筋骨
+ CON = 0 #(int CON)//体魄
+ PKValue = 0 #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得
+ BackpackLV = 0 #(BYTE BackpackLV)//背包等级
+ WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
+ TeamID = 0 #(DWORD TeamID)//队伍ID
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
+ AttackMode = 0 #(BYTE AttackMode)//攻击模式
+ LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
+ FBID = 0 #(BYTE FBID)//fb id
+ FamilyLV = 0 #(BYTE FamilyLV)//家族等级
+ FriendFavor = 0 #(DWORD FriendFavor)//好友人气值
+ Energy = 0 #(DWORD Energy)//精力值
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//装备显示开关
+ LuckValue = 0 #(DWORD LuckValue)//幸运值
+ ExAttr1 = 0 #(DWORD ExAttr1)//扩展属性1,各项目专用
+ ExAttr2 = 0 #(DWORD ExAttr2)//扩展属性2,各项目专用
+ ExAttr3 = 0 #(DWORD ExAttr3)//扩展属性3,各项目专用
+ ExAttr4 = 0 #(DWORD ExAttr4)//扩展属性4,各项目专用
+ ExAttr5 = 0 #(DWORD ExAttr5)//扩展属性5,各项目专用
+ Faction = 0 #(BYTE Faction)//阵营
+ InfamyValue = 0 #(DWORD InfamyValue)//恶名值
+ OfficialRank = 0 #(BYTE OfficialRank)//官阶,官职等级
+ ChangeCoinPointTotal = 0 #(DWORD ChangeCoinPointTotal)//兑换的点数总计
+ VIPLv = 0 #(BYTE VIPLv)//VIP等级
+ VIPLvForPhone = 0 #(BYTE VIPLvForPhone)//移动VIP等级
+ ExAttr6 = 0 #(DWORD ExAttr6)//扩展属性6,各项目专用
+ ExAttr7 = 0 #(DWORD ExAttr7)//扩展属性7,各项目专用
+ ExAttr8 = 0 #(DWORD ExAttr8)//扩展属性8,各项目专用
+ ExAttr9 = 0 #(DWORD ExAttr9)//扩展属性9,各项目专用
+ ExAttr10 = 0 #(DWORD ExAttr10)//扩展属性10,各项目专用
+ ModelMark = 0 #(DWORD ModelMark)// 变形模型mark
+ ExAttr11 = 0 #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr12 = 0 #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr13 = 0 #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr14 = 0 #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性
+ OperateInfo = 0 #(DWORD OperateInfo)//玩家附加运营商信息
+ Operate = "" #(char Operate[15])//所属运营商平台名
+ ServerID = 0 #(DWORD ServerID)//所属区服ID
+ ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
+ self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ self.AccID = ""
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.AccState = 0
+ self.GMLevel = 0
+ self.Sex = 0
+ self.Job = 0
+ self.ReincarnationLv = 0
+ self.LV = 0
+ self.LVEx = 0
+ self.LV2 = 0
+ self.ExpPoint = 0
+ self.TotalExp = 0
+ self.Family = 0
+ self.FamilyName = ""
+ self.TeamHornor = 0
+ self.FamilyHornor = 0
+ self.FamilyActiveValue = 0
+ self.LastWeekFamilyActiveValue = 0
+ self.CountryHornor = 0
+ self.CountryLastWeekHornor = 0
+ self.Mate = 0
+ self.Gold = 0
+ self.GoldPaper = 0
+ self.Silver = 0
+ self.SilverPaper = 0
+ self.FightPoint = 0
+ self.HappyPoint = 0
+ self.LineID = 0
+ self.MapID = 0
+ self.PosX = 0
+ self.PosY = 0
+ self.RebornMapID = 0
+ self.RebornPosX = 0
+ self.RebornPosY = 0
+ self.State = 0
+ self.HP = 0
+ self.XP = 0
+ self.HPRestoreSetting = 0
+ self.MPRestoreSetting = 0
+ self.FreePoint = 0
+ self.FreeSkillPoint = 0
+ self.BaseSTR = 0
+ self.BasePNE = 0
+ self.BasePHY = 0
+ self.BaseCON = 0
+ self.STR = 0
+ self.PNE = 0
+ self.PHY = 0
+ self.CON = 0
+ self.PKValue = 0
+ self.BackpackLV = 0
+ self.WarehouseLV = 0
+ self.TeamID = 0
+ self.UseGoldType = 0
+ self.UseSilverType = 0
+ self.AttackMode = 0
+ self.LastWeekOnlineTime = 0
+ self.FBID = 0
+ self.FamilyLV = 0
+ self.FriendFavor = 0
+ self.Energy = 0
+ self.EquipShowSwitch = 0
+ self.LuckValue = 0
+ self.ExAttr1 = 0
+ self.ExAttr2 = 0
+ self.ExAttr3 = 0
+ self.ExAttr4 = 0
+ self.ExAttr5 = 0
+ self.Faction = 0
+ self.InfamyValue = 0
+ self.OfficialRank = 0
+ self.ChangeCoinPointTotal = 0
+ self.VIPLv = 0
+ self.VIPLvForPhone = 0
+ self.ExAttr6 = 0
+ self.ExAttr7 = 0
+ self.ExAttr8 = 0
+ self.ExAttr9 = 0
+ self.ExAttr10 = 0
+ self.ModelMark = 0
+ self.ExAttr11 = 0
+ self.ExAttr12 = 0
+ self.ExAttr13 = 0
+ self.ExAttr14 = 0
+ self.OperateInfo = 0
+ self.Operate = ""
+ self.ServerID = 0
+ self.ExAttr15 = 0
+ self.ExAttr16 = 0
+ self.ExAttr17 = 0
+ self.ExAttr18 = 0
+ self.ExAttr19 = 0
+ self.ExAttr20 = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 65
+ length += 4
+ length += 33
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 15
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 65, self.AccID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.AccState)
+ data = CommFunc.WriteBYTE(data, self.GMLevel)
+ data = CommFunc.WriteBYTE(data, self.Sex)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.ReincarnationLv)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.LVEx)
+ data = CommFunc.WriteWORD(data, self.LV2)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteDWORD(data, self.TotalExp)
+ data = CommFunc.WriteDWORD(data, self.Family)
+ data = CommFunc.WriteString(data, 33, self.FamilyName)
+ data = CommFunc.WriteDWORD(data, self.TeamHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.CountryHornor)
+ data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor)
+ data = CommFunc.WriteDWORD(data, self.Mate)
+ data = CommFunc.WriteDWORD(data, self.Gold)
+ data = CommFunc.WriteDWORD(data, self.GoldPaper)
+ data = CommFunc.WriteDWORD(data, self.Silver)
+ data = CommFunc.WriteDWORD(data, self.SilverPaper)
+ data = CommFunc.WriteDWORD(data, self.FightPoint)
+ data = CommFunc.WriteDWORD(data, self.HappyPoint)
+ data = CommFunc.WriteBYTE(data, self.LineID)
+ data = CommFunc.WriteWORD(data, self.MapID)
+ data = CommFunc.WriteWORD(data, self.PosX)
+ data = CommFunc.WriteWORD(data, self.PosY)
+ data = CommFunc.WriteWORD(data, self.RebornMapID)
+ data = CommFunc.WriteWORD(data, self.RebornPosX)
+ data = CommFunc.WriteWORD(data, self.RebornPosY)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.XP)
+ data = CommFunc.WriteWORD(data, self.HPRestoreSetting)
+ data = CommFunc.WriteWORD(data, self.MPRestoreSetting)
+ data = CommFunc.WriteDWORD(data, self.FreePoint)
+ data = CommFunc.WriteDWORD(data, self.FreeSkillPoint)
+ data = CommFunc.WriteDWORD(data, self.BaseSTR)
+ data = CommFunc.WriteDWORD(data, self.BasePNE)
+ data = CommFunc.WriteDWORD(data, self.BasePHY)
+ data = CommFunc.WriteDWORD(data, self.BaseCON)
+ data = CommFunc.WriteDWORD(data, self.STR)
+ data = CommFunc.WriteDWORD(data, self.PNE)
+ data = CommFunc.WriteDWORD(data, self.PHY)
+ data = CommFunc.WriteDWORD(data, self.CON)
+ data = CommFunc.WriteWORD(data, self.PKValue)
+ data = CommFunc.WriteBYTE(data, self.BackpackLV)
+ data = CommFunc.WriteBYTE(data, self.WarehouseLV)
+ data = CommFunc.WriteDWORD(data, self.TeamID)
+ data = CommFunc.WriteBYTE(data, self.UseGoldType)
+ data = CommFunc.WriteBYTE(data, self.UseSilverType)
+ data = CommFunc.WriteBYTE(data, self.AttackMode)
+ data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime)
+ data = CommFunc.WriteBYTE(data, self.FBID)
+ data = CommFunc.WriteBYTE(data, self.FamilyLV)
+ data = CommFunc.WriteDWORD(data, self.FriendFavor)
+ data = CommFunc.WriteDWORD(data, self.Energy)
+ data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+ data = CommFunc.WriteDWORD(data, self.LuckValue)
+ data = CommFunc.WriteDWORD(data, self.ExAttr1)
+ data = CommFunc.WriteDWORD(data, self.ExAttr2)
+ data = CommFunc.WriteDWORD(data, self.ExAttr3)
+ data = CommFunc.WriteDWORD(data, self.ExAttr4)
+ data = CommFunc.WriteDWORD(data, self.ExAttr5)
+ data = CommFunc.WriteBYTE(data, self.Faction)
+ data = CommFunc.WriteDWORD(data, self.InfamyValue)
+ data = CommFunc.WriteBYTE(data, self.OfficialRank)
+ data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal)
+ data = CommFunc.WriteBYTE(data, self.VIPLv)
+ data = CommFunc.WriteBYTE(data, self.VIPLvForPhone)
+ data = CommFunc.WriteDWORD(data, self.ExAttr6)
+ data = CommFunc.WriteDWORD(data, self.ExAttr7)
+ data = CommFunc.WriteDWORD(data, self.ExAttr8)
+ data = CommFunc.WriteDWORD(data, self.ExAttr9)
+ data = CommFunc.WriteDWORD(data, self.ExAttr10)
+ data = CommFunc.WriteDWORD(data, self.ModelMark)
+ data = CommFunc.WriteDWORD(data, self.ExAttr11)
+ data = CommFunc.WriteDWORD(data, self.ExAttr12)
+ data = CommFunc.WriteDWORD(data, self.ExAttr13)
+ data = CommFunc.WriteDWORD(data, self.ExAttr14)
+ data = CommFunc.WriteDWORD(data, self.OperateInfo)
+ data = CommFunc.WriteString(data, 15, self.Operate)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ data = CommFunc.WriteDWORD(data, self.ExAttr15)
+ data = CommFunc.WriteDWORD(data, self.ExAttr16)
+ data = CommFunc.WriteDWORD(data, self.ExAttr17)
+ data = CommFunc.WriteDWORD(data, self.ExAttr18)
+ data = CommFunc.WriteDWORD(data, self.ExAttr19)
+ data = CommFunc.WriteDWORD(data, self.ExAttr20)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AccID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ AccState:%d,
+ GMLevel:%d,
+ Sex:%d,
+ Job:%d,
+ ReincarnationLv:%d,
+ LV:%d,
+ LVEx:%d,
+ LV2:%d,
+ ExpPoint:%d,
+ TotalExp:%d,
+ Family:%d,
+ FamilyName:%s,
+ TeamHornor:%d,
+ FamilyHornor:%d,
+ FamilyActiveValue:%d,
+ LastWeekFamilyActiveValue:%d,
+ CountryHornor:%d,
+ CountryLastWeekHornor:%d,
+ Mate:%d,
+ Gold:%d,
+ GoldPaper:%d,
+ Silver:%d,
+ SilverPaper:%d,
+ FightPoint:%d,
+ HappyPoint:%d,
+ LineID:%d,
+ MapID:%d,
+ PosX:%d,
+ PosY:%d,
+ RebornMapID:%d,
+ RebornPosX:%d,
+ RebornPosY:%d,
+ State:%d,
+ HP:%d,
+ XP:%d,
+ HPRestoreSetting:%d,
+ MPRestoreSetting:%d,
+ FreePoint:%d,
+ FreeSkillPoint:%d,
+ BaseSTR:%d,
+ BasePNE:%d,
+ BasePHY:%d,
+ BaseCON:%d,
+ STR:%d,
+ PNE:%d,
+ PHY:%d,
+ CON:%d,
+ PKValue:%d,
+ BackpackLV:%d,
+ WarehouseLV:%d,
+ TeamID:%d,
+ UseGoldType:%d,
+ UseSilverType:%d,
+ AttackMode:%d,
+ LastWeekOnlineTime:%d,
+ FBID:%d,
+ FamilyLV:%d,
+ FriendFavor:%d,
+ Energy:%d,
+ EquipShowSwitch:%d,
+ LuckValue:%d,
+ ExAttr1:%d,
+ ExAttr2:%d,
+ ExAttr3:%d,
+ ExAttr4:%d,
+ ExAttr5:%d,
+ Faction:%d,
+ InfamyValue:%d,
+ OfficialRank:%d,
+ ChangeCoinPointTotal:%d,
+ VIPLv:%d,
+ VIPLvForPhone:%d,
+ ExAttr6:%d,
+ ExAttr7:%d,
+ ExAttr8:%d,
+ ExAttr9:%d,
+ ExAttr10:%d,
+ ModelMark:%d,
+ ExAttr11:%d,
+ ExAttr12:%d,
+ ExAttr13:%d,
+ ExAttr14:%d,
+ OperateInfo:%d,
+ Operate:%s,
+ ServerID:%d,
+ ExAttr15:%d,
+ ExAttr16:%d,
+ ExAttr17:%d,
+ ExAttr18:%d,
+ ExAttr19:%d,
+ ExAttr20:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AccID,
+ self.PlayerID,
+ self.PlayerName,
+ self.AccState,
+ self.GMLevel,
+ self.Sex,
+ self.Job,
+ self.ReincarnationLv,
+ self.LV,
+ self.LVEx,
+ self.LV2,
+ self.ExpPoint,
+ self.TotalExp,
+ self.Family,
+ self.FamilyName,
+ self.TeamHornor,
+ self.FamilyHornor,
+ self.FamilyActiveValue,
+ self.LastWeekFamilyActiveValue,
+ self.CountryHornor,
+ self.CountryLastWeekHornor,
+ self.Mate,
+ self.Gold,
+ self.GoldPaper,
+ self.Silver,
+ self.SilverPaper,
+ self.FightPoint,
+ self.HappyPoint,
+ self.LineID,
+ self.MapID,
+ self.PosX,
+ self.PosY,
+ self.RebornMapID,
+ self.RebornPosX,
+ self.RebornPosY,
+ self.State,
+ self.HP,
+ self.XP,
+ self.HPRestoreSetting,
+ self.MPRestoreSetting,
+ self.FreePoint,
+ self.FreeSkillPoint,
+ self.BaseSTR,
+ self.BasePNE,
+ self.BasePHY,
+ self.BaseCON,
+ self.STR,
+ self.PNE,
+ self.PHY,
+ self.CON,
+ self.PKValue,
+ self.BackpackLV,
+ self.WarehouseLV,
+ self.TeamID,
+ self.UseGoldType,
+ self.UseSilverType,
+ self.AttackMode,
+ self.LastWeekOnlineTime,
+ self.FBID,
+ self.FamilyLV,
+ self.FriendFavor,
+ self.Energy,
+ self.EquipShowSwitch,
+ self.LuckValue,
+ self.ExAttr1,
+ self.ExAttr2,
+ self.ExAttr3,
+ self.ExAttr4,
+ self.ExAttr5,
+ self.Faction,
+ self.InfamyValue,
+ self.OfficialRank,
+ self.ChangeCoinPointTotal,
+ self.VIPLv,
+ self.VIPLvForPhone,
+ self.ExAttr6,
+ self.ExAttr7,
+ self.ExAttr8,
+ self.ExAttr9,
+ self.ExAttr10,
+ self.ModelMark,
+ self.ExAttr11,
+ self.ExAttr12,
+ self.ExAttr13,
+ self.ExAttr14,
+ self.OperateInfo,
+ self.Operate,
+ self.ServerID,
+ self.ExAttr15,
+ self.ExAttr16,
+ self.ExAttr17,
+ self.ExAttr18,
+ self.ExAttr19,
+ self.ExAttr20
+ )
+ return DumpString
+
+
+m_NAtagMCDBPlayer=tagMCDBPlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
#------------------------------------------------------
@@ -9952,14 +11050,70 @@
#------------------------------------------------------
+# A3 24 通知绑玉转盘结果 #tagMCBindJadeWheelResult
+
+class tagMCBindJadeWheelResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Index", c_ubyte), # 格子
+ ("Cnt", c_ubyte), #今日已转次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x24
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x24
+ self.Index = 0
+ self.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBindJadeWheelResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 24 通知绑玉转盘结果 //tagMCBindJadeWheelResult:
+ Cmd:%s,
+ SubCmd:%s,
+ Index:%d,
+ Cnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Index,
+ self.Cnt
+ )
+ return DumpString
+
+
+m_NAtagMCBindJadeWheelResult=tagMCBindJadeWheelResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBindJadeWheelResult.Cmd,m_NAtagMCBindJadeWheelResult.SubCmd))] = m_NAtagMCBindJadeWheelResult
+
+
+#------------------------------------------------------
#A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt
class tagMCBossCntInfo(Structure):
_pack_ = 1
_fields_ = [
("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
- ("KillCnt", c_ubyte), #击杀次数
- ("ItemAddCnt", c_ubyte), #物品增加次数
+ ("KillCnt", c_int), #击杀次数
+ ("ItemAddCnt", c_int), #物品增加次数
]
def __init__(self):
@@ -10541,6 +11695,7 @@
("RealmPoint", c_int), # 可领取修行点
("StageIndex", c_ubyte), # 当前阶段索引
("AwardRecord", c_int), # 领奖记录 按位存储
+ ("ExtraPoint", c_int), # 多倍活动获得的额外修行点
]
def __init__(self):
@@ -10561,6 +11716,7 @@
self.RealmPoint = 0
self.StageIndex = 0
self.AwardRecord = 0
+ self.ExtraPoint = 0
return
def GetLength(self):
@@ -10576,7 +11732,8 @@
CurValue:%d,
RealmPoint:%d,
StageIndex:%d,
- AwardRecord:%d
+ AwardRecord:%d,
+ ExtraPoint:%d
'''\
%(
self.Cmd,
@@ -10584,7 +11741,8 @@
self.CurValue,
self.RealmPoint,
self.StageIndex,
- self.AwardRecord
+ self.AwardRecord,
+ self.ExtraPoint
)
return DumpString
@@ -11272,19 +12430,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
-class tagMCFBEncourageInfo(Structure):
+class tagMCFBEncourageCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Cnt1", c_ubyte), # 当前铜钱鼓舞次数
- ("Cnt2", 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):
@@ -11293,36 +12447,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
- self.Cnt1 = 0
- self.Cnt2 = 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,
- Cnt1:%d,
- Cnt2:%d
+ MoneyType:%d,
+ EncourageCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Cnt1,
- self.Cnt2
+ 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
#------------------------------------------------------
@@ -11631,6 +12841,7 @@
_fields_ = [
("FuncID", c_ubyte), # 功能ID
("State", c_ubyte), # 是否开启
+ ("AwardState", c_ubyte), # 是否已领奖励
]
def __init__(self):
@@ -11645,6 +12856,7 @@
def Clear(self):
self.FuncID = 0
self.State = 0
+ self.AwardState = 0
return
def GetLength(self):
@@ -11656,11 +12868,13 @@
def OutputString(self):
DumpString = '''//A3 02 功能开通状态 //tagMCFuncOpenStateList:
FuncID:%d,
- State:%d
+ State:%d,
+ AwardState:%d
'''\
%(
self.FuncID,
- self.State
+ self.State,
+ self.AwardState
)
return DumpString
@@ -11729,6 +12943,73 @@
m_NAtagMCFuncOpenStateList=tagMCFuncOpenStateList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncOpenStateList.Head.Cmd,m_NAtagMCFuncOpenStateList.Head.SubCmd))] = m_NAtagMCFuncOpenStateList
+
+
+#------------------------------------------------------
+# A3 1E 玩家聚魂孔信息 #tagMCGatherSoulHoleInfo
+
+class tagMCGatherSoulHoleInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 孔信息数
+ GatherSoulDataList = list() #(vector<DWORD> GatherSoulDataList)// 孔数据信息, 数据与背包数据相同
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x1E
+ 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.GatherSoulDataList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x1E
+ self.Count = 0
+ self.GatherSoulDataList = 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.GatherSoulDataList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ GatherSoulDataList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGatherSoulHoleInfo=tagMCGatherSoulHoleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherSoulHoleInfo.Head.Cmd,m_NAtagMCGatherSoulHoleInfo.Head.SubCmd))] = m_NAtagMCGatherSoulHoleInfo
#------------------------------------------------------
@@ -12101,6 +13382,8 @@
("LV", c_ubyte),
("Exp", c_int),
("State", c_ubyte), #是否点击法宝认主
+ ("FBPassLV", c_ubyte), #副本关卡
+ ("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
]
def __init__(self):
@@ -12117,6 +13400,8 @@
self.LV = 0
self.Exp = 0
self.State = 0
+ self.FBPassLV = 0
+ self.IsWear = 0
return
def GetLength(self):
@@ -12130,13 +13415,17 @@
MWID:%d,
LV:%d,
Exp:%d,
- State:%d
+ State:%d,
+ FBPassLV:%d,
+ IsWear:%d
'''\
%(
self.MWID,
self.LV,
self.Exp,
- self.State
+ self.State,
+ self.FBPassLV,
+ self.IsWear
)
return DumpString
@@ -12856,16 +14145,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):
@@ -12874,8 +14159,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x26
self.NPCID = 0
self.CollectionCnt = 0
return
@@ -12888,14 +14171,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
)
@@ -13548,6 +14827,62 @@
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
+
+
+#------------------------------------------------------
+# A3 21 祈福丹药结果 #tagMCPrayElixirResult
+
+class tagMCPrayElixirResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("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):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x21
+ self.ItemID = 0
+ self.PrayCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPrayElixirResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 21 祈福丹药结果 //tagMCPrayElixirResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ PrayCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.PrayCnt
+ )
+ return DumpString
+
+
+m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
#------------------------------------------------------
@@ -16128,6 +17463,58 @@
#------------------------------------------------------
+# A7 17 聊天气泡框状态 #tagMCChatBubbleBoxState
+
+class tagMCChatBubbleBoxState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BoxState", c_int), # 按二进制位存储代表是否已开启,暂支持31位,以后有需要再加
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x17
+ 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 = 0x17
+ self.BoxState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCChatBubbleBoxState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 17 聊天气泡框状态 //tagMCChatBubbleBoxState:
+ Cmd:%s,
+ SubCmd:%s,
+ BoxState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BoxState
+ )
+ return DumpString
+
+
+m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
+
+
+#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class tagMCDynamicBarrier(Structure):
@@ -16137,6 +17524,7 @@
("APosY", c_ushort),
("BPosX", c_ushort),
("BPosY", c_ushort),
+ ("Angle", c_ushort),
]
def __init__(self):
@@ -16153,6 +17541,7 @@
self.APosY = 0
self.BPosX = 0
self.BPosY = 0
+ self.Angle = 0
return
def GetLength(self):
@@ -16166,13 +17555,15 @@
APosX:%d,
APosY:%d,
BPosX:%d,
- BPosY:%d
+ BPosY:%d,
+ Angle:%d
'''\
%(
self.APosX,
self.APosY,
self.BPosX,
- self.BPosY
+ self.BPosY,
+ self.Angle
)
return DumpString
@@ -16248,6 +17639,183 @@
m_NAtagMCDynamicBarrierState=tagMCDynamicBarrierState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDynamicBarrierState.Head.Cmd,m_NAtagMCDynamicBarrierState.Head.SubCmd))] = m_NAtagMCDynamicBarrierState
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -16426,6 +17994,249 @@
#------------------------------------------------------
+# A7 16 小助手设置 #tagMCLittleHelperSet
+
+class tagMCLittleHelperFuncSet(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SetNum", c_ubyte), # 托管功能设置编号1~20,每个编号对应的托管功能前端自定义
+ ("Value1", c_int), # 自定义值1,如果存储的是勾选信息, 按二进制位存储代表是否勾选,支持31位,每位代表的含义前端自定义
+ ("Value2", c_int), # 自定义值2
+ ("Value3", c_int), # 自定义值3
+ ("Value4", c_int), # 自定义值4
+ ("Value5", c_int), # 自定义值5
+ ("Value6", c_int), # 自定义值6
+ ]
+
+ 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.SetNum = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.Value3 = 0
+ self.Value4 = 0
+ self.Value5 = 0
+ self.Value6 = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLittleHelperFuncSet)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 16 小助手设置 //tagMCLittleHelperSet:
+ SetNum:%d,
+ Value1:%d,
+ Value2:%d,
+ Value3:%d,
+ Value4:%d,
+ Value5:%d,
+ Value6:%d
+ '''\
+ %(
+ self.SetNum,
+ self.Value1,
+ self.Value2,
+ self.Value3,
+ self.Value4,
+ self.Value5,
+ self.Value6
+ )
+ return DumpString
+
+
+class tagMCLittleHelperSet(Structure):
+ Head = tagHead()
+ FuncSetCount = 0 #(BYTE FuncSetCount)// 托管功能设置数,暂支持20个
+ FuncSetList = list() #(vector<tagMCLittleHelperFuncSet> FuncSetList)// 托管功能设置列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FuncSetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.FuncSetCount):
+ temFuncSetList = tagMCLittleHelperFuncSet()
+ _pos = temFuncSetList.ReadData(_lpData, _pos)
+ self.FuncSetList.append(temFuncSetList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x16
+ self.FuncSetCount = 0
+ self.FuncSetList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.FuncSetCount):
+ length += self.FuncSetList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.FuncSetCount)
+ for i in range(self.FuncSetCount):
+ data = CommFunc.WriteString(data, self.FuncSetList[i].GetLength(), self.FuncSetList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FuncSetCount:%d,
+ FuncSetList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FuncSetCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCLittleHelperSet=tagMCLittleHelperSet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLittleHelperSet.Head.Cmd,m_NAtagMCLittleHelperSet.Head.SubCmd))] = m_NAtagMCLittleHelperSet
+
+
+#------------------------------------------------------
+# 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):
@@ -16491,8 +18302,6 @@
class tagMCNPCInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("ObjID", c_int),
("NPCID", c_int),
("NPCHP", c_int),
@@ -16505,8 +18314,6 @@
def __init__(self):
self.Clear()
- self.Cmd = 0xA7
- self.SubCmd = 0x06
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -16515,8 +18322,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA7
- self.SubCmd = 0x06
self.ObjID = 0
self.NPCID = 0
self.NPCHP = 0
@@ -16535,8 +18340,6 @@
def OutputString(self):
DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList:
- Cmd:%s,
- SubCmd:%s,
ObjID:%d,
NPCID:%d,
NPCHP:%d,
@@ -16547,8 +18350,6 @@
RefreshSecond:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.ObjID,
self.NPCID,
self.NPCHP,
@@ -17536,6 +19337,114 @@
#------------------------------------------------------
+# A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
+
+class tagMCMysticalShopTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsID", c_int), # 商品ID
+ ("StartTime", 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.GoodsID = 0
+ self.StartTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMysticalShopTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 06 通知神秘限购商品时间 //tagMCMysticalShopTimeInfo:
+ GoodsID:%d,
+ StartTime:%d
+ '''\
+ %(
+ self.GoodsID,
+ self.StartTime
+ )
+ return DumpString
+
+
+class tagMCMysticalShopTimeInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)// 商品数
+ ShopTimeList = list() #(vector<tagMCMysticalShopTime> ShopTimeList)// 商品开卖信息
+ 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.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temShopTimeList = tagMCMysticalShopTime()
+ _pos = temShopTimeList.ReadData(_lpData, _pos)
+ self.ShopTimeList.append(temShopTimeList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x06
+ self.Count = 0
+ self.ShopTimeList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.ShopTimeList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ShopTimeList[i].GetLength(), self.ShopTimeList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ ShopTimeList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCMysticalShopTimeInfo=tagMCMysticalShopTimeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopTimeInfo.Head.Cmd,m_NAtagMCMysticalShopTimeInfo.Head.SubCmd))] = m_NAtagMCMysticalShopTimeInfo
+
+
+#------------------------------------------------------
# A8 10 通知获得物品 #tagMCNotifyUseItemGetItem
class tagMCNotifyUseItemGetItem(Structure):
@@ -18175,6 +20084,707 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
+
+
+#------------------------------------------------------
+# AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
+
+class tagMCTotalRechargeAwardItem(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(tagMCTotalRechargeAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1D 累计充值活动信息 //tagMCActTotalRechargeInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCTotalRechargeAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedGold = 0 #(DWORD NeedGold)// 所需仙玉数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCTotalRechargeAwardItem> 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 = tagMCTotalRechargeAwardItem()
+ _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 tagMCTotalRechargeAwardDay(Structure):
+ AwardCount = 0 #(BYTE AwardCount)// 奖励档数
+ AwardInfo = list() #(vector<tagMCTotalRechargeAward> 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 = tagMCTotalRechargeAward()
+ _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 tagMCActTotalRechargeInfo(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<tagMCTotalRechargeAwardDay> AwardDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x1D
+ 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 = tagMCTotalRechargeAwardDay()
+ _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 = 0x1D
+ 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_NAtagMCActTotalRechargeInfo=tagMCActTotalRechargeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTotalRechargeInfo.Head.Cmd,m_NAtagMCActTotalRechargeInfo.Head.SubCmd))] = m_NAtagMCActTotalRechargeInfo
+
+
+#------------------------------------------------------
+# AA 1B 许愿池拖动结果 #tagMCActWishingDragResult
+
+class tagMCPlayerWishingDragInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("WellType", c_ubyte), # 库 0-可选库 1-结果库
+ ("Index", c_ubyte), # 索引
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("IsBind", c_ubyte), # 是否绑定
+ ("IsSpecial", 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.WellType = 0
+ self.Index = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ self.IsSpecial = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPlayerWishingDragInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1B 许愿池拖动结果 //tagMCActWishingDragResult:
+ WellType:%d,
+ Index:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d,
+ IsSpecial:%d
+ '''\
+ %(
+ self.WellType,
+ self.Index,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind,
+ self.IsSpecial
+ )
+ return DumpString
+
+
+class tagMCActWishingDragResult(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCPlayerWishingDragInfo> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x1B
+ 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 = tagMCPlayerWishingDragInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x1B
+ 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_NAtagMCActWishingDragResult=tagMCActWishingDragResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingDragResult.Head.Cmd,m_NAtagMCActWishingDragResult.Head.SubCmd))] = m_NAtagMCActWishingDragResult
+
+
+#------------------------------------------------------
+# AA 19 许愿池活动信息 #tagMCActWishingWellInfo
+
+class tagMCWishingWellItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("IsBind", c_ubyte), # 是否绑定
+ ("Mark", c_int), # 排序标识
+ ("Rare", 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.ItemCnt = 0
+ self.IsBind = 0
+ self.Mark = 0
+ self.Rare = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWishingWellItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 19 许愿池活动信息 //tagMCActWishingWellInfo:
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d,
+ Mark:%d,
+ Rare:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind,
+ self.Mark,
+ self.Rare
+ )
+ return DumpString
+
+
+class tagMCActWishingWellInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ Count = 0 #(WORD Count)// 物品数
+ WellItemInfo = list() #(vector<tagMCWishingWellItem> WellItemInfo)// 随机库物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x19
+ 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temWellItemInfo = tagMCWishingWellItem()
+ _pos = temWellItemInfo.ReadData(_lpData, _pos)
+ self.WellItemInfo.append(temWellItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x19
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.Count = 0
+ self.WellItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ length += 2
+ length += 2
+ for i in range(self.Count):
+ length += self.WellItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ Count:%d,
+ WellItemInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActWishingWellInfo=tagMCActWishingWellInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellInfo.Head.Cmd,m_NAtagMCActWishingWellInfo.Head.SubCmd))] = m_NAtagMCActWishingWellInfo
+
+
+#------------------------------------------------------
+# AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo
+
+class tagMCPlayerWishingWellItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("IsBind", c_ubyte), # 是否绑定
+ ("IsSpecial", 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.ItemCnt = 0
+ self.IsBind = 0
+ self.IsSpecial = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPlayerWishingWellItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1A 许愿池活动玩家信息 //tagMCActWishingWellPlayerInfo:
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d,
+ IsSpecial:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind,
+ self.IsSpecial
+ )
+ return DumpString
+
+
+class tagMCActWishingWellPlayerInfo(Structure):
+ Head = tagHead()
+ FreeStartTime = 0 #(DWORD FreeStartTime)// 免费开始倒计时时间
+ WishCnt = 0 #(DWORD WishCnt)// 许愿付费刷新次数
+ WellItemCnt = 0 #(BYTE WellItemCnt)//许愿池物品数量
+ WellItemInfo = list() #(vector<tagMCPlayerWishingWellItem> WellItemInfo)// 随机库物品信息
+ CurAwardCnt = 0 #(BYTE CurAwardCnt)// 当前奖励物品数量
+ CurAwardItemInfo = list() #(vector<tagMCPlayerWishingWellItem> CurAwardItemInfo)// 当前奖励物品
+ LastAwardCnt = 0 #(BYTE LastAwardCnt)// 可领取奖励物品数量
+ LastAwardItemInfo = list() #(vector<tagMCPlayerWishingWellItem> LastAwardItemInfo)// 可领取奖励物品
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x1A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FreeStartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.WishCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.WellItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WellItemCnt):
+ temWellItemInfo = tagMCPlayerWishingWellItem()
+ _pos = temWellItemInfo.ReadData(_lpData, _pos)
+ self.WellItemInfo.append(temWellItemInfo)
+ self.CurAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CurAwardCnt):
+ temCurAwardItemInfo = tagMCPlayerWishingWellItem()
+ _pos = temCurAwardItemInfo.ReadData(_lpData, _pos)
+ self.CurAwardItemInfo.append(temCurAwardItemInfo)
+ self.LastAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.LastAwardCnt):
+ temLastAwardItemInfo = tagMCPlayerWishingWellItem()
+ _pos = temLastAwardItemInfo.ReadData(_lpData, _pos)
+ self.LastAwardItemInfo.append(temLastAwardItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x1A
+ self.FreeStartTime = 0
+ self.WishCnt = 0
+ self.WellItemCnt = 0
+ self.WellItemInfo = list()
+ self.CurAwardCnt = 0
+ self.CurAwardItemInfo = list()
+ self.LastAwardCnt = 0
+ self.LastAwardItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.WellItemCnt):
+ length += self.WellItemInfo[i].GetLength()
+ length += 1
+ for i in range(self.CurAwardCnt):
+ length += self.CurAwardItemInfo[i].GetLength()
+ length += 1
+ for i in range(self.LastAwardCnt):
+ length += self.LastAwardItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.FreeStartTime)
+ data = CommFunc.WriteDWORD(data, self.WishCnt)
+ data = CommFunc.WriteBYTE(data, self.WellItemCnt)
+ for i in range(self.WellItemCnt):
+ data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.CurAwardCnt)
+ for i in range(self.CurAwardCnt):
+ data = CommFunc.WriteString(data, self.CurAwardItemInfo[i].GetLength(), self.CurAwardItemInfo[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.LastAwardCnt)
+ for i in range(self.LastAwardCnt):
+ data = CommFunc.WriteString(data, self.LastAwardItemInfo[i].GetLength(), self.LastAwardItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FreeStartTime:%d,
+ WishCnt:%d,
+ WellItemCnt:%d,
+ WellItemInfo:%s,
+ CurAwardCnt:%d,
+ CurAwardItemInfo:%s,
+ LastAwardCnt:%d,
+ LastAwardItemInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FreeStartTime,
+ self.WishCnt,
+ self.WellItemCnt,
+ "...",
+ self.CurAwardCnt,
+ "...",
+ self.LastAwardCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActWishingWellPlayerInfo=tagMCActWishingWellPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellPlayerInfo.Head.Cmd,m_NAtagMCActWishingWellPlayerInfo.Head.SubCmd))] = m_NAtagMCActWishingWellPlayerInfo
#------------------------------------------------------
@@ -19192,6 +21802,7 @@
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)//是否每天重置
@@ -19211,6 +21822,7 @@
_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()
@@ -19232,6 +21844,7 @@
self.Head.SubCmd = 0x12
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19245,6 +21858,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19261,6 +21875,7 @@
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())
@@ -19276,6 +21891,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19287,6 +21903,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -19407,6 +22024,420 @@
m_NAtagMCFlashGiftbagPlayerInfo=tagMCFlashGiftbagPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagPlayerInfo.Head.Cmd,m_NAtagMCFlashGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagPlayerInfo
+
+
+#------------------------------------------------------
+# AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
+
+class tagMCFlashSaleAppointmentState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsMark", 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.GoodsMark = 0
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFlashSaleAppointmentState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 18 限时抢购活动玩家预约信息 //tagMCFlashSaleAppointmentInfo:
+ GoodsMark:%d,
+ State:%d
+ '''\
+ %(
+ self.GoodsMark,
+ self.State
+ )
+ return DumpString
+
+
+class tagMCFlashSaleAppointmentInfo(Structure):
+ Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)// 是否全部
+ GoodsCount = 0 #(WORD GoodsCount)// 商品数
+ GoodsList = list() #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.GoodsCount):
+ temGoodsList = tagMCFlashSaleAppointmentState()
+ _pos = temGoodsList.ReadData(_lpData, _pos)
+ self.GoodsList.append(temGoodsList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x18
+ self.IsAll = 0
+ self.GoodsCount = 0
+ self.GoodsList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ for i in range(self.GoodsCount):
+ length += self.GoodsList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsAll)
+ data = CommFunc.WriteWORD(data, self.GoodsCount)
+ for i in range(self.GoodsCount):
+ data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IsAll:%d,
+ GoodsCount:%d,
+ GoodsList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsAll,
+ self.GoodsCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFlashSaleAppointmentInfo=tagMCFlashSaleAppointmentInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleAppointmentInfo.Head.Cmd,m_NAtagMCFlashSaleAppointmentInfo.Head.SubCmd))] = m_NAtagMCFlashSaleAppointmentInfo
+
+
+#------------------------------------------------------
+# AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
+
+class tagMCFlashSaleGiftbag(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GiftID", c_int), #商城表的物品ID
+ ("BuyCountLimit", c_ubyte), #限购数
+ ("ServerBuyCountLimit", c_ushort), #全服限购数
+ ("MoneyType", c_ubyte), #消耗货币类型
+ ("MoneyNumber", c_int), #消耗货币数量
+ ("MoneyOriginal", c_int), #原价
+ ("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.GiftID = 0
+ self.BuyCountLimit = 0
+ self.ServerBuyCountLimit = 0
+ self.MoneyType = 0
+ self.MoneyNumber = 0
+ self.MoneyOriginal = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFlashSaleGiftbag)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 17 限时抢购活动信息 //tagMCFlashSaleInfo:
+ GiftID:%d,
+ BuyCountLimit:%d,
+ ServerBuyCountLimit:%d,
+ MoneyType:%d,
+ MoneyNumber:%d,
+ MoneyOriginal:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.GiftID,
+ self.BuyCountLimit,
+ self.ServerBuyCountLimit,
+ self.MoneyType,
+ self.MoneyNumber,
+ self.MoneyOriginal,
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFlashSaleShop(Structure):
+ DayIndex = 0 #(BYTE DayIndex)// 活动第几天
+ TimeIndex = 0 #(BYTE TimeIndex)// 第几个时间段
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 商店礼包数
+ GiftbagInfo = list() #(vector<tagMCFlashSaleGiftbag> GiftbagInfo)// 礼包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TimeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagInfo = tagMCFlashSaleGiftbag()
+ _pos = temGiftbagInfo.ReadData(_lpData, _pos)
+ self.GiftbagInfo.append(temGiftbagInfo)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.TimeIndex = 0
+ self.GiftbagCount = 0
+ self.GiftbagInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.DayIndex)
+ data = CommFunc.WriteBYTE(data, self.TimeIndex)
+ 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 = '''
+ DayIndex:%d,
+ TimeIndex:%d,
+ GiftbagCount:%d,
+ GiftbagInfo:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.TimeIndex,
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFlashSaleTime(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 tagMCFlashSaleInfo(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<tagMCFlashSaleTime> ActivityTime)//活动时间
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ShopCount = 0 #(BYTE ShopCount)// 商店数
+ ShopInfo = list() #(vector<tagMCFlashSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x17
+ 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 = tagMCFlashSaleTime()
+ _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 = tagMCFlashSaleShop()
+ _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 = 0x17
+ 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_NAtagMCFlashSaleInfo=tagMCFlashSaleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleInfo.Head.Cmd,m_NAtagMCFlashSaleInfo.Head.SubCmd))] = m_NAtagMCFlashSaleInfo
#------------------------------------------------------
@@ -19835,6 +22866,7 @@
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)//是否每天重置
@@ -19854,6 +22886,7 @@
_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()
@@ -19875,6 +22908,7 @@
self.Head.SubCmd = 0x11
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19888,6 +22922,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19904,6 +22939,7 @@
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())
@@ -19919,6 +22955,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19930,6 +22967,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -19942,6 +22980,58 @@
m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
+
+
+#------------------------------------------------------
+# AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
+
+class tagMCSuperGiftInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("StartTime", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x16
+ self.StartTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSuperGiftInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 16 通知超值礼包信息 //tagMCSuperGiftInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ StartTime:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.StartTime
+ )
+ return DumpString
+
+
+m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Cmd,m_NAtagMCSuperGiftInfo.SubCmd))] = m_NAtagMCSuperGiftInfo
#------------------------------------------------------
@@ -19998,6 +23088,574 @@
m_NAtagMCTotalLoginDayCntInfo=tagMCTotalLoginDayCntInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalLoginDayCntInfo.Cmd,m_NAtagMCTotalLoginDayCntInfo.SubCmd))] = m_NAtagMCTotalLoginDayCntInfo
+
+
+#------------------------------------------------------
+# AA 1C 累计充值玩家活动信息 #tagMCTotalRechargePlayerInfo
+
+class tagMCTotalRechargePlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GoldTotal", c_int), #本次活动已累计充值仙玉数
+ ("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x1C
+ 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 = 0x1C
+ self.GoldTotal = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTotalRechargePlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ GoldTotal:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GoldTotal,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCTotalRechargePlayerInfo=tagMCTotalRechargePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalRechargePlayerInfo.Cmd,m_NAtagMCTotalRechargePlayerInfo.SubCmd))] = m_NAtagMCTotalRechargePlayerInfo
+
+
+#------------------------------------------------------
+# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
+
+class tagMCWeekPartyItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedPoint", c_ushort), # 领奖需要积分
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", 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.NeedPoint = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
+ NeedPoint:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.NeedPoint,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCWeekPartyAction(Structure):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Point = 0 #(DWORD Point)// 单次领奖积分
+ Count = 0 #(BYTE Count)// 物品数
+ ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temItemInfo = tagMCWeekPartyItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Point = 0
+ self.Count = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Point:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Point,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ PCount = 0 #(BYTE PCount)// 物品数
+ PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PCount):
+ temPItemInfo = tagMCWeekPartyItem()
+ _pos = temPItemInfo.ReadData(_lpData, _pos)
+ self.PItemInfo.append(temPItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.PCount = 0
+ self.PItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 1
+ for i in range(self.PCount):
+ length += self.PItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteBYTE(data, self.PCount)
+ for i in range(self.PCount):
+ data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ PCount:%d,
+ PItemInfo:%s
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.PCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCWeekPartyDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCWeekPartyAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0A
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
+
+
+#------------------------------------------------------
+# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
+
+class tagMCWeekPartyTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_ushort), #已完成次数
+ ("GotTimes", 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ Point = 0 #(DWORD Point)//积分
+ AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCWeekPartyTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.Point = 0
+ self.AwardRecord = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ Point:%d,
+ AwardRecord:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.Point,
+ self.AwardRecord,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ 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):
+ temDayInfoList = tagMCWeekPartyDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
#------------------------------------------------------
@@ -20589,6 +24247,7 @@
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)
@@ -20605,6 +24264,7 @@
_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):
@@ -20620,6 +24280,7 @@
self.Head.SubCmd = 0x04
self.StartDate = ""
self.EndtDate = ""
+ self.ResetType = 0
self.LimitLV = 0
self.TaskCnt = 0
self.TaskInfo = list()
@@ -20630,6 +24291,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 1
length += 2
length += 1
for i in range(self.TaskCnt):
@@ -20642,6 +24304,7 @@
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):
@@ -20653,6 +24316,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ ResetType:%d,
LimitLV:%d,
TaskCnt:%d,
TaskInfo:%s
@@ -20661,6 +24325,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.ResetType,
self.LimitLV,
self.TaskCnt,
"..."
@@ -21546,17 +25211,12 @@
class tagMCClothesCoatLVInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("CoatIndex", c_int), #时装索引
("CoatLV", c_ubyte), #时装等级
- ("CoatExp", c_int), #时装祝福值经验
]
def __init__(self):
self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x02
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -21565,11 +25225,8 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x02
self.CoatIndex = 0
self.CoatLV = 0
- self.CoatExp = 0
return
def GetLength(self):
@@ -21580,26 +25237,21 @@
def OutputString(self):
DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState:
- Cmd:%s,
- SubCmd:%s,
CoatIndex:%d,
- CoatLV:%d,
- CoatExp:%d
+ CoatLV:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.CoatIndex,
- self.CoatLV,
- self.CoatExp
+ self.CoatLV
)
return DumpString
class tagMCClothesCoatSkinState(Structure):
Head = tagHead()
- SkinOpenState = 0 #(DWORD SkinOpenState)//时装激活状态, 按索引表示激活状态
- CoatNum = 0 #(BYTE CoatNum)//时装个数
+ CoatChestLV = 0 #(DWORD CoatChestLV)//时装柜等级
+ CoatChestExp = 0 #(DWORD CoatChestExp)//时装柜经验
+ CoatNum = 0 #(WORD CoatNum)//时装个数
CoatInfoList = list() #(vector<tagMCClothesCoatLVInfo> CoatInfoList)// 时装数据列表
data = None
@@ -21612,8 +25264,9 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.SkinOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CoatNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CoatChestLV,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatChestExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.CoatNum):
temCoatInfoList = tagMCClothesCoatLVInfo()
_pos = temCoatInfoList.ReadData(_lpData, _pos)
@@ -21625,7 +25278,8 @@
self.Head.Clear()
self.Head.Cmd = 0xB1
self.Head.SubCmd = 0x02
- self.SkinOpenState = 0
+ self.CoatChestLV = 0
+ self.CoatChestExp = 0
self.CoatNum = 0
self.CoatInfoList = list()
return
@@ -21634,7 +25288,8 @@
length = 0
length += self.Head.GetLength()
length += 4
- length += 1
+ length += 4
+ length += 2
for i in range(self.CoatNum):
length += self.CoatInfoList[i].GetLength()
@@ -21643,8 +25298,9 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.SkinOpenState)
- data = CommFunc.WriteBYTE(data, self.CoatNum)
+ data = CommFunc.WriteDWORD(data, self.CoatChestLV)
+ data = CommFunc.WriteDWORD(data, self.CoatChestExp)
+ data = CommFunc.WriteWORD(data, self.CoatNum)
for i in range(self.CoatNum):
data = CommFunc.WriteString(data, self.CoatInfoList[i].GetLength(), self.CoatInfoList[i].GetBuffer())
return data
@@ -21652,13 +25308,15 @@
def OutputString(self):
DumpString = '''
Head:%s,
- SkinOpenState:%d,
+ CoatChestLV:%d,
+ CoatChestExp:%d,
CoatNum:%d,
CoatInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.SkinOpenState,
+ self.CoatChestLV,
+ self.CoatChestExp,
self.CoatNum,
"..."
)
@@ -21667,6 +25325,66 @@
m_NAtagMCClothesCoatSkinState=tagMCClothesCoatSkinState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClothesCoatSkinState.Head.Cmd,m_NAtagMCClothesCoatSkinState.Head.SubCmd))] = m_NAtagMCClothesCoatSkinState
+
+
+#------------------------------------------------------
+# B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
+
+class tagMCNotifyPlayerMove(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PosX", c_int),
+ ("PosY", c_int),
+ ("NPCID", c_int), #目标点寻路NPCID, 可能为0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ 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 = 0xB1
+ self.SubCmd = 0x06
+ self.PosX = 0
+ self.PosY = 0
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNotifyPlayerMove)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 06 通知玩家向目标点移动 //tagMCNotifyPlayerMove:
+ Cmd:%s,
+ SubCmd:%s,
+ PosX:%d,
+ PosY:%d,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PosX,
+ self.PosY,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove
#------------------------------------------------------
@@ -21939,6 +25657,126 @@
m_NAtagMCPlayerWallow=tagMCPlayerWallow()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerWallow.Cmd,m_NAtagMCPlayerWallow.SubCmd))] = m_NAtagMCPlayerWallow
+
+
+#------------------------------------------------------
+# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
+
+class tagMCAddXianyuanCoinMsg(Structure):
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)
+ FuncLineID = 0 #(BYTE FuncLineID)
+ Relation = 0 #(BYTE Relation)// 当时的关系:0-无,1-好友,2-盟友
+ RelationCoinAdd = 0 #(BYTE RelationCoinAdd)// 社交关系总加成
+ XianyuanCoinAdd = 0 #(WORD XianyuanCoinAdd)// 实际增加的仙缘币
+ Reason = 0 #(BYTE Reason)//仙缘币为0时的原因:1-助战次数上限;2-每日获得上限
+ CallPlayerID = 0 #(DWORD CallPlayerID)// 助战的玩家ID,有值时代表真实助战,没有值时为自己打的
+ NameLen = 0 #(BYTE NameLen)
+ CallPlayerName = "" #(String CallPlayerName)// 助战的玩家名,size = NameLen
+ IsSweep = 0 #(BYTE IsSweep)// 是否扫荡
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x08
+ 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.FuncLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RelationCoinAdd,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.XianyuanCoinAdd,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Reason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CallPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CallPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.IsSweep,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x08
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.Relation = 0
+ self.RelationCoinAdd = 0
+ self.XianyuanCoinAdd = 0
+ self.Reason = 0
+ self.CallPlayerID = 0
+ self.NameLen = 0
+ self.CallPlayerName = ""
+ self.IsSweep = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ length += 4
+ length += 1
+ length += len(self.CallPlayerName)
+ length += 1
+
+ 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.FuncLineID)
+ data = CommFunc.WriteBYTE(data, self.Relation)
+ data = CommFunc.WriteBYTE(data, self.RelationCoinAdd)
+ data = CommFunc.WriteWORD(data, self.XianyuanCoinAdd)
+ data = CommFunc.WriteBYTE(data, self.Reason)
+ data = CommFunc.WriteDWORD(data, self.CallPlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.CallPlayerName)
+ data = CommFunc.WriteBYTE(data, self.IsSweep)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ Relation:%d,
+ RelationCoinAdd:%d,
+ XianyuanCoinAdd:%d,
+ Reason:%d,
+ CallPlayerID:%d,
+ NameLen:%d,
+ CallPlayerName:%s,
+ IsSweep:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MapID,
+ self.FuncLineID,
+ self.Relation,
+ self.RelationCoinAdd,
+ self.XianyuanCoinAdd,
+ self.Reason,
+ self.CallPlayerID,
+ self.NameLen,
+ self.CallPlayerName,
+ self.IsSweep
+ )
+ return DumpString
+
+
+m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg
#------------------------------------------------------
@@ -22242,6 +26080,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("IsDouble", c_ubyte), #是否双倍
+ ("OldDouble", c_ubyte), #是否曾经允许双倍
]
def __init__(self):
@@ -22259,6 +26098,7 @@
self.Cmd = 0xB2
self.SubCmd = 0x01
self.IsDouble = 0
+ self.OldDouble = 0
return
def GetLength(self):
@@ -22271,18 +26111,564 @@
DumpString = '''// B2 01 通知封魔坛双倍击杀状态 //tagMCFMTDoubleState:
Cmd:%s,
SubCmd:%s,
- IsDouble:%d
+ IsDouble:%d,
+ OldDouble:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsDouble
+ self.IsDouble,
+ self.OldDouble
)
return DumpString
m_NAtagMCFMTDoubleState=tagMCFMTDoubleState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFMTDoubleState.Cmd,m_NAtagMCFMTDoubleState.SubCmd))] = m_NAtagMCFMTDoubleState
+
+
+#------------------------------------------------------
+# B2 06 助战召唤结果 #tagMCHelpBattleCallResult
+
+class tagMCHelpBattleCallResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int), # 助战实例ID
+ ("PlayerID", c_int), # 助战镜像ID,大于1小于100代表机器人,如果是机器人前端按顺序自己记录对应实例ID代表已召唤
+ ("Job", c_ubyte), # 职业
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x06
+ self.ObjID = 0
+ self.PlayerID = 0
+ self.Job = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHelpBattleCallResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 06 助战召唤结果 //tagMCHelpBattleCallResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ PlayerID:%d,
+ Job:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.PlayerID,
+ self.Job
+ )
+ return DumpString
+
+
+m_NAtagMCHelpBattleCallResult=tagMCHelpBattleCallResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHelpBattleCallResult.Cmd,m_NAtagMCHelpBattleCallResult.SubCmd))] = m_NAtagMCHelpBattleCallResult
+
+
+#------------------------------------------------------
+# B2 05 助战登记结果 #tagMCHelpBattleCheckInResult
+
+class tagMCHelpBattleCheckInResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsOK", c_ubyte), #是否成功
+ ("IsLogin", c_ubyte), #是否登录同步已登记
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x05
+ self.IsOK = 0
+ self.IsLogin = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHelpBattleCheckInResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 05 助战登记结果 //tagMCHelpBattleCheckInResult:
+ Cmd:%s,
+ SubCmd:%s,
+ IsOK:%d,
+ IsLogin:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsOK,
+ self.IsLogin
+ )
+ return DumpString
+
+
+m_NAtagMCHelpBattleCheckInResult=tagMCHelpBattleCheckInResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHelpBattleCheckInResult.Cmd,m_NAtagMCHelpBattleCheckInResult.SubCmd))] = m_NAtagMCHelpBattleCheckInResult
+
+
+#------------------------------------------------------
+# B2 07 助战机器人列表 #tagMCHelpBattleList
+
+class tagMCHelpBattlePlayer(Structure):
+ ObjID = 0 #(DWORD ObjID)// 实例ID, 0代表未召唤
+ PlayerID = 0 #(DWORD PlayerID)// 助战镜像ID, 大于1小于100代表机器人,如果是机器人,没有以下信息,相关信息自己读配置
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 玩家名,size = NameLen
+ LV = 0 #(WORD LV)// 玩家等级
+ Job = 0 #(BYTE Job)// 玩家职业, 如果是机器人,则职业有值,服务端控制
+ RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ FightPower = 0 #(DWORD FightPower)// 玩家战力
+ Relation = 0 #(BYTE Relation)// 关系:0-无,1-好友,2-盟友
+ IsNeedGold = 0 #(BYTE IsNeedGold)// 是否需要仙玉召唤
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsNeedGold,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ObjID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.Relation = 0
+ self.IsNeedGold = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.Name)
+ length += 2
+ length += 1
+ length += 2
+ length += 4
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ObjID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteBYTE(data, self.Relation)
+ data = CommFunc.WriteBYTE(data, self.IsNeedGold)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ObjID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ Relation:%d,
+ IsNeedGold:%d
+ '''\
+ %(
+ self.ObjID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.FightPower,
+ self.Relation,
+ self.IsNeedGold
+ )
+ return DumpString
+
+
+class tagMCHelpBattleList(Structure):
+ Head = tagHead()
+ RefreshCount = 0 #(BYTE RefreshCount)// 已刷新次数
+ HelpCount = 0 #(BYTE HelpCount)// 助战个数
+ HelpPlayerList = list() #(vector<tagMCHelpBattlePlayer> HelpPlayerList)// 助战镜像信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HelpCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HelpCount):
+ temHelpPlayerList = tagMCHelpBattlePlayer()
+ _pos = temHelpPlayerList.ReadData(_lpData, _pos)
+ self.HelpPlayerList.append(temHelpPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x07
+ self.RefreshCount = 0
+ self.HelpCount = 0
+ self.HelpPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.HelpCount):
+ length += self.HelpPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RefreshCount)
+ data = CommFunc.WriteBYTE(data, self.HelpCount)
+ for i in range(self.HelpCount):
+ data = CommFunc.WriteString(data, self.HelpPlayerList[i].GetLength(), self.HelpPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshCount:%d,
+ HelpCount:%d,
+ HelpPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshCount,
+ self.HelpCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHelpBattleList=tagMCHelpBattleList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHelpBattleList.Head.Cmd,m_NAtagMCHelpBattleList.Head.SubCmd))] = m_NAtagMCHelpBattleList
+
+
+#------------------------------------------------------
+# B2 11 助战记录列表 #tagMCHelpBattleRecordList
+
+class tagMCHelpBattleRecord(Structure):
+ CallPlayerID = 0 #(DWORD CallPlayerID)// 邀请助战的玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ CallPlayerName = "" #(String CallPlayerName)// 邀请助战的玩家名,size = NameLen
+ MapID = 0 #(DWORD MapID)
+ FuncLineID = 0 #(BYTE FuncLineID)
+ XianyuanCoinAdd = 0 #(WORD XianyuanCoinAdd)// 增加的仙缘币,0代表已达上限
+ Relation = 0 #(BYTE Relation)// 当时的关系:0-无,1-好友,2-盟友
+ VIPLV = 0 #(BYTE VIPLV)// 当时的VIP等级
+ HelpTime = "" #(char HelpTime[19])// 助战时间yyyy-MM-dd hh:mm:ss
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.CallPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CallPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.XianyuanCoinAdd,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VIPLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HelpTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ return _pos
+
+ def Clear(self):
+ self.CallPlayerID = 0
+ self.NameLen = 0
+ self.CallPlayerName = ""
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.XianyuanCoinAdd = 0
+ self.Relation = 0
+ self.VIPLV = 0
+ self.HelpTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.CallPlayerName)
+ length += 4
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 19
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.CallPlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.CallPlayerName)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteBYTE(data, self.FuncLineID)
+ data = CommFunc.WriteWORD(data, self.XianyuanCoinAdd)
+ data = CommFunc.WriteBYTE(data, self.Relation)
+ data = CommFunc.WriteBYTE(data, self.VIPLV)
+ data = CommFunc.WriteString(data, 19, self.HelpTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ CallPlayerID:%d,
+ NameLen:%d,
+ CallPlayerName:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ XianyuanCoinAdd:%d,
+ Relation:%d,
+ VIPLV:%d,
+ HelpTime:%s
+ '''\
+ %(
+ self.CallPlayerID,
+ self.NameLen,
+ self.CallPlayerName,
+ self.MapID,
+ self.FuncLineID,
+ self.XianyuanCoinAdd,
+ self.Relation,
+ self.VIPLV,
+ self.HelpTime
+ )
+ return DumpString
+
+
+class tagMCHelpBattleRecordList(Structure):
+ Head = tagHead()
+ RecordCount = 0 #(WORD RecordCount)// 记录数
+ RecordList = list() #(vector<tagMCHelpBattleRecord> RecordList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RecordCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.RecordCount):
+ temRecordList = tagMCHelpBattleRecord()
+ _pos = temRecordList.ReadData(_lpData, _pos)
+ self.RecordList.append(temRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x11
+ self.RecordCount = 0
+ self.RecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.RecordCount):
+ 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.RecordCount)
+ for i in range(self.RecordCount):
+ data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RecordCount:%d,
+ RecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHelpBattleRecordList=tagMCHelpBattleRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHelpBattleRecordList.Head.Cmd,m_NAtagMCHelpBattleRecordList.Head.SubCmd))] = m_NAtagMCHelpBattleRecordList
+
+
+#------------------------------------------------------
+# B2 04 冰晶矿脉信息通知 #tagMCIceLodeInfo
+
+class tagMCIceLodeInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)// 今日玩法数量
+ LineList = list() #(vector<BYTE> LineList)// 玩法列表
+ AwardRecord = 0 #(DWORD AwardRecord)// 领奖记录
+ HasSweep = 0 #(BYTE HasSweep)// 是否已扫荡
+ DayLV = 0 #(WORD DayLV)// 今日等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x04
+ 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):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.LineList.append(value)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HasSweep,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.DayLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x04
+ self.Cnt = 0
+ self.LineList = list()
+ self.AwardRecord = 0
+ self.HasSweep = 0
+ self.DayLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.Cnt
+ length += 4
+ length += 1
+ length += 2
+
+ 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.WriteBYTE(data, self.LineList[i])
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteBYTE(data, self.HasSweep)
+ data = CommFunc.WriteWORD(data, self.DayLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ LineList:%s,
+ AwardRecord:%d,
+ HasSweep:%d,
+ DayLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "...",
+ self.AwardRecord,
+ self.HasSweep,
+ self.DayLV
+ )
+ return DumpString
+
+
+m_NAtagMCIceLodeInfo=tagMCIceLodeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCIceLodeInfo.Head.Cmd,m_NAtagMCIceLodeInfo.Head.SubCmd))] = m_NAtagMCIceLodeInfo
#------------------------------------------------------
@@ -23610,19 +27996,211 @@
#------------------------------------------------------
-#D2 01 跨服赛报名(上传数据)状态 #tagMergeWarRegisterState
+# C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState
-class tagMergeWarRegisterState(Structure):
+class tagMCCrossRealmPKAwardState(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RegisterState", c_ubyte),
+ ("DayPKCountAwardState", c_int), # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
+ ("DayWinCountAwardState", c_int), # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
+ ("DanLVAwardState", c_int), # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
+ ("SeasonAwardState", c_ubyte), # 赛季结算奖励是否已领取
]
def __init__(self):
self.Clear()
- self.Cmd = 0xD2
+ self.Cmd = 0xC1
+ self.SubCmd = 0x02
+ 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 = 0xC1
+ self.SubCmd = 0x02
+ self.DayPKCountAwardState = 0
+ self.DayWinCountAwardState = 0
+ self.DanLVAwardState = 0
+ self.SeasonAwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 02 跨服PK玩家奖励记录 //tagMCCrossRealmPKAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ DayPKCountAwardState:%d,
+ DayWinCountAwardState:%d,
+ DanLVAwardState:%d,
+ SeasonAwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DayPKCountAwardState,
+ self.DayWinCountAwardState,
+ self.DanLVAwardState,
+ self.SeasonAwardState
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKAwardState=tagMCCrossRealmPKAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKAwardState.Cmd,m_NAtagMCCrossRealmPKAwardState.SubCmd))] = m_NAtagMCCrossRealmPKAwardState
+
+
+#------------------------------------------------------
+# C1 03 跨服PK玩家历史赛季信息 #tagMCCrossRealmPKPlayerHisSeasonInfo
+
+class tagMCCrossRealmPKPlayerHisSeason(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SeasonID", c_ushort), # 赛季ID
+ ("Order", c_ushort), # 名次
+ ("DanLV", c_ubyte), # 段位
+ ("Score", c_int), # 积分
+ ("AwardLV", 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.SeasonID = 0
+ self.Order = 0
+ self.DanLV = 0
+ self.Score = 0
+ self.AwardLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossRealmPKPlayerHisSeason)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 03 跨服PK玩家历史赛季信息 //tagMCCrossRealmPKPlayerHisSeasonInfo:
+ SeasonID:%d,
+ Order:%d,
+ DanLV:%d,
+ Score:%d,
+ AwardLV:%d
+ '''\
+ %(
+ self.SeasonID,
+ self.Order,
+ self.DanLV,
+ self.Score,
+ self.AwardLV
+ )
+ return DumpString
+
+
+class tagMCCrossRealmPKPlayerHisSeasonInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)// 赛季个数
+ SeasonList = list() #(vector<tagMCCrossRealmPKPlayerHisSeason> SeasonList)// 赛季信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC1
+ 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.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temSeasonList = tagMCCrossRealmPKPlayerHisSeason()
+ _pos = temSeasonList.ReadData(_lpData, _pos)
+ self.SeasonList.append(temSeasonList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC1
+ self.Head.SubCmd = 0x03
+ self.Count = 0
+ self.SeasonList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.SeasonList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.SeasonList[i].GetLength(), self.SeasonList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SeasonList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCrossRealmPKPlayerHisSeasonInfo=tagMCCrossRealmPKPlayerHisSeasonInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerHisSeasonInfo.Head.Cmd,m_NAtagMCCrossRealmPKPlayerHisSeasonInfo.Head.SubCmd))] = m_NAtagMCCrossRealmPKPlayerHisSeasonInfo
+
+
+#------------------------------------------------------
+# C1 01 跨服PK玩家信息 #tagMCCrossRealmPKPlayerInfo
+
+class tagMCCrossRealmPKPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Score", c_int), # 当前积分
+ ("DanLV", c_ubyte), # 当前段位
+ ("PKCount", c_ushort), # PK次数
+ ("WinCount", c_ushort), # 胜利次数
+ ("CWinCount", c_ushort), # 连胜次数
+ ("DayPKCount", c_ubyte), # 当日已PK次数
+ ("DayWinCount", c_ubyte), # 当日已胜利次数
+ ("DayBuyCount", c_ubyte), # 当日已购买次数
+ ("DayItemAddCount", c_ubyte), # 当日物品增加次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
self.SubCmd = 0x01
return
@@ -23632,223 +28210,72 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xD2
+ self.Cmd = 0xC1
self.SubCmd = 0x01
- self.RegisterState = 0
+ self.Score = 0
+ self.DanLV = 0
+ self.PKCount = 0
+ self.WinCount = 0
+ self.CWinCount = 0
+ self.DayPKCount = 0
+ self.DayWinCount = 0
+ self.DayBuyCount = 0
+ self.DayItemAddCount = 0
return
def GetLength(self):
- return sizeof(tagMergeWarRegisterState)
+ return sizeof(tagMCCrossRealmPKPlayerInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//D2 01 跨服赛报名(上传数据)状态 //tagMergeWarRegisterState:
+ DumpString = '''// C1 01 跨服PK玩家信息 //tagMCCrossRealmPKPlayerInfo:
Cmd:%s,
SubCmd:%s,
- RegisterState:%d
+ Score:%d,
+ DanLV:%d,
+ PKCount:%d,
+ WinCount:%d,
+ CWinCount:%d,
+ DayPKCount:%d,
+ DayWinCount:%d,
+ DayBuyCount:%d,
+ DayItemAddCount:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.RegisterState
+ self.Score,
+ self.DanLV,
+ self.PKCount,
+ self.WinCount,
+ self.CWinCount,
+ self.DayPKCount,
+ self.DayWinCount,
+ self.DayBuyCount,
+ self.DayItemAddCount
)
return DumpString
-m_NAtagMergeWarRegisterState=tagMergeWarRegisterState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMergeWarRegisterState.Cmd,m_NAtagMergeWarRegisterState.SubCmd))] = m_NAtagMergeWarRegisterState
+m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
#------------------------------------------------------
-# D2 09 跨服boss奖励领奖状态 #tagMCMergeBossAwardRecord
+# C1 06 进入跨服服务器错误 #tagMCEnterCrossServerError
-class tagMCMergeBossAwardRecord(Structure):
+class tagMCEnterCrossServerError(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("FirstJoinAwardState", c_ubyte), # 首次参与奖励状态;0-不可领,1-可领,2-已领
]
def __init__(self):
self.Clear()
- self.Cmd = 0xD2
- 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 = 0xD2
- self.SubCmd = 0x09
- self.FirstJoinAwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMergeBossAwardRecord)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// D2 09 跨服boss奖励领奖状态 //tagMCMergeBossAwardRecord:
- Cmd:%s,
- SubCmd:%s,
- FirstJoinAwardState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FirstJoinAwardState
- )
- return DumpString
-
-
-m_NAtagMCMergeBossAwardRecord=tagMCMergeBossAwardRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMergeBossAwardRecord.Cmd,m_NAtagMCMergeBossAwardRecord.SubCmd))] = m_NAtagMCMergeBossAwardRecord
-
-
-#------------------------------------------------------
-# D2 07 跨服王者争霸奖励相关 #tagMCMergeKingAwardInfo
-
-class tagMCMergeKingAwardInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ServerHonour", c_ubyte), # 全服荣耀值, 1 2 4 8等
- ("ServerHonourAward", c_ubyte), # 全服荣耀奖励是否已领取, 0否1是
- ("RankAward", c_ubyte), # 晋级排名奖励是否已领取, 0否1是
- ("SupportAward", c_int), # 竞猜积分奖励领取记录,按位表示
- ("WorshipState", c_ubyte), # 今日是否已膜拜, 0否1是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xD2
- 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 = 0xD2
- self.SubCmd = 0x07
- self.ServerHonour = 0
- self.ServerHonourAward = 0
- self.RankAward = 0
- self.SupportAward = 0
- self.WorshipState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMergeKingAwardInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// D2 07 跨服王者争霸奖励相关 //tagMCMergeKingAwardInfo:
- Cmd:%s,
- SubCmd:%s,
- ServerHonour:%d,
- ServerHonourAward:%d,
- RankAward:%d,
- SupportAward:%d,
- WorshipState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ServerHonour,
- self.ServerHonourAward,
- self.RankAward,
- self.SupportAward,
- self.WorshipState
- )
- return DumpString
-
-
-m_NAtagMCMergeKingAwardInfo=tagMCMergeKingAwardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMergeKingAwardInfo.Cmd,m_NAtagMCMergeKingAwardInfo.SubCmd))] = m_NAtagMCMergeKingAwardInfo
-
-
-#------------------------------------------------------
-# D2 08 跨服PK奖励领奖记录 #tagMCMergePKAwardRecord
-
-class tagMCMergePKAwardRecord(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FirstWinAwardRecord", c_int), # 首次胜利奖励记录, 按位存储是否已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xD2
- 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 = 0xD2
- self.SubCmd = 0x08
- self.FirstWinAwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMergePKAwardRecord)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// D2 08 跨服PK奖励领奖记录 //tagMCMergePKAwardRecord:
- Cmd:%s,
- SubCmd:%s,
- FirstWinAwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FirstWinAwardRecord
- )
- return DumpString
-
-
-m_NAtagMCMergePKAwardRecord=tagMCMergePKAwardRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMergePKAwardRecord.Cmd,m_NAtagMCMergePKAwardRecord.SubCmd))] = m_NAtagMCMergePKAwardRecord
-
-
-#------------------------------------------------------
-# D2 06 跨服PK次数通知 #tagMCMergePKCnt
-
-class tagMCMergePKCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayPKCnt", c_ushort), # 当日已PK次数
- ("DayBuyCnt", c_ushort), # 当日已购买次数
- ("UnUsedBuyCnt", c_ushort), # 未使用的购买次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xD2
+ self.Cmd = 0xC1
self.SubCmd = 0x06
return
@@ -23858,36 +28285,127 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xD2
+ self.Cmd = 0xC1
self.SubCmd = 0x06
- self.DayPKCnt = 0
- self.DayBuyCnt = 0
- self.UnUsedBuyCnt = 0
return
def GetLength(self):
- return sizeof(tagMCMergePKCnt)
+ return sizeof(tagMCEnterCrossServerError)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// D2 06 跨服PK次数通知 //tagMCMergePKCnt:
+ DumpString = '''// C1 06 进入跨服服务器错误 //tagMCEnterCrossServerError:
Cmd:%s,
- SubCmd:%s,
- DayPKCnt:%d,
- DayBuyCnt:%d,
- UnUsedBuyCnt:%d
+ SubCmd:%s
'''\
%(
self.Cmd,
- self.SubCmd,
- self.DayPKCnt,
- self.DayBuyCnt,
- self.UnUsedBuyCnt
+ self.SubCmd
)
return DumpString
-m_NAtagMCMergePKCnt=tagMCMergePKCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMergePKCnt.Cmd,m_NAtagMCMergePKCnt.SubCmd))] = m_NAtagMCMergePKCnt
\ No newline at end of file
+m_NAtagMCEnterCrossServerError=tagMCEnterCrossServerError()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEnterCrossServerError.Cmd,m_NAtagMCEnterCrossServerError.SubCmd))] = m_NAtagMCEnterCrossServerError
+
+
+#------------------------------------------------------
+# C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
+
+class tagMCPrepareEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DataMapID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x04
+ self.DataMapID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPrepareEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 04 准备进入跨服服务器 //tagMCPrepareEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s,
+ DataMapID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DataMapID
+ )
+ return DumpString
+
+
+m_NAtagMCPrepareEnterCrossServer=tagMCPrepareEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrepareEnterCrossServer.Cmd,m_NAtagMCPrepareEnterCrossServer.SubCmd))] = m_NAtagMCPrepareEnterCrossServer
+
+
+#------------------------------------------------------
+# C1 05 开始进入跨服服务器 #tagMCStartEnterCrossServer
+
+class tagMCStartEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x05
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 05 开始进入跨服服务器 //tagMCStartEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
\ No newline at end of file
--
Gitblit v1.8.0