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 | 4738 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 4,576 insertions(+), 162 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 5f9b483..d511bef 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -1180,6 +1180,7 @@
Job = 0 #(BYTE Job)// 玩家职业
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -1198,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):
@@ -1212,6 +1214,7 @@
self.Job = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -1223,6 +1226,7 @@
length += 2
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -1237,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):
@@ -1248,7 +1253,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -1258,7 +1264,8 @@
self.LV,
self.Job,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -1740,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
@@ -1752,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
@@ -1759,6 +1770,8 @@
self.NameLen = 0
self.Name = ""
self.PlayeJob = 0
+ self.Face = 0
+ self.FacePic = 0
self.MoneyNum = 0
return
@@ -1768,6 +1781,8 @@
length += len(self.Name)
length += 1
length += 4
+ length += 4
+ length += 4
return length
@@ -1776,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
@@ -1784,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
@@ -1878,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)//获得途径
@@ -1900,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)
@@ -1917,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
@@ -1935,6 +1962,8 @@
length += len(self.Name)
length += 4
length += 1
+ length += 4
+ length += 4
length += 1
length += 4
length += 1
@@ -1954,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)
@@ -1972,6 +2003,8 @@
Name:%s,
Time:%d,
PlayeJob:%d,
+ Face:%d,
+ FacePic:%d,
MoneyType:%d,
MoneyNum:%d,
GetWay:%d,
@@ -1988,6 +2021,8 @@
self.Name,
self.Time,
self.PlayeJob,
+ self.Face,
+ self.FacePic,
self.MoneyType,
self.MoneyNum,
self.GetWay,
@@ -2416,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):
@@ -2438,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):
@@ -2455,6 +2492,7 @@
self.WarRank = 0
self.TotalFightPower = 0
self.TotalFightPowerEx = 0
+ self.EmblemID = 0
return
def GetLength(self):
@@ -2473,6 +2511,7 @@
length += 1
length += 4
length += 4
+ length += 1
return length
@@ -2492,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):
@@ -2509,7 +2549,8 @@
JoinAccept:%d,
WarRank:%d,
TotalFightPower:%d,
- TotalFightPowerEx:%d
+ TotalFightPowerEx:%d,
+ EmblemID:%d
'''\
%(
self.FamilyIndex,
@@ -2525,7 +2566,8 @@
self.JoinAccept,
self.WarRank,
self.TotalFightPower,
- self.TotalFightPowerEx
+ self.TotalFightPowerEx,
+ self.EmblemID
)
return DumpString
@@ -5269,6 +5311,7 @@
Job = 0 #(BYTE Job)
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5283,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):
@@ -5292,6 +5336,7 @@
self.Job = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5301,6 +5346,7 @@
length += 4
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -5313,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):
@@ -5322,7 +5369,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.ID,
@@ -5330,7 +5378,8 @@
self.LV,
self.Job,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5411,6 +5460,7 @@
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5425,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):
@@ -5434,6 +5485,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5443,6 +5495,7 @@
length += 1
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -5455,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):
@@ -5464,7 +5518,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -5472,7 +5527,8 @@
self.Job,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5775,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
#------------------------------------------------------
@@ -7323,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)
@@ -7342,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)
@@ -7356,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
@@ -7374,6 +7786,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
@@ -7387,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)
@@ -7402,6 +7818,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7415,6 +7833,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -7873,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)
@@ -7897,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)
@@ -7917,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
@@ -7938,6 +8364,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
length += 19
@@ -7954,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)
@@ -7972,6 +8402,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7988,6 +8420,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -8572,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):
@@ -8585,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):
@@ -8593,6 +9031,8 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8602,6 +9042,8 @@
length += 1
length += 2
length += 1
+ length += 4
+ length += 4
return length
@@ -8612,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):
@@ -8620,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
@@ -8957,6 +9405,7 @@
LV = 0 #(WORD LV)
RealmLV = 0 #(WORD RealmLV)//境界等级
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -8973,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):
@@ -8985,6 +9435,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8994,6 +9445,7 @@
length += 33
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -9006,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):
@@ -9015,7 +9468,8 @@
Name:%s,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -9023,7 +9477,8 @@
self.Name,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -9771,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):
@@ -10094,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):
@@ -10114,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):
@@ -10130,6 +10647,7 @@
self.IsInTeam = 0
self.ServerGroupID = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -10142,6 +10660,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
@@ -10159,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):
@@ -10172,7 +10692,8 @@
OnlineType:%d,
IsInTeam:%d,
ServerGroupID:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -10184,7 +10705,8 @@
self.OnlineType,
self.IsInTeam,
self.ServerGroupID,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -10260,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):
@@ -10275,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):
@@ -10285,6 +10809,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -10295,6 +10820,7 @@
length += 2
length += 2
length += 1
+ length += 4
length += 4
return length
@@ -10308,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):
@@ -10318,7 +10845,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -10327,7 +10855,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -12634,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):
@@ -12945,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):
@@ -12955,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):
@@ -12970,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):
@@ -12980,6 +14424,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -12991,6 +14437,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
return length
@@ -13003,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):
@@ -13013,7 +14463,9 @@
LV:%d,
Job:%d,
JobLevel:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -13022,7 +14474,9 @@
self.LV,
self.Job,
self.JobLevel,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -13634,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
@@ -13654,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)
@@ -13669,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
@@ -13685,6 +15145,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
length += 1
length += 4
length += 1
@@ -13702,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)
@@ -13718,6 +15182,8 @@
Job:%d,
JobLevel:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
PlayerState:%d,
MapID:%d,
LineID:%d
@@ -13732,6 +15198,8 @@
self.Job,
self.JobLevel,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.PlayerState,
self.MapID,
self.LineID
@@ -14707,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):
@@ -14723,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):
@@ -14734,6 +16206,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -14746,6 +16220,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -14759,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):
@@ -14770,7 +16248,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -14780,7 +16260,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -15728,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):
@@ -15744,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):
@@ -15755,6 +17241,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -15767,6 +17255,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -15780,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):
@@ -15791,7 +17283,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -15801,7 +17295,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -17782,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
@@ -17890,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
@@ -17994,6 +19492,7 @@
self.ExAttr20 = 0
self.HPEx = 0
self.Face = 0
+ self.FacePic = 0
self.RoleType = 0
return
@@ -18087,6 +19586,7 @@
length += 4
length += 4
length += 15
+ length += 4
length += 4
length += 4
length += 4
@@ -18199,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
@@ -18301,6 +19802,7 @@
ExAttr20:%d,
HPEx:%d,
Face:%d,
+ FacePic:%d,
RoleType:%d
'''\
%(
@@ -18401,6 +19903,7 @@
self.ExAttr20,
self.HPEx,
self.Face,
+ self.FacePic,
self.RoleType
)
return DumpString
@@ -27234,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
@@ -27366,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,个数,是否绑定], ...]
@@ -27381,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)
@@ -27392,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 = ""
@@ -27401,6 +28892,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
length += 2
length += 2
@@ -27411,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)
@@ -27420,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
@@ -29267,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):
@@ -29287,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
#------------------------------------------------------
@@ -29612,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
#------------------------------------------------------
@@ -32158,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):
@@ -32183,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):
@@ -32191,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):
@@ -32202,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
@@ -32214,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):
@@ -32222,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
@@ -32651,6 +34405,7 @@
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):
@@ -32677,6 +34432,7 @@
temBuyCountGiftList = tagMCActBuyCountGift()
_pos = temBuyCountGiftList.ReadData(_lpData, _pos)
self.BuyCountGiftList.append(temBuyCountGiftList)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -32694,6 +34450,7 @@
self.CTGIDList = list()
self.GiftCount = 0
self.BuyCountGiftList = list()
+ self.ShopType = 0
return
def GetLength(self):
@@ -32710,6 +34467,7 @@
length += 1
for i in range(self.GiftCount):
length += self.BuyCountGiftList[i].GetLength()
+ length += 2
return length
@@ -32728,6 +34486,7 @@
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):
@@ -32742,7 +34501,8 @@
CTGIDCount:%d,
CTGIDList:%s,
GiftCount:%d,
- BuyCountGiftList:%s
+ BuyCountGiftList:%s,
+ ShopType:%d
'''\
%(
self.Head.OutputString(),
@@ -32755,7 +34515,8 @@
self.CTGIDCount,
"...",
self.GiftCount,
- "..."
+ "...",
+ self.ShopType
)
return DumpString
@@ -34721,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):
@@ -34860,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
#------------------------------------------------------
@@ -37008,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):
@@ -37030,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):
@@ -37045,6 +39522,7 @@
self.LimitLV = 0
self.TaskCount = 0
self.TaskList = list()
+ self.RoundMax = 0
return
def GetLength(self):
@@ -37059,6 +39537,7 @@
length += 1
for i in range(self.TaskCount):
length += self.TaskList[i].GetLength()
+ length += 1
return length
@@ -37074,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):
@@ -37086,7 +39566,8 @@
ResetType:%d,
LimitLV:%d,
TaskCount:%d,
- TaskList:%s
+ TaskList:%s,
+ RoundMax:%d
'''\
%(
self.Head.OutputString(),
@@ -37097,7 +39578,8 @@
self.ResetType,
self.LimitLV,
self.TaskCount,
- "..."
+ "...",
+ self.RoundMax
)
return DumpString
@@ -37114,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):
@@ -37130,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):
@@ -37140,6 +39624,7 @@
self.ActNum = 0
self.AwardCount = 0
self.AwardRecordList = list()
+ self.RoundNum = 0
return
def GetLength(self):
@@ -37148,6 +39633,7 @@
length += 1
length += 1
length += 4 * self.AwardCount
+ length += 1
return length
@@ -37158,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):
@@ -37165,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
@@ -38333,6 +40822,7 @@
("ItemCount", c_ushort),
("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ("LotteryScore", c_int), #当前抽奖积分
]
def __init__(self):
@@ -38355,6 +40845,7 @@
self.ItemCount = 0
self.PosNum = 0
self.TotalTimesNow = 0
+ self.LotteryScore = 0
return
def GetLength(self):
@@ -38372,7 +40863,8 @@
ItemID:%d,
ItemCount:%d,
PosNum:%d,
- TotalTimesNow:%d
+ TotalTimesNow:%d,
+ LotteryScore:%d
'''\
%(
self.Cmd,
@@ -38382,7 +40874,8 @@
self.ItemID,
self.ItemCount,
self.PosNum,
- self.TotalTimesNow
+ self.TotalTimesNow,
+ self.LotteryScore
)
return DumpString
@@ -38394,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-策划自定义库
@@ -38426,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,
@@ -38453,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)
@@ -38504,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
@@ -38524,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()
@@ -38545,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())
@@ -38565,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,
@@ -38581,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,
@@ -38597,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
#------------------------------------------------------
@@ -39567,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):
@@ -39592,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):
@@ -39600,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):
@@ -39611,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
@@ -39623,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):
@@ -39631,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
@@ -39654,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)
@@ -39680,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()
@@ -39708,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
@@ -39728,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()
@@ -39751,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())
@@ -39773,8 +42640,6 @@
JoinEndTime:%s,
IsDayReset:%d,
ResetType:%d,
- RankLimitPersonal:%d,
- RankLimitFamily:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s,
FamilyBillCount:%d,
@@ -39791,8 +42656,6 @@
self.JoinEndTime,
self.IsDayReset,
self.ResetType,
- self.RankLimitPersonal,
- self.RankLimitFamily,
self.PersonalBillCount,
"...",
self.FamilyBillCount,
@@ -39803,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
#------------------------------------------------------
@@ -46471,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):
@@ -47431,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):
@@ -47488,6 +51675,229 @@
m_NAtagMCTreeInfo=tagMCTreeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTreeInfo.Cmd,m_NAtagMCTreeInfo.SubCmd))] = m_NAtagMCTreeInfo
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -51302,6 +55712,7 @@
("EnterCountWeek", c_int), # 本周总参与次数
("BuyOpenCountWeek", c_int), # 本周总购买召集次数
("HighScoreTotalWeek", c_int), # 本周每日最高分累加总分
+ ("ZoneID", c_ubyte), # 所属分区ID
]
def __init__(self):
@@ -51323,6 +55734,7 @@
self.EnterCountWeek = 0
self.BuyOpenCountWeek = 0
self.HighScoreTotalWeek = 0
+ self.ZoneID = 0
return
def GetLength(self):
@@ -51339,7 +55751,8 @@
HighScoreToday:%d,
EnterCountWeek:%d,
BuyOpenCountWeek:%d,
- HighScoreTotalWeek:%d
+ HighScoreTotalWeek:%d,
+ ZoneID:%d
'''\
%(
self.Cmd,
@@ -51348,7 +55761,8 @@
self.HighScoreToday,
self.EnterCountWeek,
self.BuyOpenCountWeek,
- self.HighScoreTotalWeek
+ self.HighScoreTotalWeek,
+ self.ZoneID
)
return DumpString
--
Gitblit v1.8.0