From 78882065bd4a4ed7fb45327e766606dd81bbaf16 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 15 十月 2024 17:03:12 +0800
Subject: [PATCH] 5328 【越南】【英文】【砍树】神兽装备格子拓展(扩展为150格)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 5531 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 5,300 insertions(+), 231 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 21dc35d..d511bef 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -424,6 +424,190 @@
#------------------------------------------------------
+# A0 08 玩家记录信息 #tagGCPlayerRecInfo
+
+class tagGCPlayerRec(Structure):
+ Time = 0 #(DWORD Time)//时间
+ Value1 = 0 #(DWORD Value1)//值1
+ Value2 = 0 #(DWORD Value2)//值2
+ Value3 = 0 #(DWORD Value3)//值3
+ Value4 = 0 #(DWORD Value4)//值4
+ Value5 = 0 #(DWORD Value5)//值5
+ Value6 = 0 #(DWORD Value6)//值6
+ Value7 = 0 #(DWORD Value7)//值7
+ Value8 = 0 #(DWORD Value8)//值8
+ UserDataLen = 0 #(WORD UserDataLen)//扩展数据长度
+ UserData = "" #(String UserData)//扩展数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.Time = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.Value3 = 0
+ self.Value4 = 0
+ self.Value5 = 0
+ self.Value6 = 0
+ self.Value7 = 0
+ self.Value8 = 0
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Time)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ data = CommFunc.WriteDWORD(data, self.Value3)
+ data = CommFunc.WriteDWORD(data, self.Value4)
+ data = CommFunc.WriteDWORD(data, self.Value5)
+ data = CommFunc.WriteDWORD(data, self.Value6)
+ data = CommFunc.WriteDWORD(data, self.Value7)
+ data = CommFunc.WriteDWORD(data, self.Value8)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Time:%d,
+ Value1:%d,
+ Value2:%d,
+ Value3:%d,
+ Value4:%d,
+ Value5:%d,
+ Value6:%d,
+ Value7:%d,
+ Value8:%d,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.Time,
+ self.Value1,
+ self.Value2,
+ self.Value3,
+ self.Value4,
+ self.Value5,
+ self.Value6,
+ self.Value7,
+ self.Value8,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCPlayerRecInfo(Structure):
+ Head = tagHead()
+ Type = 0 #(BYTE Type)//类型
+ Count = 0 #(WORD Count)//数量
+ PlayerRecList = list() #(vector<tagGCPlayerRec> PlayerRecList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temPlayerRecList = tagGCPlayerRec()
+ _pos = temPlayerRecList.ReadData(_lpData, _pos)
+ self.PlayerRecList.append(temPlayerRecList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x08
+ self.Type = 0
+ self.Count = 0
+ self.PlayerRecList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ for i in range(self.Count):
+ length += self.PlayerRecList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Type)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.PlayerRecList[i].GetLength(), self.PlayerRecList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Type:%d,
+ Count:%d,
+ PlayerRecList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Type,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerRecInfo=tagGCPlayerRecInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerRecInfo.Head.Cmd,m_NAtagGCPlayerRecInfo.Head.SubCmd))] = m_NAtagGCPlayerRecInfo
+
+
+#------------------------------------------------------
# A0 06 服务器地图线路人数状态 #tagGCPyServerMapState
class tagGCPyServerMapLineState(Structure):
@@ -996,6 +1180,7 @@
Job = 0 #(BYTE Job)// 玩家职业
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -1014,6 +1199,7 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -1028,6 +1214,7 @@
self.Job = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -1039,6 +1226,7 @@
length += 2
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -1053,6 +1241,7 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -1064,7 +1253,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -1074,7 +1264,8 @@
self.LV,
self.Job,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -1556,6 +1747,8 @@
NameLen = 0 #(BYTE NameLen)
Name = "" #(String Name)//名字
PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
data = None
@@ -1568,6 +1761,8 @@
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -1575,6 +1770,8 @@
self.NameLen = 0
self.Name = ""
self.PlayeJob = 0
+ self.Face = 0
+ self.FacePic = 0
self.MoneyNum = 0
return
@@ -1584,6 +1781,8 @@
length += len(self.Name)
length += 1
length += 4
+ length += 4
+ length += 4
return length
@@ -1592,6 +1791,8 @@
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.Name)
data = CommFunc.WriteBYTE(data, self.PlayeJob)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.MoneyNum)
return data
@@ -1600,12 +1801,16 @@
NameLen:%d,
Name:%s,
PlayeJob:%d,
+ Face:%d,
+ FacePic:%d,
MoneyNum:%d
'''\
%(
self.NameLen,
self.Name,
self.PlayeJob,
+ self.Face,
+ self.FacePic,
self.MoneyNum
)
return DumpString
@@ -1694,6 +1899,8 @@
Name = "" #(String Name)//玩家名字
Time = 0 #(DWORD Time)//时间
PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
MoneyType = 0 #(BYTE MoneyType)//金钱类型
MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
GetWay = 0 #(BYTE GetWay)//获得途径
@@ -1716,6 +1923,8 @@
self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1733,6 +1942,8 @@
self.Name = ""
self.Time = 0
self.PlayeJob = 0
+ self.Face = 0
+ self.FacePic = 0
self.MoneyType = 0
self.MoneyNum = 0
self.GetWay = 0
@@ -1751,6 +1962,8 @@
length += len(self.Name)
length += 4
length += 1
+ length += 4
+ length += 4
length += 1
length += 4
length += 1
@@ -1770,6 +1983,8 @@
data = CommFunc.WriteString(data, self.NameLen, self.Name)
data = CommFunc.WriteDWORD(data, self.Time)
data = CommFunc.WriteBYTE(data, self.PlayeJob)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteBYTE(data, self.MoneyType)
data = CommFunc.WriteDWORD(data, self.MoneyNum)
data = CommFunc.WriteBYTE(data, self.GetWay)
@@ -1788,6 +2003,8 @@
Name:%s,
Time:%d,
PlayeJob:%d,
+ Face:%d,
+ FacePic:%d,
MoneyType:%d,
MoneyNum:%d,
GetWay:%d,
@@ -1804,6 +2021,8 @@
self.Name,
self.Time,
self.PlayeJob,
+ self.Face,
+ self.FacePic,
self.MoneyType,
self.MoneyNum,
self.GetWay,
@@ -2232,6 +2451,7 @@
WarRank = 0 #(BYTE WarRank)//联赛排名
TotalFightPower = 0 #(DWORD TotalFightPower)//总战力,不足1个亿的部分
TotalFightPowerEx = 0 #(DWORD TotalFightPowerEx)//总战力点,1点=1亿
+ EmblemID = 0 #(BYTE EmblemID)//徽章ID
data = None
def __init__(self):
@@ -2254,6 +2474,7 @@
self.WarRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.TotalFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TotalFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -2271,6 +2492,7 @@
self.WarRank = 0
self.TotalFightPower = 0
self.TotalFightPowerEx = 0
+ self.EmblemID = 0
return
def GetLength(self):
@@ -2289,6 +2511,7 @@
length += 1
length += 4
length += 4
+ length += 1
return length
@@ -2308,6 +2531,7 @@
data = CommFunc.WriteBYTE(data, self.WarRank)
data = CommFunc.WriteDWORD(data, self.TotalFightPower)
data = CommFunc.WriteDWORD(data, self.TotalFightPowerEx)
+ data = CommFunc.WriteBYTE(data, self.EmblemID)
return data
def OutputString(self):
@@ -2325,7 +2549,8 @@
JoinAccept:%d,
WarRank:%d,
TotalFightPower:%d,
- TotalFightPowerEx:%d
+ TotalFightPowerEx:%d,
+ EmblemID:%d
'''\
%(
self.FamilyIndex,
@@ -2341,7 +2566,8 @@
self.JoinAccept,
self.WarRank,
self.TotalFightPower,
- self.TotalFightPowerEx
+ self.TotalFightPowerEx,
+ self.EmblemID
)
return DumpString
@@ -4636,7 +4862,7 @@
class tagPYBillboardData(Structure):
Head = tagHead()
- IsWatchSelf = 0 #(BYTE IsWatchSelf)
+ WatchID = 0 #(DWORD WatchID)//查看指定ID名次前后,如玩家ID、家族ID等
BillboardCount = 0 #(BYTE BillboardCount)
Type = 0 #(BYTE Type)//排行榜类型
Billboard = list() #(vector<tagPYBillboardInfo> Billboard)//size = BillboardCount
@@ -4651,7 +4877,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.IsWatchSelf,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WatchID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.BillboardCount):
@@ -4665,7 +4891,7 @@
self.Head.Clear()
self.Head.Cmd = 0xA9
self.Head.SubCmd = 0xA2
- self.IsWatchSelf = 0
+ self.WatchID = 0
self.BillboardCount = 0
self.Type = 0
self.Billboard = list()
@@ -4674,7 +4900,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 1
+ length += 4
length += 1
length += 1
for i in range(self.BillboardCount):
@@ -4685,7 +4911,7 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.IsWatchSelf)
+ data = CommFunc.WriteDWORD(data, self.WatchID)
data = CommFunc.WriteBYTE(data, self.BillboardCount)
data = CommFunc.WriteBYTE(data, self.Type)
for i in range(self.BillboardCount):
@@ -4695,14 +4921,14 @@
def OutputString(self):
DumpString = '''
Head:%s,
- IsWatchSelf:%d,
+ WatchID:%d,
BillboardCount:%d,
Type:%d,
Billboard:%s
'''\
%(
self.Head.OutputString(),
- self.IsWatchSelf,
+ self.WatchID,
self.BillboardCount,
self.Type,
"..."
@@ -5085,6 +5311,7 @@
Job = 0 #(BYTE Job)
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5099,6 +5326,7 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -5108,6 +5336,7 @@
self.Job = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5117,6 +5346,7 @@
length += 4
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -5129,6 +5359,7 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -5138,7 +5369,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.ID,
@@ -5146,7 +5378,8 @@
self.LV,
self.Job,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5227,6 +5460,7 @@
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5241,6 +5475,7 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -5250,6 +5485,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5259,6 +5495,7 @@
length += 1
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -5271,6 +5508,7 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -5280,7 +5518,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -5288,7 +5527,8 @@
self.Job,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5591,6 +5831,356 @@
m_NAtagUpdatePlayerNameResult=tagUpdatePlayerNameResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUpdatePlayerNameResult.Cmd,m_NAtagUpdatePlayerNameResult.SubCmd))] = m_NAtagUpdatePlayerNameResult
+
+
+#------------------------------------------------------
+# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo
+
+class tagGCXiangongNewPlayer(Structure):
+ AddTime = 0 #(DWORD AddTime)// 新晋时间戳
+ ServerID = 0 #(DWORD ServerID)
+ PlayerID = 0 #(DWORD PlayerID)
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 玩家名,size = NameLen
+ LV = 0 #(WORD LV)// 玩家等级
+ Job = 0 #(BYTE Job)// 玩家职业
+ RealmLV = 0 #(WORD RealmLV)// 玩家境界
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)
+ EquipShowIDCount = 0 #(BYTE EquipShowIDCount)
+ EquipShowID = list() #(vector<DWORD> EquipShowID)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerID,_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.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.EquipShowIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.EquipShowID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.AddTime = 0
+ self.ServerID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ self.EquipShowSwitch = 0
+ self.EquipShowIDCount = 0
+ self.EquipShowID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.Name)
+ length += 2
+ length += 1
+ length += 2
+ length += 4
+ length += 1
+ length += 4 * self.EquipShowIDCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ 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.EquipShowSwitch)
+ data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
+ for i in range(self.EquipShowIDCount):
+ data = CommFunc.WriteDWORD(data, self.EquipShowID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AddTime:%d,
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ EquipShowSwitch:%d,
+ EquipShowIDCount:%d,
+ EquipShowID:%s
+ '''\
+ %(
+ self.AddTime,
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.EquipShowSwitch,
+ self.EquipShowIDCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCXiangongNewPlayerInfo(Structure):
+ Head = tagHead()
+ XiangongID = 0 #(WORD XiangongID)// 仙宫ID
+ NewPlayerCount = 0 #(BYTE NewPlayerCount)
+ NewPlayerList = list() #(vector<tagGCXiangongNewPlayer> NewPlayerList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NewPlayerCount):
+ temNewPlayerList = tagGCXiangongNewPlayer()
+ _pos = temNewPlayerList.ReadData(_lpData, _pos)
+ self.NewPlayerList.append(temNewPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x27
+ self.XiangongID = 0
+ self.NewPlayerCount = 0
+ self.NewPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ for i in range(self.NewPlayerCount):
+ length += self.NewPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.XiangongID)
+ data = CommFunc.WriteBYTE(data, self.NewPlayerCount)
+ for i in range(self.NewPlayerCount):
+ data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ XiangongID:%d,
+ NewPlayerCount:%d,
+ NewPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.XiangongID,
+ self.NewPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo
+
+
+#------------------------------------------------------
+# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo
+
+class tagGCXiangongRecPlayer(Structure):
+ AddTime = 0 #(DWORD AddTime)// 新晋时间戳
+ ServerID = 0 #(DWORD ServerID)
+ PlayerID = 0 #(DWORD PlayerID)
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 玩家名,size = NameLen
+ LV = 0 #(WORD LV)// 玩家等级
+ Job = 0 #(BYTE Job)// 玩家职业
+ RealmLV = 0 #(WORD RealmLV)// 玩家境界
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerID,_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)
+ return _pos
+
+ def Clear(self):
+ self.AddTime = 0
+ self.ServerID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.Name)
+ length += 2
+ length += 1
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ 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)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AddTime:%d,
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.AddTime,
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCXiangongRecPlayerInfo(Structure):
+ Head = tagHead()
+ XiangongID = 0 #(WORD XiangongID)// 仙宫ID
+ RecPlayerCount = 0 #(BYTE RecPlayerCount)
+ RecPlayerList = list() #(vector<tagGCXiangongRecPlayer> RecPlayerList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x28
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RecPlayerCount):
+ temRecPlayerList = tagGCXiangongRecPlayer()
+ _pos = temRecPlayerList.ReadData(_lpData, _pos)
+ self.RecPlayerList.append(temRecPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x28
+ self.XiangongID = 0
+ self.RecPlayerCount = 0
+ self.RecPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ for i in range(self.RecPlayerCount):
+ length += self.RecPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.XiangongID)
+ data = CommFunc.WriteBYTE(data, self.RecPlayerCount)
+ for i in range(self.RecPlayerCount):
+ data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ XiangongID:%d,
+ RecPlayerCount:%d,
+ RecPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.XiangongID,
+ self.RecPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo
#------------------------------------------------------
@@ -7139,6 +7729,8 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(BYTE RealmLV)//境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
MapID = 0 #(DWORD MapID)
LineID = 0 #(DWORD LineID)
NPCID = 0 #(DWORD NPCID)
@@ -7158,6 +7750,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -7172,6 +7766,8 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.MapID = 0
self.LineID = 0
self.NPCID = 0
@@ -7190,6 +7786,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
@@ -7203,6 +7801,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.MapID)
data = CommFunc.WriteDWORD(data, self.LineID)
data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -7218,6 +7818,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7231,6 +7833,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -7689,6 +8293,8 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
RealmLV = 0 #(BYTE RealmLV)//境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
MapID = 0 #(DWORD MapID)
LineID = 0 #(DWORD LineID)
NPCID = 0 #(DWORD NPCID)
@@ -7713,6 +8319,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -7733,6 +8341,8 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.MapID = 0
self.LineID = 0
self.NPCID = 0
@@ -7754,6 +8364,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
length += 19
@@ -7770,6 +8382,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.MapID)
data = CommFunc.WriteDWORD(data, self.LineID)
data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -7788,6 +8402,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7804,6 +8420,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -8388,6 +9006,8 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
RealmLV = 0 #(BYTE RealmLV)//境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -8401,6 +9021,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8409,6 +9031,8 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8418,6 +9042,8 @@
length += 1
length += 2
length += 1
+ length += 4
+ length += 4
return length
@@ -8428,6 +9054,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -8436,14 +9064,18 @@
PlayerName:%s,
Job:%d,
LV:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
self.PlayerName,
self.Job,
self.LV,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -8557,6 +9189,213 @@
#------------------------------------------------------
+# B0 20 膜拜信息列表 #tagGCWorshipInfoList
+
+class tagGCWorshipInfo(Structure):
+ PlayerID = 0 #(DWORD PlayerID)// 目标玩家ID
+ WorshipType = 0 #(BYTE WorshipType)// 膜拜类型
+ WorshipValue = 0 #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
+ InfoLen = 0 #(WORD InfoLen)
+ PlayerInfo = "" #(String PlayerInfo)// 玩家信息{k:v, ...}
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.WorshipType = 0
+ self.WorshipValue = 0
+ self.InfoLen = 0
+ self.PlayerInfo = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 4
+ length += 2
+ length += len(self.PlayerInfo)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.WorshipType)
+ data = CommFunc.WriteDWORD(data, self.WorshipValue)
+ data = CommFunc.WriteWORD(data, self.InfoLen)
+ data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ WorshipType:%d,
+ WorshipValue:%d,
+ InfoLen:%d,
+ PlayerInfo:%s
+ '''\
+ %(
+ self.PlayerID,
+ self.WorshipType,
+ self.WorshipValue,
+ self.InfoLen,
+ self.PlayerInfo
+ )
+ return DumpString
+
+
+class tagGCWorshipInfoList(Structure):
+ Head = tagHead()
+ WorshipCount = 0 #(BYTE WorshipCount)
+ WorshipInfoList = list() #(vector<tagGCWorshipInfo> WorshipInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WorshipCount):
+ temWorshipInfoList = tagGCWorshipInfo()
+ _pos = temWorshipInfoList.ReadData(_lpData, _pos)
+ self.WorshipInfoList.append(temWorshipInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x20
+ self.WorshipCount = 0
+ self.WorshipInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.WorshipCount):
+ length += self.WorshipInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.WorshipCount)
+ for i in range(self.WorshipCount):
+ data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ WorshipCount:%d,
+ WorshipInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.WorshipCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
+
+
+#------------------------------------------------------
+# B0 21 膜拜结果 #tagGCWorshipResult
+
+class tagGCWorshipResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerID", c_int), # 目标玩家ID
+ ("WorshipType", c_ubyte), # 膜拜类型
+ ("WorshipValue", c_int), # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
+ ("Result", c_ubyte), # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
+ ("MoneyType", c_ubyte), # 货币类型
+ ("MoneyValue", c_int), # 货币奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x21
+ self.PlayerID = 0
+ self.WorshipType = 0
+ self.WorshipValue = 0
+ self.Result = 0
+ self.MoneyType = 0
+ self.MoneyValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCWorshipResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerID:%d,
+ WorshipType:%d,
+ WorshipValue:%d,
+ Result:%d,
+ MoneyType:%d,
+ MoneyValue:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerID,
+ self.WorshipType,
+ self.WorshipValue,
+ self.Result,
+ self.MoneyType,
+ self.MoneyValue
+ )
+ return DumpString
+
+
+m_NAtagGCWorshipResult=tagGCWorshipResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
+
+
+#------------------------------------------------------
#B3 03 询问是否允许添加好友#tagGCFriendAskIfJoin
class tagGCFriendAskIfJoin(Structure):
@@ -8566,6 +9405,7 @@
LV = 0 #(WORD LV)
RealmLV = 0 #(WORD RealmLV)//境界等级
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -8582,6 +9422,7 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8594,6 +9435,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8603,6 +9445,7 @@
length += 33
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -8615,6 +9458,7 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -8624,7 +9468,8 @@
Name:%s,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -8632,7 +9477,8 @@
self.Name,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -9380,6 +10226,66 @@
#------------------------------------------------------
+# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState
+
+class tagGCRelatedPlayerOnlineState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerID", c_int), # 相关玩家ID
+ ("OfflineValue", c_int), # 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线;
+ ("IsCross", c_ubyte), # 是否跨服同步的,如果是跨服则离线时间计算时要取跨服服务器时间
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x15
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x15
+ self.PlayerID = 0
+ self.OfflineValue = 0
+ self.IsCross = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCRelatedPlayerOnlineState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 15 相关玩家在线状态变更同步 //tagGCRelatedPlayerOnlineState:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerID:%d,
+ OfflineValue:%d,
+ IsCross:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerID,
+ self.OfflineValue,
+ self.IsCross
+ )
+ return DumpString
+
+
+m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState
+
+
+#------------------------------------------------------
# B3 20 送礼物成功通知 #tagGCSendGiftsOKList
class tagGCSendGiftsOK(Structure):
@@ -9703,6 +10609,7 @@
IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍
ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -9723,6 +10630,7 @@
self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -9739,6 +10647,7 @@
self.IsInTeam = 0
self.ServerGroupID = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -9751,6 +10660,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
@@ -9768,6 +10678,7 @@
data = CommFunc.WriteBYTE(data, self.IsInTeam)
data = CommFunc.WriteDWORD(data, self.ServerGroupID)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -9781,7 +10692,8 @@
OnlineType:%d,
IsInTeam:%d,
ServerGroupID:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -9793,7 +10705,8 @@
self.OnlineType,
self.IsInTeam,
self.ServerGroupID,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -9869,6 +10782,7 @@
RealmLV = 0 #(WORD RealmLV)//境界
OnlineType = 0 #(BYTE OnlineType)//0不在线 1在线 2脱机在线
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -9884,6 +10798,7 @@
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -9894,6 +10809,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -9904,6 +10820,7 @@
length += 2
length += 2
length += 1
+ length += 4
length += 4
return length
@@ -9917,6 +10834,7 @@
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteBYTE(data, self.OnlineType)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -9927,7 +10845,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -9936,7 +10855,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -12243,6 +13163,861 @@
#------------------------------------------------------
+# B9 23 功能队伍解散 #tagGCFuncTeamDissolve
+
+class tagGCFuncTeamDissolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TeamID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB9
+ self.SubCmd = 0x23
+ 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 = 0x23
+ self.TeamID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCFuncTeamDissolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B9 23 功能队伍解散 //tagGCFuncTeamDissolve:
+ Cmd:%s,
+ SubCmd:%s,
+ TeamID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TeamID
+ )
+ return DumpString
+
+
+m_NAtagGCFuncTeamDissolve=tagGCFuncTeamDissolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamDissolve.Cmd,m_NAtagGCFuncTeamDissolve.SubCmd))] = m_NAtagGCFuncTeamDissolve
+
+
+#------------------------------------------------------
+# B9 22 功能队伍列表 #tagGCFuncTeamList
+
+class tagGCFuncTeamMem(Structure):
+ ServerID = 0 #(DWORD ServerID)
+ PlayerID = 0 #(DWORD PlayerID)
+ 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)// 战力,求余亿
+ FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
+ Value1 = 0 #(DWORD Value1)//值1
+ Value2 = 0 #(DWORD Value2)//值2
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ServerID,_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.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ServerID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Value1 = 0
+ self.Value2 = 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 += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ 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.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ Value1:%d,
+ Value2:%d
+ '''\
+ %(
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.Value1,
+ self.Value2
+ )
+ return DumpString
+
+
+class tagGCFuncTeam(Structure):
+ TeamID = 0 #(DWORD TeamID)
+ CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳
+ FuncMapEx = 0 #(DWORD FuncMapEx)//功能地图扩展,如不同的层级
+ NameLen = 0 #(BYTE NameLen)
+ TeamName = "" #(String TeamName)//队伍名称
+ CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
+ MinLV = 0 #(WORD MinLV)//最低等级限制
+ MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿
+ MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿
+ ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
+ NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核
+ Value1 = 0 #(DWORD Value1)//值1
+ Value2 = 0 #(DWORD Value2)//值2
+ MemberCount = 0 #(BYTE MemberCount)
+ MemberList = list() #(vector<tagGCFuncTeamMem> MemberList)// 成员列表
+ ApplyCount = 0 #(WORD ApplyCount)
+ ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MemberCount):
+ temMemberList = tagGCFuncTeamMem()
+ _pos = temMemberList.ReadData(_lpData, _pos)
+ self.MemberList.append(temMemberList)
+ self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.ApplyCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ApplyIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.TeamID = 0
+ self.CreateTime = 0
+ self.FuncMapEx = 0
+ self.NameLen = 0
+ self.TeamName = ""
+ self.CaptainID = 0
+ self.MinLV = 0
+ self.MinFightPower = 0
+ self.MinFightPowerEx = 0
+ self.ServerOnly = 0
+ self.NeedCheck = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.MemberCount = 0
+ self.MemberList = list()
+ self.ApplyCount = 0
+ self.ApplyIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.TeamName)
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.MemberCount):
+ length += self.MemberList[i].GetLength()
+ length += 2
+ length += 4 * self.ApplyCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TeamID)
+ data = CommFunc.WriteDWORD(data, self.CreateTime)
+ data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
+ data = CommFunc.WriteDWORD(data, self.CaptainID)
+ data = CommFunc.WriteWORD(data, self.MinLV)
+ data = CommFunc.WriteDWORD(data, self.MinFightPower)
+ data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
+ data = CommFunc.WriteBYTE(data, self.ServerOnly)
+ data = CommFunc.WriteBYTE(data, self.NeedCheck)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ data = CommFunc.WriteBYTE(data, self.MemberCount)
+ for i in range(self.MemberCount):
+ data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.ApplyCount)
+ for i in range(self.ApplyCount):
+ data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TeamID:%d,
+ CreateTime:%d,
+ FuncMapEx:%d,
+ NameLen:%d,
+ TeamName:%s,
+ CaptainID:%d,
+ MinLV:%d,
+ MinFightPower:%d,
+ MinFightPowerEx:%d,
+ ServerOnly:%d,
+ NeedCheck:%d,
+ Value1:%d,
+ Value2:%d,
+ MemberCount:%d,
+ MemberList:%s,
+ ApplyCount:%d,
+ ApplyIDList:%s
+ '''\
+ %(
+ self.TeamID,
+ self.CreateTime,
+ self.FuncMapEx,
+ self.NameLen,
+ self.TeamName,
+ self.CaptainID,
+ self.MinLV,
+ self.MinFightPower,
+ self.MinFightPowerEx,
+ self.ServerOnly,
+ self.NeedCheck,
+ self.Value1,
+ self.Value2,
+ self.MemberCount,
+ "...",
+ self.ApplyCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCFuncTeamList(Structure):
+ Head = tagHead()
+ FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
+ FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有
+ StartIndex = 0 #(DWORD StartIndex)// 查看的起始索引, 默认0
+ QueryCnt = 0 #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100
+ HaveSpace = 0 #(BYTE HaveSpace)// 是否只查看有空位置的队伍
+ IDLimitType = 0 #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长
+ SearchLen = 0 #(BYTE SearchLen)
+ SearchMsg = "" #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍
+ LoopIndex = 0 #(DWORD LoopIndex)// 服务器检索到的索引,列表下拉时下一个查询包的StartIndex从这个LoopIndex开始
+ TeamCount = 0 #(BYTE TeamCount)// 如果返回的队伍数小于QueryCnt,代表服务器已经没有满足条件的队伍了,列表再下拉时不再发查询包
+ TeamList = list() #(vector<tagGCFuncTeam> TeamList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB9
+ self.Head.SubCmd = 0x22
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen)
+ self.LoopIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TeamCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TeamCount):
+ temTeamList = tagGCFuncTeam()
+ _pos = temTeamList.ReadData(_lpData, _pos)
+ self.TeamList.append(temTeamList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB9
+ self.Head.SubCmd = 0x22
+ self.FuncMapID = 0
+ self.FuncMapEx = 0
+ self.StartIndex = 0
+ self.QueryCnt = 0
+ self.HaveSpace = 0
+ self.IDLimitType = 0
+ self.SearchLen = 0
+ self.SearchMsg = ""
+ self.LoopIndex = 0
+ self.TeamCount = 0
+ self.TeamList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += len(self.SearchMsg)
+ length += 4
+ length += 1
+ for i in range(self.TeamCount):
+ length += self.TeamList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.FuncMapID)
+ data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+ data = CommFunc.WriteDWORD(data, self.StartIndex)
+ data = CommFunc.WriteBYTE(data, self.QueryCnt)
+ data = CommFunc.WriteBYTE(data, self.HaveSpace)
+ data = CommFunc.WriteBYTE(data, self.IDLimitType)
+ data = CommFunc.WriteBYTE(data, self.SearchLen)
+ data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg)
+ data = CommFunc.WriteDWORD(data, self.LoopIndex)
+ data = CommFunc.WriteBYTE(data, self.TeamCount)
+ for i in range(self.TeamCount):
+ data = CommFunc.WriteString(data, self.TeamList[i].GetLength(), self.TeamList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FuncMapID:%d,
+ FuncMapEx:%d,
+ StartIndex:%d,
+ QueryCnt:%d,
+ HaveSpace:%d,
+ IDLimitType:%d,
+ SearchLen:%d,
+ SearchMsg:%s,
+ LoopIndex:%d,
+ TeamCount:%d,
+ TeamList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FuncMapID,
+ self.FuncMapEx,
+ self.StartIndex,
+ self.QueryCnt,
+ self.HaveSpace,
+ self.IDLimitType,
+ self.SearchLen,
+ self.SearchMsg,
+ self.LoopIndex,
+ self.TeamCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFuncTeamList=tagGCFuncTeamList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamList.Head.Cmd,m_NAtagGCFuncTeamList.Head.SubCmd))] = m_NAtagGCFuncTeamList
+
+
+#------------------------------------------------------
+# B9 20 功能队伍刷新 #tagGCFuncTeamRefresh
+
+class tagGCFuncTeamRefreshApply(Structure):
+ ServerID = 0 #(DWORD ServerID)
+ PlayerID = 0 #(DWORD PlayerID)
+ 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)// 战力,求余亿
+ FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ServerID,_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.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ServerID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 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 += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ 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.WriteDWORD(data, self.FightPowerEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d
+ '''\
+ %(
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx
+ )
+ return DumpString
+
+
+class tagGCFuncTeamRefreshMem(Structure):
+ ServerID = 0 #(DWORD ServerID)
+ PlayerID = 0 #(DWORD PlayerID)
+ 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)// 战力,求余亿
+ FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
+ OfflineValue = 0 #(DWORD OfflineValue)// 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线;
+ Value1 = 0 #(DWORD Value1)//值1
+ Value2 = 0 #(DWORD Value2)//值2
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ServerID,_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.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OfflineValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ServerID = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.OfflineValue = 0
+ self.Value1 = 0
+ self.Value2 = 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 += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ 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.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.OfflineValue)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ OfflineValue:%d,
+ Value1:%d,
+ Value2:%d
+ '''\
+ %(
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.OfflineValue,
+ self.Value1,
+ self.Value2
+ )
+ return DumpString
+
+
+class tagGCFuncTeamRefresh(Structure):
+ Head = tagHead()
+ TeamID = 0 #(DWORD TeamID)
+ CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳
+ FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
+ FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级
+ NameLen = 0 #(BYTE NameLen)
+ TeamName = "" #(String TeamName)// 队伍名称
+ CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
+ MinLV = 0 #(WORD MinLV)//最低等级限制
+ MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿
+ MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿
+ ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
+ NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核
+ Value1 = 0 #(DWORD Value1)//值1
+ Value2 = 0 #(DWORD Value2)//值2
+ MemberCount = 0 #(BYTE MemberCount)
+ MemberList = list() #(vector<tagGCFuncTeamRefreshMem> MemberList)// 成员列表
+ ApplyCount = 0 #(WORD ApplyCount)
+ ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
+ ApplyInfoList = list() #(vector<tagGCFuncTeamRefreshApply> ApplyInfoList)// 申请玩家明细列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB9
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MemberCount):
+ temMemberList = tagGCFuncTeamRefreshMem()
+ _pos = temMemberList.ReadData(_lpData, _pos)
+ self.MemberList.append(temMemberList)
+ self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.ApplyCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ApplyIDList.append(value)
+ for i in range(self.ApplyCount):
+ temApplyInfoList = tagGCFuncTeamRefreshApply()
+ _pos = temApplyInfoList.ReadData(_lpData, _pos)
+ self.ApplyInfoList.append(temApplyInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB9
+ self.Head.SubCmd = 0x20
+ self.TeamID = 0
+ self.CreateTime = 0
+ self.FuncMapID = 0
+ self.FuncMapEx = 0
+ self.NameLen = 0
+ self.TeamName = ""
+ self.CaptainID = 0
+ self.MinLV = 0
+ self.MinFightPower = 0
+ self.MinFightPowerEx = 0
+ self.ServerOnly = 0
+ self.NeedCheck = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.MemberCount = 0
+ self.MemberList = list()
+ self.ApplyCount = 0
+ self.ApplyIDList = list()
+ self.ApplyInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.TeamName)
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.MemberCount):
+ length += self.MemberList[i].GetLength()
+ length += 2
+ length += 4 * self.ApplyCount
+ for i in range(self.ApplyCount):
+ length += self.ApplyInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TeamID)
+ data = CommFunc.WriteDWORD(data, self.CreateTime)
+ data = CommFunc.WriteDWORD(data, self.FuncMapID)
+ data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
+ data = CommFunc.WriteDWORD(data, self.CaptainID)
+ data = CommFunc.WriteWORD(data, self.MinLV)
+ data = CommFunc.WriteDWORD(data, self.MinFightPower)
+ data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
+ data = CommFunc.WriteBYTE(data, self.ServerOnly)
+ data = CommFunc.WriteBYTE(data, self.NeedCheck)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ data = CommFunc.WriteBYTE(data, self.MemberCount)
+ for i in range(self.MemberCount):
+ data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.ApplyCount)
+ for i in range(self.ApplyCount):
+ data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
+ for i in range(self.ApplyCount):
+ data = CommFunc.WriteString(data, self.ApplyInfoList[i].GetLength(), self.ApplyInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TeamID:%d,
+ CreateTime:%d,
+ FuncMapID:%d,
+ FuncMapEx:%d,
+ NameLen:%d,
+ TeamName:%s,
+ CaptainID:%d,
+ MinLV:%d,
+ MinFightPower:%d,
+ MinFightPowerEx:%d,
+ ServerOnly:%d,
+ NeedCheck:%d,
+ Value1:%d,
+ Value2:%d,
+ MemberCount:%d,
+ MemberList:%s,
+ ApplyCount:%d,
+ ApplyIDList:%s,
+ ApplyInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TeamID,
+ self.CreateTime,
+ self.FuncMapID,
+ self.FuncMapEx,
+ self.NameLen,
+ self.TeamName,
+ self.CaptainID,
+ self.MinLV,
+ self.MinFightPower,
+ self.MinFightPowerEx,
+ self.ServerOnly,
+ self.NeedCheck,
+ self.Value1,
+ self.Value2,
+ self.MemberCount,
+ "...",
+ self.ApplyCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFuncTeamRefresh=tagGCFuncTeamRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamRefresh.Head.Cmd,m_NAtagGCFuncTeamRefresh.Head.SubCmd))] = m_NAtagGCFuncTeamRefresh
+
+
+#------------------------------------------------------
# B9 01 收到邀请加入队伍信息 #tagGCInviteJoinTeamInfo
class tagGCInviteJoinTeamInfo(Structure):
@@ -12554,6 +14329,62 @@
#------------------------------------------------------
+# B9 21 查找玩家功能队伍结果 #tagGCQueryPlayerFuncTeamRet
+
+class tagGCQueryPlayerFuncTeamRet(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID
+ ("TeamID", c_int), # 玩家所属队伍ID,目前只同步0的情况,如果玩家有队伍统一B920封包同步处理
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB9
+ 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 = 0xB9
+ self.SubCmd = 0x21
+ self.FuncMapID = 0
+ self.TeamID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCQueryPlayerFuncTeamRet)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B9 21 查找玩家功能队伍结果 //tagGCQueryPlayerFuncTeamRet:
+ Cmd:%s,
+ SubCmd:%s,
+ FuncMapID:%d,
+ TeamID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.FuncMapID,
+ self.TeamID
+ )
+ return DumpString
+
+
+m_NAtagGCQueryPlayerFuncTeamRet=tagGCQueryPlayerFuncTeamRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCQueryPlayerFuncTeamRet.Cmd,m_NAtagGCQueryPlayerFuncTeamRet.SubCmd))] = m_NAtagGCQueryPlayerFuncTeamRet
+
+
+#------------------------------------------------------
# B9 08 推荐组队的附近玩家信息 #tagGCRecommendNearbyPlayerList
class tagGCRecommendNearbyPlayer(Structure):
@@ -12564,6 +14395,8 @@
Job = 0 #(BYTE Job)// 玩家职业
JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -12579,6 +14412,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -12589,6 +14424,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -12600,6 +14437,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
return length
@@ -12612,6 +14451,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteBYTE(data, self.JobLevel)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -12622,7 +14463,9 @@
LV:%d,
Job:%d,
JobLevel:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -12631,7 +14474,9 @@
self.LV,
self.Job,
self.JobLevel,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -13243,6 +15088,8 @@
Job = 0 #(BYTE Job)// 玩家职业
JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
PlayerState = 0 #(BYTE PlayerState)// 0: 离线 1:在线
MapID = 0 #(DWORD MapID)// 地图ID
LineID = 0 #(BYTE LineID)// 线路ID
@@ -13263,6 +15110,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -13278,6 +15127,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.PlayerState = 0
self.MapID = 0
self.LineID = 0
@@ -13294,6 +15145,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
length += 1
length += 4
length += 1
@@ -13311,6 +15164,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteBYTE(data, self.JobLevel)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteBYTE(data, self.PlayerState)
data = CommFunc.WriteDWORD(data, self.MapID)
data = CommFunc.WriteBYTE(data, self.LineID)
@@ -13327,6 +15182,8 @@
Job:%d,
JobLevel:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
PlayerState:%d,
MapID:%d,
LineID:%d
@@ -13341,6 +15198,8 @@
self.Job,
self.JobLevel,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.PlayerState,
self.MapID,
self.LineID
@@ -14316,6 +16175,8 @@
FightPower = 0 #(DWORD FightPower)// 战力求余亿部分
FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分
RealmLV = 0 #(WORD RealmLV)
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -14332,6 +16193,8 @@
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -14343,6 +16206,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -14355,6 +16220,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -14368,6 +16235,8 @@
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -14379,7 +16248,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -14389,7 +16260,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -15009,7 +16882,7 @@
Type = 0 #(BYTE Type)//榜单类型
GroupValue1 = 0 #(BYTE GroupValue1)// 分组值1
GroupValue2 = 0 #(BYTE GroupValue2)// 分组值2,与分组值1组合归为同组榜单数据
- IsWatchSelf = 0 #(BYTE IsWatchSelf)
+ WatchID = 0 #(DWORD WatchID)//查看指定ID名次前后,如玩家ID、家族ID等
BillboardCount = 0 #(BYTE BillboardCount)
CrossBillboardDataList = list() #(vector<tagGCCrossBillboardData> CrossBillboardDataList)
data = None
@@ -15026,7 +16899,7 @@
self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GroupValue2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.IsWatchSelf,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WatchID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.BillboardCount):
temCrossBillboardDataList = tagGCCrossBillboardData()
@@ -15042,7 +16915,7 @@
self.Type = 0
self.GroupValue1 = 0
self.GroupValue2 = 0
- self.IsWatchSelf = 0
+ self.WatchID = 0
self.BillboardCount = 0
self.CrossBillboardDataList = list()
return
@@ -15053,7 +16926,7 @@
length += 1
length += 1
length += 1
- length += 1
+ length += 4
length += 1
for i in range(self.BillboardCount):
length += self.CrossBillboardDataList[i].GetLength()
@@ -15066,7 +16939,7 @@
data = CommFunc.WriteBYTE(data, self.Type)
data = CommFunc.WriteBYTE(data, self.GroupValue1)
data = CommFunc.WriteBYTE(data, self.GroupValue2)
- data = CommFunc.WriteBYTE(data, self.IsWatchSelf)
+ data = CommFunc.WriteDWORD(data, self.WatchID)
data = CommFunc.WriteBYTE(data, self.BillboardCount)
for i in range(self.BillboardCount):
data = CommFunc.WriteString(data, self.CrossBillboardDataList[i].GetLength(), self.CrossBillboardDataList[i].GetBuffer())
@@ -15078,7 +16951,7 @@
Type:%d,
GroupValue1:%d,
GroupValue2:%d,
- IsWatchSelf:%d,
+ WatchID:%d,
BillboardCount:%d,
CrossBillboardDataList:%s
'''\
@@ -15087,7 +16960,7 @@
self.Type,
self.GroupValue1,
self.GroupValue2,
- self.IsWatchSelf,
+ self.WatchID,
self.BillboardCount,
"..."
)
@@ -15337,6 +17210,8 @@
FightPower = 0 #(DWORD FightPower)// 战力求余亿部分
FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分
RealmLV = 0 #(WORD RealmLV)
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -15353,6 +17228,8 @@
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -15364,6 +17241,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -15376,6 +17255,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -15389,6 +17270,8 @@
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -15400,7 +17283,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -15410,7 +17295,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -17085,6 +18972,7 @@
("TotalPayCount", c_int), # 累计总购买次数
("WeekPayCount", c_ushort), # 周总购买次数
("MonthPayCount", c_ushort), # 月总购买次数
+ ("SelectItemValue", c_int), # 自选物品索引值,每两位存储每个自选索引对应选择的物品索引+1,存储位值为0代表未选择,最多支持选择4种物品
]
def __init__(self):
@@ -17102,6 +18990,7 @@
self.TotalPayCount = 0
self.WeekPayCount = 0
self.MonthPayCount = 0
+ self.SelectItemValue = 0
return
def GetLength(self):
@@ -17116,14 +19005,16 @@
TodayPayCount:%d,
TotalPayCount:%d,
WeekPayCount:%d,
- MonthPayCount:%d
+ MonthPayCount:%d,
+ SelectItemValue:%d
'''\
%(
self.RecordID,
self.TodayPayCount,
self.TotalPayCount,
self.WeekPayCount,
- self.MonthPayCount
+ self.MonthPayCount,
+ self.SelectItemValue
)
return DumpString
@@ -17387,6 +19278,7 @@
ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
data = None
@@ -17495,6 +19387,7 @@
self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -17599,6 +19492,7 @@
self.ExAttr20 = 0
self.HPEx = 0
self.Face = 0
+ self.FacePic = 0
self.RoleType = 0
return
@@ -17692,6 +19586,7 @@
length += 4
length += 4
length += 15
+ length += 4
length += 4
length += 4
length += 4
@@ -17804,6 +19699,7 @@
data = CommFunc.WriteDWORD(data, self.ExAttr20)
data = CommFunc.WriteDWORD(data, self.HPEx)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.RoleType)
return data
@@ -17906,6 +19802,7 @@
ExAttr20:%d,
HPEx:%d,
Face:%d,
+ FacePic:%d,
RoleType:%d
'''\
%(
@@ -18006,6 +19903,7 @@
self.ExAttr20,
self.HPEx,
self.Face,
+ self.FacePic,
self.RoleType
)
return DumpString
@@ -18565,6 +20463,114 @@
m_NAtagMCAttackMode=tagMCAttackMode()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAttackMode.Cmd,m_NAtagMCAttackMode.SubCmd))] = m_NAtagMCAttackMode
+
+
+#------------------------------------------------------
+# A2 06 自动转化为对应物品ID个数刷新 #tagMCAutoItemCountRefresh
+
+class tagMCAutoItemCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", 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.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCAutoItemCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 06 自动转化为对应物品ID个数刷新 //tagMCAutoItemCountRefresh:
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+class tagMCAutoItemCountRefresh(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)// 刷新个数
+ ItemCountList = list() #(vector<tagMCAutoItemCount> ItemCountList)// 物品信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA2
+ 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):
+ temItemCountList = tagMCAutoItemCount()
+ _pos = temItemCountList.ReadData(_lpData, _pos)
+ self.ItemCountList.append(temItemCountList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA2
+ self.Head.SubCmd = 0x06
+ self.Count = 0
+ self.ItemCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.ItemCountList[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.ItemCountList[i].GetLength(), self.ItemCountList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ ItemCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCAutoItemCountRefresh=tagMCAutoItemCountRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAutoItemCountRefresh.Head.Cmd,m_NAtagMCAutoItemCountRefresh.Head.SubCmd))] = m_NAtagMCAutoItemCountRefresh
#------------------------------------------------------
@@ -21884,6 +23890,181 @@
m_NAtagMCGatherSoulHoleInfo=tagMCGatherSoulHoleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherSoulHoleInfo.Head.Cmd,m_NAtagMCGatherSoulHoleInfo.Head.SubCmd))] = m_NAtagMCGatherSoulHoleInfo
+
+
+#------------------------------------------------------
+# A3 61 新聚魂孔信息 #tagMCGatherTheSoulHoleInfo
+
+class tagMCGatherTheSoulHoleInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 孔数
+ HoleSoulList = list() #(vector<DWORD> HoleSoulList)// 孔聚魂ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x61
+ 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.HoleSoulList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x61
+ self.Count = 0
+ self.HoleSoulList = 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.HoleSoulList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ HoleSoulList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGatherTheSoulHoleInfo=tagMCGatherTheSoulHoleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherTheSoulHoleInfo.Head.Cmd,m_NAtagMCGatherTheSoulHoleInfo.Head.SubCmd))] = m_NAtagMCGatherTheSoulHoleInfo
+
+
+#------------------------------------------------------
+# A3 60 新聚魂信息 #tagMCGatherTheSoulInfo
+
+class tagMCGatherTheSoul(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SoulID", c_int),
+ ("LV", 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.SoulID = 0
+ self.LV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGatherTheSoul)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 60 新聚魂信息 //tagMCGatherTheSoulInfo:
+ SoulID:%d,
+ LV:%d
+ '''\
+ %(
+ self.SoulID,
+ self.LV
+ )
+ return DumpString
+
+
+class tagMCGatherTheSoulInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ SoulList = list() #(vector<tagMCGatherTheSoul> SoulList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x60
+ 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):
+ temSoulList = tagMCGatherTheSoul()
+ _pos = temSoulList.ReadData(_lpData, _pos)
+ self.SoulList.append(temSoulList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x60
+ self.Count = 0
+ self.SoulList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.SoulList[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.SoulList[i].GetLength(), self.SoulList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SoulList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGatherTheSoulInfo=tagMCGatherTheSoulInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherTheSoulInfo.Head.Cmd,m_NAtagMCGatherTheSoulInfo.Head.SubCmd))] = m_NAtagMCGatherTheSoulInfo
#------------------------------------------------------
@@ -26556,63 +28737,48 @@
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class tagMCTreasureTypeInfo(Structure):
- TreasureType = 0 #(BYTE TreasureType)//寻宝类型
- LuckValue = 0 #(WORD LuckValue)//当前幸运值
- IndexCount = 0 #(BYTE IndexCount)//索引个数
- FreeCountTime = list() #(vector<DWORD> FreeCountTime)// 模式对应开始计算免费次数时间time值
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("TreasureType", c_ubyte), #寻宝类型
+ ("LuckValue", c_ushort), #当前幸运值
+ ("TreasureCount", c_int), #已寻宝总次数
+ ("FreeCountToday", c_ushort), #今日已免费寻宝次数
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.FreeCountTime.append(value)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
self.TreasureType = 0
self.LuckValue = 0
- self.IndexCount = 0
- self.FreeCountTime = list()
+ self.TreasureCount = 0
+ self.FreeCountToday = 0
return
def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += 1
- length += 4 * self.IndexCount
-
- return length
+ return sizeof(tagMCTreasureTypeInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TreasureType)
- data = CommFunc.WriteWORD(data, self.LuckValue)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteDWORD(data, self.FreeCountTime[i])
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
+ DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
TreasureType:%d,
LuckValue:%d,
- IndexCount:%d,
- FreeCountTime:%s
+ TreasureCount:%d,
+ FreeCountToday:%d
'''\
%(
self.TreasureType,
self.LuckValue,
- self.IndexCount,
- "..."
+ self.TreasureCount,
+ self.FreeCountToday
)
return DumpString
@@ -26688,7 +28854,8 @@
class tagMCTreasureResult(Structure):
Head = tagHead()
- AddTreasureScore = 0 #(WORD AddTreasureScore)// 本次寻宝增加的寻宝积分
+ AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
+ AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
@@ -26703,7 +28870,8 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.AddTreasureScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
@@ -26714,7 +28882,8 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x50
- self.AddTreasureScore = 0
+ self.AddMoneyType = 0
+ self.AddMoneyValue = 0
self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
@@ -26723,6 +28892,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
length += 2
length += 2
@@ -26733,7 +28903,8 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.AddTreasureScore)
+ data = CommFunc.WriteBYTE(data, self.AddMoneyType)
+ data = CommFunc.WriteWORD(data, self.AddMoneyValue)
data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
@@ -26742,14 +28913,16 @@
def OutputString(self):
DumpString = '''
Head:%s,
- AddTreasureScore:%d,
+ AddMoneyType:%d,
+ AddMoneyValue:%d,
AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
'''\
%(
self.Head.OutputString(),
- self.AddTreasureScore,
+ self.AddMoneyType,
+ self.AddMoneyValue,
self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
@@ -28589,18 +30762,17 @@
#------------------------------------------------------
# A7 17 聊天气泡框状态 #tagMCChatBubbleBoxState
-class tagMCChatBubbleBoxState(Structure):
+class tagMCChatBubbleBox(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BoxState", c_int), # 按二进制位存储代表是否已开启,暂支持31位,以后有需要再加
+ ("BoxID", c_ubyte), #气泡ID
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", c_ubyte), #星级
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA7
- self.SubCmd = 0x17
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -28609,33 +30781,98 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA7
- self.SubCmd = 0x17
- self.BoxState = 0
+ self.BoxID = 0
+ self.State = 0
+ self.EndTime = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagMCChatBubbleBoxState)
+ return sizeof(tagMCChatBubbleBox)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A7 17 聊天气泡框状态 //tagMCChatBubbleBoxState:
- Cmd:%s,
- SubCmd:%s,
- BoxState:%d
+ BoxID:%d,
+ State:%d,
+ EndTime:%d,
+ Star:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.BoxState
+ self.BoxID,
+ self.State,
+ self.EndTime,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCChatBubbleBoxState(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BoxList = list() #(vector<tagMCChatBubbleBox> BoxList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x17
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBoxList = tagMCChatBubbleBox()
+ _pos = temBoxList.ReadData(_lpData, _pos)
+ self.BoxList.append(temBoxList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x17
+ self.Count = 0
+ self.BoxList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.BoxList[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.BoxList[i].GetLength(), self.BoxList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ BoxList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
)
return DumpString
m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Head.Cmd,m_NAtagMCChatBubbleBoxState.Head.SubCmd))] = m_NAtagMCChatBubbleBoxState
#------------------------------------------------------
@@ -28934,6 +31171,118 @@
m_NAtagMCDynamicBarrierState=tagMCDynamicBarrierState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDynamicBarrierState.Head.Cmd,m_NAtagMCDynamicBarrierState.Head.SubCmd))] = m_NAtagMCDynamicBarrierState
+
+
+#------------------------------------------------------
+# A7 21 表情包信息 #tagMCEmojiPackInfo
+
+class tagMCEmojiPack(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("PackID", c_ubyte), #表情包ID
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ]
+
+ 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.PackID = 0
+ self.State = 0
+ self.EndTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEmojiPack)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 21 表情包信息 //tagMCEmojiPackInfo:
+ PackID:%d,
+ State:%d,
+ EndTime:%d
+ '''\
+ %(
+ self.PackID,
+ self.State,
+ self.EndTime
+ )
+ return DumpString
+
+
+class tagMCEmojiPackInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ EmojiPackList = list() #(vector<tagMCEmojiPack> EmojiPackList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x21
+ 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):
+ temEmojiPackList = tagMCEmojiPack()
+ _pos = temEmojiPackList.ReadData(_lpData, _pos)
+ self.EmojiPackList.append(temEmojiPackList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x21
+ self.Count = 0
+ self.EmojiPackList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.EmojiPackList[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.EmojiPackList[i].GetLength(), self.EmojiPackList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ EmojiPackList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCEmojiPackInfo=tagMCEmojiPackInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEmojiPackInfo.Head.Cmd,m_NAtagMCEmojiPackInfo.Head.SubCmd))] = m_NAtagMCEmojiPackInfo
#------------------------------------------------------
@@ -31480,12 +33829,72 @@
return DumpString
+class tagMCActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -31505,6 +33914,12 @@
temMemAwardItemList = tagMCActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -31513,6 +33928,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -31524,6 +33942,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -31536,6 +33958,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -31544,13 +33970,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -31961,45 +34393,6 @@
return DumpString
-class tagMCActBuyCountCTGID(Structure):
- _pack_ = 1
- _fields_ = [
- ("CTGID", c_ushort), # 充值表ID
- ("Discount", 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.CTGID = 0
- self.Discount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCActBuyCountCTGID)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 74 购买次数礼包活动信息 //tagMCActBuyCountGiftInfo:
- CTGID:%d,
- Discount:%d
- '''\
- %(
- self.CTGID,
- self.Discount
- )
- return DumpString
-
-
class tagMCActBuyCountGiftInfo(Structure):
Head = tagHead()
ActNum = 0 #(BYTE ActNum)// 活动编号
@@ -32009,9 +34402,10 @@
ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
LimitLV = 0 #(WORD LimitLV)// 限制等级
CTGIDCount = 0 #(BYTE CTGIDCount)
- CTGIDInfoList = list() #(vector<tagMCActBuyCountCTGID> CTGIDInfoList)// CTGID信息列表;总购买次数前端自己统计,直接取CTGID对应的累计购买次数累加
+ CTGIDList = list() #(vector<WORD> CTGIDList)// CTGID列表;总购买次数前端自己统计,直接取CTGID对应的累计购买次数累加
GiftCount = 0 #(BYTE GiftCount)
BuyCountGiftList = list() #(vector<tagMCActBuyCountGift> BuyCountGiftList)// 购买次数礼包列表
+ ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
data = None
def __init__(self):
@@ -32031,14 +34425,14 @@
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.CTGIDCount):
- temCTGIDInfoList = tagMCActBuyCountCTGID()
- _pos = temCTGIDInfoList.ReadData(_lpData, _pos)
- self.CTGIDInfoList.append(temCTGIDInfoList)
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CTGIDList.append(value)
self.GiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.GiftCount):
temBuyCountGiftList = tagMCActBuyCountGift()
_pos = temBuyCountGiftList.ReadData(_lpData, _pos)
self.BuyCountGiftList.append(temBuyCountGiftList)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -32053,9 +34447,10 @@
self.ResetType = 0
self.LimitLV = 0
self.CTGIDCount = 0
- self.CTGIDInfoList = list()
+ self.CTGIDList = list()
self.GiftCount = 0
self.BuyCountGiftList = list()
+ self.ShopType = 0
return
def GetLength(self):
@@ -32068,11 +34463,11 @@
length += 1
length += 2
length += 1
- for i in range(self.CTGIDCount):
- length += self.CTGIDInfoList[i].GetLength()
+ length += 2 * self.CTGIDCount
length += 1
for i in range(self.GiftCount):
length += self.BuyCountGiftList[i].GetLength()
+ length += 2
return length
@@ -32087,10 +34482,11 @@
data = CommFunc.WriteWORD(data, self.LimitLV)
data = CommFunc.WriteBYTE(data, self.CTGIDCount)
for i in range(self.CTGIDCount):
- data = CommFunc.WriteString(data, self.CTGIDInfoList[i].GetLength(), self.CTGIDInfoList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.CTGIDList[i])
data = CommFunc.WriteBYTE(data, self.GiftCount)
for i in range(self.GiftCount):
data = CommFunc.WriteString(data, self.BuyCountGiftList[i].GetLength(), self.BuyCountGiftList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.ShopType)
return data
def OutputString(self):
@@ -32103,9 +34499,10 @@
ResetType:%d,
LimitLV:%d,
CTGIDCount:%d,
- CTGIDInfoList:%s,
+ CTGIDList:%s,
GiftCount:%d,
- BuyCountGiftList:%s
+ BuyCountGiftList:%s,
+ ShopType:%d
'''\
%(
self.Head.OutputString(),
@@ -32118,7 +34515,8 @@
self.CTGIDCount,
"...",
self.GiftCount,
- "..."
+ "...",
+ self.ShopType
)
return DumpString
@@ -34084,6 +36482,363 @@
#------------------------------------------------------
+# AA 81 古宝养成活动信息 #tagMCActGubaoInfo
+
+class tagMCActGubaoItem(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(tagMCActGubaoItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 81 古宝养成活动信息 //tagMCActGubaoInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGubaoInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x81
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCActGubaoBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x81
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.LimitLV = 0
+ self.ShopType = 0
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteWORD(data, self.ShopType)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ LimitLV:%d,
+ ShopType:%d,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.LimitLV,
+ self.ShopType,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGubaoInfo=tagMCActGubaoInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGubaoInfo.Head.Cmd,m_NAtagMCActGubaoInfo.Head.SubCmd))] = m_NAtagMCActGubaoInfo
+
+
+#------------------------------------------------------
+# AA 82 古宝养成活动玩家信息 #tagMCActGubaoPlayerInfo
+
+class tagMCActGubaoPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("Score", c_int), # 当前积分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x82
+ 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 = 0x82
+ self.ActNum = 0
+ self.Score = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGubaoPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 82 古宝养成活动玩家信息 //tagMCActGubaoPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ Score:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.Score
+ )
+ return DumpString
+
+
+m_NAtagMCActGubaoPlayerInfo=tagMCActGubaoPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGubaoPlayerInfo.Cmd,m_NAtagMCActGubaoPlayerInfo.SubCmd))] = m_NAtagMCActGubaoPlayerInfo
+
+
+#------------------------------------------------------
# AA 54 骑宠盛宴活动信息 #tagMCActHorsePetFeastInfo
class tagMCActHorsePetFeastTime(Structure):
@@ -34223,6 +36978,363 @@
m_NAtagMCActHorsePetFeastInfo=tagMCActHorsePetFeastInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetFeastInfo.Head.Cmd,m_NAtagMCActHorsePetFeastInfo.Head.SubCmd))] = m_NAtagMCActHorsePetFeastInfo
+
+
+#------------------------------------------------------
+# AA 84 骑宠养成活动信息 #tagMCActHorsePetTrainInfo
+
+class tagMCActHorsePetTrainItem(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(tagMCActHorsePetTrainItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 84 骑宠养成活动信息 //tagMCActHorsePetTrainInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActHorsePetTrainAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActHorsePetTrainItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActHorsePetTrainBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActHorsePetTrainAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActHorsePetTrainItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActHorsePetTrainAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActHorsePetTrainInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x84
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCActHorsePetTrainBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x84
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.LimitLV = 0
+ self.ShopType = 0
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteWORD(data, self.ShopType)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ LimitLV:%d,
+ ShopType:%d,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.LimitLV,
+ self.ShopType,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActHorsePetTrainInfo=tagMCActHorsePetTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetTrainInfo.Head.Cmd,m_NAtagMCActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCActHorsePetTrainInfo
+
+
+#------------------------------------------------------
+# AA 85 骑宠养成活动玩家信息 #tagMCActHorsePetTrainPlayerInfo
+
+class tagMCActHorsePetTrainPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("Score", c_int), # 当前活动积分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x85
+ 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 = 0x85
+ self.ActNum = 0
+ self.Score = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActHorsePetTrainPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 85 骑宠养成活动玩家信息 //tagMCActHorsePetTrainPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ Score:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.Score
+ )
+ return DumpString
+
+
+m_NAtagMCActHorsePetTrainPlayerInfo=tagMCActHorsePetTrainPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetTrainPlayerInfo.Cmd,m_NAtagMCActHorsePetTrainPlayerInfo.SubCmd))] = m_NAtagMCActHorsePetTrainPlayerInfo
#------------------------------------------------------
@@ -36371,6 +39483,7 @@
LimitLV = 0 #(WORD LimitLV)// 限制等级
TaskCount = 0 #(BYTE TaskCount)
TaskList = list() #(vector<tagMCActTask> TaskList)// 任务列表
+ RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次,当小于等于1时代表不循环
data = None
def __init__(self):
@@ -36393,6 +39506,7 @@
temTaskList = tagMCActTask()
_pos = temTaskList.ReadData(_lpData, _pos)
self.TaskList.append(temTaskList)
+ self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -36408,6 +39522,7 @@
self.LimitLV = 0
self.TaskCount = 0
self.TaskList = list()
+ self.RoundMax = 0
return
def GetLength(self):
@@ -36422,6 +39537,7 @@
length += 1
for i in range(self.TaskCount):
length += self.TaskList[i].GetLength()
+ length += 1
return length
@@ -36437,6 +39553,7 @@
data = CommFunc.WriteBYTE(data, self.TaskCount)
for i in range(self.TaskCount):
data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RoundMax)
return data
def OutputString(self):
@@ -36449,7 +39566,8 @@
ResetType:%d,
LimitLV:%d,
TaskCount:%d,
- TaskList:%s
+ TaskList:%s,
+ RoundMax:%d
'''\
%(
self.Head.OutputString(),
@@ -36460,7 +39578,8 @@
self.ResetType,
self.LimitLV,
self.TaskCount,
- "..."
+ "...",
+ self.RoundMax
)
return DumpString
@@ -36477,6 +39596,7 @@
ActNum = 0 #(BYTE ActNum)// 活动编号
AwardCount = 0 #(BYTE AwardCount)
AwardRecordList = list() #(vector<DWORD> AwardRecordList)// 任务ID领奖记录值列表,根据任务ID位判断是否已领取,一个记录值存31位 [记录值0, 记录值1, ...]
+ RoundNum = 0 #(BYTE RoundNum)// 当前轮次,从1开始
data = None
def __init__(self):
@@ -36493,6 +39613,7 @@
for i in range(self.AwardCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.AwardRecordList.append(value)
+ self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -36503,6 +39624,7 @@
self.ActNum = 0
self.AwardCount = 0
self.AwardRecordList = list()
+ self.RoundNum = 0
return
def GetLength(self):
@@ -36511,6 +39633,7 @@
length += 1
length += 1
length += 4 * self.AwardCount
+ length += 1
return length
@@ -36521,6 +39644,7 @@
data = CommFunc.WriteBYTE(data, self.AwardCount)
for i in range(self.AwardCount):
data = CommFunc.WriteDWORD(data, self.AwardRecordList[i])
+ data = CommFunc.WriteBYTE(data, self.RoundNum)
return data
def OutputString(self):
@@ -36528,13 +39652,15 @@
Head:%s,
ActNum:%d,
AwardCount:%d,
- AwardRecordList:%s
+ AwardRecordList:%s,
+ RoundNum:%d
'''\
%(
self.Head.OutputString(),
self.ActNum,
self.AwardCount,
- "..."
+ "...",
+ self.RoundNum
)
return DumpString
@@ -37696,6 +40822,7 @@
("ItemCount", c_ushort),
("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ("LotteryScore", c_int), #当前抽奖积分
]
def __init__(self):
@@ -37718,6 +40845,7 @@
self.ItemCount = 0
self.PosNum = 0
self.TotalTimesNow = 0
+ self.LotteryScore = 0
return
def GetLength(self):
@@ -37735,7 +40863,8 @@
ItemID:%d,
ItemCount:%d,
PosNum:%d,
- TotalTimesNow:%d
+ TotalTimesNow:%d,
+ LotteryScore:%d
'''\
%(
self.Cmd,
@@ -37745,7 +40874,8 @@
self.ItemID,
self.ItemCount,
self.PosNum,
- self.TotalTimesNow
+ self.TotalTimesNow,
+ self.LotteryScore
)
return DumpString
@@ -37757,7 +40887,343 @@
#------------------------------------------------------
# AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo
-class tagMCActXianXiaMJAwardItem(Structure):
+class tagMCActXianXiaMJItem(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(tagMCActXianXiaMJItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ UseItemID = 0 #(DWORD UseItemID)//消耗物品ID,默认1个;消耗物品或货币二选一即可,或都配则先消耗道具,不足则消耗货币
+ MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
+ MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
+ LotteryAddScore = 0 #(WORD LotteryAddScore)//每次抽奖加积分
+ LayerAddScore = 0 #(WORD LayerAddScore)//每次跨层加积分
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LotteryAddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LayerAddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCActXianXiaMJBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.UseItemID = 0
+ self.MoneyType = 0
+ self.MoneyValue = 0
+ self.LotteryAddScore = 0
+ self.LayerAddScore = 0
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 1
+ length += 2
+ length += 4
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteDWORD(data, self.UseItemID)
+ data = CommFunc.WriteBYTE(data, self.MoneyType)
+ data = CommFunc.WriteWORD(data, self.MoneyValue)
+ data = CommFunc.WriteWORD(data, self.LotteryAddScore)
+ data = CommFunc.WriteWORD(data, self.LayerAddScore)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ UseItemID:%d,
+ MoneyType:%d,
+ MoneyValue:%d,
+ LotteryAddScore:%d,
+ LayerAddScore:%d,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.IsDayReset,
+ self.LimitLV,
+ self.UseItemID,
+ self.MoneyType,
+ self.MoneyValue,
+ self.LotteryAddScore,
+ self.LayerAddScore,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
+
+
+#------------------------------------------------------
+# AA 79 仙匣秘境层信息 #tagMCActXianXiaMJLayerInfo
+
+class tagMCActXianXiaMJLayerItem(Structure):
_pack_ = 1
_fields_ = [
("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
@@ -37789,13 +41255,13 @@
return
def GetLength(self):
- return sizeof(tagMCActXianXiaMJAwardItem)
+ return sizeof(tagMCActXianXiaMJLayerItem)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
+ DumpString = '''// AA 79 仙匣秘境层信息 //tagMCActXianXiaMJLayerInfo:
ItemLibType:%d,
ItemID:%d,
ItemCount:%d,
@@ -37816,48 +41282,38 @@
return DumpString
-class tagMCActXianXiaMJInfo(Structure):
+class tagMCActXianXiaMJLayerInfo(Structure):
Head = tagHead()
ActNum = 0 #(BYTE ActNum)// 活动编号
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
- MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
- MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
- LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
+ LayerNum = 0 #(WORD LayerNum)//当前奖池第几层
+ LotteryScore = 0 #(DWORD LotteryScore)//当前抽奖积分
AwardItemCount = 0 #(BYTE AwardItemCount)
- AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
+ AwardItemList = list() #(vector<tagMCActXianXiaMJLayerItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
SuperItemCount = 0 #(BYTE SuperItemCount)
- SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
+ SuperItemList = list() #(vector<tagMCActXianXiaMJLayerItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x58
+ self.Head.SubCmd = 0x79
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LayerNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LotteryScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.AwardItemCount):
- temAwardItemList = tagMCActXianXiaMJAwardItem()
+ temAwardItemList = tagMCActXianXiaMJLayerItem()
_pos = temAwardItemList.ReadData(_lpData, _pos)
self.AwardItemList.append(temAwardItemList)
self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.SuperItemCount):
- temSuperItemList = tagMCActXianXiaMJAwardItem()
+ temSuperItemList = tagMCActXianXiaMJLayerItem()
_pos = temSuperItemList.ReadData(_lpData, _pos)
self.SuperItemList.append(temSuperItemList)
self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -37867,15 +41323,10 @@
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x58
+ self.Head.SubCmd = 0x79
self.ActNum = 0
- self.StartDate = ""
- self.EndtDate = ""
- self.LimitLV = 0
- self.ResetType = 0
- self.MoneyType = 0
- self.MoneyValue = 0
self.LayerNum = 0
+ self.LotteryScore = 0
self.AwardItemCount = 0
self.AwardItemList = list()
self.SuperItemCount = 0
@@ -37887,13 +41338,8 @@
length = 0
length += self.Head.GetLength()
length += 1
- length += 10
- length += 10
length += 2
- length += 1
- length += 1
- length += 2
- length += 1
+ length += 4
length += 1
for i in range(self.AwardItemCount):
length += self.AwardItemList[i].GetLength()
@@ -37908,13 +41354,8 @@
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteBYTE(data, self.ActNum)
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteBYTE(data, self.MoneyType)
- data = CommFunc.WriteWORD(data, self.MoneyValue)
- data = CommFunc.WriteBYTE(data, self.LayerNum)
+ data = CommFunc.WriteWORD(data, self.LayerNum)
+ data = CommFunc.WriteDWORD(data, self.LotteryScore)
data = CommFunc.WriteBYTE(data, self.AwardItemCount)
for i in range(self.AwardItemCount):
data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
@@ -37928,13 +41369,8 @@
DumpString = '''
Head:%s,
ActNum:%d,
- StartDate:%s,
- EndtDate:%s,
- LimitLV:%d,
- ResetType:%d,
- MoneyType:%d,
- MoneyValue:%d,
LayerNum:%d,
+ LotteryScore:%d,
AwardItemCount:%d,
AwardItemList:%s,
SuperItemCount:%d,
@@ -37944,13 +41380,8 @@
%(
self.Head.OutputString(),
self.ActNum,
- self.StartDate,
- self.EndtDate,
- self.LimitLV,
- self.ResetType,
- self.MoneyType,
- self.MoneyValue,
self.LayerNum,
+ self.LotteryScore,
self.AwardItemCount,
"...",
self.SuperItemCount,
@@ -37960,8 +41391,8 @@
return DumpString
-m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
+m_NAtagMCActXianXiaMJLayerInfo=tagMCActXianXiaMJLayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJLayerInfo.Head.Cmd,m_NAtagMCActXianXiaMJLayerInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJLayerInfo
#------------------------------------------------------
@@ -38930,12 +42361,72 @@
return DumpString
+class tagMCCrossActBossTrialAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
class tagMCCrossActBossTrialBillard(Structure):
Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
data = None
def __init__(self):
@@ -38955,6 +42446,12 @@
temMemAwardItemList = tagMCCrossActBossTrialItem()
_pos = temMemAwardItemList.ReadData(_lpData, _pos)
self.MemAwardItemList.append(temMemAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActBossTrialAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
return _pos
def Clear(self):
@@ -38963,6 +42460,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -38974,6 +42474,10 @@
length += 1
for i in range(self.MemCount):
length += self.MemAwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
return length
@@ -38986,6 +42490,10 @@
data = CommFunc.WriteBYTE(data, self.MemCount)
for i in range(self.MemCount):
data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
return data
def OutputString(self):
@@ -38994,13 +42502,19 @@
Count:%d,
AwardItemList:%s,
MemCount:%d,
- MemAwardItemList:%s
+ MemAwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
'''\
%(
self.Rank,
self.Count,
"...",
self.MemCount,
+ "...",
+ self.NeedScore,
+ self.CountEx,
"..."
)
return DumpString
@@ -39017,8 +42531,6 @@
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制;
- RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
FamilyBillCount = 0 #(BYTE FamilyBillCount)
@@ -39043,8 +42555,6 @@
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard()
@@ -39071,8 +42581,6 @@
self.JoinEndTime = ""
self.IsDayReset = 0
self.ResetType = 0
- self.RankLimitPersonal = 0
- self.RankLimitFamily = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
self.FamilyBillCount = 0
@@ -39091,8 +42599,6 @@
length += 5
length += 1
length += 1
- length += 2
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -39114,8 +42620,6 @@
data = CommFunc.WriteString(data, 5, self.JoinEndTime)
data = CommFunc.WriteBYTE(data, self.IsDayReset)
data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
- data = CommFunc.WriteWORD(data, self.RankLimitFamily)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -39136,8 +42640,6 @@
JoinEndTime:%s,
IsDayReset:%d,
ResetType:%d,
- RankLimitPersonal:%d,
- RankLimitFamily:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s,
FamilyBillCount:%d,
@@ -39154,8 +42656,6 @@
self.JoinEndTime,
self.IsDayReset,
self.ResetType,
- self.RankLimitPersonal,
- self.RankLimitFamily,
self.PersonalBillCount,
"...",
self.FamilyBillCount,
@@ -39166,6 +42666,916 @@
m_NAtagMCCrossActBossTrialInfo=tagMCCrossActBossTrialInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActBossTrialInfo.Head.Cmd,m_NAtagMCCrossActBossTrialInfo.Head.SubCmd))] = m_NAtagMCCrossActBossTrialInfo
+
+
+#------------------------------------------------------
+# AA 83 古宝养成跨服活动信息 #tagMCCrossActGubaoInfo
+
+class tagMCCrossActGubaoItem(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(tagMCCrossActGubaoItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 83 古宝养成跨服活动信息 //tagMCCrossActGubaoInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCrossActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActGubaoBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActGubaoItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActGubaoAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActGubaoInfo(Structure):
+ Head = tagHead()
+ ServerInfoLen = 0 #(BYTE ServerInfoLen)
+ ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
+ GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x83
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
+ self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x83
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.GroupValue1 = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
+ data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
+ data = CommFunc.WriteBYTE(data, self.GroupValue1)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ GroupValue1:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.GroupValue1,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCrossActGubaoInfo=tagMCCrossActGubaoInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActGubaoInfo.Head.Cmd,m_NAtagMCCrossActGubaoInfo.Head.SubCmd))] = m_NAtagMCCrossActGubaoInfo
+
+
+#------------------------------------------------------
+# AA 86 骑宠养成跨服活动信息 #tagMCCrossActHorsePetTrainInfo
+
+class tagMCCrossActHorsePetTrainItem(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(tagMCCrossActHorsePetTrainItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 86 骑宠养成跨服活动信息 //tagMCCrossActHorsePetTrainInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCrossActHorsePetTrainAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActHorsePetTrainItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActHorsePetTrainBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActHorsePetTrainAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActHorsePetTrainItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActHorsePetTrainAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActHorsePetTrainInfo(Structure):
+ Head = tagHead()
+ ServerInfoLen = 0 #(BYTE ServerInfoLen)
+ ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
+ GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCCrossActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x86
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
+ self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCCrossActHorsePetTrainBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x86
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.GroupValue1 = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
+ data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
+ data = CommFunc.WriteBYTE(data, self.GroupValue1)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ GroupValue1:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.GroupValue1,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCrossActHorsePetTrainInfo=tagMCCrossActHorsePetTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActHorsePetTrainInfo.Head.Cmd,m_NAtagMCCrossActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCCrossActHorsePetTrainInfo
+
+
+#------------------------------------------------------
+# AA 80 仙匣秘境跨服活动信息 #tagMCCrossActXianXiaMJInfo
+
+class tagMCCrossActXianXiaMJItem(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(tagMCCrossActXianXiaMJItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 80 仙匣秘境跨服活动信息 //tagMCCrossActXianXiaMJInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCrossActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActXianXiaMJBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCrossActXianXiaMJItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActXianXiaMJAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.Rank)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCrossActXianXiaMJInfo(Structure):
+ Head = tagHead()
+ ServerInfoLen = 0 #(BYTE ServerInfoLen)
+ ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
+ GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
+ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x80
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
+ self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
+ _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
+ self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x80
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.GroupValue1 = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.IsDayReset = 0
+ self.PersonalBillCount = 0
+ self.PersonalBillboardInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 1
+ length += 10
+ length += 10
+ length += 5
+ length += 5
+ length += 1
+ length += 1
+ for i in range(self.PersonalBillCount):
+ length += self.PersonalBillboardInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
+ data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
+ data = CommFunc.WriteBYTE(data, self.GroupValue1)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteString(data, 5, self.JoinStartTime)
+ data = CommFunc.WriteString(data, 5, self.JoinEndTime)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
+ for i in range(self.PersonalBillCount):
+ data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ GroupValue1:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ JoinStartTime:%s,
+ JoinEndTime:%s,
+ IsDayReset:%d,
+ PersonalBillCount:%d,
+ PersonalBillboardInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.GroupValue1,
+ self.StartDate,
+ self.EndtDate,
+ self.JoinStartTime,
+ self.JoinEndTime,
+ self.IsDayReset,
+ self.PersonalBillCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCrossActXianXiaMJInfo=tagMCCrossActXianXiaMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActXianXiaMJInfo.Head.Cmd,m_NAtagMCCrossActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCCrossActXianXiaMJInfo
#------------------------------------------------------
@@ -45834,6 +50244,238 @@
#------------------------------------------------------
+# B1 17 头像信息 #tagMCFaceInfo
+
+class tagMCFace(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("FaceID", c_int), #头像ID
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", 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.FaceID = 0
+ self.State = 0
+ self.EndTime = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFace)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 17 头像信息 //tagMCFaceInfo:
+ FaceID:%d,
+ State:%d,
+ EndTime:%d,
+ Star:%d
+ '''\
+ %(
+ self.FaceID,
+ self.State,
+ self.EndTime,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCFaceInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ FaceList = list() #(vector<tagMCFace> FaceList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x17
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temFaceList = tagMCFace()
+ _pos = temFaceList.ReadData(_lpData, _pos)
+ self.FaceList.append(temFaceList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x17
+ self.Count = 0
+ self.FaceList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.FaceList[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.FaceList[i].GetLength(), self.FaceList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ FaceList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFaceInfo=tagMCFaceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaceInfo.Head.Cmd,m_NAtagMCFaceInfo.Head.SubCmd))] = m_NAtagMCFaceInfo
+
+
+#------------------------------------------------------
+# B1 18 头像框信息 #tagMCFacePicInfo
+
+class tagMCFacePic(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("FacePicID", c_int), #头像框ID
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", 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.FacePicID = 0
+ self.State = 0
+ self.EndTime = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFacePic)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo:
+ FacePicID:%d,
+ State:%d,
+ EndTime:%d,
+ Star:%d
+ '''\
+ %(
+ self.FacePicID,
+ self.State,
+ self.EndTime,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCFacePicInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ FacePicList = list() #(vector<tagMCFacePic> FacePicList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x18
+ 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):
+ temFacePicList = tagMCFacePic()
+ _pos = temFacePicList.ReadData(_lpData, _pos)
+ self.FacePicList.append(temFacePicList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x18
+ self.Count = 0
+ self.FacePicList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.FacePicList[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.FacePicList[i].GetLength(), self.FacePicList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ FacePicList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFacePicInfo=tagMCFacePicInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFacePicInfo.Head.Cmd,m_NAtagMCFacePicInfo.Head.SubCmd))] = m_NAtagMCFacePicInfo
+
+
+#------------------------------------------------------
# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
class tagMCFuncSysPrivilegeInfo(Structure):
@@ -46794,6 +51436,188 @@
#------------------------------------------------------
+# B1 15 天道树信息 #tagMCTiandaoTreeInfo
+
+class tagMCTiandaoTreeInfo(Structure):
+ Head = tagHead()
+ Qiyun = 0 #(DWORD Qiyun)// 当前气运值
+ AwardCount = 0 #(BYTE AwardCount)// 天道果领取记录值个数
+ AwardStateList = list() #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,...
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.AwardStateList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x15
+ self.Qiyun = 0
+ self.AwardCount = 0
+ self.AwardStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 4 * self.AwardCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.Qiyun)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteDWORD(data, self.AwardStateList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Qiyun:%d,
+ AwardCount:%d,
+ AwardStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Qiyun,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
+
+
+#------------------------------------------------------
+# B1 12 培养功能境界信息 #tagMCTrainRealmLVInfo
+
+class tagMCTrainRealmLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("FuncType", c_ubyte), # 功能类型:1-坐骑;2-灵宠;3-灵器
+ ("TrainRealmLV", 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.FuncType = 0
+ self.TrainRealmLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTrainRealmLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 12 培养功能境界信息 //tagMCTrainRealmLVInfo:
+ FuncType:%d,
+ TrainRealmLV:%d
+ '''\
+ %(
+ self.FuncType,
+ self.TrainRealmLV
+ )
+ return DumpString
+
+
+class tagMCTrainRealmLVInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ InfoList = list() #(vector<tagMCTrainRealmLV> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCTrainRealmLV()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x12
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTrainRealmLVInfo=tagMCTrainRealmLVInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTrainRealmLVInfo.Head.Cmd,m_NAtagMCTrainRealmLVInfo.Head.SubCmd))] = m_NAtagMCTrainRealmLVInfo
+
+
+#------------------------------------------------------
# B1 21 仙树信息 #tagMCTreeInfo
class tagMCTreeInfo(Structure):
@@ -46854,14 +51678,238 @@
#------------------------------------------------------
+# B1 16 累计消耗货币信息 #tagMCUseMoneyTotalInfo
+
+class tagMCUseMoneyTotal(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MoneyType", c_ubyte), # 货币类型,仅同步需要记录的货币类型
+ ("UseTotal", 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.MoneyType = 0
+ self.UseTotal = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCUseMoneyTotal)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 16 累计消耗货币信息 //tagMCUseMoneyTotalInfo:
+ MoneyType:%d,
+ UseTotal:%d
+ '''\
+ %(
+ self.MoneyType,
+ self.UseTotal
+ )
+ return DumpString
+
+
+class tagMCUseMoneyTotalInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ InfoList = list() #(vector<tagMCUseMoneyTotal> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCUseMoneyTotal()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x16
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCUseMoneyTotalInfo=tagMCUseMoneyTotalInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseMoneyTotalInfo.Head.Cmd,m_NAtagMCUseMoneyTotalInfo.Head.SubCmd))] = m_NAtagMCUseMoneyTotalInfo
+
+
+#------------------------------------------------------
+# B1 14 仙宫信息 #tagMCXiangongInfo
+
+class tagMCXiangong(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("XiangongID", c_ushort), # 仙宫ID
+ ("LikeStateToday", 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.XiangongID = 0
+ self.LikeStateToday = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCXiangong)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo:
+ XiangongID:%d,
+ LikeStateToday:%d
+ '''\
+ %(
+ self.XiangongID,
+ self.LikeStateToday
+ )
+ return DumpString
+
+
+class tagMCXiangongInfo(Structure):
+ Head = tagHead()
+ LikeStateToday = 0 #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫
+ XiangongCount = 0 #(BYTE XiangongCount)
+ XiangongList = list() #(vector<tagMCXiangong> XiangongList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x14
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.XiangongCount):
+ temXiangongList = tagMCXiangong()
+ _pos = temXiangongList.ReadData(_lpData, _pos)
+ self.XiangongList.append(temXiangongList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x14
+ self.LikeStateToday = 0
+ self.XiangongCount = 0
+ self.XiangongList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.XiangongCount):
+ length += self.XiangongList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.LikeStateToday)
+ data = CommFunc.WriteBYTE(data, self.XiangongCount)
+ for i in range(self.XiangongCount):
+ data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ LikeStateToday:%d,
+ XiangongCount:%d,
+ XiangongList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.LikeStateToday,
+ self.XiangongCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCXiangongInfo=tagMCXiangongInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo
+
+
+#------------------------------------------------------
# B1 20 战令信息 #tagMCZhanlingInfo
class tagMCZhanling(Structure):
_pack_ = 1
_fields_ = [
("NeedValue", c_int), # 奖励所需值
- ("FreeRewardState", c_ubyte), # 免费奖励是否已领取
- ("ZLRewardState", c_ubyte), # 战令奖励是否已领取
+ ("FreeRewardState", c_ubyte), # 免费战令奖励是否已领取
+ ("ZLRewardState", c_ubyte), # 普通战令奖励是否已领取
+ ("ZLRewardStateH", c_ubyte), # 高级战令奖励是否已领取
]
def __init__(self):
@@ -46877,6 +51925,7 @@
self.NeedValue = 0
self.FreeRewardState = 0
self.ZLRewardState = 0
+ self.ZLRewardStateH = 0
return
def GetLength(self):
@@ -46889,12 +51938,14 @@
DumpString = '''// B1 20 战令信息 //tagMCZhanlingInfo:
NeedValue:%d,
FreeRewardState:%d,
- ZLRewardState:%d
+ ZLRewardState:%d,
+ ZLRewardStateH:%d
'''\
%(
self.NeedValue,
self.FreeRewardState,
- self.ZLRewardState
+ self.ZLRewardState,
+ self.ZLRewardStateH
)
return DumpString
@@ -46902,7 +51953,9 @@
class tagMCZhanlingInfo(Structure):
Head = tagHead()
ZhanlingType = 0 #(BYTE ZhanlingType)// 战令类型
- IsActivite = 0 #(BYTE IsActivite)// 是否已激活
+ IsActivite = 0 #(BYTE IsActivite)// 普通战令是否已激活
+ IsActiviteH = 0 #(BYTE IsActiviteH)// 高级战令是否已激活
+ Value1 = 0 #(DWORD Value1)// 战令对应的自定义值,可选,如登录战令代表开始计算日期时间戳
RewardCount = 0 #(WORD RewardCount)
RewardList = list() #(vector<tagMCZhanling> RewardList)
data = None
@@ -46918,6 +51971,8 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.ZhanlingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsActivite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsActiviteH,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.RewardCount):
temRewardList = tagMCZhanling()
@@ -46932,6 +51987,8 @@
self.Head.SubCmd = 0x20
self.ZhanlingType = 0
self.IsActivite = 0
+ self.IsActiviteH = 0
+ self.Value1 = 0
self.RewardCount = 0
self.RewardList = list()
return
@@ -46941,6 +51998,8 @@
length += self.Head.GetLength()
length += 1
length += 1
+ length += 1
+ length += 4
length += 2
for i in range(self.RewardCount):
length += self.RewardList[i].GetLength()
@@ -46952,6 +52011,8 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteBYTE(data, self.ZhanlingType)
data = CommFunc.WriteBYTE(data, self.IsActivite)
+ data = CommFunc.WriteBYTE(data, self.IsActiviteH)
+ data = CommFunc.WriteDWORD(data, self.Value1)
data = CommFunc.WriteWORD(data, self.RewardCount)
for i in range(self.RewardCount):
data = CommFunc.WriteString(data, self.RewardList[i].GetLength(), self.RewardList[i].GetBuffer())
@@ -46962,6 +52023,8 @@
Head:%s,
ZhanlingType:%d,
IsActivite:%d,
+ IsActiviteH:%d,
+ Value1:%d,
RewardCount:%d,
RewardList:%s
'''\
@@ -46969,6 +52032,8 @@
self.Head.OutputString(),
self.ZhanlingType,
self.IsActivite,
+ self.IsActiviteH,
+ self.Value1,
self.RewardCount,
"..."
)
@@ -50647,6 +55712,7 @@
("EnterCountWeek", c_int), # 本周总参与次数
("BuyOpenCountWeek", c_int), # 本周总购买召集次数
("HighScoreTotalWeek", c_int), # 本周每日最高分累加总分
+ ("ZoneID", c_ubyte), # 所属分区ID
]
def __init__(self):
@@ -50668,6 +55734,7 @@
self.EnterCountWeek = 0
self.BuyOpenCountWeek = 0
self.HighScoreTotalWeek = 0
+ self.ZoneID = 0
return
def GetLength(self):
@@ -50684,7 +55751,8 @@
HighScoreToday:%d,
EnterCountWeek:%d,
BuyOpenCountWeek:%d,
- HighScoreTotalWeek:%d
+ HighScoreTotalWeek:%d,
+ ZoneID:%d
'''\
%(
self.Cmd,
@@ -50693,7 +55761,8 @@
self.HighScoreToday,
self.EnterCountWeek,
self.BuyOpenCountWeek,
- self.HighScoreTotalWeek
+ self.HighScoreTotalWeek,
+ self.ZoneID
)
return DumpString
--
Gitblit v1.8.0