From cf12ea809cd7c5b063ae284afc76e175df83d62d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 一月 2025 18:56:58 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(优化不创建战斗PK时玩家自身镜像数据同步;)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 3969 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 3,730 insertions(+), 239 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index da26209..29da48e 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
@@ -2954,7 +2996,6 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
- Face = 0 #(DWORD Face)//基本脸型
FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
Score = 0 #(DWORD Score)//积分
@@ -2962,6 +3003,8 @@
AddScore = "" #(String AddScore)//本次对战增加的积分,有正负
IsWin = 0 #(BYTE IsWin)//是否获胜
Time = 0 #(DWORD Time)//时间戳
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -2975,7 +3018,6 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -2983,6 +3025,8 @@
self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -2991,7 +3035,6 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
- self.Face = 0
self.FightPower = 0
self.FightPowerEx = 0
self.Score = 0
@@ -2999,6 +3042,8 @@
self.AddScore = ""
self.IsWin = 0
self.Time = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -3011,10 +3056,11 @@
length += 4
length += 4
length += 4
- length += 4
length += 1
length += len(self.AddScore)
length += 1
+ length += 4
+ length += 4
length += 4
return length
@@ -3026,7 +3072,6 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteDWORD(data, self.Score)
@@ -3034,6 +3079,8 @@
data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
data = CommFunc.WriteBYTE(data, self.IsWin)
data = CommFunc.WriteDWORD(data, self.Time)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -3043,14 +3090,15 @@
Job:%d,
LV:%d,
RealmLV:%d,
- Face:%d,
FightPower:%d,
FightPowerEx:%d,
Score:%d,
AddScoreLen:%d,
AddScore:%s,
IsWin:%d,
- Time:%d
+ Time:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -3058,14 +3106,15 @@
self.Job,
self.LV,
self.RealmLV,
- self.Face,
self.FightPower,
self.FightPowerEx,
self.Score,
self.AddScoreLen,
self.AddScore,
self.IsWin,
- self.Time
+ self.Time,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -3145,10 +3194,11 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
- Face = 0 #(DWORD Face)//基本脸型
FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
Score = 0 #(DWORD Score)//积分
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -3162,10 +3212,11 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -3174,10 +3225,11 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
- self.Face = 0
self.FightPower = 0
self.FightPowerEx = 0
self.Score = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -3187,6 +3239,7 @@
length += 1
length += 2
length += 2
+ length += 4
length += 4
length += 4
length += 4
@@ -3201,10 +3254,11 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteDWORD(data, self.Score)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -3214,10 +3268,11 @@
Job:%d,
LV:%d,
RealmLV:%d,
- Face:%d,
FightPower:%d,
FightPowerEx:%d,
- Score:%d
+ Score:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -3225,10 +3280,11 @@
self.Job,
self.LV,
self.RealmLV,
- self.Face,
self.FightPower,
self.FightPowerEx,
- self.Score
+ self.Score,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -4659,7 +4715,7 @@
ID = 0 #(DWORD ID)
ID2 = 0 #(DWORD ID2)
Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
- Name2 = "" #(char Name2[33])//名字2
+ Name2 = "" #(char Name2[65])//名字2
Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级
Value2 = 0 #(DWORD Value2)//排序依赖的值,比如,战斗力
@@ -4686,7 +4742,7 @@
self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -4731,7 +4787,7 @@
length += 4
length += 4
length += 33
- length += 33
+ length += 65
length += 1
length += 4
length += 4
@@ -4755,7 +4811,7 @@
data = CommFunc.WriteDWORD(data, self.ID)
data = CommFunc.WriteDWORD(data, self.ID2)
data = CommFunc.WriteString(data, 33, self.Name1)
- data = CommFunc.WriteString(data, 33, self.Name2)
+ data = CommFunc.WriteString(data, 65, self.Name2)
data = CommFunc.WriteBYTE(data, self.Type2)
data = CommFunc.WriteDWORD(data, self.Value1)
data = CommFunc.WriteDWORD(data, self.Value2)
@@ -5269,6 +5325,7 @@
Job = 0 #(BYTE Job)
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5283,6 +5340,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 +5350,7 @@
self.Job = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5301,6 +5360,7 @@
length += 4
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -5313,6 +5373,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 +5383,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.ID,
@@ -5330,7 +5392,8 @@
self.LV,
self.Job,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5411,6 +5474,7 @@
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -5425,6 +5489,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 +5499,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -5443,6 +5509,7 @@
length += 1
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -5455,6 +5522,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 +5532,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -5472,7 +5541,8 @@
self.Job,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -5775,6 +5845,384 @@
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)// 玩家境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
+ 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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_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.Face = 0
+ self.FacePic = 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 += 4
+ 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.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
+ 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,
+ Face:%d,
+ FacePic:%d,
+ EquipShowSwitch:%d,
+ EquipShowIDCount:%d,
+ EquipShowID:%s
+ '''\
+ %(
+ self.AddTime,
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.Face,
+ self.FacePic,
+ 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)// 玩家境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
+ 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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_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
+ self.Face = 0
+ self.FacePic = 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
+ length += 4
+ length += 4
+
+ 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.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AddTime:%d,
+ ServerID:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
+ '''\
+ %(
+ self.AddTime,
+ self.ServerID,
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV,
+ self.Face,
+ self.FacePic
+ )
+ 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 +7771,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 +7792,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 +7808,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 +7828,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
@@ -7387,6 +7843,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 +7860,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7415,6 +7875,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -7873,6 +8335,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 +8361,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 +8383,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 +8406,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 2
length += len(self.ExData)
length += 19
@@ -7954,6 +8424,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 +8444,8 @@
Job:%d,
LV:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
MapID:%d,
LineID:%d,
NPCID:%d,
@@ -7988,6 +8462,8 @@
self.Job,
self.LV,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.MapID,
self.LineID,
self.NPCID,
@@ -8091,7 +8567,9 @@
RobPlayerID = 0 #(DWORD RobPlayerID)// 抢夺玩家ID,为0时代表没人抢夺
RobWorkerCount = 0 #(BYTE RobWorkerCount)// 抢夺工人个数
RobPlayerName = "" #(char RobPlayerName[33])
+ RobJob = 0 #(BYTE RobJob)
RobFace = 0 #(DWORD RobFace)
+ RobFacePic = 0 #(DWORD RobFacePic)
data = None
def __init__(self):
@@ -8113,7 +8591,9 @@
self.RobPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RobWorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RobPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.RobJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RobFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RobFacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8130,7 +8610,9 @@
self.RobPlayerID = 0
self.RobWorkerCount = 0
self.RobPlayerName = ""
+ self.RobJob = 0
self.RobFace = 0
+ self.RobFacePic = 0
return
def GetLength(self):
@@ -8148,6 +8630,8 @@
length += 4
length += 1
length += 33
+ length += 1
+ length += 4
length += 4
return length
@@ -8167,7 +8651,9 @@
data = CommFunc.WriteDWORD(data, self.RobPlayerID)
data = CommFunc.WriteBYTE(data, self.RobWorkerCount)
data = CommFunc.WriteString(data, 33, self.RobPlayerName)
+ data = CommFunc.WriteBYTE(data, self.RobJob)
data = CommFunc.WriteDWORD(data, self.RobFace)
+ data = CommFunc.WriteDWORD(data, self.RobFacePic)
return data
def OutputString(self):
@@ -8185,7 +8671,9 @@
RobPlayerID:%d,
RobWorkerCount:%d,
RobPlayerName:%s,
- RobFace:%d
+ RobJob:%d,
+ RobFace:%d,
+ RobFacePic:%d
'''\
%(
self.Index,
@@ -8201,7 +8689,9 @@
self.RobPlayerID,
self.RobWorkerCount,
self.RobPlayerName,
- self.RobFace
+ self.RobJob,
+ self.RobFace,
+ self.RobFacePic
)
return DumpString
@@ -8209,7 +8699,9 @@
class tagGCMineArea(Structure):
PlayerID = 0 #(DWORD PlayerID)// 福地所属玩家ID,可能是自己或其他玩家ID,当ID小于10000时为假人
PlayerName = "" #(char PlayerName[33])// 可能为空,如自己或假人
+ Job = 0 #(BYTE Job)
Face = 0 #(DWORD Face)
+ FacePic = 0 #(DWORD FacePic)
MineCount = 0 #(BYTE MineCount)
MineItemList = list() #(vector<tagGCMineItem> MineItemList)// 矿物列表
data = None
@@ -8222,7 +8714,9 @@
self.Clear()
self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MineCount):
temMineItemList = tagGCMineItem()
@@ -8233,7 +8727,9 @@
def Clear(self):
self.PlayerID = 0
self.PlayerName = ""
+ self.Job = 0
self.Face = 0
+ self.FacePic = 0
self.MineCount = 0
self.MineItemList = list()
return
@@ -8242,6 +8738,8 @@
length = 0
length += 4
length += 33
+ length += 1
+ length += 4
length += 4
length += 1
for i in range(self.MineCount):
@@ -8253,7 +8751,9 @@
data = ''
data = CommFunc.WriteDWORD(data, self.PlayerID)
data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteBYTE(data, self.MineCount)
for i in range(self.MineCount):
data = CommFunc.WriteString(data, self.MineItemList[i].GetLength(), self.MineItemList[i].GetBuffer())
@@ -8263,14 +8763,18 @@
DumpString = '''
PlayerID:%d,
PlayerName:%s,
+ Job:%d,
Face:%d,
+ FacePic:%d,
MineCount:%d,
MineItemList:%s
'''\
%(
self.PlayerID,
self.PlayerName,
+ self.Job,
self.Face,
+ self.FacePic,
self.MineCount,
"..."
)
@@ -8366,7 +8870,9 @@
RecordTime = 0 #(DWORD RecordTime)// 记录时间戳
MineID = 0 #(WORD MineID)// 矿物ID,对应福地采集表中ID
TagPlayerName = "" #(char TagPlayerName[33])
+ TagJob = 0 #(BYTE TagJob)
TagFace = 0 #(DWORD TagFace)
+ TagFacePic = 0 #(DWORD TagFacePic)
data = None
def __init__(self):
@@ -8380,7 +8886,9 @@
self.RecordTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.TagFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TagFacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8389,7 +8897,9 @@
self.RecordTime = 0
self.MineID = 0
self.TagPlayerName = ""
+ self.TagJob = 0
self.TagFace = 0
+ self.TagFacePic = 0
return
def GetLength(self):
@@ -8399,6 +8909,8 @@
length += 4
length += 2
length += 33
+ length += 1
+ length += 4
length += 4
return length
@@ -8410,7 +8922,9 @@
data = CommFunc.WriteDWORD(data, self.RecordTime)
data = CommFunc.WriteWORD(data, self.MineID)
data = CommFunc.WriteString(data, 33, self.TagPlayerName)
+ data = CommFunc.WriteBYTE(data, self.TagJob)
data = CommFunc.WriteDWORD(data, self.TagFace)
+ data = CommFunc.WriteDWORD(data, self.TagFacePic)
return data
def OutputString(self):
@@ -8420,7 +8934,9 @@
RecordTime:%d,
MineID:%d,
TagPlayerName:%s,
- TagFace:%d
+ TagJob:%d,
+ TagFace:%d,
+ TagFacePic:%d
'''\
%(
self.RecordType,
@@ -8428,7 +8944,9 @@
self.RecordTime,
self.MineID,
self.TagPlayerName,
- self.TagFace
+ self.TagJob,
+ self.TagFace,
+ self.TagFacePic
)
return DumpString
@@ -8572,6 +9090,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 +9105,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 +9115,8 @@
self.Job = 0
self.LV = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8602,6 +9126,8 @@
length += 1
length += 2
length += 1
+ length += 4
+ length += 4
return length
@@ -8612,6 +9138,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 +9148,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 +9489,7 @@
LV = 0 #(WORD LV)
RealmLV = 0 #(WORD RealmLV)//境界等级
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -8973,6 +9506,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 +9519,7 @@
self.LV = 0
self.RealmLV = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -8994,6 +9529,7 @@
length += 33
length += 2
length += 2
+ length += 4
length += 4
return length
@@ -9006,6 +9542,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 +9552,8 @@
Name:%s,
LV:%d,
RealmLV:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -9023,7 +9561,8 @@
self.Name,
self.LV,
self.RealmLV,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -9771,6 +10310,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 +10693,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 +10714,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 +10731,7 @@
self.IsInTeam = 0
self.ServerGroupID = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -10142,6 +10744,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
@@ -10159,6 +10762,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 +10776,8 @@
OnlineType:%d,
IsInTeam:%d,
ServerGroupID:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -10184,7 +10789,8 @@
self.OnlineType,
self.IsInTeam,
self.ServerGroupID,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -10260,6 +10866,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 +10882,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 +10893,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -10295,6 +10904,7 @@
length += 2
length += 2
length += 1
+ length += 4
length += 4
return length
@@ -10308,6 +10918,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 +10929,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- Face:%d
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -10327,7 +10939,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.Face
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -12696,6 +13309,8 @@
LV = 0 #(WORD LV)// 玩家等级
Job = 0 #(BYTE Job)// 玩家职业
RealmLV = 0 #(WORD RealmLV)// 玩家境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)// 战力,求余亿
FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
Value1 = 0 #(DWORD Value1)//值1
@@ -12715,6 +13330,8 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
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)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -12729,6 +13346,8 @@
self.LV = 0
self.Job = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.FightPowerEx = 0
self.Value1 = 0
@@ -12748,6 +13367,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
return length
@@ -12760,6 +13381,8 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteDWORD(data, self.Value1)
@@ -12775,6 +13398,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
FightPowerEx:%d,
Value1:%d,
@@ -12788,6 +13413,8 @@
self.LV,
self.Job,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.FightPowerEx,
self.Value1,
@@ -13094,6 +13721,8 @@
LV = 0 #(WORD LV)// 玩家等级
Job = 0 #(BYTE Job)// 玩家职业
RealmLV = 0 #(WORD RealmLV)// 玩家境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)// 战力,求余亿
FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿
data = None
@@ -13111,6 +13740,8 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
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)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -13123,6 +13754,8 @@
self.LV = 0
self.Job = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.FightPowerEx = 0
return
@@ -13138,6 +13771,8 @@
length += 2
length += 4
length += 4
+ length += 4
+ length += 4
return length
@@ -13150,6 +13785,8 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
return data
@@ -13163,6 +13800,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
FightPowerEx:%d
'''\
@@ -13174,6 +13813,8 @@
self.LV,
self.Job,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.FightPowerEx
)
@@ -13188,8 +13829,11 @@
LV = 0 #(WORD LV)// 玩家等级
Job = 0 #(BYTE Job)// 玩家职业
RealmLV = 0 #(WORD RealmLV)// 玩家境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
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
@@ -13207,8 +13851,11 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
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)
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
@@ -13221,8 +13868,11 @@
self.LV = 0
self.Job = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.FightPowerEx = 0
+ self.OfflineValue = 0
self.Value1 = 0
self.Value2 = 0
return
@@ -13240,6 +13890,9 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
+ length += 4
return length
@@ -13252,8 +13905,11 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
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
@@ -13267,8 +13923,11 @@
LV:%d,
Job:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
FightPowerEx:%d,
+ OfflineValue:%d,
Value1:%d,
Value2:%d
'''\
@@ -13280,8 +13939,11 @@
self.LV,
self.Job,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.FightPowerEx,
+ self.OfflineValue,
self.Value1,
self.Value2
)
@@ -13859,6 +14521,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):
@@ -13874,6 +14538,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):
@@ -13884,6 +14550,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -13895,6 +14563,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
return length
@@ -13907,6 +14577,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):
@@ -13917,7 +14589,9 @@
LV:%d,
Job:%d,
JobLevel:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -13926,7 +14600,9 @@
self.LV,
self.Job,
self.JobLevel,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -14009,6 +14685,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):
@@ -14027,6 +14705,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):
@@ -14041,6 +14721,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -14053,6 +14735,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
return length
@@ -14066,6 +14750,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):
@@ -14077,7 +14763,9 @@
LV:%d,
Job:%d,
JobLevel:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -14087,7 +14775,9 @@
self.LV,
self.Job,
self.JobLevel,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -14538,6 +15228,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
@@ -14558,6 +15250,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)
@@ -14573,6 +15267,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
@@ -14589,6 +15285,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
length += 1
length += 4
length += 1
@@ -14606,6 +15304,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)
@@ -14622,6 +15322,8 @@
Job:%d,
JobLevel:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
PlayerState:%d,
MapID:%d,
LineID:%d
@@ -14636,6 +15338,8 @@
self.Job,
self.JobLevel,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.PlayerState,
self.MapID,
self.LineID
@@ -15611,6 +16315,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):
@@ -15627,6 +16333,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):
@@ -15638,6 +16346,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -15650,6 +16360,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -15663,6 +16375,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):
@@ -15674,7 +16388,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -15684,7 +16400,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -16140,7 +16858,7 @@
ID = 0 #(DWORD ID)
ID2 = 0 #(DWORD ID2)
Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
- Name2 = "" #(char Name2[33])//名字2
+ Name2 = "" #(char Name2[65])//名字2
Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
Value1 = 0 #(DWORD Value1)//自定义值1
Value2 = 0 #(DWORD Value2)//自定义值2
@@ -16167,7 +16885,7 @@
self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16212,7 +16930,7 @@
length += 4
length += 4
length += 33
- length += 33
+ length += 65
length += 1
length += 4
length += 4
@@ -16236,7 +16954,7 @@
data = CommFunc.WriteDWORD(data, self.ID)
data = CommFunc.WriteDWORD(data, self.ID2)
data = CommFunc.WriteString(data, 33, self.Name1)
- data = CommFunc.WriteString(data, 33, self.Name2)
+ data = CommFunc.WriteString(data, 65, self.Name2)
data = CommFunc.WriteBYTE(data, self.Type2)
data = CommFunc.WriteDWORD(data, self.Value1)
data = CommFunc.WriteDWORD(data, self.Value2)
@@ -16520,48 +17238,74 @@
# C0 15 跨服排位分区分组信息 #tagGCCrossChampionshipPKZoneGroupInfo
class tagGCCrossChampionshipPKBattle(Structure):
- _pack_ = 1
- _fields_ = [
- ("BattleNum", c_ubyte), # 对战组编号 1~n
- ("WinPlayerID", c_int), # 获胜玩家ID
- ("PlayerIDA", c_int), # 玩家IDA
- ("PlayerIDB", c_int), # 玩家IDB
- ]
+ BattleNum = 0 #(BYTE BattleNum)// 对战组编号 1~n
+ WinPlayerID = 0 #(DWORD WinPlayerID)// 获胜玩家ID
+ PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家IDA
+ PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家IDB
+ BattleRetLen = 0 #(BYTE BattleRetLen)
+ BattleRet = "" #(String BattleRet)// 战斗结果明细 {"playerID":[[第1局胜负,第1局总积分,胜负基础分,hp分,时间分], ...], ...}
+ data = None
def __init__(self):
self.Clear()
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.BattleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WinPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BattleRetLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.BattleRet,_pos = CommFunc.ReadString(_lpData, _pos,self.BattleRetLen)
+ return _pos
def Clear(self):
self.BattleNum = 0
self.WinPlayerID = 0
self.PlayerIDA = 0
self.PlayerIDB = 0
+ self.BattleRetLen = 0
+ self.BattleRet = ""
return
def GetLength(self):
- return sizeof(tagGCCrossChampionshipPKBattle)
+ length = 0
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.BattleRet)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.BattleNum)
+ data = CommFunc.WriteDWORD(data, self.WinPlayerID)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDA)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDB)
+ data = CommFunc.WriteBYTE(data, self.BattleRetLen)
+ data = CommFunc.WriteString(data, self.BattleRetLen, self.BattleRet)
+ return data
def OutputString(self):
- DumpString = '''// C0 15 跨服排位分区分组信息 //tagGCCrossChampionshipPKZoneGroupInfo:
+ DumpString = '''
BattleNum:%d,
WinPlayerID:%d,
PlayerIDA:%d,
- PlayerIDB:%d
+ PlayerIDB:%d,
+ BattleRetLen:%d,
+ BattleRet:%s
'''\
%(
self.BattleNum,
self.WinPlayerID,
self.PlayerIDA,
- self.PlayerIDB
+ self.PlayerIDB,
+ self.BattleRetLen,
+ self.BattleRet
)
return DumpString
@@ -16632,6 +17376,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):
@@ -16648,6 +17394,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):
@@ -16659,6 +17407,8 @@
self.FightPower = 0
self.FightPowerEx = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -16671,6 +17421,8 @@
length += 4
length += 4
length += 2
+ length += 4
+ length += 4
return length
@@ -16684,6 +17436,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):
@@ -16695,7 +17449,9 @@
LV:%d,
FightPower:%d,
FightPowerEx:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.PlayerID,
@@ -16705,7 +17461,9 @@
self.LV,
self.FightPower,
self.FightPowerEx,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -16824,6 +17582,8 @@
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)
Job = 0 #(BYTE Job)
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)
RealmLV = 0 #(WORD RealmLV)
PKScore = 0 #(DWORD PKScore)
@@ -16840,6 +17600,8 @@
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PKScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16851,6 +17613,8 @@
self.NameLen = 0
self.PlayerName = ""
self.Job = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.RealmLV = 0
self.PKScore = 0
@@ -16864,6 +17628,8 @@
length += len(self.PlayerName)
length += 1
length += 4
+ length += 4
+ length += 4
length += 2
length += 4
length += 1
@@ -16876,6 +17642,8 @@
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.PKScore)
@@ -16888,6 +17656,8 @@
NameLen:%d,
PlayerName:%s,
Job:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
RealmLV:%d,
PKScore:%d,
@@ -16898,6 +17668,8 @@
self.NameLen,
self.PlayerName,
self.Job,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.RealmLV,
self.PKScore,
@@ -16995,9 +17767,11 @@
PlayerName = "" #(String PlayerName)// 跨服名字
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
- MaxHP = 0 #(DWORD MaxHP)// 默认满血,求余亿部分
- MaxHPEx = 0 #(DWORD MaxHPEx)// 默认满血,整除亿部分
- MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
+ RealmLV = 0 #(WORD RealmLV)//境界
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
+ FightPower = 0 #(DWORD FightPower)//战力,求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力,整除亿部分
data = None
def __init__(self):
@@ -17011,9 +17785,11 @@
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxProDef,_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)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -17022,9 +17798,11 @@
self.PlayerName = ""
self.Job = 0
self.LV = 0
- self.MaxHP = 0
- self.MaxHPEx = 0
- self.MaxProDef = 0
+ self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
return
def GetLength(self):
@@ -17034,6 +17812,8 @@
length += len(self.PlayerName)
length += 1
length += 2
+ length += 2
+ length += 4
length += 4
length += 4
length += 4
@@ -17047,9 +17827,11 @@
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteDWORD(data, self.MaxHP)
- data = CommFunc.WriteDWORD(data, self.MaxHPEx)
- data = CommFunc.WriteDWORD(data, self.MaxProDef)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
return data
def OutputString(self):
@@ -17059,9 +17841,11 @@
PlayerName:%s,
Job:%d,
LV:%d,
- MaxHP:%d,
- MaxHPEx:%d,
- MaxProDef:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
+ FightPower:%d,
+ FightPowerEx:%d
'''\
%(
self.PlayerID,
@@ -17069,19 +17853,17 @@
self.PlayerName,
self.Job,
self.LV,
- self.MaxHP,
- self.MaxHPEx,
- self.MaxProDef
+ self.RealmLV,
+ self.Face,
+ self.FacePic,
+ self.FightPower,
+ self.FightPowerEx
)
return DumpString
class tagGCCrossRealmPKMatchOK(Structure):
Head = tagHead()
- RoomID = 0 #(WORD RoomID)// 房间ID
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)// 跨服名字
- Number = 0 #(BYTE Number)// 位置编号;1-左,2-右
MatchPlayerCount = 0 #(BYTE MatchPlayerCount)
MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
data = None
@@ -17095,10 +17877,6 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MatchPlayerCount):
temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
@@ -17111,10 +17889,6 @@
self.Head.Clear()
self.Head.Cmd = 0xC0
self.Head.SubCmd = 0x01
- self.RoomID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.Number = 0
self.MatchPlayerCount = 0
self.MatchPlayer = list()
return
@@ -17122,10 +17896,6 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 2
- length += 1
- length += len(self.PlayerName)
- length += 1
length += 1
for i in range(self.MatchPlayerCount):
length += self.MatchPlayer[i].GetLength()
@@ -17135,10 +17905,6 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.RoomID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.Number)
data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
for i in range(self.MatchPlayerCount):
data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
@@ -17147,19 +17913,11 @@
def OutputString(self):
DumpString = '''
Head:%s,
- RoomID:%d,
- NameLen:%d,
- PlayerName:%s,
- Number:%d,
MatchPlayerCount:%d,
MatchPlayer:%s
'''\
%(
self.Head.OutputString(),
- self.RoomID,
- self.NameLen,
- self.PlayerName,
- self.Number,
self.MatchPlayerCount,
"..."
)
@@ -18686,6 +19444,7 @@
ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
data = None
@@ -18794,6 +19553,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
@@ -18898,6 +19658,7 @@
self.ExAttr20 = 0
self.HPEx = 0
self.Face = 0
+ self.FacePic = 0
self.RoleType = 0
return
@@ -18991,6 +19752,7 @@
length += 4
length += 4
length += 15
+ length += 4
length += 4
length += 4
length += 4
@@ -19103,6 +19865,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
@@ -19205,6 +19968,7 @@
ExAttr20:%d,
HPEx:%d,
Face:%d,
+ FacePic:%d,
RoleType:%d
'''\
%(
@@ -19305,6 +20069,7 @@
self.ExAttr20,
self.HPEx,
self.Face,
+ self.FacePic,
self.RoleType
)
return DumpString
@@ -19660,6 +20425,7 @@
("SubCmd", c_ubyte),
("MapID", c_ushort),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -19678,6 +20444,7 @@
self.SubCmd = 0x26
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -19691,13 +20458,15 @@
Cmd:%s,
SubCmd:%s,
MapID:%d,
- FuncLineID:%d
+ FuncLineID:%d,
+ FuncMapID:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.MapID,
- self.FuncLineID
+ self.FuncLineID,
+ self.FuncMapID
)
return DumpString
@@ -19716,6 +20485,7 @@
("SubCmd", c_ubyte),
("MapID", c_int),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -19734,6 +20504,7 @@
self.SubCmd = 0x27
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -19747,13 +20518,15 @@
Cmd:%s,
SubCmd:%s,
MapID:%d,
- FuncLineID:%d
+ FuncLineID:%d,
+ FuncMapID:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.MapID,
- self.FuncLineID
+ self.FuncLineID,
+ self.FuncMapID
)
return DumpString
@@ -28137,13 +28910,11 @@
#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
-class tagMCTreasureTypeInfo(Structure):
+class tagMCTreasureGridLimit(Structure):
_pack_ = 1
_fields_ = [
- ("TreasureType", c_ubyte), #寻宝类型
- ("LuckValue", c_ushort), #当前幸运值
- ("TreasureCount", c_int), #已寻宝总次数
- ("FreeCountToday", c_ushort), #今日已免费寻宝次数
+ ("GridNum", c_ubyte), # 有限制抽取次数的格子编号
+ ("GridCnt", c_ushort), # 已抽到次数
]
def __init__(self):
@@ -28156,30 +28927,116 @@
return _pos + self.GetLength()
def Clear(self):
- self.TreasureType = 0
- self.LuckValue = 0
- self.TreasureCount = 0
- self.FreeCountToday = 0
+ self.GridNum = 0
+ self.GridCnt = 0
return
def GetLength(self):
- return sizeof(tagMCTreasureTypeInfo)
+ return sizeof(tagMCTreasureGridLimit)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
+ GridNum:%d,
+ GridCnt:%d
+ '''\
+ %(
+ self.GridNum,
+ self.GridCnt
+ )
+ return DumpString
+
+
+class tagMCTreasureTypeInfo(Structure):
+ TreasureType = 0 #(BYTE TreasureType)//寻宝类型
+ LuckValue = 0 #(WORD LuckValue)//当前幸运值
+ TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
+ TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
+ FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
+ TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
+ GridLimitCnt = 0 #(BYTE GridLimitCnt)
+ GridLimitCntList = list() #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GridLimitCnt):
+ temGridLimitCntList = tagMCTreasureGridLimit()
+ _pos = temGridLimitCntList.ReadData(_lpData, _pos)
+ self.GridLimitCntList.append(temGridLimitCntList)
+ return _pos
+
+ def Clear(self):
+ self.TreasureType = 0
+ self.LuckValue = 0
+ self.TreasureCount = 0
+ self.TreasureCountToday = 0
+ self.FreeCountToday = 0
+ self.TreasureCntAward = 0
+ self.GridLimitCnt = 0
+ self.GridLimitCntList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 4
+ length += 4
+ length += 2
+ length += 4
+ length += 1
+ for i in range(self.GridLimitCnt):
+ length += self.GridLimitCntList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TreasureType)
+ data = CommFunc.WriteWORD(data, self.LuckValue)
+ data = CommFunc.WriteDWORD(data, self.TreasureCount)
+ data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
+ data = CommFunc.WriteWORD(data, self.FreeCountToday)
+ data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
+ data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
+ for i in range(self.GridLimitCnt):
+ data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
TreasureType:%d,
LuckValue:%d,
TreasureCount:%d,
- FreeCountToday:%d
+ TreasureCountToday:%d,
+ FreeCountToday:%d,
+ TreasureCntAward:%d,
+ GridLimitCnt:%d,
+ GridLimitCntList:%s
'''\
%(
self.TreasureType,
self.LuckValue,
self.TreasureCount,
- self.FreeCountToday
+ self.TreasureCountToday,
+ self.FreeCountToday,
+ self.TreasureCntAward,
+ self.GridLimitCnt,
+ "..."
)
return DumpString
@@ -29357,6 +30214,62 @@
#------------------------------------------------------
+# A5 12 珍宝阁信息 #tagMCFamilyZhenbaogeInfo
+
+class tagMCFamilyZhenbaogeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CutState", c_ubyte), # 今日是否已砍价,此状态为全局状态,与盟Action砍价状态不同
+ ("BuyState", c_ubyte), # 今日是否已购买,此状态为全局状态,与盟Action购买状态不同
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x12
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x12
+ self.CutState = 0
+ self.BuyState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyZhenbaogeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 12 珍宝阁信息 //tagMCFamilyZhenbaogeInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CutState:%d,
+ BuyState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CutState,
+ self.BuyState
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyZhenbaogeInfo=tagMCFamilyZhenbaogeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenbaogeInfo.Cmd,m_NAtagMCFamilyZhenbaogeInfo.SubCmd))] = m_NAtagMCFamilyZhenbaogeInfo
+
+
+#------------------------------------------------------
# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
class tagMCFamilyZhenfa(Structure):
@@ -30163,18 +31076,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):
@@ -30183,33 +31095,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
#------------------------------------------------------
@@ -30508,6 +31485,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
#------------------------------------------------------
@@ -31997,6 +33086,218 @@
#------------------------------------------------------
+# A8 01 获得奖励信息 #tagMCGiveAwardInfo
+
+class tagMCGiveAwardMoney(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MoneyType", c_ubyte),
+ ("MoneyValue", 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.MoneyValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGiveAwardMoney)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+ MoneyType:%d,
+ MoneyValue:%d
+ '''\
+ %(
+ self.MoneyType,
+ self.MoneyValue
+ )
+ return DumpString
+
+
+class tagMCGiveAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_int),
+ ("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.Count = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGiveAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+ ItemID:%d,
+ Count:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCGiveAwardInfo(Structure):
+ Head = tagHead()
+ EventLen = 0 #(BYTE EventLen)
+ EventName = "" #(String EventName)
+ Exp = 0 #(DWORD Exp)// 奖励经验,求余亿部分
+ ExpPoint = 0 #(DWORD ExpPoint)// 奖励经验,整除亿部分
+ MoneyLen = 0 #(BYTE MoneyLen)
+ MoneyList = list() #(vector<tagMCGiveAwardMoney> MoneyList)// 奖励货币
+ ItemLen = 0 #(BYTE ItemLen)
+ ItemList = list() #(vector<tagMCGiveAwardItem> ItemList)// 奖励物品
+ DataLen = 0 #(WORD DataLen)
+ DataEx = "" #(String DataEx)// 扩展信息,可由不同的Event自定义信息内容
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EventLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EventName,_pos = CommFunc.ReadString(_lpData, _pos,self.EventLen)
+ self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MoneyLen):
+ temMoneyList = tagMCGiveAwardMoney()
+ _pos = temMoneyList.ReadData(_lpData, _pos)
+ self.MoneyList.append(temMoneyList)
+ self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemLen):
+ temItemList = tagMCGiveAwardItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
+ self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DataEx,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x01
+ self.EventLen = 0
+ self.EventName = ""
+ self.Exp = 0
+ self.ExpPoint = 0
+ self.MoneyLen = 0
+ self.MoneyList = list()
+ self.ItemLen = 0
+ self.ItemList = list()
+ self.DataLen = 0
+ self.DataEx = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.EventName)
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.MoneyLen):
+ length += self.MoneyList[i].GetLength()
+ length += 1
+ for i in range(self.ItemLen):
+ length += self.ItemList[i].GetLength()
+ length += 2
+ length += len(self.DataEx)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EventLen)
+ data = CommFunc.WriteString(data, self.EventLen, self.EventName)
+ data = CommFunc.WriteDWORD(data, self.Exp)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteBYTE(data, self.MoneyLen)
+ for i in range(self.MoneyLen):
+ data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ItemLen)
+ for i in range(self.ItemLen):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.DataLen)
+ data = CommFunc.WriteString(data, self.DataLen, self.DataEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EventLen:%d,
+ EventName:%s,
+ Exp:%d,
+ ExpPoint:%d,
+ MoneyLen:%d,
+ MoneyList:%s,
+ ItemLen:%d,
+ ItemList:%s,
+ DataLen:%d,
+ DataEx:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EventLen,
+ self.EventName,
+ self.Exp,
+ self.ExpPoint,
+ self.MoneyLen,
+ "...",
+ self.ItemLen,
+ "...",
+ self.DataLen,
+ self.DataEx
+ )
+ return DumpString
+
+
+m_NAtagMCGiveAwardInfo=tagMCGiveAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGiveAwardInfo.Head.Cmd,m_NAtagMCGiveAwardInfo.Head.SubCmd))] = m_NAtagMCGiveAwardInfo
+
+
+#------------------------------------------------------
# A8 12 守护成功拾取物品 #tagMCGuradPickupItemSucc
class tagMCGuradPickupItemSucc(Structure):
@@ -33054,12 +34355,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):
@@ -33079,6 +34440,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):
@@ -33087,6 +34454,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -33098,6 +34468,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
@@ -33110,6 +34484,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):
@@ -33118,13 +34496,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
@@ -35669,10 +37053,10 @@
return DumpString
-class tagMCActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -35681,7 +37065,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActGubaoItem()
@@ -35690,7 +37074,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -35706,7 +37090,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -35714,13 +37098,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -35734,6 +37201,7 @@
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
@@ -35753,6 +37221,7 @@
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()
@@ -35771,6 +37240,7 @@
self.JoinStartTime = ""
self.JoinEndTime = ""
self.LimitLV = 0
+ self.ShopType = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -35783,6 +37253,7 @@
length += 10
length += 5
length += 5
+ length += 2
length += 2
length += 1
for i in range(self.PersonalBillCount):
@@ -35799,6 +37270,7 @@
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())
@@ -35813,6 +37285,7 @@
JoinStartTime:%s,
JoinEndTime:%s,
LimitLV:%d,
+ ShopType:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -35824,6 +37297,7 @@
self.JoinStartTime,
self.JoinEndTime,
self.LimitLV,
+ self.ShopType,
self.PersonalBillCount,
"..."
)
@@ -36078,10 +37552,10 @@
return DumpString
-class tagMCActHorsePetTrainBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 奖励物品列表
+class tagMCActHorsePetTrainAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -36090,7 +37564,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActHorsePetTrainItem()
@@ -36099,7 +37573,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -36115,7 +37589,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -36123,13 +37597,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -36783,6 +38340,8 @@
DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
Count = 0 #(BYTE Count)// 奖励物品数
AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
+ CountEx = 0 #(BYTE CountEx)// 额外奖励物品数
+ AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表
data = None
def __init__(self):
@@ -36797,12 +38356,19 @@
temAwardItemList = tagMCActLoginNewItem()
_pos = temAwardItemList.ReadData(_lpData, _pos)
self.AwardItemList.append(temAwardItemList)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemListEx = tagMCActLoginNewItem()
+ _pos = temAwardItemListEx.ReadData(_lpData, _pos)
+ self.AwardItemListEx.append(temAwardItemListEx)
return _pos
def Clear(self):
self.DayNum = 0
self.Count = 0
self.AwardItemList = list()
+ self.CountEx = 0
+ self.AwardItemListEx = list()
return
def GetLength(self):
@@ -36811,6 +38377,9 @@
length += 1
for i in range(self.Count):
length += self.AwardItemList[i].GetLength()
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemListEx[i].GetLength()
return length
@@ -36820,17 +38389,24 @@
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.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
DayNum:%d,
Count:%d,
- AwardItemList:%s
+ AwardItemList:%s,
+ CountEx:%d,
+ AwardItemListEx:%s
'''\
%(
self.DayNum,
self.Count,
+ "...",
+ self.CountEx,
"..."
)
return DumpString
@@ -36844,6 +38420,7 @@
LimitLV = 0 #(WORD LimitLV)// 限制等级
RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型
RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值
+ AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励
DayCount = 0 #(BYTE DayCount)
AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
data = None
@@ -36863,6 +38440,7 @@
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.DayCount):
temAwardDayList = tagMCActLoginNewDay()
@@ -36881,6 +38459,7 @@
self.LimitLV = 0
self.RepSignMoneyType = 0
self.RepSignMoneyValue = 0
+ self.AwardExCTGID = 0
self.DayCount = 0
self.AwardDayList = list()
return
@@ -36894,6 +38473,7 @@
length += 2
length += 1
length += 4
+ length += 2
length += 1
for i in range(self.DayCount):
length += self.AwardDayList[i].GetLength()
@@ -36909,6 +38489,7 @@
data = CommFunc.WriteWORD(data, self.LimitLV)
data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
+ data = CommFunc.WriteWORD(data, self.AwardExCTGID)
data = CommFunc.WriteBYTE(data, self.DayCount)
for i in range(self.DayCount):
data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
@@ -36923,6 +38504,7 @@
LimitLV:%d,
RepSignMoneyType:%d,
RepSignMoneyValue:%d,
+ AwardExCTGID:%d,
DayCount:%d,
AwardDayList:%s
'''\
@@ -36934,6 +38516,7 @@
self.LimitLV,
self.RepSignMoneyType,
self.RepSignMoneyValue,
+ self.AwardExCTGID,
self.DayCount,
"..."
)
@@ -36953,7 +38536,8 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("ActNum", c_ubyte), # 活动编号
- ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取
+ ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取
+ ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取
]
def __init__(self):
@@ -36972,6 +38556,7 @@
self.SubCmd = 0x70
self.ActNum = 0
self.LoginAward = 0
+ self.LoginAwardEx = 0
return
def GetLength(self):
@@ -36985,19 +38570,402 @@
Cmd:%s,
SubCmd:%s,
ActNum:%d,
- LoginAward:%d
+ LoginAward:%d,
+ LoginAwardEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.ActNum,
- self.LoginAward
+ self.LoginAward,
+ self.LoginAwardEx
)
return DumpString
m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
+
+
+#------------------------------------------------------
+# AA 88 轮回殿活动信息 #tagMCActLunhuidianInfo
+
+class tagMCActLunhuidianItem(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(tagMCActLunhuidianItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 88 轮回殿活动信息 //tagMCActLunhuidianInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励记录索引 0~30
+ NeedValue = 0 #(DWORD NeedValue)// 奖励所需值
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActLunhuidianItem> AwardItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActLunhuidianItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedValue = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedValue)
+ 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 = '''
+ AwardIndex:%d,
+ NeedValue:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedValue,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianRound(Structure):
+ RoundType = 0 #(BYTE RoundType)// 轮回类型
+ AwardType = 0 #(BYTE AwardType)// 奖励类型 1-消耗货币;2-寻宝次数
+ AwardTypeValue = 0 #(DWORD AwardTypeValue)// 奖励类型对应值,消耗货币时为对应的货币类型,寻宝时为对应的寻宝类型
+ RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardList = list() #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表
+ CTGIDCount = 0 #(BYTE CTGIDCount)
+ CTGIDList = list() #(vector<WORD> CTGIDList)// CTGID列表
+ ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.RoundType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardTypeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardList = tagMCActLunhuidianAward()
+ _pos = temAwardList.ReadData(_lpData, _pos)
+ self.AwardList.append(temAwardList)
+ self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CTGIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CTGIDList.append(value)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.RoundType = 0
+ self.AwardType = 0
+ self.AwardTypeValue = 0
+ self.RoundMax = 0
+ self.AwardCount = 0
+ self.AwardList = list()
+ self.CTGIDCount = 0
+ self.CTGIDList = list()
+ self.ShopType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardList[i].GetLength()
+ length += 1
+ length += 2 * self.CTGIDCount
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.RoundType)
+ data = CommFunc.WriteBYTE(data, self.AwardType)
+ data = CommFunc.WriteDWORD(data, self.AwardTypeValue)
+ data = CommFunc.WriteBYTE(data, self.RoundMax)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.CTGIDCount)
+ for i in range(self.CTGIDCount):
+ data = CommFunc.WriteWORD(data, self.CTGIDList[i])
+ data = CommFunc.WriteWORD(data, self.ShopType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ RoundType:%d,
+ AwardType:%d,
+ AwardTypeValue:%d,
+ RoundMax:%d,
+ AwardCount:%d,
+ AwardList:%s,
+ CTGIDCount:%d,
+ CTGIDList:%s,
+ ShopType:%d
+ '''\
+ %(
+ self.RoundType,
+ self.AwardType,
+ self.AwardTypeValue,
+ self.RoundMax,
+ self.AwardCount,
+ "...",
+ self.CTGIDCount,
+ "...",
+ self.ShopType
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ RoundCount = 0 #(BYTE RoundCount)
+ RoundList = list() #(vector<tagMCActLunhuidianRound> RoundList)// 轮回列表,支持多个不同类型轮回同时开启
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x88
+ 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RoundCount):
+ temRoundList = tagMCActLunhuidianRound()
+ _pos = temRoundList.ReadData(_lpData, _pos)
+ self.RoundList.append(temRoundList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x88
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.RoundCount = 0
+ self.RoundList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.RoundCount):
+ length += self.RoundList[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.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.RoundCount)
+ for i in range(self.RoundCount):
+ data = CommFunc.WriteString(data, self.RoundList[i].GetLength(), self.RoundList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ RoundCount:%d,
+ RoundList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.RoundCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLunhuidianInfo=tagMCActLunhuidianInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianInfo.Head.Cmd,m_NAtagMCActLunhuidianInfo.Head.SubCmd))] = m_NAtagMCActLunhuidianInfo
+
+
+#------------------------------------------------------
+# AA 89 轮回殿活动玩家信息 #tagMCActLunhuidianPlayerInfo
+
+class tagMCActLunhuidianPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("RoundType", c_ubyte), # 轮回类型
+ ("CurRound", c_ubyte), # 当前轮次
+ ("CurValue", c_int), # 累计值
+ ("AwardRecord", c_int), # 当前轮次奖励领奖记录,按奖励索引二进制位存储是否已领取,所有奖励已领取后自动进入下一轮,且重置该奖励状态
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x89
+ 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 = 0x89
+ self.ActNum = 0
+ self.RoundType = 0
+ self.CurRound = 0
+ self.CurValue = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActLunhuidianPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 89 轮回殿活动玩家信息 //tagMCActLunhuidianPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ RoundType:%d,
+ CurRound:%d,
+ CurValue:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.RoundType,
+ self.CurRound,
+ self.CurValue,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCActLunhuidianPlayerInfo=tagMCActLunhuidianPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianPlayerInfo.Cmd,m_NAtagMCActLunhuidianPlayerInfo.SubCmd))] = m_NAtagMCActLunhuidianPlayerInfo
#------------------------------------------------------
@@ -39899,10 +41867,10 @@
return DumpString
-class tagMCActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -39911,7 +41879,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCActXianXiaMJItem()
@@ -39920,7 +41888,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -39936,7 +41904,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -39944,13 +41912,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -40279,6 +42330,98 @@
m_NAtagMCActXianXiaMJLayerInfo=tagMCActXianXiaMJLayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJLayerInfo.Head.Cmd,m_NAtagMCActXianXiaMJLayerInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJLayerInfo
+
+
+#------------------------------------------------------
+# AA 87 运势活动信息 #tagMCActYunshiInfo
+
+class tagMCActYunshiInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ TreasureType = 0 #(BYTE TreasureType)// 活动寻宝类型
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x87
+ 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x87
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.TreasureType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+
+ 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.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.TreasureType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ TreasureType:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.TreasureType
+ )
+ return DumpString
+
+
+m_NAtagMCActYunshiInfo=tagMCActYunshiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActYunshiInfo.Head.Cmd,m_NAtagMCActYunshiInfo.Head.SubCmd))] = m_NAtagMCActYunshiInfo
#------------------------------------------------------
@@ -41247,12 +43390,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):
@@ -41272,6 +43475,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):
@@ -41280,6 +43489,9 @@
self.AwardItemList = list()
self.MemCount = 0
self.MemAwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
return
def GetLength(self):
@@ -41291,6 +43503,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
@@ -41303,6 +43519,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):
@@ -41311,13 +43531,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
@@ -41334,8 +43560,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)
@@ -41360,8 +43584,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()
@@ -41388,8 +43610,6 @@
self.JoinEndTime = ""
self.IsDayReset = 0
self.ResetType = 0
- self.RankLimitPersonal = 0
- self.RankLimitFamily = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
self.FamilyBillCount = 0
@@ -41408,8 +43628,6 @@
length += 5
length += 1
length += 1
- length += 2
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41431,8 +43649,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())
@@ -41453,8 +43669,6 @@
JoinEndTime:%s,
IsDayReset:%d,
ResetType:%d,
- RankLimitPersonal:%d,
- RankLimitFamily:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s,
FamilyBillCount:%d,
@@ -41471,8 +43685,6 @@
self.JoinEndTime,
self.IsDayReset,
self.ResetType,
- self.RankLimitPersonal,
- self.RankLimitFamily,
self.PersonalBillCount,
"...",
self.FamilyBillCount,
@@ -41531,10 +43743,10 @@
return DumpString
-class tagMCCrossActGubaoBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActGubaoAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -41543,7 +43755,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActGubaoItem()
@@ -41552,7 +43764,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -41568,7 +43780,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -41576,13 +43788,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -41597,7 +43892,6 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -41618,7 +43912,6 @@
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.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
@@ -41638,7 +43931,6 @@
self.EndtDate = ""
self.JoinStartTime = ""
self.JoinEndTime = ""
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -41653,7 +43945,6 @@
length += 10
length += 5
length += 5
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -41670,7 +43961,6 @@
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.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41686,7 +43976,6 @@
EndtDate:%s,
JoinStartTime:%s,
JoinEndTime:%s,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -41699,7 +43988,6 @@
self.EndtDate,
self.JoinStartTime,
self.JoinEndTime,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
@@ -41756,10 +44044,10 @@
return DumpString
-class tagMCCrossActHorsePetTrainBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActHorsePetTrainAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -41768,7 +44056,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActHorsePetTrainItem()
@@ -41777,7 +44065,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -41793,7 +44081,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -41801,13 +44089,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -41822,7 +44193,6 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -41843,7 +44213,6 @@
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.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActHorsePetTrainBillard()
@@ -41863,7 +44232,310 @@
self.EndtDate = ""
self.JoinStartTime = ""
self.JoinEndTime = ""
- self.RankLimitPersonal = 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
+ 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 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
+
+class tagMCCrossActLianqiItem(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(tagMCCrossActLianqiItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 90 炼器跨服活动信息 //tagMCCrossActLianqiInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCrossActLianqiAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActLianqiItem> 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 = tagMCCrossActLianqiItem()
+ _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 tagMCCrossActLianqiBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActLianqiItem> AwardItemList)// 奖励物品列表
+ NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActLianqiAwardEx> 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 = tagMCCrossActLianqiItem()
+ _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 = tagMCCrossActLianqiAwardEx()
+ _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 tagMCCrossActLianqiInfo(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
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ PersonalBillCount = 0 #(BYTE PersonalBillCount)
+ PersonalBillboardInfoList = list() #(vector<tagMCCrossActLianqiBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x90
+ 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PersonalBillCount):
+ temPersonalBillboardInfoList = tagMCCrossActLianqiBillard()
+ _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 = 0x90
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.GroupValue1 = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.JoinStartTime = ""
+ self.JoinEndTime = ""
+ self.LimitLV = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -41895,7 +44567,7 @@
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.RankLimitPersonal)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -41911,7 +44583,7 @@
EndtDate:%s,
JoinStartTime:%s,
JoinEndTime:%s,
- RankLimitPersonal:%d,
+ LimitLV:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -41924,15 +44596,211 @@
self.EndtDate,
self.JoinStartTime,
self.JoinEndTime,
- self.RankLimitPersonal,
+ self.LimitLV,
self.PersonalBillCount,
"..."
)
return DumpString
-m_NAtagMCCrossActHorsePetTrainInfo=tagMCCrossActHorsePetTrainInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActHorsePetTrainInfo.Head.Cmd,m_NAtagMCCrossActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCCrossActHorsePetTrainInfo
+m_NAtagMCCrossActLianqiInfo=tagMCCrossActLianqiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActLianqiInfo.Head.Cmd,m_NAtagMCCrossActLianqiInfo.Head.SubCmd))] = m_NAtagMCCrossActLianqiInfo
+
+
+#------------------------------------------------------
+# AA 91 炼器活动玩家信息 #tagMCActLianqiPlayerInfo
+
+class tagMCActLianqiTileMove(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Row", c_ubyte), # 行,0为第1行
+ ("Col", c_ubyte), # 列,0为第1列
+ ("ToRow", c_ubyte), # 移动到目标行
+ ("ToCol", 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.Row = 0
+ self.Col = 0
+ self.ToRow = 0
+ self.ToCol = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActLianqiTileMove)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 91 炼器活动玩家信息 //tagMCActLianqiPlayerInfo:
+ Row:%d,
+ Col:%d,
+ ToRow:%d,
+ ToCol:%d
+ '''\
+ %(
+ self.Row,
+ self.Col,
+ self.ToRow,
+ self.ToCol
+ )
+ return DumpString
+
+
+class tagMCActLianqiPlayerInfo(Structure):
+ Head = tagHead()
+ Score = 0 #(DWORD Score)// 当前活动积分
+ ScoreHighest = 0 #(DWORD ScoreHighest)// 当前活动最高积分,即上榜积分
+ Energy = 0 #(WORD Energy)// 当前体力
+ EnergyTime = 0 #(DWORD EnergyTime)// 上次恢复体力时间戳,为0时不用处理倒计时
+ LVAwardMax = 0 #(DWORD LVAwardMax)// 已激活的最大合成奖励等级
+ LVAwardState = 0 #(DWORD LVAwardState)// 最大合成等级奖励领取记录,按等级二进制位存储是否已领取
+ UseItemLen = 0 #(BYTE UseItemLen)
+ UseItemCntList = list() #(vector<WORD> UseItemCntList)// 本局已使用辅助道具次数 [辅助道具1使用次数, ...]
+ GridDataLen = 0 #(BYTE GridDataLen)// 格子数据长度
+ GridData = "" #(String GridData)// 格子二维行列数据,一定会同步,直接替换,行从上往下排 [[第1行格子1,格子2, ...], ...]
+ OPType = 0 #(BYTE OPType)// 0-无(如初始化,GM等后端直接设置);1-移动;2-使用道具;3-重新开始;如果是因为操作引起的格子数据变化,则在相关操作表现完毕后再展示最新行列数据,否则直接变更
+ MoveCount = 0 #(BYTE MoveCount)
+ MoveList = list() #(vector<tagMCActLianqiTileMove> MoveList)// 图块移动列表,可能没有数据,有的话先表现移动
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x91
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ScoreHighest,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LVAwardMax,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LVAwardState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.UseItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.UseItemLen):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.UseItemCntList.append(value)
+ self.GridDataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GridData,_pos = CommFunc.ReadString(_lpData, _pos,self.GridDataLen)
+ self.OPType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoveCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MoveCount):
+ temMoveList = tagMCActLianqiTileMove()
+ _pos = temMoveList.ReadData(_lpData, _pos)
+ self.MoveList.append(temMoveList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x91
+ self.Score = 0
+ self.ScoreHighest = 0
+ self.Energy = 0
+ self.EnergyTime = 0
+ self.LVAwardMax = 0
+ self.LVAwardState = 0
+ self.UseItemLen = 0
+ self.UseItemCntList = list()
+ self.GridDataLen = 0
+ self.GridData = ""
+ self.OPType = 0
+ self.MoveCount = 0
+ self.MoveList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 2 * self.UseItemLen
+ length += 1
+ length += len(self.GridData)
+ length += 1
+ length += 1
+ for i in range(self.MoveCount):
+ length += self.MoveList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.Score)
+ data = CommFunc.WriteDWORD(data, self.ScoreHighest)
+ data = CommFunc.WriteWORD(data, self.Energy)
+ data = CommFunc.WriteDWORD(data, self.EnergyTime)
+ data = CommFunc.WriteDWORD(data, self.LVAwardMax)
+ data = CommFunc.WriteDWORD(data, self.LVAwardState)
+ data = CommFunc.WriteBYTE(data, self.UseItemLen)
+ for i in range(self.UseItemLen):
+ data = CommFunc.WriteWORD(data, self.UseItemCntList[i])
+ data = CommFunc.WriteBYTE(data, self.GridDataLen)
+ data = CommFunc.WriteString(data, self.GridDataLen, self.GridData)
+ data = CommFunc.WriteBYTE(data, self.OPType)
+ data = CommFunc.WriteBYTE(data, self.MoveCount)
+ for i in range(self.MoveCount):
+ data = CommFunc.WriteString(data, self.MoveList[i].GetLength(), self.MoveList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Score:%d,
+ ScoreHighest:%d,
+ Energy:%d,
+ EnergyTime:%d,
+ LVAwardMax:%d,
+ LVAwardState:%d,
+ UseItemLen:%d,
+ UseItemCntList:%s,
+ GridDataLen:%d,
+ GridData:%s,
+ OPType:%d,
+ MoveCount:%d,
+ MoveList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Score,
+ self.ScoreHighest,
+ self.Energy,
+ self.EnergyTime,
+ self.LVAwardMax,
+ self.LVAwardState,
+ self.UseItemLen,
+ "...",
+ self.GridDataLen,
+ self.GridData,
+ self.OPType,
+ self.MoveCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLianqiPlayerInfo=tagMCActLianqiPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLianqiPlayerInfo.Head.Cmd,m_NAtagMCActLianqiPlayerInfo.Head.SubCmd))] = m_NAtagMCActLianqiPlayerInfo
#------------------------------------------------------
@@ -41981,10 +44849,10 @@
return DumpString
-class tagMCCrossActXianXiaMJBillard(Structure):
- Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
+class tagMCCrossActXianXiaMJAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
data = None
def __init__(self):
@@ -41993,7 +44861,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temAwardItemList = tagMCCrossActXianXiaMJItem()
@@ -42002,7 +44870,7 @@
return _pos
def Clear(self):
- self.Rank = 0
+ self.NeedScore = 0
self.Count = 0
self.AwardItemList = list()
return
@@ -42018,7 +44886,7 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteDWORD(data, self.Rank)
+ 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())
@@ -42026,13 +44894,96 @@
def OutputString(self):
DumpString = '''
- Rank:%d,
+ 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
@@ -42048,7 +44999,6 @@
JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
- RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
PersonalBillCount = 0 #(BYTE PersonalBillCount)
PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
data = None
@@ -42070,7 +45020,6 @@
self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.PersonalBillCount):
temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
@@ -42091,7 +45040,6 @@
self.JoinStartTime = ""
self.JoinEndTime = ""
self.IsDayReset = 0
- self.RankLimitPersonal = 0
self.PersonalBillCount = 0
self.PersonalBillboardInfoList = list()
return
@@ -42107,7 +45055,6 @@
length += 5
length += 5
length += 1
- length += 2
length += 1
for i in range(self.PersonalBillCount):
length += self.PersonalBillboardInfoList[i].GetLength()
@@ -42125,7 +45072,6 @@
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.RankLimitPersonal)
data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
for i in range(self.PersonalBillCount):
data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
@@ -42142,7 +45088,6 @@
JoinStartTime:%s,
JoinEndTime:%s,
IsDayReset:%d,
- RankLimitPersonal:%d,
PersonalBillCount:%d,
PersonalBillboardInfoList:%s
'''\
@@ -42156,7 +45101,6 @@
self.JoinStartTime,
self.JoinEndTime,
self.IsDayReset,
- self.RankLimitPersonal,
self.PersonalBillCount,
"..."
)
@@ -48833,6 +51777,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):
@@ -49793,6 +52969,80 @@
#------------------------------------------------------
+# 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):
@@ -49958,6 +53208,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
#------------------------------------------------------
@@ -50815,6 +54288,8 @@
LV = 0 #(WORD LV)// 玩家等级
Job = 0 #(BYTE Job)// 玩家职业, 如果是机器人,则职业有值,服务端控制
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)// 玩家战力
Relation = 0 #(BYTE Relation)// 关系:0-无,1-好友,2-盟友
IsNeedGold = 0 #(BYTE IsNeedGold)// 是否需要仙玉召唤
@@ -50833,6 +54308,8 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
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)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsNeedGold,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -50846,6 +54323,8 @@
self.LV = 0
self.Job = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.Relation = 0
self.IsNeedGold = 0
@@ -50861,6 +54340,8 @@
length += 1
length += 2
length += 4
+ length += 4
+ length += 4
length += 1
length += 1
@@ -50875,6 +54356,8 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteBYTE(data, self.Relation)
data = CommFunc.WriteBYTE(data, self.IsNeedGold)
@@ -50889,6 +54372,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
Relation:%d,
IsNeedGold:%d
@@ -50901,6 +54386,8 @@
self.LV,
self.Job,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.Relation,
self.IsNeedGold
@@ -54032,6 +57519,7 @@
("DayWinCount", c_ubyte), # 当日已胜利次数
("DayBuyCount", c_ubyte), # 当日已购买次数
("DayItemAddCount", c_ubyte), # 当日物品增加次数
+ ("DayRefreshCount", c_ushort), # 今日已刷新匹配次数
]
def __init__(self):
@@ -54057,6 +57545,7 @@
self.DayWinCount = 0
self.DayBuyCount = 0
self.DayItemAddCount = 0
+ self.DayRefreshCount = 0
return
def GetLength(self):
@@ -54077,7 +57566,8 @@
DayPKCount:%d,
DayWinCount:%d,
DayBuyCount:%d,
- DayItemAddCount:%d
+ DayItemAddCount:%d,
+ DayRefreshCount:%d
'''\
%(
self.Cmd,
@@ -54090,7 +57580,8 @@
self.DayPKCount,
self.DayWinCount,
self.DayBuyCount,
- self.DayItemAddCount
+ self.DayItemAddCount,
+ self.DayRefreshCount
)
return DumpString
--
Gitblit v1.8.0