From 07404bf456b40111afa9f46e67236b4ef1b76e5d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 20 五月 2024 15:54:50 +0800
Subject: [PATCH] 0312 封包同步
---
Tool/RobotTest/Protocol/PacketsReceived.py | 212
Tool/RobotTest/Protocol/PacketsReceivedPY.py | 16784 ++++++++++++++++++++++++++++++++++++++++++
Tool/RobotTest/Protocol/PacketsSend.py | 10
Tool/RobotTest/Protocol/PacketsSendPY.py | 6090 ++++++++++++++-
4 files changed, 22,310 insertions(+), 786 deletions(-)
diff --git a/Tool/RobotTest/Protocol/PacketsReceived.py b/Tool/RobotTest/Protocol/PacketsReceived.py
index 4a6de90..f67e2b9 100644
--- a/Tool/RobotTest/Protocol/PacketsReceived.py
+++ b/Tool/RobotTest/Protocol/PacketsReceived.py
@@ -1068,6 +1068,9 @@
ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+ HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
+ Face = 0 #(DWORD Face)//基本脸型
+ RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
data = None
def __init__(self):
@@ -1175,6 +1178,9 @@
self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -1278,6 +1284,9 @@
self.ExAttr18 = 0
self.ExAttr19 = 0
self.ExAttr20 = 0
+ self.HPEx = 0
+ self.Face = 0
+ self.RoleType = 0
return
def GetLength(self):
@@ -1372,6 +1381,9 @@
length += 4
length += 4
length += 15
+ length += 4
+ length += 4
+ length += 4
length += 4
length += 4
length += 4
@@ -1481,6 +1493,9 @@
data = CommFunc.WriteDWORD(data, self.ExAttr18)
data = CommFunc.WriteDWORD(data, self.ExAttr19)
data = CommFunc.WriteDWORD(data, self.ExAttr20)
+ data = CommFunc.WriteDWORD(data, self.HPEx)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.RoleType)
return data
def OutputString(self):
@@ -1581,7 +1596,10 @@
ExAttr17:%d,
ExAttr18:%d,
ExAttr19:%d,
- ExAttr20:%d
+ ExAttr20:%d,
+ HPEx:%d,
+ Face:%d,
+ RoleType:%d
'''\
%(
self.Head.OutputString(),
@@ -1680,7 +1698,10 @@
self.ExAttr17,
self.ExAttr18,
self.ExAttr19,
- self.ExAttr20
+ self.ExAttr20,
+ self.HPEx,
+ self.Face,
+ self.RoleType
)
return DumpString
@@ -8658,10 +8679,13 @@
ReincarnationLv = 0 #(WORD ReincarnationLv)
LV = 0 #(WORD LV)//等级
Job = 0 #(BYTE Job)
+ Face = 0 #(DWORD Face)
TeamLV = 0 #(BYTE TeamLV)//组队等级
TeamID = 0 #(DWORD TeamID)//组队ID
HP = 0 #(DWORD HP)
+ HPEx = 0 #(DWORD HPEx)
MaxHP = 0 #(DWORD MaxHP)
+ MaxHPEx = 0 #(DWORD MaxHPEx)
PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
IsHideMask = 0 #(BYTE IsHideMask)
Country = 0 #(BYTE Country)//玩家国家
@@ -8715,10 +8739,13 @@
self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TeamLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsHideMask,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Country,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8774,10 +8801,13 @@
self.ReincarnationLv = 0
self.LV = 0
self.Job = 0
+ self.Face = 0
self.TeamLV = 0
self.TeamID = 0
self.HP = 0
+ self.HPEx = 0
self.MaxHP = 0
+ self.MaxHPEx = 0
self.PlayerState = 0
self.IsHideMask = 0
self.Country = 0
@@ -8825,7 +8855,10 @@
length += 2
length += 2
length += 1
+ length += 4
length += 1
+ length += 4
+ length += 4
length += 4
length += 4
length += 4
@@ -8879,10 +8912,13 @@
data = CommFunc.WriteWORD(data, self.ReincarnationLv)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteBYTE(data, self.TeamLV)
data = CommFunc.WriteDWORD(data, self.TeamID)
data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.HPEx)
data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxHPEx)
data = CommFunc.WriteBYTE(data, self.PlayerState)
data = CommFunc.WriteBYTE(data, self.IsHideMask)
data = CommFunc.WriteBYTE(data, self.Country)
@@ -8932,10 +8968,13 @@
ReincarnationLv:%d,
LV:%d,
Job:%d,
+ Face:%d,
TeamLV:%d,
TeamID:%d,
HP:%d,
+ HPEx:%d,
MaxHP:%d,
+ MaxHPEx:%d,
PlayerState:%d,
IsHideMask:%d,
Country:%d,
@@ -8981,10 +9020,13 @@
self.ReincarnationLv,
self.LV,
self.Job,
+ self.Face,
self.TeamLV,
self.TeamID,
self.HP,
+ self.HPEx,
self.MaxHP,
+ self.MaxHPEx,
self.PlayerState,
self.IsHideMask,
self.Country,
@@ -9724,6 +9766,7 @@
("PlayerID", c_int), # 主人ID
("PosX", c_int), # X坐标
("PosY", c_int), # Y坐标
+ ("Rank", c_ubyte), #阶段
]
def __init__(self):
@@ -9745,6 +9788,7 @@
self.PlayerID = 0
self.PosX = 0
self.PosY = 0
+ self.Rank = 0
return
def GetLength(self):
@@ -9761,7 +9805,8 @@
NPCID:%d,
PlayerID:%d,
PosX:%d,
- PosY:%d
+ PosY:%d,
+ Rank:%d
'''\
%(
self.Cmd,
@@ -9770,7 +9815,8 @@
self.NPCID,
self.PlayerID,
self.PosX,
- self.PosY
+ self.PosY,
+ self.Rank
)
return DumpString
@@ -9789,8 +9835,9 @@
("SubCmd", c_ubyte),
("ObjID", c_int),
("ObjType", c_ubyte),
- ("RefreshType", c_ubyte),
+ ("RefreshType", c_ushort),
("Value", c_int),
+ ("ValueEx", c_int),
]
def __init__(self):
@@ -9811,6 +9858,7 @@
self.ObjType = 0
self.RefreshType = 0
self.Value = 0
+ self.ValueEx = 0
return
def GetLength(self):
@@ -9826,7 +9874,8 @@
ObjID:%d,
ObjType:%d,
RefreshType:%d,
- Value:%d
+ Value:%d,
+ ValueEx:%d
'''\
%(
self.Cmd,
@@ -9834,7 +9883,8 @@
self.ObjID,
self.ObjType,
self.RefreshType,
- self.Value
+ self.Value,
+ self.ValueEx
)
return DumpString
@@ -10626,6 +10676,7 @@
("ObjType", c_ubyte), #对象类型
("SkillID", c_int), #技能ID
("DiffValue", c_int), #值
+ ("DiffValueEx", c_int), #超亿值
("AttackType", c_ubyte), #攻击类型
("SrcObjID", c_int), #飘血来源
("SrcObjType", c_ubyte),
@@ -10651,6 +10702,7 @@
self.ObjType = 0
self.SkillID = 0
self.DiffValue = 0
+ self.DiffValueEx = 0
self.AttackType = 0
self.SrcObjID = 0
self.SrcObjType = 0
@@ -10672,6 +10724,7 @@
ObjType:%d,
SkillID:%d,
DiffValue:%d,
+ DiffValueEx:%d,
AttackType:%d,
SrcObjID:%d,
SrcObjType:%d,
@@ -10685,6 +10738,7 @@
self.ObjType,
self.SkillID,
self.DiffValue,
+ self.DiffValueEx,
self.AttackType,
self.SrcObjID,
self.SrcObjType,
@@ -10826,7 +10880,7 @@
MaxHP = 0 #(DWORD MaxHP)
MaxHPEx = 0 #(DWORD MaxHPEx)
Speed = 0 #(WORD Speed)
- LV = 0 #(BYTE LV)
+ LV = 0 #(WORD LV)
OwnerNameLen = 0 #(BYTE OwnerNameLen)
OwnerName = "" #(String OwnerName)//size = OwnerNameLen
data = None
@@ -10851,7 +10905,7 @@
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Speed,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OwnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.OwnerNameLen)
return _pos
@@ -10891,7 +10945,7 @@
length += 4
length += 4
length += 2
- length += 1
+ length += 2
length += 1
length += len(self.OwnerName)
@@ -10911,7 +10965,7 @@
data = CommFunc.WriteDWORD(data, self.MaxHP)
data = CommFunc.WriteDWORD(data, self.MaxHPEx)
data = CommFunc.WriteWORD(data, self.Speed)
- data = CommFunc.WriteBYTE(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.OwnerNameLen)
data = CommFunc.WriteString(data, self.OwnerNameLen, self.OwnerName)
return data
@@ -10956,74 +11010,6 @@
m_NAtagPlayerSummonNPCAppear=tagPlayerSummonNPCAppear()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerSummonNPCAppear.Head.Cmd,m_NAtagPlayerSummonNPCAppear.Head.SubCmd))] = m_NAtagPlayerSummonNPCAppear
-
-
-#------------------------------------------------------
-#04 40 周围对象刷新(支持大数值) #tagObjInfoRefreshEx
-
-class tagObjInfoRefreshEx(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ObjID", c_int),
- ("ObjType", c_ubyte),
- ("RefreshType", c_ubyte),
- ("Value", c_int),
- ("ValueEx", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0x04
- self.SubCmd = 0x40
- 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 = 0x04
- self.SubCmd = 0x40
- self.ObjID = 0
- self.ObjType = 0
- self.RefreshType = 0
- self.Value = 0
- self.ValueEx = 0
- return
-
- def GetLength(self):
- return sizeof(tagObjInfoRefreshEx)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//04 40 周围对象刷新(支持大数值) //tagObjInfoRefreshEx:
- Cmd:%s,
- SubCmd:%s,
- ObjID:%d,
- ObjType:%d,
- RefreshType:%d,
- Value:%d,
- ValueEx:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ObjID,
- self.ObjType,
- self.RefreshType,
- self.Value,
- self.ValueEx
- )
- return DumpString
-
-
-m_NAtagObjInfoRefreshEx=tagObjInfoRefreshEx()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoRefreshEx.Cmd,m_NAtagObjInfoRefreshEx.SubCmd))] = m_NAtagObjInfoRefreshEx
#------------------------------------------------------
@@ -11163,6 +11149,7 @@
NPCID = 0 #(DWORD NPCID)
NPCFaceDir = 0 #(WORD NPCFaceDir)//NPC的面向
NPCHP = 0 #(DWORD NPCHP)
+ NPCHPEx = 0 #(DWORD NPCHPEx)
NPCEventType = 0 #(WORD NPCEventType)//0 攻击 1 事件
IsActive = 0 #(BYTE IsActive)//这个NPC是否活着
PosX = 0 #(WORD PosX)
@@ -11187,6 +11174,7 @@
self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.NPCFaceDir,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.NPCHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.NPCEventType,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.IsActive,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -11207,6 +11195,7 @@
self.NPCID = 0
self.NPCFaceDir = 0
self.NPCHP = 0
+ self.NPCHPEx = 0
self.NPCEventType = 0
self.IsActive = 0
self.PosX = 0
@@ -11224,6 +11213,7 @@
length += 4
length += 4
length += 2
+ length += 4
length += 4
length += 2
length += 1
@@ -11244,6 +11234,7 @@
data = CommFunc.WriteDWORD(data, self.NPCID)
data = CommFunc.WriteWORD(data, self.NPCFaceDir)
data = CommFunc.WriteDWORD(data, self.NPCHP)
+ data = CommFunc.WriteDWORD(data, self.NPCHPEx)
data = CommFunc.WriteWORD(data, self.NPCEventType)
data = CommFunc.WriteBYTE(data, self.IsActive)
data = CommFunc.WriteWORD(data, self.PosX)
@@ -11262,6 +11253,7 @@
NPCID:%d,
NPCFaceDir:%d,
NPCHP:%d,
+ NPCHPEx:%d,
NPCEventType:%d,
IsActive:%d,
PosX:%d,
@@ -11278,6 +11270,7 @@
self.NPCID,
self.NPCFaceDir,
self.NPCHP,
+ self.NPCHPEx,
self.NPCEventType,
self.IsActive,
self.PosX,
@@ -12520,6 +12513,7 @@
("ObjType", c_ubyte), #对象类型
("AttackType", c_ubyte), #普攻, 闪躲, 致命 类型
("Value", c_int),
+ ("ValueEx", c_int),
("RemainHP", c_int), #对方剩余的血
("RemainHPEx", c_int), #对方剩余的血, 超亿支持
]
@@ -12545,6 +12539,7 @@
self.ObjType = 0
self.AttackType = 0
self.Value = 0
+ self.ValueEx = 0
self.RemainHP = 0
self.RemainHPEx = 0
return
@@ -12566,6 +12561,7 @@
ObjType:%d,
AttackType:%d,
Value:%d,
+ ValueEx:%d,
RemainHP:%d,
RemainHPEx:%d
'''\
@@ -12579,6 +12575,7 @@
self.ObjType,
self.AttackType,
self.Value,
+ self.ValueEx,
self.RemainHP,
self.RemainHPEx
)
@@ -12723,6 +12720,7 @@
("ObjID", c_int),
("AttackType", c_ubyte), #爆击, miss
("HurtHP", c_int),
+ ("HurtHPEx", c_int),
("CurHP", c_int),
("CurHPEx", c_int),
]
@@ -12741,6 +12739,7 @@
self.ObjID = 0
self.AttackType = 0
self.HurtHP = 0
+ self.HurtHPEx = 0
self.CurHP = 0
self.CurHPEx = 0
return
@@ -12757,6 +12756,7 @@
ObjID:%d,
AttackType:%d,
HurtHP:%d,
+ HurtHPEx:%d,
CurHP:%d,
CurHPEx:%d
'''\
@@ -12765,6 +12765,7 @@
self.ObjID,
self.AttackType,
self.HurtHP,
+ self.HurtHPEx,
self.CurHP,
self.CurHPEx
)
@@ -12889,6 +12890,7 @@
("ObjID", c_int),
("AttackType", c_ubyte), #爆击, miss
("HurtHP", c_int),
+ ("HurtHPEx", c_int),
("CurHP", c_int),
("CurHPEx", c_int),
]
@@ -12907,6 +12909,7 @@
self.ObjID = 0
self.AttackType = 0
self.HurtHP = 0
+ self.HurtHPEx = 0
self.CurHP = 0
self.CurHPEx = 0
return
@@ -12923,6 +12926,7 @@
ObjID:%d,
AttackType:%d,
HurtHP:%d,
+ HurtHPEx:%d,
CurHP:%d,
CurHPEx:%d
'''\
@@ -12931,6 +12935,7 @@
self.ObjID,
self.AttackType,
self.HurtHP,
+ self.HurtHPEx,
self.CurHP,
self.CurHPEx
)
@@ -12947,6 +12952,7 @@
PosY = 0 #(WORD PosY)
HurtCount = 0 #(WORD HurtCount)//伤害数目
HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
+ SkillElementID = 0 #(WORD SkillElementID)//专精技能ID
data = None
def __init__(self):
@@ -12969,6 +12975,7 @@
temHurtList = tagSkillPosHurtObj()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -12984,6 +12991,7 @@
self.PosY = 0
self.HurtCount = 0
self.HurtList = list()
+ self.SkillElementID = 0
return
def GetLength(self):
@@ -12998,6 +13006,7 @@
length += 2
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 2
return length
@@ -13013,6 +13022,7 @@
data = CommFunc.WriteWORD(data, self.HurtCount)
for i in range(self.HurtCount):
data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.SkillElementID)
return data
def OutputString(self):
@@ -13025,7 +13035,8 @@
PosX:%d,
PosY:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ SkillElementID:%d
'''\
%(
self.Head.OutputString(),
@@ -13036,7 +13047,8 @@
self.PosX,
self.PosY,
self.HurtCount,
- "..."
+ "...",
+ self.SkillElementID
)
return DumpString
@@ -18587,7 +18599,9 @@
LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
LV2 = 0 #(WORD LV2)//大师等级
HP = 0 #(DWORD HP)
+ HPEx = 0 #(DWORD HPEx)
MaxHP = 0 #(DWORD MaxHP)
+ MaxHPEx = 0 #(DWORD MaxHPEx)
MP = 0 #(DWORD MP)
MaxMP = 0 #(DWORD MaxMP)
PlayerType = 0 #(BYTE PlayerType)//五行
@@ -18620,7 +18634,9 @@
self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxMP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -18649,7 +18665,9 @@
self.LVEx = 0
self.LV2 = 0
self.HP = 0
+ self.HPEx = 0
self.MaxHP = 0
+ self.MaxHPEx = 0
self.MP = 0
self.MaxMP = 0
self.PlayerType = 0
@@ -18679,6 +18697,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 1
length += 1
length += 1
@@ -18704,7 +18724,9 @@
data = CommFunc.WriteWORD(data, self.LVEx)
data = CommFunc.WriteWORD(data, self.LV2)
data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.HPEx)
data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxHPEx)
data = CommFunc.WriteDWORD(data, self.MP)
data = CommFunc.WriteDWORD(data, self.MaxMP)
data = CommFunc.WriteBYTE(data, self.PlayerType)
@@ -18731,7 +18753,9 @@
LVEx:%d,
LV2:%d,
HP:%d,
+ HPEx:%d,
MaxHP:%d,
+ MaxHPEx:%d,
MP:%d,
MaxMP:%d,
PlayerType:%d,
@@ -18756,7 +18780,9 @@
self.LVEx,
self.LV2,
self.HP,
+ self.HPEx,
self.MaxHP,
+ self.MaxHPEx,
self.MP,
self.MaxMP,
self.PlayerType,
@@ -18783,7 +18809,9 @@
("PlayerID", c_int),
("LV", c_ushort),
("HP", c_int),
+ ("HPEx", c_int),
("MaxHP", c_int),
+ ("MaxHPEx", c_int),
("MP", c_int),
("MaxMP", c_int),
]
@@ -18805,7 +18833,9 @@
self.PlayerID = 0
self.LV = 0
self.HP = 0
+ self.HPEx = 0
self.MaxHP = 0
+ self.MaxHPEx = 0
self.MP = 0
self.MaxMP = 0
return
@@ -18823,7 +18853,9 @@
PlayerID:%d,
LV:%d,
HP:%d,
+ HPEx:%d,
MaxHP:%d,
+ MaxHPEx:%d,
MP:%d,
MaxMP:%d
'''\
@@ -18833,7 +18865,9 @@
self.PlayerID,
self.LV,
self.HP,
+ self.HPEx,
self.MaxHP,
+ self.MaxHPEx,
self.MP,
self.MaxMP
)
@@ -26000,7 +26034,9 @@
CON = 0 #(DWORD CON)//体魄
LeftPoints = 0 #(WORD LeftPoints)//潜力,即剩余点数
HP = 0 #(DWORD HP)// 当前气血
+ HPEx = 0 #(DWORD HPEx)// 当前气血 超亿
MaxHP = 0 #(DWORD MaxHP)// 最大气血
+ MaxHPEx = 0 #(DWORD MaxHPEx)// 最大气血 超亿
PhysicAtk = 0 #(DWORD PhysicAtk)// 外功
PhysicDef = 0 #(DWORD PhysicDef)// 外防
MagicAtk = 0 #(DWORD MagicAtk)// 内攻
@@ -26070,7 +26106,9 @@
self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.LeftPoints,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PhysicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PhysicDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MagicAtk,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -26138,7 +26176,9 @@
self.CON = 0
self.LeftPoints = 0
self.HP = 0
+ self.HPEx = 0
self.MaxHP = 0
+ self.MaxHPEx = 0
self.PhysicAtk = 0
self.PhysicDef = 0
self.MagicAtk = 0
@@ -26209,6 +26249,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
length += 1
for i in range(self.SkillListCnt):
length += self.SkillList[i].GetLength()
@@ -26272,7 +26314,9 @@
data = CommFunc.WriteDWORD(data, self.CON)
data = CommFunc.WriteWORD(data, self.LeftPoints)
data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.HPEx)
data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxHPEx)
data = CommFunc.WriteDWORD(data, self.PhysicAtk)
data = CommFunc.WriteDWORD(data, self.PhysicDef)
data = CommFunc.WriteDWORD(data, self.MagicAtk)
@@ -26339,7 +26383,9 @@
CON:%d,
LeftPoints:%d,
HP:%d,
+ HPEx:%d,
MaxHP:%d,
+ MaxHPEx:%d,
PhysicAtk:%d,
PhysicDef:%d,
MagicAtk:%d,
@@ -26403,7 +26449,9 @@
self.CON,
self.LeftPoints,
self.HP,
+ self.HPEx,
self.MaxHP,
+ self.MaxHPEx,
self.PhysicAtk,
self.PhysicDef,
self.MagicAtk,
@@ -29606,4 +29654,4 @@
m_NAtagGMCmdAnswer=tagGMCmdAnswer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
\ No newline at end of file
diff --git a/Tool/RobotTest/Protocol/PacketsReceivedPY.py b/Tool/RobotTest/Protocol/PacketsReceivedPY.py
index 23de93b..ee509f8 100644
--- a/Tool/RobotTest/Protocol/PacketsReceivedPY.py
+++ b/Tool/RobotTest/Protocol/PacketsReceivedPY.py
@@ -346,6 +346,7 @@
("NowMinute", c_ubyte),
("NowSecond", c_ubyte),
("NowMicSecond", c_int),
+ ("WeekOfYear", c_ubyte), #一年中的第几周
]
def __init__(self):
@@ -373,6 +374,7 @@
self.NowMinute = 0
self.NowSecond = 0
self.NowMicSecond = 0
+ self.WeekOfYear = 0
return
def GetLength(self):
@@ -395,7 +397,8 @@
NowHour:%d,
NowMinute:%d,
NowSecond:%d,
- NowMicSecond:%d
+ NowMicSecond:%d,
+ WeekOfYear:%d
'''\
%(
self.Cmd,
@@ -410,7 +413,8 @@
self.NowHour,
self.NowMinute,
self.NowSecond,
- self.NowMicSecond
+ self.NowMicSecond,
+ self.WeekOfYear
)
return DumpString
@@ -557,33 +561,41 @@
#A0 04 同步客户端时间 #tagServerDateTime
class tagServerDateTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Year", c_ushort),
- ("Month", c_ubyte),
- ("Day", c_ubyte),
- ("Hour", c_ubyte),
- ("Minute", c_ubyte),
- ("Second", c_ubyte),
- ("MicSecond", c_int),
- ]
+ Head = tagHead()
+ Year = 0 #(WORD Year)
+ Month = 0 #(BYTE Month)
+ Day = 0 #(BYTE Day)
+ Hour = 0 #(BYTE Hour)
+ Minute = 0 #(BYTE Minute)
+ Second = 0 #(BYTE Second)
+ MicSecond = 0 #(DWORD MicSecond)
+ CrossServerTime = "" #(char CrossServerTime[19])
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Year,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Month,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Day,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Hour,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Minute,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Second,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MicSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CrossServerTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ return _pos
def Clear(self):
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
self.Year = 0
self.Month = 0
self.Day = 0
@@ -591,42 +603,64 @@
self.Minute = 0
self.Second = 0
self.MicSecond = 0
+ self.CrossServerTime = ""
return
def GetLength(self):
- return sizeof(tagServerDateTime)
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += 4
+ length += 19
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Year)
+ data = CommFunc.WriteBYTE(data, self.Month)
+ data = CommFunc.WriteBYTE(data, self.Day)
+ data = CommFunc.WriteBYTE(data, self.Hour)
+ data = CommFunc.WriteBYTE(data, self.Minute)
+ data = CommFunc.WriteBYTE(data, self.Second)
+ data = CommFunc.WriteDWORD(data, self.MicSecond)
+ data = CommFunc.WriteString(data, 19, self.CrossServerTime)
+ return data
def OutputString(self):
- DumpString = '''//A0 04 同步客户端时间 //tagServerDateTime:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
Year:%d,
Month:%d,
Day:%d,
Hour:%d,
Minute:%d,
Second:%d,
- MicSecond:%d
+ MicSecond:%d,
+ CrossServerTime:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.Year,
self.Month,
self.Day,
self.Hour,
self.Minute,
self.Second,
- self.MicSecond
+ self.MicSecond,
+ self.CrossServerTime
)
return DumpString
m_NAtagServerDateTime=tagServerDateTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagServerDateTime.Cmd,m_NAtagServerDateTime.SubCmd))] = m_NAtagServerDateTime
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagServerDateTime.Head.Cmd,m_NAtagServerDateTime.Head.SubCmd))] = m_NAtagServerDateTime
#------------------------------------------------------
@@ -951,6 +985,190 @@
#------------------------------------------------------
+# A4 11 传功邀请信息 #tagGCChuangongInviteInfo
+
+class tagGCChuangongInviteInfo(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)// 发起邀请的玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 发起邀请的玩家名,size = NameLen
+ LV = 0 #(WORD LV)// 玩家等级
+ Job = 0 #(BYTE Job)// 玩家职业
+ RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x11
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.Name)
+ length += 2
+ length += 1
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV
+ )
+ return DumpString
+
+
+m_NAtagGCChuangongInviteInfo=tagGCChuangongInviteInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChuangongInviteInfo.Head.Cmd,m_NAtagGCChuangongInviteInfo.Head.SubCmd))] = m_NAtagGCChuangongInviteInfo
+
+
+#------------------------------------------------------
+# A4 12 传功开始 #tagGCChuangongStart
+
+class tagGCChuangongStart(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)// 一起传功的玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 玩家名,size = NameLen
+ LV = 0 #(WORD LV)// 玩家等级
+ Job = 0 #(BYTE Job)// 玩家职业
+ RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA4
+ self.Head.SubCmd = 0x12
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.LV = 0
+ self.Job = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.Name)
+ length += 2
+ length += 1
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ NameLen:%d,
+ Name:%s,
+ LV:%d,
+ Job:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.NameLen,
+ self.Name,
+ self.LV,
+ self.Job,
+ self.RealmLV
+ )
+ return DumpString
+
+
+m_NAtagGCChuangongStart=tagGCChuangongStart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChuangongStart.Head.Cmd,m_NAtagGCChuangongStart.Head.SubCmd))] = m_NAtagGCChuangongStart
+
+
+#------------------------------------------------------
# A4 0A 假仙盟信息 #tagGCFakeFamilyInfo
class tagGCFakeFamilyInfo(Structure):
@@ -1209,6 +1427,66 @@
#------------------------------------------------------
+# A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo
+
+class tagGCFamilyBosFBInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HurtTotal", c_int), # 仙盟累计伤血,亿求余部分
+ ("HurtTotalPoint", c_int), # 仙盟累计伤血,亿整除部分
+ ("FightMemCount", c_ubyte), # 目前正在仙盟boss副本中的成员数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0E
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0E
+ self.HurtTotal = 0
+ self.HurtTotalPoint = 0
+ self.FightMemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCFamilyBosFBInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A4 0E 家族boss副本信息 //tagGCFamilyBosFBInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ HurtTotal:%d,
+ HurtTotalPoint:%d,
+ FightMemCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HurtTotal,
+ self.HurtTotalPoint,
+ self.FightMemCount
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
+
+
+#------------------------------------------------------
# A4 02 家族boss副本开启及击杀信息 #tagGCFamilyBossFBInfo
class tagGCFamilyBossFBInfo(Structure):
@@ -1268,7 +1546,8 @@
# A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
class tagFGrabRedPacketInfo(Structure):
- Name = "" #(char Name[33])//名字
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)//名字
PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
data = None
@@ -1279,12 +1558,14 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
+ self.NameLen = 0
self.Name = ""
self.PlayeJob = 0
self.MoneyNum = 0
@@ -1292,7 +1573,8 @@
def GetLength(self):
length = 0
- length += 33
+ length += 1
+ length += len(self.Name)
length += 1
length += 4
@@ -1300,18 +1582,21 @@
def GetBuffer(self):
data = ''
- data = CommFunc.WriteString(data, 33, self.Name)
+ 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.MoneyNum)
return data
def OutputString(self):
DumpString = '''
+ NameLen:%d,
Name:%s,
PlayeJob:%d,
MoneyNum:%d
'''\
%(
+ self.NameLen,
self.Name,
self.PlayeJob,
self.MoneyNum
@@ -1398,15 +1683,18 @@
class tagFRedPacketInfo(Structure):
RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
PlayerID = 0 #(DWORD PlayerID)//玩家ID
- Name = "" #(char Name[33])//玩家名字
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)//玩家名字
Time = 0 #(DWORD Time)//时间
PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
MoneyType = 0 #(BYTE MoneyType)//金钱类型
- MoneyNum = 0 #(WORD MoneyNum)//金钱数量
+ MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
GetWay = 0 #(BYTE GetWay)//获得途径
PacketCnt = 0 #(BYTE PacketCnt)//可抢个数
State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完
- Wish = "" #(char Wish[33])//祝福语
+ WishLen = 0 #(BYTE WishLen)
+ Wish = "" #(String Wish)//祝福语
+ IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
data = None
def __init__(self):
@@ -1417,20 +1705,24 @@
self.Clear()
self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
+ self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
self.RedPacketID = 0
self.PlayerID = 0
+ self.NameLen = 0
self.Name = ""
self.Time = 0
self.PlayeJob = 0
@@ -1439,22 +1731,27 @@
self.GetWay = 0
self.PacketCnt = 0
self.State = 0
+ self.WishLen = 0
self.Wish = ""
+ self.IsAnonymous = 0
return
def GetLength(self):
length = 0
length += 4
length += 4
- length += 33
+ length += 1
+ length += len(self.Name)
length += 4
length += 1
length += 1
- length += 2
+ length += 4
length += 1
length += 1
length += 1
- length += 33
+ length += 1
+ length += len(self.Wish)
+ length += 1
return length
@@ -1462,21 +1759,25 @@
data = ''
data = CommFunc.WriteDWORD(data, self.RedPacketID)
data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteString(data, 33, self.Name)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
data = CommFunc.WriteDWORD(data, self.Time)
data = CommFunc.WriteBYTE(data, self.PlayeJob)
data = CommFunc.WriteBYTE(data, self.MoneyType)
- data = CommFunc.WriteWORD(data, self.MoneyNum)
+ data = CommFunc.WriteDWORD(data, self.MoneyNum)
data = CommFunc.WriteBYTE(data, self.GetWay)
data = CommFunc.WriteBYTE(data, self.PacketCnt)
data = CommFunc.WriteBYTE(data, self.State)
- data = CommFunc.WriteString(data, 33, self.Wish)
+ data = CommFunc.WriteBYTE(data, self.WishLen)
+ data = CommFunc.WriteString(data, self.WishLen, self.Wish)
+ data = CommFunc.WriteBYTE(data, self.IsAnonymous)
return data
def OutputString(self):
DumpString = '''
RedPacketID:%d,
PlayerID:%d,
+ NameLen:%d,
Name:%s,
Time:%d,
PlayeJob:%d,
@@ -1485,11 +1786,14 @@
GetWay:%d,
PacketCnt:%d,
State:%d,
- Wish:%s
+ WishLen:%d,
+ Wish:%s,
+ IsAnonymous:%d
'''\
%(
self.RedPacketID,
self.PlayerID,
+ self.NameLen,
self.Name,
self.Time,
self.PlayeJob,
@@ -1498,7 +1802,9 @@
self.GetWay,
self.PacketCnt,
self.State,
- self.Wish
+ self.WishLen,
+ self.Wish,
+ self.IsAnonymous
)
return DumpString
@@ -2121,6 +2427,58 @@
#------------------------------------------------------
+# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
+
+class tagGCServerCreatFamilyTimes(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Times", c_int), #建盟次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0D
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0D
+ self.Times = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCServerCreatFamilyTimes)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
+ Cmd:%s,
+ SubCmd:%s,
+ Times:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Times
+ )
+ return DumpString
+
+
+m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
+
+
+#------------------------------------------------------
#A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo
class tagtMemberInfo(Structure):
@@ -2129,7 +2487,8 @@
Name = "" #(String Name)//size=NameLen
PlayerLV = 0 #(WORD PlayerLV)//玩家等级
PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
- PlayeFightPower = 0 #(DWORD PlayeFightPower)//玩家战斗力
+ PlayeFightPower = 0 #(DWORD PlayeFightPower)//玩家战斗力,求余亿部分
+ PlayeFightPowerEx = 0 #(DWORD PlayeFightPowerEx)//玩家战斗力,整除亿部分,1代表1亿
RequestTime = 0 #(DWORD RequestTime)//申请时间
IsOnLine = 0 #(BYTE IsOnLine)//是否在线
data = None
@@ -2146,6 +2505,7 @@
self.PlayerLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayeFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayeFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.IsOnLine,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
@@ -2157,6 +2517,7 @@
self.PlayerLV = 0
self.PlayeJob = 0
self.PlayeFightPower = 0
+ self.PlayeFightPowerEx = 0
self.RequestTime = 0
self.IsOnLine = 0
return
@@ -2168,6 +2529,7 @@
length += len(self.Name)
length += 2
length += 1
+ length += 4
length += 4
length += 4
length += 1
@@ -2182,6 +2544,7 @@
data = CommFunc.WriteWORD(data, self.PlayerLV)
data = CommFunc.WriteBYTE(data, self.PlayeJob)
data = CommFunc.WriteDWORD(data, self.PlayeFightPower)
+ data = CommFunc.WriteDWORD(data, self.PlayeFightPowerEx)
data = CommFunc.WriteDWORD(data, self.RequestTime)
data = CommFunc.WriteBYTE(data, self.IsOnLine)
return data
@@ -2194,6 +2557,7 @@
PlayerLV:%d,
PlayeJob:%d,
PlayeFightPower:%d,
+ PlayeFightPowerEx:%d,
RequestTime:%d,
IsOnLine:%d
'''\
@@ -2204,6 +2568,7 @@
self.PlayerLV,
self.PlayeJob,
self.PlayeFightPower,
+ self.PlayeFightPowerEx,
self.RequestTime,
self.IsOnLine
)
@@ -2274,6 +2639,452 @@
m_NAtagGCViewFamilyRequestInfo=tagGCViewFamilyRequestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCViewFamilyRequestInfo.Head.Cmd,m_NAtagGCViewFamilyRequestInfo.Head.SubCmd))] = m_NAtagGCViewFamilyRequestInfo
+
+
+#------------------------------------------------------
+# A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo
+
+class tagGCArenaBattlePlayerInfo(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)//目标玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
+ Score = 0 #(DWORD Score)//积分
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x26
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Score = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Score)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ Score:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.Score
+ )
+ return DumpString
+
+
+m_NAtagGCArenaBattlePlayerInfo=tagGCArenaBattlePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattlePlayerInfo.Head.Cmd,m_NAtagGCArenaBattlePlayerInfo.Head.SubCmd))] = m_NAtagGCArenaBattlePlayerInfo
+
+
+#------------------------------------------------------
+# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList
+
+class tagGCArenaBattleRecord(Structure):
+ PlayerID = 0 #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
+ Score = 0 #(DWORD Score)//积分
+ AddScoreLen = 0 #(BYTE AddScoreLen)
+ AddScore = "" #(String AddScore)//本次对战增加的积分,有正负
+ IsWin = 0 #(BYTE IsWin)//是否获胜
+ Time = 0 #(DWORD Time)//时间戳
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
+ self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Score = 0
+ self.AddScoreLen = 0
+ self.AddScore = ""
+ self.IsWin = 0
+ self.Time = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.AddScore)
+ length += 1
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Score)
+ data = CommFunc.WriteBYTE(data, self.AddScoreLen)
+ data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
+ data = CommFunc.WriteBYTE(data, self.IsWin)
+ data = CommFunc.WriteDWORD(data, self.Time)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ Score:%d,
+ AddScoreLen:%d,
+ AddScore:%s,
+ IsWin:%d,
+ Time:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.Score,
+ self.AddScoreLen,
+ self.AddScore,
+ self.IsWin,
+ self.Time
+ )
+ return DumpString
+
+
+class tagGCArenaBattleRecordList(Structure):
+ Head = tagHead()
+ RecordCount = 0 #(BYTE RecordCount)
+ BattleRecordList = list() #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x23
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RecordCount):
+ temBattleRecordList = tagGCArenaBattleRecord()
+ _pos = temBattleRecordList.ReadData(_lpData, _pos)
+ self.BattleRecordList.append(temBattleRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x23
+ self.RecordCount = 0
+ self.BattleRecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.RecordCount):
+ length += self.BattleRecordList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RecordCount)
+ for i in range(self.RecordCount):
+ data = CommFunc.WriteString(data, self.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RecordCount:%d,
+ BattleRecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList
+
+
+#------------------------------------------------------
+# A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList
+
+class tagGCArenaMatchInfo(Structure):
+ PlayerID = 0 #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
+ Score = 0 #(DWORD Score)//积分
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Score = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Score)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ Score:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.Score
+ )
+ return DumpString
+
+
+class tagGCArenaMatchList(Structure):
+ Head = tagHead()
+ MatchCount = 0 #(BYTE MatchCount)
+ MatchList = list() #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x22
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MatchCount):
+ temMatchList = tagGCArenaMatchInfo()
+ _pos = temMatchList.ReadData(_lpData, _pos)
+ self.MatchList.append(temMatchList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x22
+ self.MatchCount = 0
+ self.MatchList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.MatchCount):
+ length += self.MatchList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.MatchCount)
+ for i in range(self.MatchCount):
+ data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MatchCount:%d,
+ MatchList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MatchCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCArenaMatchList=tagGCArenaMatchList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList
#------------------------------------------------------
@@ -3421,7 +4232,7 @@
EvolveLV = 0 #(BYTE EvolveLV)//进化等级
WashLV = 0 #(BYTE WashLV)//洗练等级
WashValueCount = 0 #(BYTE WashValueCount)
- WashValueList = list() #(vector<WORD> WashValueList)//洗练值
+ WashValueList = list() #(vector<DWORD> WashValueList)//洗练值
StoneIDCount = 0 #(BYTE StoneIDCount)
StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
ClassEquipCount = 0 #(BYTE ClassEquipCount)
@@ -3445,7 +4256,7 @@
self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.WashValueCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.WashValueList.append(value)
self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.StoneIDCount):
@@ -3487,7 +4298,7 @@
length += 1
length += 1
length += 1
- length += 2 * self.WashValueCount
+ length += 4 * self.WashValueCount
length += 1
length += 4 * self.StoneIDCount
length += 1
@@ -3507,7 +4318,7 @@
data = CommFunc.WriteBYTE(data, self.WashLV)
data = CommFunc.WriteBYTE(data, self.WashValueCount)
for i in range(self.WashValueCount):
- data = CommFunc.WriteWORD(data, self.WashValueList[i])
+ data = CommFunc.WriteDWORD(data, self.WashValueList[i])
data = CommFunc.WriteBYTE(data, self.StoneIDCount)
for i in range(self.StoneIDCount):
data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
@@ -4316,6 +5127,215 @@
#------------------------------------------------------
+# A9 AD 通知天星塔全服奖励通关玩家信息 #tagGCSkyTowerPassPlayerInfo
+
+class tagGCSkyTowerPassPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCSkyTowerPassFloor(Structure):
+ FloorID = 0 #(DWORD FloorID)// 层ID
+ PassPlayerCount = 0 #(BYTE PassPlayerCount)// 通关记录玩家数
+ PassPlayerIDList = list() #(vector<DWORD> PassPlayerIDList)// 通关记录玩家ID列表 [第1个通过玩家ID, 第2个, ...]
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.FloorID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PassPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PassPlayerCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PassPlayerIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.FloorID = 0
+ self.PassPlayerCount = 0
+ self.PassPlayerIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 4 * self.PassPlayerCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.FloorID)
+ data = CommFunc.WriteBYTE(data, self.PassPlayerCount)
+ for i in range(self.PassPlayerCount):
+ data = CommFunc.WriteDWORD(data, self.PassPlayerIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ FloorID:%d,
+ PassPlayerCount:%d,
+ PassPlayerIDList:%s
+ '''\
+ %(
+ self.FloorID,
+ self.PassPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCSkyTowerPassPlayerInfo(Structure):
+ Head = tagHead()
+ FloorCount = 0 #(WORD FloorCount)
+ PassFloorList = list() #(vector<tagGCSkyTowerPassFloor> PassFloorList)// 通关塔层信息列表
+ PlayerCount = 0 #(WORD PlayerCount)
+ PassPlayerList = list() #(vector<tagGCSkyTowerPassPlayer> PassPlayerList)// 通关玩家信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0xAD
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FloorCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.FloorCount):
+ temPassFloorList = tagGCSkyTowerPassFloor()
+ _pos = temPassFloorList.ReadData(_lpData, _pos)
+ self.PassFloorList.append(temPassFloorList)
+ self.PlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.PlayerCount):
+ temPassPlayerList = tagGCSkyTowerPassPlayer()
+ _pos = temPassPlayerList.ReadData(_lpData, _pos)
+ self.PassPlayerList.append(temPassPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0xAD
+ self.FloorCount = 0
+ self.PassFloorList = list()
+ self.PlayerCount = 0
+ self.PassPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.FloorCount):
+ length += self.PassFloorList[i].GetLength()
+ length += 2
+ for i in range(self.PlayerCount):
+ length += self.PassPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.FloorCount)
+ for i in range(self.FloorCount):
+ data = CommFunc.WriteString(data, self.PassFloorList[i].GetLength(), self.PassFloorList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.PlayerCount)
+ for i in range(self.PlayerCount):
+ data = CommFunc.WriteString(data, self.PassPlayerList[i].GetLength(), self.PassPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FloorCount:%d,
+ PassFloorList:%s,
+ PlayerCount:%d,
+ PassPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FloorCount,
+ "...",
+ self.PlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCSkyTowerPassPlayerInfo=tagGCSkyTowerPassPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSkyTowerPassPlayerInfo.Head.Cmd,m_NAtagGCSkyTowerPassPlayerInfo.Head.SubCmd))] = m_NAtagGCSkyTowerPassPlayerInfo
+
+
+#------------------------------------------------------
# A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
class tagGCStoreServerBuyCnt(Structure):
@@ -4641,7 +5661,8 @@
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
("TotalPoint", c_int), # 复活总点数
- ("RebornCnt", c_ushort), # 复活次数
+ ("RebornCnt", c_ushort), # 今日已复活次数
+ ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
]
def __init__(self):
@@ -4661,6 +5682,7 @@
self.Point = 0
self.TotalPoint = 0
self.RebornCnt = 0
+ self.TotalRebornCnt = 0
return
def GetLength(self):
@@ -4675,20 +5697,304 @@
SubCmd:%s,
Point:%d,
TotalPoint:%d,
- RebornCnt:%d
+ RebornCnt:%d,
+ TotalRebornCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.Point,
self.TotalPoint,
- self.RebornCnt
+ self.RebornCnt,
+ self.TotalRebornCnt
)
return DumpString
m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
+
+
+#------------------------------------------------------
+# AC 13 跨服全民充值活动信息 #tagGCCrossActAllRechargeInfo
+
+class tagGCCrossActAllRechargeItem(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(tagGCCrossActAllRechargeItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 13 跨服全民充值活动信息 //tagGCCrossActAllRechargeInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagGCCrossActAllRechargeAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedRMB = 0 #(DWORD NeedRMB)// 所需全民充值RMB
+ NeedPlayerCount = 0 #(WORD NeedPlayerCount)// 所需充值达到该档玩家数
+ NowPlayerCount = 0 #(WORD NowPlayerCount)// 当前充值达到该档玩家数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItemList = list() #(vector<tagGCCrossActAllRechargeItem> 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.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.NowPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagGCCrossActAllRechargeItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedRMB = 0
+ self.NeedPlayerCount = 0
+ self.NowPlayerCount = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedRMB)
+ data = CommFunc.WriteWORD(data, self.NeedPlayerCount)
+ data = CommFunc.WriteWORD(data, self.NowPlayerCount)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedRMB:%d,
+ NeedPlayerCount:%d,
+ NowPlayerCount:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedRMB,
+ self.NeedPlayerCount,
+ self.NowPlayerCount,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossActAllRechargeInfo(Structure):
+ Head = tagHead()
+ ServerInfoLen = 0 #(BYTE ServerInfoLen)
+ ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardList = list() #(vector<tagGCCrossActAllRechargeAward> AwardList)// 奖励档次信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x13
+ 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.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardList = tagGCCrossActAllRechargeAward()
+ _pos = temAwardList.ReadData(_lpData, _pos)
+ self.AwardList.append(temAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x13
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AwardCount = 0
+ self.AwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 10
+ length += 10
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardList[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.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AwardCount:%d,
+ AwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.StartDate,
+ self.EndtDate,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossActAllRechargeInfo=tagGCCrossActAllRechargeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActAllRechargeInfo.Head.Cmd,m_NAtagGCCrossActAllRechargeInfo.Head.SubCmd))] = m_NAtagGCCrossActAllRechargeInfo
+
+
+#------------------------------------------------------
+# AC 12 跨服运营活动结束 # tagGCCrossActEnd
+
+class tagGCCrossActEnd(Structure):
+ Head = tagHead()
+ ActNameLen = 0 #(BYTE ActNameLen)
+ ActName = "" #(String ActName)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ActName,_pos = CommFunc.ReadString(_lpData, _pos,self.ActNameLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x12
+ self.ActNameLen = 0
+ self.ActName = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ActName)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNameLen)
+ data = CommFunc.WriteString(data, self.ActNameLen, self.ActName)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNameLen:%d,
+ ActName:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNameLen,
+ self.ActName
+ )
+ return DumpString
+
+
+m_NAtagGCCrossActEnd=tagGCCrossActEnd()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActEnd.Head.Cmd,m_NAtagGCCrossActEnd.Head.SubCmd))] = m_NAtagGCCrossActEnd
#------------------------------------------------------
@@ -4774,6 +6080,58 @@
m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
+
+
+#------------------------------------------------------
+# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
+
+class tagGCFamilyWarInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("WorldLV", c_ushort), # 当前进行中的联赛世界等级
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAC
+ self.SubCmd = 0x01
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAC
+ self.SubCmd = 0x01
+ self.WorldLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCFamilyWarInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ WorldLV:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.WorldLV
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
#------------------------------------------------------
@@ -5674,6 +7032,427 @@
#------------------------------------------------------
+# B0 01 新增协助 #tagGCAssistInfoList
+
+class tagGCAssistInfo(Structure):
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ return _pos
+
+ def Clear(self):
+ self.AssistGUID = ""
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AssistGUID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s
+ '''\
+ %(
+ self.AssistGUID,
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData
+ )
+ return DumpString
+
+
+class tagGCAssistInfoList(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAssistInfoList = tagGCAssistInfo()
+ _pos = temAssistInfoList.ReadData(_lpData, _pos)
+ self.AssistInfoList.append(temAssistInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x01
+ self.Count = 0
+ self.AssistInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.AssistInfoList[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.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ AssistInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAssistInfoList=tagGCAssistInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
+
+
+#------------------------------------------------------
+# B0 03 正在进行中的协助 #tagGCAssistingInfo
+
+class tagGCAssistingInfo(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x03
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x03
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCAssistingInfo=tagGCAssistingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
+
+
+#------------------------------------------------------
+# B0 08 协助结束 #tagGCAssistOver
+
+class tagGCAssistOver(Structure):
+ Head = tagHead()
+ IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因
+ ReasonLen = 0 #(BYTE ReasonLen)
+ Reason = "" #(String Reason)//原因
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x08
+ self.IsTagPlayerReason = 0
+ self.ReasonLen = 0
+ self.Reason = ""
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += len(self.Reason)
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
+ data = CommFunc.WriteBYTE(data, self.ReasonLen)
+ data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IsTagPlayerReason:%d,
+ ReasonLen:%d,
+ Reason:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsTagPlayerReason,
+ self.ReasonLen,
+ self.Reason,
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCAssistOver=tagGCAssistOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
+
+
+#------------------------------------------------------
+# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
+
+class tagGCCanGetAssistThanksGiftCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CanGetCount", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x06
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x06
+ self.CanGetCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCanGetAssistThanksGiftCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
+ Cmd:%s,
+ SubCmd:%s,
+ CanGetCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CanGetCount
+ )
+ return DumpString
+
+
+m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
+
+
+#------------------------------------------------------
+# B0 02 删除协助 #tagGCClearAssist
+
+class tagGCClearAssist(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x02
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCClearAssist=tagGCClearAssist()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
+
+
+#------------------------------------------------------
#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
class tagFamilyArrestOverState(Structure):
@@ -5802,6 +7581,324 @@
#------------------------------------------------------
+# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
+
+class tagGCGetAssistThanksGiftPreview(Structure):
+ Head = tagHead()
+ ItemID = 0 #(DWORD ItemID)//礼盒ID
+ PlayerID = 0 #(DWORD PlayerID)//发起玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
+ ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x05
+ self.ItemID = 0
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ self.TimeStr = ""
+ self.ExtraAward = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+ length += 19
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ data = CommFunc.WriteString(data, 19, self.TimeStr)
+ data = CommFunc.WriteBYTE(data, self.ExtraAward)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemID:%d,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s,
+ TimeStr:%s,
+ ExtraAward:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemID,
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData,
+ self.TimeStr,
+ self.ExtraAward
+ )
+ return DumpString
+
+
+m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
+
+
+#------------------------------------------------------
+# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
+
+class tagGCAssistPlayerInfo(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCUseAssistThanksGiftPreview(Structure):
+ Head = tagHead()
+ ItemID = 0 #(DWORD ItemID)//礼盒ID
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ AssistPlayerCount = 0 #(BYTE AssistPlayerCount)
+ AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemID,_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)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AssistPlayerCount):
+ temAssistPlayerList = tagGCAssistPlayerInfo()
+ _pos = temAssistPlayerList.ReadData(_lpData, _pos)
+ self.AssistPlayerList.append(temAssistPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x04
+ self.ItemID = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ self.AssistPlayerCount = 0
+ self.AssistPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+ length += 1
+ for i in range(self.AssistPlayerCount):
+ length += self.AssistPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
+ for i in range(self.AssistPlayerCount):
+ data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemID:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s,
+ AssistPlayerCount:%d,
+ AssistPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemID,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData,
+ self.AssistPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
+
+
+#------------------------------------------------------
#B3 03 询问是否允许添加好友#tagGCFriendAskIfJoin
class tagGCFriendAskIfJoin(Structure):
@@ -5877,6 +7974,994 @@
m_NAtagGCFriendAskIfJoin=tagGCFriendAskIfJoin()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFriendAskIfJoin.Head.Cmd,m_NAtagGCFriendAskIfJoin.Head.SubCmd))] = m_NAtagGCFriendAskIfJoin
+
+
+#------------------------------------------------------
+# B3 24 喜糖列表 #tagGCCandyList
+
+class tagGCCandyInfo(Structure):
+ PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
+ NameALen = 0 #(BYTE NameALen)
+ PlayerNameA = "" #(String PlayerNameA)
+ PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
+ NameBLen = 0 #(BYTE NameBLen)
+ PlayerNameB = "" #(String PlayerNameB)
+ BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
+ MarryTime = 0 #(DWORD MarryTime)// 成亲时间戳,秒
+ EndTime = 0 #(DWORD EndTime)// 结束时间戳,秒
+ Prosperity = 0 #(DWORD Prosperity)// 当前繁荣度
+ FireworksTotalBuyCount = 0 #(BYTE FireworksTotalBuyCount)// 烟花总已购买次数
+ FireworksPlayerBuyCount = 0 #(BYTE FireworksPlayerBuyCount)// 烟花玩家已购买次数
+ PlayerFreeEatCandyCount = 0 #(BYTE PlayerFreeEatCandyCount)// 玩家已免费吃该喜糖总次数,包含免费次数、烟花赠送次数
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
+ self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
+ self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Prosperity,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FireworksTotalBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FireworksPlayerBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerFreeEatCandyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerIDA = 0
+ self.NameALen = 0
+ self.PlayerNameA = ""
+ self.PlayerIDB = 0
+ self.NameBLen = 0
+ self.PlayerNameB = ""
+ self.BridePriceID = 0
+ self.MarryTime = 0
+ self.EndTime = 0
+ self.Prosperity = 0
+ self.FireworksTotalBuyCount = 0
+ self.FireworksPlayerBuyCount = 0
+ self.PlayerFreeEatCandyCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerNameA)
+ length += 4
+ length += 1
+ length += len(self.PlayerNameB)
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerIDA)
+ data = CommFunc.WriteBYTE(data, self.NameALen)
+ data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDB)
+ data = CommFunc.WriteBYTE(data, self.NameBLen)
+ data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
+ data = CommFunc.WriteBYTE(data, self.BridePriceID)
+ data = CommFunc.WriteDWORD(data, self.MarryTime)
+ data = CommFunc.WriteDWORD(data, self.EndTime)
+ data = CommFunc.WriteDWORD(data, self.Prosperity)
+ data = CommFunc.WriteBYTE(data, self.FireworksTotalBuyCount)
+ data = CommFunc.WriteBYTE(data, self.FireworksPlayerBuyCount)
+ data = CommFunc.WriteBYTE(data, self.PlayerFreeEatCandyCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerIDA:%d,
+ NameALen:%d,
+ PlayerNameA:%s,
+ PlayerIDB:%d,
+ NameBLen:%d,
+ PlayerNameB:%s,
+ BridePriceID:%d,
+ MarryTime:%d,
+ EndTime:%d,
+ Prosperity:%d,
+ FireworksTotalBuyCount:%d,
+ FireworksPlayerBuyCount:%d,
+ PlayerFreeEatCandyCount:%d
+ '''\
+ %(
+ self.PlayerIDA,
+ self.NameALen,
+ self.PlayerNameA,
+ self.PlayerIDB,
+ self.NameBLen,
+ self.PlayerNameB,
+ self.BridePriceID,
+ self.MarryTime,
+ self.EndTime,
+ self.Prosperity,
+ self.FireworksTotalBuyCount,
+ self.FireworksPlayerBuyCount,
+ self.PlayerFreeEatCandyCount
+ )
+ return DumpString
+
+
+class tagGCCandyList(Structure):
+ Head = tagHead()
+ CandyCount = 0 #(WORD CandyCount)
+ CandyInfoList = list() #(vector<tagGCCandyInfo> CandyInfoList)// 可吃喜糖列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x24
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CandyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.CandyCount):
+ temCandyInfoList = tagGCCandyInfo()
+ _pos = temCandyInfoList.ReadData(_lpData, _pos)
+ self.CandyInfoList.append(temCandyInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x24
+ self.CandyCount = 0
+ self.CandyInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.CandyCount):
+ length += self.CandyInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.CandyCount)
+ for i in range(self.CandyCount):
+ data = CommFunc.WriteString(data, self.CandyInfoList[i].GetLength(), self.CandyInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ CandyCount:%d,
+ CandyInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CandyCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCandyList=tagGCCandyList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCandyList.Head.Cmd,m_NAtagGCCandyList.Head.SubCmd))] = m_NAtagGCCandyList
+
+
+#------------------------------------------------------
+# B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList
+
+class tagGCCharmOfferBillboardData(Structure):
+ OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
+ PlayerID = 0 #(DWORD PlayerID)// 玩家ID - 贡献者
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ CharmValue = 0 #(DWORD CharmValue)//贡献魅力值
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.OrderIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.CharmValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.OrderIndex = 0
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.CharmValue = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.OrderIndex)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteDWORD(data, self.CharmValue)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ OrderIndex:%d,
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ CharmValue:%d
+ '''\
+ %(
+ self.OrderIndex,
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.CharmValue
+ )
+ return DumpString
+
+
+class tagGCCharmOfferBillboardDataList(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)// 魅力玩家ID
+ QueryType = 0 #(BYTE QueryType)// 查看类型: 1-总榜,2-周榜,3-日榜
+ DataCount = 0 #(BYTE DataCount)
+ OfferBillboardDataList = list() #(vector<tagGCCharmOfferBillboardData> OfferBillboardDataList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x19
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.DataCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DataCount):
+ temOfferBillboardDataList = tagGCCharmOfferBillboardData()
+ _pos = temOfferBillboardDataList.ReadData(_lpData, _pos)
+ self.OfferBillboardDataList.append(temOfferBillboardDataList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x19
+ self.PlayerID = 0
+ self.QueryType = 0
+ self.DataCount = 0
+ self.OfferBillboardDataList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.DataCount):
+ length += self.OfferBillboardDataList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.QueryType)
+ data = CommFunc.WriteBYTE(data, self.DataCount)
+ for i in range(self.DataCount):
+ data = CommFunc.WriteString(data, self.OfferBillboardDataList[i].GetLength(), self.OfferBillboardDataList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ QueryType:%d,
+ DataCount:%d,
+ OfferBillboardDataList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.QueryType,
+ self.DataCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCharmOfferBillboardDataList=tagGCCharmOfferBillboardDataList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCharmOfferBillboardDataList.Head.Cmd,m_NAtagGCCharmOfferBillboardDataList.Head.SubCmd))] = m_NAtagGCCharmOfferBillboardDataList
+
+
+#------------------------------------------------------
+# B3 26 伴侣信息 #tagGCCoupleInfo
+
+class tagGCCoupleInfo(Structure):
+ Head = tagHead()
+ CoupleID = 0 #(DWORD CoupleID)// 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
+ NameLen = 0 #(BYTE NameLen)
+ CoupleName = "" #(String CoupleName)
+ NewMarryTime = 0 #(DWORD NewMarryTime)// 新婚时间戳, 秒,计算结婚天数按该时间计算
+ MarryTime = 0 #(DWORD MarryTime)// 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
+ BridePriceState = 0 #(DWORD BridePriceState)// 聘礼状态,按位存储已购买次数,如205代表ID1买了5次,ID2买了0次,ID3买了2次,最高9次
+ BreakRequestID = 0 #(DWORD BreakRequestID)// 当前请求中的和离时间戳 - 请求方ID,0代表没人发起请求
+ BreakRequestTime = 0 #(DWORD BreakRequestTime)// 当前请求中的和离时间戳, 秒,用于计算和离回应有效期
+ PlayerBreakRequestTime = 0 #(DWORD PlayerBreakRequestTime)// 玩家最近一次和离请求时间戳, 秒,用于计算自身的请求和离CD
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CoupleName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.NewMarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BridePriceState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BreakRequestID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerBreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x26
+ self.CoupleID = 0
+ self.NameLen = 0
+ self.CoupleName = ""
+ self.NewMarryTime = 0
+ self.MarryTime = 0
+ self.BridePriceState = 0
+ self.BreakRequestID = 0
+ self.BreakRequestTime = 0
+ self.PlayerBreakRequestTime = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.CoupleName)
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CoupleID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.CoupleName)
+ data = CommFunc.WriteDWORD(data, self.NewMarryTime)
+ data = CommFunc.WriteDWORD(data, self.MarryTime)
+ data = CommFunc.WriteDWORD(data, self.BridePriceState)
+ data = CommFunc.WriteDWORD(data, self.BreakRequestID)
+ data = CommFunc.WriteDWORD(data, self.BreakRequestTime)
+ data = CommFunc.WriteDWORD(data, self.PlayerBreakRequestTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ CoupleID:%d,
+ NameLen:%d,
+ CoupleName:%s,
+ NewMarryTime:%d,
+ MarryTime:%d,
+ BridePriceState:%d,
+ BreakRequestID:%d,
+ BreakRequestTime:%d,
+ PlayerBreakRequestTime:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CoupleID,
+ self.NameLen,
+ self.CoupleName,
+ self.NewMarryTime,
+ self.MarryTime,
+ self.BridePriceState,
+ self.BreakRequestID,
+ self.BreakRequestTime,
+ self.PlayerBreakRequestTime
+ )
+ return DumpString
+
+
+m_NAtagGCCoupleInfo=tagGCCoupleInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCoupleInfo.Head.Cmd,m_NAtagGCCoupleInfo.Head.SubCmd))] = m_NAtagGCCoupleInfo
+
+
+#------------------------------------------------------
+# B3 22 收到提亲信息 #tagGCMarryReqInfo
+
+class tagGCMarryReqInfo(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)// 同一个玩家ID多次提亲时可能同步多次,前端覆盖数据即可
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x22
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x22
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.BridePriceID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.BridePriceID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ BridePriceID:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.BridePriceID
+ )
+ return DumpString
+
+
+m_NAtagGCMarryReqInfo=tagGCMarryReqInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqInfo.Head.Cmd,m_NAtagGCMarryReqInfo.Head.SubCmd))] = m_NAtagGCMarryReqInfo
+
+
+#------------------------------------------------------
+# B3 21 提亲发送成功 #tagGCMarryReqOK
+
+class tagGCMarryReqOK(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x21
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x21
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCMarryReqOK)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 21 提亲发送成功 //tagGCMarryReqOK:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagGCMarryReqOK=tagGCMarryReqOK()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqOK.Cmd,m_NAtagGCMarryReqOK.SubCmd))] = m_NAtagGCMarryReqOK
+
+
+#------------------------------------------------------
+# B3 23 提亲回应结果 #tagGCMarryResponseRet
+
+class tagGCMarryResponseRet(Structure):
+ Head = tagHead()
+ PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
+ NameALen = 0 #(BYTE NameALen)
+ PlayerNameA = "" #(String PlayerNameA)
+ PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
+ NameBLen = 0 #(BYTE NameBLen)
+ PlayerNameB = "" #(String PlayerNameB)
+ IsOK = 0 #(BYTE IsOK)// 是否同意,0-否,1-是; 如果同意则双方都会收到该包,根据玩家ID判断自己是请求或接受方,显示不同的同意结果界面;不同意只有请求方会收到
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x23
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
+ self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
+ self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x23
+ self.PlayerIDA = 0
+ self.NameALen = 0
+ self.PlayerNameA = ""
+ self.PlayerIDB = 0
+ self.NameBLen = 0
+ self.PlayerNameB = ""
+ self.IsOK = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += len(self.PlayerNameA)
+ length += 4
+ length += 1
+ length += len(self.PlayerNameB)
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerIDA)
+ data = CommFunc.WriteBYTE(data, self.NameALen)
+ data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDB)
+ data = CommFunc.WriteBYTE(data, self.NameBLen)
+ data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
+ data = CommFunc.WriteBYTE(data, self.IsOK)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerIDA:%d,
+ NameALen:%d,
+ PlayerNameA:%s,
+ PlayerIDB:%d,
+ NameBLen:%d,
+ PlayerNameB:%s,
+ IsOK:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerIDA,
+ self.NameALen,
+ self.PlayerNameA,
+ self.PlayerIDB,
+ self.NameBLen,
+ self.PlayerNameB,
+ self.IsOK
+ )
+ return DumpString
+
+
+m_NAtagGCMarryResponseRet=tagGCMarryResponseRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryResponseRet.Head.Cmd,m_NAtagGCMarryResponseRet.Head.SubCmd))] = m_NAtagGCMarryResponseRet
+
+
+#------------------------------------------------------
+# B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo
+
+class tagGCPlayerCharmValueInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CharmValueTotal", c_int), #当前魅力值 - 总
+ ("CharmValueWeek", c_int), #当前魅力值 - 周
+ ("CharmValueDay", c_int), #当前魅力值 - 日
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x25
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x25
+ self.CharmValueTotal = 0
+ self.CharmValueWeek = 0
+ self.CharmValueDay = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCPlayerCharmValueInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 25 玩家魅力值信息 //tagGCPlayerCharmValueInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CharmValueTotal:%d,
+ CharmValueWeek:%d,
+ CharmValueDay:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CharmValueTotal,
+ self.CharmValueWeek,
+ self.CharmValueDay
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerCharmValueInfo=tagGCPlayerCharmValueInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerCharmValueInfo.Cmd,m_NAtagGCPlayerCharmValueInfo.SubCmd))] = m_NAtagGCPlayerCharmValueInfo
+
+
+#------------------------------------------------------
+# B3 20 送礼物成功通知 #tagGCSendGiftsOKList
+
+class tagGCSendGiftsOK(Structure):
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)// 赠送方玩家名
+ PlayerID = 0 #(DWORD PlayerID)// 赠送方玩家ID
+ GiftNum = 0 #(WORD GiftNum)// 赠送礼物编号
+ GiftCount = 0 #(DWORD GiftCount)// 赠送礼物数量
+ SendTime = 0 #(DWORD SendTime)// 赠送时间戳
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GiftCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SendTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.NameLen = 0
+ self.Name = ""
+ self.PlayerID = 0
+ self.GiftNum = 0
+ self.GiftCount = 0
+ self.SendTime = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += len(self.Name)
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteWORD(data, self.GiftNum)
+ data = CommFunc.WriteDWORD(data, self.GiftCount)
+ data = CommFunc.WriteDWORD(data, self.SendTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NameLen:%d,
+ Name:%s,
+ PlayerID:%d,
+ GiftNum:%d,
+ GiftCount:%d,
+ SendTime:%d
+ '''\
+ %(
+ self.NameLen,
+ self.Name,
+ self.PlayerID,
+ self.GiftNum,
+ self.GiftCount,
+ self.SendTime
+ )
+ return DumpString
+
+
+class tagGCSendGiftsOKList(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)
+ SendGiftsOKList = list() #(vector<tagGCSendGiftsOK> SendGiftsOKList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temSendGiftsOKList = tagGCSendGiftsOK()
+ _pos = temSendGiftsOKList.ReadData(_lpData, _pos)
+ self.SendGiftsOKList.append(temSendGiftsOKList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x20
+ self.Count = 0
+ self.SendGiftsOKList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.SendGiftsOKList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.SendGiftsOKList[i].GetLength(), self.SendGiftsOKList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SendGiftsOKList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCSendGiftsOKList=tagGCSendGiftsOKList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendGiftsOKList.Head.Cmd,m_NAtagGCSendGiftsOKList.Head.SubCmd))] = m_NAtagGCSendGiftsOKList
+
+
+#------------------------------------------------------
+# B3 14 社交人群伴侣信息 #tagGCSocialCouples
+
+class tagGCSocialCouple(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("PlayerID", c_int),
+ ("CoupleID", c_int), #伴侣ID
+ ]
+
+ 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.PlayerID = 0
+ self.CoupleID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCSocialCouple)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 14 社交人群伴侣信息 //tagGCSocialCouples:
+ PlayerID:%d,
+ CoupleID:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.CoupleID
+ )
+ return DumpString
+
+
+class tagGCSocialCouples(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)
+ Player = list() #(vector<tagGCSocialCouple> Player)//size = Count
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x14
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temPlayer = tagGCSocialCouple()
+ _pos = temPlayer.ReadData(_lpData, _pos)
+ self.Player.append(temPlayer)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x14
+ self.Count = 0
+ self.Player = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.Player[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.Player[i].GetLength(), self.Player[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ Player:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCSocialCouples=tagGCSocialCouples()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSocialCouples.Head.Cmd,m_NAtagGCSocialCouples.Head.SubCmd))] = m_NAtagGCSocialCouples
#------------------------------------------------------
@@ -6250,7 +9335,7 @@
_pack_ = 1
_fields_ = [
("PlayerID", c_int),
- ("SortValue", c_int),
+ ("SortValue", c_int), # 亲密组时为亲密度
]
def __init__(self):
@@ -6287,7 +9372,7 @@
class tagGCGroupPlayers(Structure):
Head = tagHead()
- GroupType = 0 #(BYTE GroupType)// 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
+ GroupType = 0 #(BYTE GroupType)// 分组 1 最近联系人 2 好友 3 仇人 4 黑名单 5亲密组
Count = 0 #(WORD Count)
Players = list() #(vector<tagGCGroupPlayer> Players)//size = Count
data = None
@@ -6669,6 +9754,162 @@
#------------------------------------------------------
+# B3 11 聊天缓存通知 #tagGCTalkCache
+
+class tagGCTalkCacheInfo(Structure):
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)//size = SrcNameLen
+ PlayerID = 0 #(DWORD PlayerID)
+ Time = 0 #(DWORD Time)
+ Len = 0 #(WORD Len)
+ Content = "" #(String Content)//size = Len
+ Extras = "" #(char Extras[256])//附加值列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+ self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
+ return _pos
+
+ def Clear(self):
+ self.ChannelType = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.PlayerID = 0
+ self.Time = 0
+ self.Len = 0
+ self.Content = ""
+ self.Extras = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += len(self.Name)
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.Content)
+ length += 256
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ChannelType)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteDWORD(data, self.Time)
+ data = CommFunc.WriteWORD(data, self.Len)
+ data = CommFunc.WriteString(data, self.Len, self.Content)
+ data = CommFunc.WriteString(data, 256, self.Extras)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ChannelType:%d,
+ NameLen:%d,
+ Name:%s,
+ PlayerID:%d,
+ Time:%d,
+ Len:%d,
+ Content:%s,
+ Extras:%s
+ '''\
+ %(
+ self.ChannelType,
+ self.NameLen,
+ self.Name,
+ self.PlayerID,
+ self.Time,
+ self.Len,
+ self.Content,
+ self.Extras
+ )
+ return DumpString
+
+
+class tagGCTalkCache(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)
+ InfoList = list() #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagGCTalkCacheInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x11
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCTalkCache=tagGCTalkCache()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
+
+
+#------------------------------------------------------
# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
class tagGCAddAuctionItem(Structure):
@@ -6858,7 +10099,7 @@
ItemID = 0 #(DWORD ItemID)
ItemCount = 0 #(WORD ItemCount)
AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
- BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
UserDataLen = 0 #(WORD UserDataLen)
UserData = "" #(String UserData)//自定义数据
@@ -6875,7 +10116,7 @@
self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
- self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -6900,7 +10141,7 @@
length += 4
length += 2
length += 19
- length += 2
+ length += 4
length += 19
length += 2
length += len(self.UserData)
@@ -6914,7 +10155,7 @@
data = CommFunc.WriteDWORD(data, self.ItemID)
data = CommFunc.WriteWORD(data, self.ItemCount)
data = CommFunc.WriteString(data, 19, self.AddTime)
- data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
data = CommFunc.WriteString(data, 19, self.BiddingTime)
data = CommFunc.WriteWORD(data, self.UserDataLen)
data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -7021,7 +10262,7 @@
ItemID = 0 #(DWORD ItemID)
ItemCount = 0 #(WORD ItemCount)
AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
- BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
UserDataLen = 0 #(WORD UserDataLen)
UserData = "" #(String UserData)//自定义数据
@@ -7038,7 +10279,7 @@
self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
- self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -7063,7 +10304,7 @@
length += 4
length += 2
length += 19
- length += 2
+ length += 4
length += 19
length += 2
length += len(self.UserData)
@@ -7077,7 +10318,7 @@
data = CommFunc.WriteDWORD(data, self.ItemID)
data = CommFunc.WriteWORD(data, self.ItemCount)
data = CommFunc.WriteString(data, 19, self.AddTime)
- data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
data = CommFunc.WriteString(data, 19, self.BiddingTime)
data = CommFunc.WriteWORD(data, self.UserDataLen)
data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -7261,7 +10502,7 @@
ItemCount = 0 #(WORD ItemCount)
AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
- BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
UserDataLen = 0 #(WORD UserDataLen)
UserData = "" #(String UserData)//自定义数据
@@ -7279,7 +10520,7 @@
self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -7306,7 +10547,7 @@
length += 2
length += 19
length += 4
- length += 2
+ length += 4
length += 19
length += 2
length += len(self.UserData)
@@ -7321,7 +10562,7 @@
data = CommFunc.WriteWORD(data, self.ItemCount)
data = CommFunc.WriteString(data, 19, self.AddTime)
data = CommFunc.WriteDWORD(data, self.BidderID)
- data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
data = CommFunc.WriteString(data, 19, self.BiddingTime)
data = CommFunc.WriteWORD(data, self.UserDataLen)
data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -7529,6 +10770,74 @@
#------------------------------------------------------
+# B5 11 部位升星自动购买拍品消耗信息 #tagGCEquipStarAutoBuyCostInfo
+
+class tagGCEquipStarAutoBuyCostInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 当前要升星的境界阶
+ ("EquipPlace", c_ubyte), #当前要升星的装备位
+ ("CurStar", c_ubyte), #当前星级
+ ("CurRate", c_ubyte), #当前自动购买后的总概率,不满100则代表拍品库存不足
+ ("AutoBuyCostMoney", c_int), #自动购买所需总消耗
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB5
+ self.SubCmd = 0x11
+ self.ClassLV = 0
+ self.EquipPlace = 0
+ self.CurStar = 0
+ self.CurRate = 0
+ self.AutoBuyCostMoney = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCEquipStarAutoBuyCostInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 11 部位升星自动购买拍品消耗信息 //tagGCEquipStarAutoBuyCostInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ EquipPlace:%d,
+ CurStar:%d,
+ CurRate:%d,
+ AutoBuyCostMoney:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.EquipPlace,
+ self.CurStar,
+ self.CurRate,
+ self.AutoBuyCostMoney
+ )
+ return DumpString
+
+
+m_NAtagGCEquipStarAutoBuyCostInfo=tagGCEquipStarAutoBuyCostInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEquipStarAutoBuyCostInfo.Cmd,m_NAtagGCEquipStarAutoBuyCostInfo.SubCmd))] = m_NAtagGCEquipStarAutoBuyCostInfo
+
+
+#------------------------------------------------------
# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
class tagGCFamilyAuctionItem(Structure):
@@ -7537,7 +10846,7 @@
ItemID = 0 #(DWORD ItemID)
ItemCount = 0 #(WORD ItemCount)
AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
- BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
UserDataLen = 0 #(WORD UserDataLen)
UserData = "" #(String UserData)//自定义数据
@@ -7557,7 +10866,7 @@
self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
- self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -7588,7 +10897,7 @@
length += 4
length += 2
length += 19
- length += 2
+ length += 4
length += 19
length += 2
length += len(self.UserData)
@@ -7605,7 +10914,7 @@
data = CommFunc.WriteDWORD(data, self.ItemID)
data = CommFunc.WriteWORD(data, self.ItemCount)
data = CommFunc.WriteString(data, 19, self.AddTime)
- data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
data = CommFunc.WriteString(data, 19, self.BiddingTime)
data = CommFunc.WriteWORD(data, self.UserDataLen)
data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -7721,7 +11030,7 @@
ItemID = 0 #(DWORD ItemID)
ItemCount = 0 #(WORD ItemCount)
AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
- BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
UserDataLen = 0 #(WORD UserDataLen)
UserData = "" #(String UserData)//自定义数据
@@ -7738,7 +11047,7 @@
self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
- self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -7763,7 +11072,7 @@
length += 4
length += 2
length += 19
- length += 2
+ length += 4
length += 19
length += 2
length += len(self.UserData)
@@ -7777,7 +11086,7 @@
data = CommFunc.WriteDWORD(data, self.ItemID)
data = CommFunc.WriteWORD(data, self.ItemCount)
data = CommFunc.WriteString(data, 19, self.AddTime)
- data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
data = CommFunc.WriteString(data, 19, self.BiddingTime)
data = CommFunc.WriteWORD(data, self.UserDataLen)
data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -9650,6 +12959,1813 @@
#------------------------------------------------------
+# C0 23 跨服排位竞猜个人信息 #tagGCChampionshipGuessPriInfo
+
+class tagGCChampionshipGuessPlayerPri(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("PlayerID", c_int), # 目标玩家ID
+ ("MoneyTotal", c_int), # 已投注该玩家货币总数
+ ("GuessRank", c_ubyte), # 竞猜名次,没有名次的竞猜默认0;1-代表第一名
+ ]
+
+ 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.PlayerID = 0
+ self.MoneyTotal = 0
+ self.GuessRank = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCChampionshipGuessPlayerPri)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 23 跨服排位竞猜个人信息 //tagGCChampionshipGuessPriInfo:
+ PlayerID:%d,
+ MoneyTotal:%d,
+ GuessRank:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.MoneyTotal,
+ self.GuessRank
+ )
+ return DumpString
+
+
+class tagGCChampionshipGuessPriList(Structure):
+ GuessType = 0 #(BYTE GuessType)//竞猜类型 8-8强;4-4强排位
+ PlayerCount = 0 #(BYTE PlayerCount)
+ GuessPlayerList = list() #(vector<tagGCChampionshipGuessPlayerPri> GuessPlayerList)// 被竞猜玩家列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GuessType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PlayerCount):
+ temGuessPlayerList = tagGCChampionshipGuessPlayerPri()
+ _pos = temGuessPlayerList.ReadData(_lpData, _pos)
+ self.GuessPlayerList.append(temGuessPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.GuessType = 0
+ self.PlayerCount = 0
+ self.GuessPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ for i in range(self.PlayerCount):
+ length += self.GuessPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.GuessType)
+ data = CommFunc.WriteBYTE(data, self.PlayerCount)
+ for i in range(self.PlayerCount):
+ data = CommFunc.WriteString(data, self.GuessPlayerList[i].GetLength(), self.GuessPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GuessType:%d,
+ PlayerCount:%d,
+ GuessPlayerList:%s
+ '''\
+ %(
+ self.GuessType,
+ self.PlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCChampionshipGuessPriInfo(Structure):
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 排位数据分区ID
+ Count = 0 #(BYTE Count)
+ GuessList = list() #(vector<tagGCChampionshipGuessPriList> GuessList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x23
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temGuessList = tagGCChampionshipGuessPriList()
+ _pos = temGuessList.ReadData(_lpData, _pos)
+ self.GuessList.append(temGuessList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x23
+ self.ZoneID = 0
+ self.Count = 0
+ self.GuessList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.Count):
+ length += self.GuessList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.GuessList[i].GetLength(), self.GuessList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneID:%d,
+ Count:%d,
+ GuessList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipGuessPriInfo=tagGCChampionshipGuessPriInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipGuessPriInfo.Head.Cmd,m_NAtagGCChampionshipGuessPriInfo.Head.SubCmd))] = m_NAtagGCChampionshipGuessPriInfo
+
+
+#------------------------------------------------------
+# C0 22 跨服排位竞猜公共信息 #tagGCChampionshipGuessPubInfo
+
+class tagGCChampionshipGuessPlayerPub(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("PlayerID", c_int), # 目标玩家ID
+ ("SupportCount", 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.PlayerID = 0
+ self.SupportCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCChampionshipGuessPlayerPub)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 22 跨服排位竞猜公共信息 //tagGCChampionshipGuessPubInfo:
+ PlayerID:%d,
+ SupportCount:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.SupportCount
+ )
+ return DumpString
+
+
+class tagGCChampionshipGuessPubList(Structure):
+ GuessType = 0 #(BYTE GuessType)//竞猜类型 8-8强;4-4强排位
+ PlayerCount = 0 #(BYTE PlayerCount)
+ GuessPlayerList = list() #(vector<tagGCChampionshipGuessPlayerPub> GuessPlayerList)// 被竞猜玩家列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GuessType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PlayerCount):
+ temGuessPlayerList = tagGCChampionshipGuessPlayerPub()
+ _pos = temGuessPlayerList.ReadData(_lpData, _pos)
+ self.GuessPlayerList.append(temGuessPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.GuessType = 0
+ self.PlayerCount = 0
+ self.GuessPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ for i in range(self.PlayerCount):
+ length += self.GuessPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.GuessType)
+ data = CommFunc.WriteBYTE(data, self.PlayerCount)
+ for i in range(self.PlayerCount):
+ data = CommFunc.WriteString(data, self.GuessPlayerList[i].GetLength(), self.GuessPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GuessType:%d,
+ PlayerCount:%d,
+ GuessPlayerList:%s
+ '''\
+ %(
+ self.GuessType,
+ self.PlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCChampionshipGuessPubInfo(Structure):
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 排位数据分区ID
+ Count = 0 #(BYTE Count)
+ GuessList = list() #(vector<tagGCChampionshipGuessPubList> GuessList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x22
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temGuessList = tagGCChampionshipGuessPubList()
+ _pos = temGuessList.ReadData(_lpData, _pos)
+ self.GuessList.append(temGuessList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x22
+ self.ZoneID = 0
+ self.Count = 0
+ self.GuessList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.Count):
+ length += self.GuessList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.GuessList[i].GetLength(), self.GuessList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneID:%d,
+ Count:%d,
+ GuessList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipGuessPubInfo=tagGCChampionshipGuessPubInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipGuessPubInfo.Head.Cmd,m_NAtagGCChampionshipGuessPubInfo.Head.SubCmd))] = m_NAtagGCChampionshipGuessPubInfo
+
+
+#------------------------------------------------------
+# C0 19 跨服排位仙官申请回应结果 #tagGCChampionshipOfficialApplyReplyRet
+
+class tagGCChampionshipOfficialApplyReplyRet(Structure):
+ Head = tagHead()
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 界主玩家名
+ MainOfficialID = 0 #(WORD MainOfficialID)//界主官职ID
+ OfficialID = 0 #(WORD OfficialID)//申请官职ID
+ IsOK = 0 #(BYTE IsOK)//是否同意;1-是;0-否
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x19
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.MainOfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x19
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.IsOK = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.PlayerName)
+ length += 2
+ 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.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.MainOfficialID)
+ data = CommFunc.WriteWORD(data, self.OfficialID)
+ data = CommFunc.WriteBYTE(data, self.IsOK)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ NameLen:%d,
+ PlayerName:%s,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ IsOK:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.NameLen,
+ self.PlayerName,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.IsOK
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipOfficialApplyReplyRet=tagGCChampionshipOfficialApplyReplyRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipOfficialApplyReplyRet.Head.Cmd,m_NAtagGCChampionshipOfficialApplyReplyRet.Head.SubCmd))] = m_NAtagGCChampionshipOfficialApplyReplyRet
+
+
+#------------------------------------------------------
+# C0 21 跨服排位仙官挑战记录 #tagGCChampionshipOfficialChallengeRecordInfo
+
+class tagGCChampionshipOfficialChallengeRecord(Structure):
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ ChallengeTime = 0 #(DWORD ChallengeTime)//挑战时间戳
+ Ret = 0 #(BYTE Ret)//挑战结果;0-失败;1-获胜;
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.ChallengeTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Ret,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.ChallengeTime = 0
+ self.Ret = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += len(self.PlayerName)
+ length += 4
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteDWORD(data, self.ChallengeTime)
+ data = CommFunc.WriteBYTE(data, self.Ret)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NameLen:%d,
+ PlayerName:%s,
+ ChallengeTime:%d,
+ Ret:%d
+ '''\
+ %(
+ self.NameLen,
+ self.PlayerName,
+ self.ChallengeTime,
+ self.Ret
+ )
+ return DumpString
+
+
+class tagGCChampionshipOfficialChallengeRecordInfo(Structure):
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 分区ID
+ MainOfficialID = 0 #(WORD MainOfficialID)// 界主官职ID
+ OfficialID = 0 #(WORD OfficialID)// 记录的官职ID
+ RecordCount = 0 #(BYTE RecordCount)// 挑战记录数
+ RecordList = list() #(vector<tagGCChampionshipOfficialChallengeRecord> RecordList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x21
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MainOfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RecordCount):
+ temRecordList = tagGCChampionshipOfficialChallengeRecord()
+ _pos = temRecordList.ReadData(_lpData, _pos)
+ self.RecordList.append(temRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x21
+ self.ZoneID = 0
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.RecordCount = 0
+ self.RecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.RecordCount):
+ length += self.RecordList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteWORD(data, self.MainOfficialID)
+ data = CommFunc.WriteWORD(data, self.OfficialID)
+ data = CommFunc.WriteBYTE(data, self.RecordCount)
+ for i in range(self.RecordCount):
+ data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneID:%d,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ RecordCount:%d,
+ RecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneID,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipOfficialChallengeRecordInfo=tagGCChampionshipOfficialChallengeRecordInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipOfficialChallengeRecordInfo.Head.Cmd,m_NAtagGCChampionshipOfficialChallengeRecordInfo.Head.SubCmd))] = m_NAtagGCChampionshipOfficialChallengeRecordInfo
+
+
+#------------------------------------------------------
+# C0 20 跨服排位仙官挑战结果 #tagGCChampionshipOfficialChallengeRet
+
+class tagGCChampionshipOfficialChallengeRet(Structure):
+ Head = tagHead()
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 原仙官玩家名,可能为空,代表本来无玩家
+ MainOfficialID = 0 #(WORD MainOfficialID)//界主官职ID
+ OfficialID = 0 #(WORD OfficialID)//挑战的官职ID
+ Ret = 0 #(BYTE Ret)//挑战结果;0-失败;1-获胜;2-目标仙官玩家ID已变更,可刷新后重试
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.MainOfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OfficialID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Ret,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x20
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.Ret = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.PlayerName)
+ length += 2
+ 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.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.MainOfficialID)
+ data = CommFunc.WriteWORD(data, self.OfficialID)
+ data = CommFunc.WriteBYTE(data, self.Ret)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ NameLen:%d,
+ PlayerName:%s,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ Ret:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.NameLen,
+ self.PlayerName,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.Ret
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipOfficialChallengeRet=tagGCChampionshipOfficialChallengeRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipOfficialChallengeRet.Head.Cmd,m_NAtagGCChampionshipOfficialChallengeRet.Head.SubCmd))] = m_NAtagGCChampionshipOfficialChallengeRet
+
+
+#------------------------------------------------------
+# C0 18 跨服排位官职信息 #tagGCChampionshipOfficialInfo
+
+class tagGCChampionshipOfficialPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)// 玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ FightPower = 0 #(DWORD FightPower)// 战力求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分
+ RealmLV = 0 #(WORD RealmLV)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 2
+ length += 4
+ length += 4
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCChampionshipOfficial(Structure):
+ OfficialID = 0 #(DWORD OfficialID)// 官职ID
+ LastDismissJuniorTime = 0 #(DWORD LastDismissJuniorTime)// 上次辞退下级仙官时间戳,跨服时间,如果自己是本界主时,用于计算辞退CD
+ WorshipCount = 0 #(DWORD WorshipCount)// 被膜拜次数
+ WorshipDouble = 0 #(BYTE WorshipDouble)// 今日是否双倍膜拜,仅在规定时间点内有用
+ OfficialPlayer=tagGCChampionshipOfficialPlayer() #(tagGCChampionshipOfficialPlayer OfficialPlayer)// 任职玩家信息,可能没有
+ ApplyPlayerCount = 0 #(BYTE ApplyPlayerCount)// 申请该仙官玩家数
+ ApplyPlayerList = list() #(vector<tagGCChampionshipOfficialPlayer> ApplyPlayerList)// 申请该仙官玩家列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.OfficialID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LastDismissJuniorTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.WorshipCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.WorshipDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ _pos = self.OfficialPlayer.ReadData(_lpData,_pos)
+ self.ApplyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ApplyPlayerCount):
+ temApplyPlayerList = tagGCChampionshipOfficialPlayer()
+ _pos = temApplyPlayerList.ReadData(_lpData, _pos)
+ self.ApplyPlayerList.append(temApplyPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.OfficialID = 0
+ self.LastDismissJuniorTime = 0
+ self.WorshipCount = 0
+ self.WorshipDouble = 0
+ self.OfficialPlayer=tagGCChampionshipOfficialPlayer()
+ self.OfficialPlayer.Clear()
+ self.ApplyPlayerCount = 0
+ self.ApplyPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += self.OfficialPlayer.GetLength()
+ length += 1
+ for i in range(self.ApplyPlayerCount):
+ length += self.ApplyPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.OfficialID)
+ data = CommFunc.WriteDWORD(data, self.LastDismissJuniorTime)
+ data = CommFunc.WriteDWORD(data, self.WorshipCount)
+ data = CommFunc.WriteBYTE(data, self.WorshipDouble)
+ data = CommFunc.WriteString(data,self.OfficialPlayer.GetLength(),self.OfficialPlayer.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ApplyPlayerCount)
+ for i in range(self.ApplyPlayerCount):
+ data = CommFunc.WriteString(data, self.ApplyPlayerList[i].GetLength(), self.ApplyPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ OfficialID:%d,
+ LastDismissJuniorTime:%d,
+ WorshipCount:%d,
+ WorshipDouble:%d,
+ OfficialPlayer:%s,
+ ApplyPlayerCount:%d,
+ ApplyPlayerList:%s
+ '''\
+ %(
+ self.OfficialID,
+ self.LastDismissJuniorTime,
+ self.WorshipCount,
+ self.WorshipDouble,
+ self.OfficialPlayer.OutputString(),
+ self.ApplyPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCChampionshipOfficialInfo(Structure):
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 官职数据分区ID
+ OfficialCount = 0 #(BYTE OfficialCount)// 官职数,包含界主及所有仙官
+ OfficialList = list() #(vector<tagGCChampionshipOfficial> OfficialList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OfficialCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.OfficialCount):
+ temOfficialList = tagGCChampionshipOfficial()
+ _pos = temOfficialList.ReadData(_lpData, _pos)
+ self.OfficialList.append(temOfficialList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x18
+ self.ZoneID = 0
+ self.OfficialCount = 0
+ self.OfficialList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.OfficialCount):
+ length += self.OfficialList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.OfficialCount)
+ for i in range(self.OfficialCount):
+ data = CommFunc.WriteString(data, self.OfficialList[i].GetLength(), self.OfficialList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneID:%d,
+ OfficialCount:%d,
+ OfficialList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneID,
+ self.OfficialCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCChampionshipOfficialInfo=tagGCChampionshipOfficialInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChampionshipOfficialInfo.Head.Cmd,m_NAtagGCChampionshipOfficialInfo.Head.SubCmd))] = m_NAtagGCChampionshipOfficialInfo
+
+
+#------------------------------------------------------
+# C0 09 跨服战场玩家购买战场信息 #tagGCCrossBattlefieldBuyInfo
+
+class tagGCCrossBattlefieldPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx
+ )
+ return DumpString
+
+
+class tagGCCrossBattlefieldBuyPlayer(Structure):
+ BuyPlayerID = 0 #(DWORD BuyPlayerID)//购买的玩家ID,即召集人
+ Faction = 0 #(BYTE Faction)//阵营 1-红;2-蓝
+ ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
+ FactionPlayerCount = 0 #(BYTE FactionPlayerCount)
+ FactionPlayerList = list() #(vector<tagGCCrossBattlefieldPlayer> FactionPlayerList)//阵营所有玩家列表,包含召集人
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.BuyPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FactionPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.FactionPlayerCount):
+ temFactionPlayerList = tagGCCrossBattlefieldPlayer()
+ _pos = temFactionPlayerList.ReadData(_lpData, _pos)
+ self.FactionPlayerList.append(temFactionPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.BuyPlayerID = 0
+ self.Faction = 0
+ self.ServerOnly = 0
+ self.FactionPlayerCount = 0
+ self.FactionPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.FactionPlayerCount):
+ length += self.FactionPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.BuyPlayerID)
+ data = CommFunc.WriteBYTE(data, self.Faction)
+ data = CommFunc.WriteBYTE(data, self.ServerOnly)
+ data = CommFunc.WriteBYTE(data, self.FactionPlayerCount)
+ for i in range(self.FactionPlayerCount):
+ data = CommFunc.WriteString(data, self.FactionPlayerList[i].GetLength(), self.FactionPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ BuyPlayerID:%d,
+ Faction:%d,
+ ServerOnly:%d,
+ FactionPlayerCount:%d,
+ FactionPlayerList:%s
+ '''\
+ %(
+ self.BuyPlayerID,
+ self.Faction,
+ self.ServerOnly,
+ self.FactionPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossBattlefieldBuyHM(Structure):
+ Hour = 0 #(BYTE Hour)//战场开启时
+ Minute = 0 #(BYTE Minute)//战场开启分
+ BuyPlayerCount = 0 #(BYTE BuyPlayerCount)
+ BuyPlayerList = list() #(vector<tagGCCrossBattlefieldBuyPlayer> BuyPlayerList)//购买本场次的玩家信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Hour,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Minute,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.BuyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BuyPlayerCount):
+ temBuyPlayerList = tagGCCrossBattlefieldBuyPlayer()
+ _pos = temBuyPlayerList.ReadData(_lpData, _pos)
+ self.BuyPlayerList.append(temBuyPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Hour = 0
+ self.Minute = 0
+ self.BuyPlayerCount = 0
+ self.BuyPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.BuyPlayerCount):
+ length += self.BuyPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Hour)
+ data = CommFunc.WriteBYTE(data, self.Minute)
+ data = CommFunc.WriteBYTE(data, self.BuyPlayerCount)
+ for i in range(self.BuyPlayerCount):
+ data = CommFunc.WriteString(data, self.BuyPlayerList[i].GetLength(), self.BuyPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Hour:%d,
+ Minute:%d,
+ BuyPlayerCount:%d,
+ BuyPlayerList:%s
+ '''\
+ %(
+ self.Hour,
+ self.Minute,
+ self.BuyPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossBattlefieldBuyInfo(Structure):
+ Head = tagHead()
+ HMCount = 0 #(BYTE HMCount)// 为0时清空重置,其他为增量更新
+ HMBuyList = list() #(vector<tagGCCrossBattlefieldBuyHM> HMBuyList)//购买场次列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.HMCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HMCount):
+ temHMBuyList = tagGCCrossBattlefieldBuyHM()
+ _pos = temHMBuyList.ReadData(_lpData, _pos)
+ self.HMBuyList.append(temHMBuyList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x09
+ self.HMCount = 0
+ self.HMBuyList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.HMCount):
+ length += self.HMBuyList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.HMCount)
+ for i in range(self.HMCount):
+ data = CommFunc.WriteString(data, self.HMBuyList[i].GetLength(), self.HMBuyList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ HMCount:%d,
+ HMBuyList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.HMCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossBattlefieldBuyInfo=tagGCCrossBattlefieldBuyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBattlefieldBuyInfo.Head.Cmd,m_NAtagGCCrossBattlefieldBuyInfo.Head.SubCmd))] = m_NAtagGCCrossBattlefieldBuyInfo
+
+
+#------------------------------------------------------
+# C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo
+
+class tagGCCrossBillboardData(Structure):
+ ID = 0 #(DWORD ID)
+ Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
+ Name2 = "" #(char Name2[33])//名字2
+ Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
+ Value1 = 0 #(DWORD Value1)//自定义值1
+ Value2 = 0 #(DWORD Value2)//自定义值2
+ CmpValue = 0 #(DWORD CmpValue)// 比较权值
+ CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值
+ CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ID = 0
+ self.Name1 = ""
+ self.Name2 = ""
+ self.Type2 = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.CmpValue = 0
+ self.CmpValue2 = 0
+ self.CmpValue3 = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 33
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ID)
+ data = CommFunc.WriteString(data, 33, self.Name1)
+ data = CommFunc.WriteString(data, 33, self.Name2)
+ data = CommFunc.WriteBYTE(data, self.Type2)
+ data = CommFunc.WriteDWORD(data, self.Value1)
+ data = CommFunc.WriteDWORD(data, self.Value2)
+ data = CommFunc.WriteDWORD(data, self.CmpValue)
+ data = CommFunc.WriteDWORD(data, self.CmpValue2)
+ data = CommFunc.WriteDWORD(data, self.CmpValue3)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ID:%d,
+ Name1:%s,
+ Name2:%s,
+ Type2:%d,
+ Value1:%d,
+ Value2:%d,
+ CmpValue:%d,
+ CmpValue2:%d,
+ CmpValue3:%d
+ '''\
+ %(
+ self.ID,
+ self.Name1,
+ self.Name2,
+ self.Type2,
+ self.Value1,
+ self.Value2,
+ self.CmpValue,
+ self.CmpValue2,
+ self.CmpValue3
+ )
+ return DumpString
+
+
+class tagGCCrossBillboardInfo(Structure):
+ Head = tagHead()
+ Type = 0 #(BYTE Type)//榜单类型
+ GroupValue1 = 0 #(BYTE GroupValue1)// 分组值1
+ GroupValue2 = 0 #(BYTE GroupValue2)// 分组值2,与分组值1组合归为同组榜单数据
+ BillboardCount = 0 #(BYTE BillboardCount)
+ CrossBillboardDataList = list() #(vector<tagGCCrossBillboardData> CrossBillboardDataList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GroupValue2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BillboardCount):
+ temCrossBillboardDataList = tagGCCrossBillboardData()
+ _pos = temCrossBillboardDataList.ReadData(_lpData, _pos)
+ self.CrossBillboardDataList.append(temCrossBillboardDataList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x07
+ self.Type = 0
+ self.GroupValue1 = 0
+ self.GroupValue2 = 0
+ self.BillboardCount = 0
+ self.CrossBillboardDataList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.BillboardCount):
+ length += self.CrossBillboardDataList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Type)
+ data = CommFunc.WriteBYTE(data, self.GroupValue1)
+ data = CommFunc.WriteBYTE(data, self.GroupValue2)
+ data = CommFunc.WriteBYTE(data, self.BillboardCount)
+ for i in range(self.BillboardCount):
+ data = CommFunc.WriteString(data, self.CrossBillboardDataList[i].GetLength(), self.CrossBillboardDataList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Type:%d,
+ GroupValue1:%d,
+ GroupValue2:%d,
+ BillboardCount:%d,
+ CrossBillboardDataList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Type,
+ self.GroupValue1,
+ self.GroupValue2,
+ self.BillboardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossBillboardInfo=tagGCCrossBillboardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBillboardInfo.Head.Cmd,m_NAtagGCCrossBillboardInfo.Head.SubCmd))] = m_NAtagGCCrossBillboardInfo
+
+
+#------------------------------------------------------
+# C0 16 跨服排位战斗结果 #tagGCCrossChampionshipPKOver
+
+class tagGCCrossChampionshipPKOver(Structure):
+ Head = tagHead()
+ GroupMark = 0 #(DWORD GroupMark)// 分组标识:64、32、16、8 - 64、32、16、8强赛;4 - 半决赛; 2 - 决赛
+ TimeStr = "" #(char TimeStr[19])// 结算时间,格式 yyyy-MM-dd HH:mm:ss
+ OverType = 0 #(BYTE OverType)// 0-正常,1-有人离线
+ WinnerID = 0 #(DWORD WinnerID)// 胜方ID
+ LoserID = 0 #(DWORD LoserID)// 败方ID
+ RoundCount = 0 #(BYTE RoundCount)// PK回合数
+ RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
+ TagNameLen = 0 #(BYTE TagNameLen)
+ TagName = "" #(String TagName)
+ Rank = 0 #(BYTE Rank)// 最终名次,决赛才有
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.GroupMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.OverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WinnerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LoserID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RoundCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.RoundWinnerID.append(value)
+ self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TagName,_pos = CommFunc.ReadString(_lpData, _pos,self.TagNameLen)
+ self.Rank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x16
+ self.GroupMark = 0
+ self.TimeStr = ""
+ self.OverType = 0
+ self.WinnerID = 0
+ self.LoserID = 0
+ self.RoundCount = 0
+ self.RoundWinnerID = list()
+ self.TagNameLen = 0
+ self.TagName = ""
+ self.Rank = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 19
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 4 * self.RoundCount
+ length += 1
+ length += len(self.TagName)
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.GroupMark)
+ data = CommFunc.WriteString(data, 19, self.TimeStr)
+ data = CommFunc.WriteBYTE(data, self.OverType)
+ data = CommFunc.WriteDWORD(data, self.WinnerID)
+ data = CommFunc.WriteDWORD(data, self.LoserID)
+ data = CommFunc.WriteBYTE(data, self.RoundCount)
+ for i in range(self.RoundCount):
+ data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
+ data = CommFunc.WriteBYTE(data, self.TagNameLen)
+ data = CommFunc.WriteString(data, self.TagNameLen, self.TagName)
+ data = CommFunc.WriteBYTE(data, self.Rank)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ GroupMark:%d,
+ TimeStr:%s,
+ OverType:%d,
+ WinnerID:%d,
+ LoserID:%d,
+ RoundCount:%d,
+ RoundWinnerID:%s,
+ TagNameLen:%d,
+ TagName:%s,
+ Rank:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.GroupMark,
+ self.TimeStr,
+ self.OverType,
+ self.WinnerID,
+ self.LoserID,
+ self.RoundCount,
+ "...",
+ self.TagNameLen,
+ self.TagName,
+ self.Rank
+ )
+ return DumpString
+
+
+m_NAtagGCCrossChampionshipPKOver=tagGCCrossChampionshipPKOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossChampionshipPKOver.Head.Cmd,m_NAtagGCCrossChampionshipPKOver.Head.SubCmd))] = m_NAtagGCCrossChampionshipPKOver
+
+
+#------------------------------------------------------
+# 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
+ ]
+
+ 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.BattleNum = 0
+ self.WinPlayerID = 0
+ self.PlayerIDA = 0
+ self.PlayerIDB = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossChampionshipPKBattle)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 15 跨服排位分区分组信息 //tagGCCrossChampionshipPKZoneGroupInfo:
+ BattleNum:%d,
+ WinPlayerID:%d,
+ PlayerIDA:%d,
+ PlayerIDB:%d
+ '''\
+ %(
+ self.BattleNum,
+ self.WinPlayerID,
+ self.PlayerIDA,
+ self.PlayerIDB
+ )
+ return DumpString
+
+
+class tagGCCrossChampionshipPKGroup(Structure):
+ GroupMark = 0 #(DWORD GroupMark)// 战斗分区mark, 如 64、32、16、8、4-半决赛、2-决赛;
+ BattleCount = 0 #(BYTE BattleCount)// 对战组数
+ BattleList = list() #(vector<tagGCCrossChampionshipPKBattle> BattleList)// 对战组列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GroupMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BattleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BattleCount):
+ temBattleList = tagGCCrossChampionshipPKBattle()
+ _pos = temBattleList.ReadData(_lpData, _pos)
+ self.BattleList.append(temBattleList)
+ return _pos
+
+ def Clear(self):
+ self.GroupMark = 0
+ self.BattleCount = 0
+ self.BattleList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.BattleCount):
+ length += self.BattleList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.GroupMark)
+ data = CommFunc.WriteBYTE(data, self.BattleCount)
+ for i in range(self.BattleCount):
+ data = CommFunc.WriteString(data, self.BattleList[i].GetLength(), self.BattleList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GroupMark:%d,
+ BattleCount:%d,
+ BattleList:%s
+ '''\
+ %(
+ self.GroupMark,
+ self.BattleCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossChampionshipPKPlayer(Structure):
+ PlayerID = 0 #(DWORD PlayerID)// 玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ FightPower = 0 #(DWORD FightPower)// 战力求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分
+ RealmLV = 0 #(WORD RealmLV)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.PlayerName)
+ length += 1
+ length += 2
+ length += 4
+ length += 4
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.NameLen,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCCrossChampionshipPKZoneGroupInfo(Structure):
+ Head = tagHead()
+ ActID = 0 #(DWORD ActID)// 活动ID,活动ID不同则可重置前端排位赛相关缓存数据
+ StateError = 0 #(BYTE StateError)// 本次活动是否已经出现流程状态异常;如服务器异常或维护服务器导致跳过步骤,则会废弃该次比赛,直到下次新活动;
+ ZoneID = 0 #(BYTE ZoneID)// 排位分区ID
+ PlayerCount = 0 #(BYTE PlayerCount)// 参赛玩家数
+ PlayerList = list() #(vector<tagGCCrossChampionshipPKPlayer> PlayerList)
+ GroupCount = 0 #(WORD GroupCount)
+ GroupList = list() #(vector<tagGCCrossChampionshipPKGroup> GroupList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.StateError,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PlayerCount):
+ temPlayerList = tagGCCrossChampionshipPKPlayer()
+ _pos = temPlayerList.ReadData(_lpData, _pos)
+ self.PlayerList.append(temPlayerList)
+ self.GroupCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.GroupCount):
+ temGroupList = tagGCCrossChampionshipPKGroup()
+ _pos = temGroupList.ReadData(_lpData, _pos)
+ self.GroupList.append(temGroupList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x15
+ self.ActID = 0
+ self.StateError = 0
+ self.ZoneID = 0
+ self.PlayerCount = 0
+ self.PlayerList = list()
+ self.GroupCount = 0
+ self.GroupList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.PlayerCount):
+ length += self.PlayerList[i].GetLength()
+ length += 2
+ for i in range(self.GroupCount):
+ length += self.GroupList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ActID)
+ data = CommFunc.WriteBYTE(data, self.StateError)
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteBYTE(data, self.PlayerCount)
+ for i in range(self.PlayerCount):
+ data = CommFunc.WriteString(data, self.PlayerList[i].GetLength(), self.PlayerList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.GroupCount)
+ for i in range(self.GroupCount):
+ data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActID:%d,
+ StateError:%d,
+ ZoneID:%d,
+ PlayerCount:%d,
+ PlayerList:%s,
+ GroupCount:%d,
+ GroupList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActID,
+ self.StateError,
+ self.ZoneID,
+ self.PlayerCount,
+ "...",
+ self.GroupCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossChampionshipPKZoneGroupInfo=tagGCCrossChampionshipPKZoneGroupInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossChampionshipPKZoneGroupInfo.Head.Cmd,m_NAtagGCCrossChampionshipPKZoneGroupInfo.Head.SubCmd))] = m_NAtagGCCrossChampionshipPKZoneGroupInfo
+
+
+#------------------------------------------------------
# C0 05 跨服PK赛季排行榜 #tagGCCrossRealmPKBillboardInfo
class tagGCCrossRealmPKBillboardData(Structure):
@@ -9828,7 +14944,8 @@
PlayerName = "" #(String PlayerName)// 跨服名字
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
- MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ MaxHP = 0 #(DWORD MaxHP)// 默认满血,求余亿部分
+ MaxHPEx = 0 #(DWORD MaxHPEx)// 默认满血,整除亿部分
MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
data = None
@@ -9844,6 +14961,7 @@
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)
return _pos
@@ -9854,6 +14972,7 @@
self.Job = 0
self.LV = 0
self.MaxHP = 0
+ self.MaxHPEx = 0
self.MaxProDef = 0
return
@@ -9864,6 +14983,7 @@
length += len(self.PlayerName)
length += 1
length += 2
+ length += 4
length += 4
length += 4
@@ -9877,6 +14997,7 @@
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)
return data
@@ -9888,6 +15009,7 @@
Job:%d,
LV:%d,
MaxHP:%d,
+ MaxHPEx:%d,
MaxProDef:%d
'''\
%(
@@ -9897,6 +15019,7 @@
self.Job,
self.LV,
self.MaxHP,
+ self.MaxHPEx,
self.MaxProDef
)
return DumpString
@@ -10425,6 +15548,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("IsRobot", c_ubyte), # 是否匹配机器人
]
def __init__(self):
@@ -10441,6 +15565,7 @@
def Clear(self):
self.Cmd = 0xC0
self.SubCmd = 0x02
+ self.IsRobot = 0
return
def GetLength(self):
@@ -10452,17 +15577,697 @@
def OutputString(self):
DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
Cmd:%s,
- SubCmd:%s
+ SubCmd:%s,
+ IsRobot:%d
'''\
%(
self.Cmd,
- self.SubCmd
+ self.SubCmd,
+ self.IsRobot
)
return DumpString
m_NAtagGCCrossRealmPKStartMatch=tagGCCrossRealmPKStartMatch()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKStartMatch.Cmd,m_NAtagGCCrossRealmPKStartMatch.SubCmd))] = m_NAtagGCCrossRealmPKStartMatch
+
+
+#------------------------------------------------------
+# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
+
+class tagGCCrossYaomoBossPlayerHurtInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HurtTotal", c_int), # 总伤害值,小于亿部分
+ ("HurtTotalEx", c_int), # 总伤害值,整除亿部分
+ ("AwardState", c_int), # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x11
+ self.HurtTotal = 0
+ self.HurtTotalEx = 0
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ HurtTotal:%d,
+ HurtTotalEx:%d,
+ AwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HurtTotal,
+ self.HurtTotalEx,
+ self.AwardState
+ )
+ return DumpString
+
+
+m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
+
+
+#------------------------------------------------------
+# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
+
+class tagGCCrossZoneInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CommZoneID", c_ubyte), # 所属常规分区ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x10
+ self.CommZoneID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossZoneInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 10 跨服所属分区信息 //tagGCCrossZoneInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CommZoneID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CommZoneID
+ )
+ return DumpString
+
+
+m_NAtagGCCrossZoneInfo=tagGCCrossZoneInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossZoneInfo.Cmd,m_NAtagGCCrossZoneInfo.SubCmd))] = m_NAtagGCCrossZoneInfo
+
+
+#------------------------------------------------------
+# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
+
+class tagGCLuckyCloudBuyLotteryRec(Structure):
+ SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
+ SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)// 中奖玩家名
+ LotteryNum = 0 #(WORD LotteryNum)// 开奖号码
+ LotteryTime = 0 #(DWORD LotteryTime)// 开奖时间戳,秒
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.LotteryNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LotteryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.SuperItemID = 0
+ self.SuperItemCount = 0
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.LotteryNum = 0
+ self.LotteryTime = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ length += len(self.PlayerName)
+ length += 2
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.SuperItemID)
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.LotteryNum)
+ data = CommFunc.WriteDWORD(data, self.LotteryTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ SuperItemID:%d,
+ SuperItemCount:%d,
+ NameLen:%d,
+ PlayerName:%s,
+ LotteryNum:%d,
+ LotteryTime:%d
+ '''\
+ %(
+ self.SuperItemID,
+ self.SuperItemCount,
+ self.NameLen,
+ self.PlayerName,
+ self.LotteryNum,
+ self.LotteryTime
+ )
+ return DumpString
+
+
+class tagGCLuckyCloudBuyLotteryRecInfo(Structure):
+ Head = tagHead()
+ ZoneCount = 0 #(BYTE ZoneCount)// 分区数
+ ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有分区ID列表
+ ZoneID = 0 #(BYTE ZoneID)// 返回记录分区ID
+ Count = 0 #(WORD Count)
+ LotteryRecList = list() #(vector<tagGCLuckyCloudBuyLotteryRec> LotteryRecList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x14
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ZoneCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.ZoneIDList.append(value)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temLotteryRecList = tagGCLuckyCloudBuyLotteryRec()
+ _pos = temLotteryRecList.ReadData(_lpData, _pos)
+ self.LotteryRecList.append(temLotteryRecList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x14
+ self.ZoneCount = 0
+ self.ZoneIDList = list()
+ self.ZoneID = 0
+ self.Count = 0
+ self.LotteryRecList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.ZoneCount
+ length += 1
+ length += 2
+ for i in range(self.Count):
+ length += self.LotteryRecList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneCount)
+ for i in range(self.ZoneCount):
+ data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.LotteryRecList[i].GetLength(), self.LotteryRecList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneCount:%d,
+ ZoneIDList:%s,
+ ZoneID:%d,
+ Count:%d,
+ LotteryRecList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneCount,
+ "...",
+ self.ZoneID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCLuckyCloudBuyLotteryRecInfo=tagGCLuckyCloudBuyLotteryRecInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyLotteryRecInfo
+
+
+#------------------------------------------------------
+# C0 13 幸运云购购买号码记录 #tagGCLuckyCloudBuyNumRecInfo
+
+class tagGCLuckyCloudBuyNumRec(Structure):
+ NameLen = 0 #(BYTE NameLen)
+ PlayerName = "" #(String PlayerName)
+ BuyNum = 0 #(WORD BuyNum)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.BuyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.NameLen = 0
+ self.PlayerName = ""
+ self.BuyNum = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += len(self.PlayerName)
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.BuyNum)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NameLen:%d,
+ PlayerName:%s,
+ BuyNum:%d
+ '''\
+ %(
+ self.NameLen,
+ self.PlayerName,
+ self.BuyNum
+ )
+ return DumpString
+
+
+class tagGCLuckyCloudBuyNumRecInfo(Structure):
+ Head = tagHead()
+ RemainCount = 0 #(WORD RemainCount)// 开奖剩余份数
+ Count = 0 #(WORD Count)
+ BuyNumRecList = list() #(vector<tagGCLuckyCloudBuyNumRec> BuyNumRecList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RemainCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyNumRecList = tagGCLuckyCloudBuyNumRec()
+ _pos = temBuyNumRecList.ReadData(_lpData, _pos)
+ self.BuyNumRecList.append(temBuyNumRecList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x13
+ self.RemainCount = 0
+ self.Count = 0
+ self.BuyNumRecList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 2
+ for i in range(self.Count):
+ length += self.BuyNumRecList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RemainCount)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.BuyNumRecList[i].GetLength(), self.BuyNumRecList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RemainCount:%d,
+ Count:%d,
+ BuyNumRecList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RemainCount,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCLuckyCloudBuyNumRecInfo=tagGCLuckyCloudBuyNumRecInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyNumRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyNumRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyNumRecInfo
+
+
+#------------------------------------------------------
+# C0 12 幸运云购轮次信息 #tagGCLuckyCloudBuyRoundInfo
+
+class tagGCLuckyCloudBuyRoundItem(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(tagGCLuckyCloudBuyRoundItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 12 幸运云购轮次信息 //tagGCLuckyCloudBuyRoundInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagGCLuckyCloudBuyRoundTime(Structure):
+ StartTime = "" #(char StartTime[5])// 开始时间 H:M
+ EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
+ RoundMax = 0 #(BYTE RoundMax)// 本时段最大轮次
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.StartTime = ""
+ self.EndtTime = ""
+ self.RoundMax = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 5
+ length += 5
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 5, self.StartTime)
+ data = CommFunc.WriteString(data, 5, self.EndtTime)
+ data = CommFunc.WriteBYTE(data, self.RoundMax)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ StartTime:%s,
+ EndtTime:%s,
+ RoundMax:%d
+ '''\
+ %(
+ self.StartTime,
+ self.EndtTime,
+ self.RoundMax
+ )
+ return DumpString
+
+
+class tagGCLuckyCloudBuyRoundInfo(Structure):
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 所属分区ID
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ RoundTimeCount = 0 #(BYTE RoundTimeCount)
+ RoundTimeList = list() #(vector<tagGCLuckyCloudBuyRoundTime> RoundTimeList)//轮次时间段
+ RoundID = 0 #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存
+ RoundNum = 0 #(BYTE RoundNum)// 当前时段第几轮
+ SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
+ SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
+ SuperItemMoneyType = 0 #(BYTE SuperItemMoneyType)// 大奖价值货币类型
+ SuperItemMoneyValue = 0 #(DWORD SuperItemMoneyValue)// 大奖价值
+ LVLimit = 0 #(WORD LVLimit)//开启等级
+ BaseItemCount = 0 #(BYTE BaseItemCount)// 每次购买固定奖励物品数
+ BaseItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> BaseItemList)// 每次购买固定奖励物品信息
+ RandItemCount = 0 #(BYTE RandItemCount)// 每次购买随机奖励物品数
+ RandItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> RandItemList)// 每次购买随机奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.RoundTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RoundTimeCount):
+ temRoundTimeList = tagGCLuckyCloudBuyRoundTime()
+ _pos = temRoundTimeList.ReadData(_lpData, _pos)
+ self.RoundTimeList.append(temRoundTimeList)
+ self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SuperItemMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SuperItemMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BaseItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BaseItemCount):
+ temBaseItemList = tagGCLuckyCloudBuyRoundItem()
+ _pos = temBaseItemList.ReadData(_lpData, _pos)
+ self.BaseItemList.append(temBaseItemList)
+ self.RandItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RandItemCount):
+ temRandItemList = tagGCLuckyCloudBuyRoundItem()
+ _pos = temRandItemList.ReadData(_lpData, _pos)
+ self.RandItemList.append(temRandItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x12
+ self.ZoneID = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.RoundTimeCount = 0
+ self.RoundTimeList = list()
+ self.RoundID = 0
+ self.RoundNum = 0
+ self.SuperItemID = 0
+ self.SuperItemCount = 0
+ self.SuperItemMoneyType = 0
+ self.SuperItemMoneyValue = 0
+ self.LVLimit = 0
+ self.BaseItemCount = 0
+ self.BaseItemList = list()
+ self.RandItemCount = 0
+ self.RandItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ for i in range(self.RoundTimeCount):
+ length += self.RoundTimeList[i].GetLength()
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 2
+ length += 1
+ for i in range(self.BaseItemCount):
+ length += self.BaseItemList[i].GetLength()
+ length += 1
+ for i in range(self.RandItemCount):
+ length += self.RandItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.RoundTimeCount)
+ for i in range(self.RoundTimeCount):
+ data = CommFunc.WriteString(data, self.RoundTimeList[i].GetLength(), self.RoundTimeList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.RoundID)
+ data = CommFunc.WriteBYTE(data, self.RoundNum)
+ data = CommFunc.WriteDWORD(data, self.SuperItemID)
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ data = CommFunc.WriteBYTE(data, self.SuperItemMoneyType)
+ data = CommFunc.WriteDWORD(data, self.SuperItemMoneyValue)
+ data = CommFunc.WriteWORD(data, self.LVLimit)
+ data = CommFunc.WriteBYTE(data, self.BaseItemCount)
+ for i in range(self.BaseItemCount):
+ data = CommFunc.WriteString(data, self.BaseItemList[i].GetLength(), self.BaseItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RandItemCount)
+ for i in range(self.RandItemCount):
+ data = CommFunc.WriteString(data, self.RandItemList[i].GetLength(), self.RandItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZoneID:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ RoundTimeCount:%d,
+ RoundTimeList:%s,
+ RoundID:%d,
+ RoundNum:%d,
+ SuperItemID:%d,
+ SuperItemCount:%d,
+ SuperItemMoneyType:%d,
+ SuperItemMoneyValue:%d,
+ LVLimit:%d,
+ BaseItemCount:%d,
+ BaseItemList:%s,
+ RandItemCount:%d,
+ RandItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZoneID,
+ self.StartDate,
+ self.EndtDate,
+ self.RoundTimeCount,
+ "...",
+ self.RoundID,
+ self.RoundNum,
+ self.SuperItemID,
+ self.SuperItemCount,
+ self.SuperItemMoneyType,
+ self.SuperItemMoneyValue,
+ self.LVLimit,
+ self.BaseItemCount,
+ "...",
+ self.RandItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCLuckyCloudBuyRoundInfo=tagGCLuckyCloudBuyRoundInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyRoundInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyRoundInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyRoundInfo
#------------------------------------------------------
@@ -10519,9 +16324,11 @@
class tagMCCoinToGoldCount(Structure):
_pack_ = 1
_fields_ = [
- ("RecordID", c_ubyte),
+ ("RecordID", c_ushort),
("TodayPayCount", c_ushort), # 今日已购买次数
("TotalPayCount", c_int), # 累计总购买次数
+ ("WeekPayCount", c_ushort), # 周总购买次数
+ ("MonthPayCount", c_ushort), # 月总购买次数
]
def __init__(self):
@@ -10537,6 +16344,8 @@
self.RecordID = 0
self.TodayPayCount = 0
self.TotalPayCount = 0
+ self.WeekPayCount = 0
+ self.MonthPayCount = 0
return
def GetLength(self):
@@ -10549,19 +16358,23 @@
DumpString = '''// A1 10 充值购买次数信息 //tagMCCoinToGoldCountInfo:
RecordID:%d,
TodayPayCount:%d,
- TotalPayCount:%d
+ TotalPayCount:%d,
+ WeekPayCount:%d,
+ MonthPayCount:%d
'''\
%(
self.RecordID,
self.TodayPayCount,
- self.TotalPayCount
+ self.TotalPayCount,
+ self.WeekPayCount,
+ self.MonthPayCount
)
return DumpString
class tagMCCoinToGoldCountInfo(Structure):
Head = tagHead()
- RecordCount = 0 #(BYTE RecordCount)
+ RecordCount = 0 #(WORD RecordCount)
CTGCountInfoList = list() #(vector<tagMCCoinToGoldCount> CTGCountInfoList)
data = None
@@ -10574,7 +16387,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.RecordCount):
temCTGCountInfoList = tagMCCoinToGoldCount()
_pos = temCTGCountInfoList.ReadData(_lpData, _pos)
@@ -10593,7 +16406,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 1
+ length += 2
for i in range(self.RecordCount):
length += self.CTGCountInfoList[i].GetLength()
@@ -10602,7 +16415,7 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.RecordCount)
+ data = CommFunc.WriteWORD(data, self.RecordCount)
for i in range(self.RecordCount):
data = CommFunc.WriteString(data, self.CTGCountInfoList[i].GetLength(), self.CTGCountInfoList[i].GetBuffer())
return data
@@ -10633,6 +16446,9 @@
OrderLen = 0 #(BYTE OrderLen)
OrderID = "" #(String OrderID)// 订单id
Coin = 0 #(DWORD Coin)// 充值的点卷
+ RecordID = 0 #(WORD RecordID)// ctgID
+ OrderInfoLen = 0 #(BYTE OrderInfoLen)
+ OrderInfo = "" #(String OrderInfo)
data = None
def __init__(self):
@@ -10647,6 +16463,9 @@
self.OrderLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.OrderID,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderLen)
self.Coin,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RecordID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
return _pos
def Clear(self):
@@ -10657,6 +16476,9 @@
self.OrderLen = 0
self.OrderID = ""
self.Coin = 0
+ self.RecordID = 0
+ self.OrderInfoLen = 0
+ self.OrderInfo = ""
return
def GetLength(self):
@@ -10665,6 +16487,9 @@
length += 1
length += len(self.OrderID)
length += 4
+ length += 2
+ length += 1
+ length += len(self.OrderInfo)
return length
@@ -10674,6 +16499,9 @@
data = CommFunc.WriteBYTE(data, self.OrderLen)
data = CommFunc.WriteString(data, self.OrderLen, self.OrderID)
data = CommFunc.WriteDWORD(data, self.Coin)
+ data = CommFunc.WriteWORD(data, self.RecordID)
+ data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
+ data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
return data
def OutputString(self):
@@ -10681,13 +16509,19 @@
Head:%s,
OrderLen:%d,
OrderID:%s,
- Coin:%d
+ Coin:%d,
+ RecordID:%d,
+ OrderInfoLen:%d,
+ OrderInfo:%s
'''\
%(
self.Head.OutputString(),
self.OrderLen,
self.OrderID,
- self.Coin
+ self.Coin,
+ self.RecordID,
+ self.OrderInfoLen,
+ self.OrderInfo
)
return DumpString
@@ -10795,6 +16629,7 @@
ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+ HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
data = None
def __init__(self):
@@ -10900,6 +16735,7 @@
self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -11001,6 +16837,7 @@
self.ExAttr18 = 0
self.ExAttr19 = 0
self.ExAttr20 = 0
+ self.HPEx = 0
return
def GetLength(self):
@@ -11093,6 +16930,7 @@
length += 4
length += 4
length += 15
+ length += 4
length += 4
length += 4
length += 4
@@ -11200,6 +17038,7 @@
data = CommFunc.WriteDWORD(data, self.ExAttr18)
data = CommFunc.WriteDWORD(data, self.ExAttr19)
data = CommFunc.WriteDWORD(data, self.ExAttr20)
+ data = CommFunc.WriteDWORD(data, self.HPEx)
return data
def OutputString(self):
@@ -11298,7 +17137,8 @@
ExAttr17:%d,
ExAttr18:%d,
ExAttr19:%d,
- ExAttr20:%d
+ ExAttr20:%d,
+ HPEx:%d
'''\
%(
self.Head.OutputString(),
@@ -11395,7 +17235,8 @@
self.ExAttr17,
self.ExAttr18,
self.ExAttr19,
- self.ExAttr20
+ self.ExAttr20,
+ self.HPEx
)
return DumpString
@@ -12478,6 +18319,74 @@
#------------------------------------------------------
+# A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo
+
+class tagMCArenaPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsReset", c_ubyte), #是否是重置的
+ ("Score", c_int), #当前积分
+ ("BattleCountToday", c_ubyte), #今日已挑战次数
+ ("MatchRefreshCount", c_ubyte), #当前已刷新匹配列表次数,每次挑战后会重置
+ ("ItemAddBattleCountToday", c_ubyte), #今日已使用物品增加的挑战次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0xC3
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0xC3
+ self.IsReset = 0
+ self.Score = 0
+ self.BattleCountToday = 0
+ self.MatchRefreshCount = 0
+ self.ItemAddBattleCountToday = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCArenaPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ IsReset:%d,
+ Score:%d,
+ BattleCountToday:%d,
+ MatchRefreshCount:%d,
+ ItemAddBattleCountToday:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsReset,
+ self.Score,
+ self.BattleCountToday,
+ self.MatchRefreshCount,
+ self.ItemAddBattleCountToday
+ )
+ return DumpString
+
+
+m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo
+
+
+#------------------------------------------------------
# A3 0F 通知玩家悬赏任务信息 #tagMCArrestTaskInfo
class tagMCArrestTaskInfo(Structure):
@@ -12573,7 +18482,8 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
- ("AddItemCnt", c_int), #增幅丹使用个数
+ ("ItemAddCnt", c_int), #增幅丹增加上限
+ ("ItemBreakCnt", c_int), #增幅丹突破次数
]
def __init__(self):
@@ -12588,7 +18498,8 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
- self.AddItemCnt = 0
+ self.ItemAddCnt = 0
+ self.ItemBreakCnt = 0
return
def GetLength(self):
@@ -12601,12 +18512,14 @@
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
EatCnt:%d,
- AddItemCnt:%d
+ ItemAddCnt:%d,
+ ItemBreakCnt:%d
'''\
%(
self.ItemID,
self.EatCnt,
- self.AddItemCnt
+ self.ItemAddCnt,
+ self.ItemBreakCnt
)
return DumpString
@@ -12742,6 +18655,8 @@
("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
("KillCnt", c_int), #击杀次数
("ItemAddCnt", c_int), #物品增加次数
+ ("BuyCnt", c_ubyte), #购买次数
+ ("KillCntTotal", c_int), #击杀次数 - 累计
]
def __init__(self):
@@ -12757,6 +18672,8 @@
self.BossType = 0
self.KillCnt = 0
self.ItemAddCnt = 0
+ self.BuyCnt = 0
+ self.KillCntTotal = 0
return
def GetLength(self):
@@ -12769,12 +18686,16 @@
DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
BossType:%d,
KillCnt:%d,
- ItemAddCnt:%d
+ ItemAddCnt:%d,
+ BuyCnt:%d,
+ KillCntTotal:%d
'''\
%(
self.BossType,
self.KillCnt,
- self.ItemAddCnt
+ self.ItemAddCnt,
+ self.BuyCnt,
+ self.KillCntTotal
)
return DumpString
@@ -13197,6 +19118,118 @@
m_NAtagMCCollectionItemInfo=tagMCCollectionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectionItemInfo.Head.Cmd,m_NAtagMCCollectionItemInfo.Head.SubCmd))] = m_NAtagMCCollectionItemInfo
+
+
+#------------------------------------------------------
+# A3 CC 自定义奖励信息 #tagMCCustomAwardInfo
+
+class tagMCCustomAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("KeyNum", c_ushort), # 奖励记录key编号,0~255,每个key存31个ID记录 0-30为编号0, 31-61为编号1..
+ ("CanGetState", c_int), # 是否可领取;按位记录是否可领取
+ ("GetState", 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.KeyNum = 0
+ self.CanGetState = 0
+ self.GetState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCustomAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CC 自定义奖励信息 //tagMCCustomAwardInfo:
+ KeyNum:%d,
+ CanGetState:%d,
+ GetState:%d
+ '''\
+ %(
+ self.KeyNum,
+ self.CanGetState,
+ self.GetState
+ )
+ return DumpString
+
+
+class tagMCCustomAwardInfo(Structure):
+ Head = tagHead()
+ RecordStateCnt = 0 #(WORD RecordStateCnt)// 记录个数
+ RecordStateList = list() #(vector<tagMCCustomAwardState> RecordStateList)// 记录列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCC
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RecordStateCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.RecordStateCnt):
+ temRecordStateList = tagMCCustomAwardState()
+ _pos = temRecordStateList.ReadData(_lpData, _pos)
+ self.RecordStateList.append(temRecordStateList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCC
+ self.RecordStateCnt = 0
+ self.RecordStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.RecordStateCnt):
+ length += self.RecordStateList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RecordStateCnt)
+ for i in range(self.RecordStateCnt):
+ data = CommFunc.WriteString(data, self.RecordStateList[i].GetLength(), self.RecordStateList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RecordStateCnt:%d,
+ RecordStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RecordStateCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCustomAwardInfo=tagMCCustomAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCustomAwardInfo.Head.Cmd,m_NAtagMCCustomAwardInfo.Head.SubCmd))] = m_NAtagMCCustomAwardInfo
#------------------------------------------------------
@@ -13656,6 +19689,87 @@
#------------------------------------------------------
+# A3 C4 装备神装拆解结果 #tagMCEquipDecomposeRet
+
+class tagMCEquipDecomposeRet(Structure):
+ Head = tagHead()
+ DecomposeEquipIDCount = 0 #(BYTE DecomposeEquipIDCount)// 已分解的装备个数
+ DecomposeEquipIDList = list() #(vector<DWORD> DecomposeEquipIDList)// 已分解的神装装备ID列表
+ GetItemLen = 0 #(WORD GetItemLen)
+ GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC4
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.DecomposeEquipIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DecomposeEquipIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.DecomposeEquipIDList.append(value)
+ self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC4
+ self.DecomposeEquipIDCount = 0
+ self.DecomposeEquipIDList = list()
+ self.GetItemLen = 0
+ self.GetItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.DecomposeEquipIDCount
+ length += 2
+ length += len(self.GetItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.DecomposeEquipIDCount)
+ for i in range(self.DecomposeEquipIDCount):
+ data = CommFunc.WriteDWORD(data, self.DecomposeEquipIDList[i])
+ data = CommFunc.WriteWORD(data, self.GetItemLen)
+ data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ DecomposeEquipIDCount:%d,
+ DecomposeEquipIDList:%s,
+ GetItemLen:%d,
+ GetItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.DecomposeEquipIDCount,
+ "...",
+ self.GetItemLen,
+ self.GetItemData
+ )
+ return DumpString
+
+
+m_NAtagMCEquipDecomposeRet=tagMCEquipDecomposeRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipDecomposeRet.Head.Cmd,m_NAtagMCEquipDecomposeRet.Head.SubCmd))] = m_NAtagMCEquipDecomposeRet
+
+
+#------------------------------------------------------
# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
class tagMCEquipPartStar(Structure):
@@ -13761,6 +19875,73 @@
m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
+
+
+#------------------------------------------------------
+# A3 B2 装备部位星级套装激活信息 #tagMCEquipPartSuiteActivateInfo
+
+class tagMCEquipPartSuiteActivateInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ SuiteActivateStateInfo = list() #(vector<DWORD> SuiteActivateStateInfo)//激活状态值列表,每个数按位存31个激活索引,每个位代表对应的激活索引是否已激活
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB2
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SuiteActivateStateInfo.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB2
+ self.Count = 0
+ self.SuiteActivateStateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.SuiteActivateStateInfo[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SuiteActivateStateInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCEquipPartSuiteActivateInfo=tagMCEquipPartSuiteActivateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteActivateInfo.Head.Cmd,m_NAtagMCEquipPartSuiteActivateInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteActivateInfo
#------------------------------------------------------
@@ -14296,6 +20477,62 @@
m_NAtagMCFamilyActivityInfo=tagMCFamilyActivityInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityInfo.Head.Cmd,m_NAtagMCFamilyActivityInfo.Head.SubCmd))] = m_NAtagMCFamilyActivityInfo
+
+
+#------------------------------------------------------
+# A3 54 法器信息 #tagMCFaQiInfo
+
+class tagMCFaQiInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LV", c_ubyte), #等阶
+ ("EatItemCount", c_int), #当前阶已吃丹个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x54
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x54
+ self.LV = 0
+ self.EatItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFaQiInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 54 法器信息 //tagMCFaQiInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ LV:%d,
+ EatItemCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LV,
+ self.EatItemCount
+ )
+ return DumpString
+
+
+m_NAtagMCFaQiInfo=tagMCFaQiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaQiInfo.Cmd,m_NAtagMCFaQiInfo.SubCmd))] = m_NAtagMCFaQiInfo
#------------------------------------------------------
@@ -15177,6 +21414,873 @@
#------------------------------------------------------
+# A3 C7 古宝信息 #tagMCGubaoInfo
+
+class tagMCGubao(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GubaoID", c_ushort),
+ ("GubaoStar", c_ubyte),
+ ("GubaoLV", 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.GubaoID = 0
+ self.GubaoStar = 0
+ self.GubaoLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGubao)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C7 古宝信息 //tagMCGubaoInfo:
+ GubaoID:%d,
+ GubaoStar:%d,
+ GubaoLV:%d
+ '''\
+ %(
+ self.GubaoID,
+ self.GubaoStar,
+ self.GubaoLV
+ )
+ return DumpString
+
+
+class tagMCGubaoInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ GubaoInfoList = list() #(vector<tagMCGubao> GubaoInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC7
+ 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):
+ temGubaoInfoList = tagMCGubao()
+ _pos = temGubaoInfoList.ReadData(_lpData, _pos)
+ self.GubaoInfoList.append(temGubaoInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC7
+ self.Count = 0
+ self.GubaoInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.GubaoInfoList[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.GubaoInfoList[i].GetLength(), self.GubaoInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ GubaoInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGubaoInfo=tagMCGubaoInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoInfo.Head.Cmd,m_NAtagMCGubaoInfo.Head.SubCmd))] = m_NAtagMCGubaoInfo
+
+
+#------------------------------------------------------
+# A3 CA 古宝物品特殊效果信息 #tagMCGubaoItemEffInfo
+
+class tagMCGubaoItemEff(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GubaoID", c_ushort),
+ ("EffType", c_ubyte), # 不同古宝ID允许拥有相同效果类型,进度值每个古宝ID单独统计
+ ("EffValue", 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.GubaoID = 0
+ self.EffType = 0
+ self.EffValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGubaoItemEff)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CA 古宝物品特殊效果信息 //tagMCGubaoItemEffInfo:
+ GubaoID:%d,
+ EffType:%d,
+ EffValue:%d
+ '''\
+ %(
+ self.GubaoID,
+ self.EffType,
+ self.EffValue
+ )
+ return DumpString
+
+
+class tagMCGubaoItemEffInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)
+ ItemEffInfoList = list() #(vector<tagMCGubaoItemEff> ItemEffInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCA
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temItemEffInfoList = tagMCGubaoItemEff()
+ _pos = temItemEffInfoList.ReadData(_lpData, _pos)
+ self.ItemEffInfoList.append(temItemEffInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCA
+ self.Count = 0
+ self.ItemEffInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.ItemEffInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemEffInfoList[i].GetLength(), self.ItemEffInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ ItemEffInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGubaoItemEffInfo=tagMCGubaoItemEffInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoItemEffInfo.Head.Cmd,m_NAtagMCGubaoItemEffInfo.Head.SubCmd))] = m_NAtagMCGubaoItemEffInfo
+
+
+#------------------------------------------------------
+# A3 CB 古宝碎片信息 #tagMCGubaoPieceInfo
+
+class tagMCGubaoPiece(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GubaoID", c_ushort),
+ ("PieceCount", 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.GubaoID = 0
+ self.PieceCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGubaoPiece)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CB 古宝碎片信息 //tagMCGubaoPieceInfo:
+ GubaoID:%d,
+ PieceCount:%d
+ '''\
+ %(
+ self.GubaoID,
+ self.PieceCount
+ )
+ return DumpString
+
+
+class tagMCGubaoPieceInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ PieceInfoList = list() #(vector<tagMCGubaoPiece> PieceInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ 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):
+ temPieceInfoList = tagMCGubaoPiece()
+ _pos = temPieceInfoList.ReadData(_lpData, _pos)
+ self.PieceInfoList.append(temPieceInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ self.Count = 0
+ self.PieceInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.PieceInfoList[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.PieceInfoList[i].GetLength(), self.PieceInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ PieceInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGubaoPieceInfo=tagMCGubaoPieceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoPieceInfo.Head.Cmd,m_NAtagMCGubaoPieceInfo.Head.SubCmd))] = m_NAtagMCGubaoPieceInfo
+
+
+#------------------------------------------------------
+# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
+
+class tagMCHistoryReChargeAwardRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("AwardGetRecord", c_int), # 按二进制位标示领取记录 配置奖励ID代表第几位
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x28
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x28
+ self.AwardGetRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHistoryReChargeAwardRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
+ Cmd:%s,
+ SubCmd:%s,
+ AwardGetRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.AwardGetRecord
+ )
+ return DumpString
+
+
+m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
+
+
+#------------------------------------------------------
+# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
+
+class tagMCHorsePetSkinInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Type", c_ubyte), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("Exp", c_int), #经验
+ ("SkinLV", c_ubyte), #觉醒等级
+ ("SkinIndex", 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.Type = 0
+ self.ID = 0
+ self.Exp = 0
+ self.SkinLV = 0
+ self.SkinIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHorsePetSkinInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
+ Type:%d,
+ ID:%d,
+ Exp:%d,
+ SkinLV:%d,
+ SkinIndex:%d
+ '''\
+ %(
+ self.Type,
+ self.ID,
+ self.Exp,
+ self.SkinLV,
+ self.SkinIndex
+ )
+ return DumpString
+
+
+class tagMCHorsePetSkinData(Structure):
+ Head = tagHead()
+ Num = 0 #(BYTE Num)//个数
+ InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Num):
+ temInfoList = tagMCHorsePetSkinInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x12
+ self.Num = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Num):
+ 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.Num)
+ for i in range(self.Num):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Num:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Num,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+
+
+#------------------------------------------------------
+# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
+
+class tagMCHorseSkinTimeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ID", c_int), # 对应坐骑幻化表ID
+ ("InvalidTime", 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.ID = 0
+ self.InvalidTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHorseSkinTimeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
+ ID:%d,
+ InvalidTime:%d
+ '''\
+ %(
+ self.ID,
+ self.InvalidTime
+ )
+ return DumpString
+
+
+class tagMCHorseSkinTimeInfoList(Structure):
+ Head = tagHead()
+ TimeCnt = 0 #(BYTE TimeCnt)//个数
+ TimeInfoList = list() #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TimeCnt):
+ temTimeInfoList = tagMCHorseSkinTimeInfo()
+ _pos = temTimeInfoList.ReadData(_lpData, _pos)
+ self.TimeInfoList.append(temTimeInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x10
+ self.TimeCnt = 0
+ self.TimeInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.TimeCnt):
+ length += self.TimeInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TimeCnt)
+ for i in range(self.TimeCnt):
+ data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TimeCnt:%d,
+ TimeInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TimeCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
+
+
+#------------------------------------------------------
+# A3 CD 坐骑星级信息 #tagMCHorseStarInfo
+
+class tagMCHorseStar(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("HorseID", c_int), # 坐骑表ID
+ ("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.HorseID = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHorseStar)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
+ HorseID:%d,
+ Star:%d
+ '''\
+ %(
+ self.HorseID,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCHorseStarInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCD
+ 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):
+ temHorseStarList = tagMCHorseStar()
+ _pos = temHorseStarList.ReadData(_lpData, _pos)
+ self.HorseStarList.append(temHorseStarList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCD
+ self.Count = 0
+ self.HorseStarList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.HorseStarList[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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ HorseStarList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
+
+
+#------------------------------------------------------
+# A3 38 投资理财信息 #tagMCInvestInfo
+
+class tagMCInvestInfo(Structure):
+ Head = tagHead()
+ InvestType = 0 #(BYTE InvestType)// 投资类型
+ CurDay = 0 #(WORD CurDay)// 当前天数,投资第一天为1
+ ValueCount = 0 #(BYTE ValueCount)
+ RewardValue = list() #(vector<DWORD> RewardValue)//领奖记录值,按投资回报索引位记录是否已领取
+ ProgressValue = list() #(vector<DWORD> ProgressValue)//投资相关可领取进度记录值: 9登录投资-记录已登录天数;11Boss投资-按回报索引位记录是否已击杀该boss
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x38
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CurDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.RewardValue.append(value)
+ for i in range(self.ValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ProgressValue.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x38
+ self.InvestType = 0
+ self.CurDay = 0
+ self.ValueCount = 0
+ self.RewardValue = list()
+ self.ProgressValue = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ length += 1
+ length += 4 * self.ValueCount
+ length += 4 * self.ValueCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.InvestType)
+ data = CommFunc.WriteWORD(data, self.CurDay)
+ data = CommFunc.WriteBYTE(data, self.ValueCount)
+ for i in range(self.ValueCount):
+ data = CommFunc.WriteDWORD(data, self.RewardValue[i])
+ for i in range(self.ValueCount):
+ data = CommFunc.WriteDWORD(data, self.ProgressValue[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ InvestType:%d,
+ CurDay:%d,
+ ValueCount:%d,
+ RewardValue:%s,
+ ProgressValue:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.InvestType,
+ self.CurDay,
+ self.ValueCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCInvestInfo=tagMCInvestInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCInvestInfo.Head.Cmd,m_NAtagMCInvestInfo.Head.SubCmd))] = m_NAtagMCInvestInfo
+
+
+#------------------------------------------------------
+# A3 55 炼体信息 #tagMCLianTiInfo
+
+class tagMCLianTiInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LianTiLV", c_ubyte), #炼体等级
+ ("EatItemCount", c_int), #当前等级已吃丹个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x55
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x55
+ self.LianTiLV = 0
+ self.EatItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLianTiInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 55 炼体信息 //tagMCLianTiInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ LianTiLV:%d,
+ EatItemCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LianTiLV,
+ self.EatItemCount
+ )
+ return DumpString
+
+
+m_NAtagMCLianTiInfo=tagMCLianTiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLianTiInfo.Cmd,m_NAtagMCLianTiInfo.SubCmd))] = m_NAtagMCLianTiInfo
+
+
+#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class tagMCMagicWeaponInfo(Structure):
@@ -15350,6 +22454,114 @@
m_NAtagMCGreatMasterExp=tagMCGreatMasterExp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGreatMasterExp.Cmd,m_NAtagMCGreatMasterExp.SubCmd))] = m_NAtagMCGreatMasterExp
+
+
+#------------------------------------------------------
+# A3 C2 大师强化等级激活信息 #tagMCMasterPlusLVInfo
+
+class tagMCMasterPlusLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ClassLV", c_ubyte),
+ ("MasterPlusLV", c_ushort), # 已经激活的最高大师强化等级,向下兼容
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ClassLV = 0
+ self.MasterPlusLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMasterPlusLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C2 大师强化等级激活信息 //tagMCMasterPlusLVInfo:
+ ClassLV:%d,
+ MasterPlusLV:%d
+ '''\
+ %(
+ self.ClassLV,
+ self.MasterPlusLV
+ )
+ return DumpString
+
+
+class tagMCMasterPlusLVInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ MasterPlusLVInfoList = list() #(vector<tagMCMasterPlusLV> MasterPlusLVInfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC2
+ 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):
+ temMasterPlusLVInfoList = tagMCMasterPlusLV()
+ _pos = temMasterPlusLVInfoList.ReadData(_lpData, _pos)
+ self.MasterPlusLVInfoList.append(temMasterPlusLVInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC2
+ self.Count = 0
+ self.MasterPlusLVInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.MasterPlusLVInfoList[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.MasterPlusLVInfoList[i].GetLength(), self.MasterPlusLVInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ MasterPlusLVInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCMasterPlusLVInfo=tagMCMasterPlusLVInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMasterPlusLVInfo.Head.Cmd,m_NAtagMCMasterPlusLVInfo.Head.SubCmd))] = m_NAtagMCMasterPlusLVInfo
#------------------------------------------------------
@@ -15644,7 +22856,8 @@
class tagMCModuleFightPowerInfo(Structure):
Head = tagHead()
- TotalFightPower = 0 #(DWORD TotalFightPower)//总战斗力
+ TotalFightPower = 0 #(DWORD TotalFightPower)//总战斗力,求余亿部分
+ TotalFightPoweEx = 0 #(DWORD TotalFightPoweEx)//总战斗力,整除亿部分,1代表1亿
MFPCnt = 0 #(BYTE MFPCnt)//模块战斗力总数
MFPList = list() #(vector<tagMCModuleFightPower> MFPList)
data = None
@@ -15659,6 +22872,7 @@
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
self.TotalFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TotalFightPoweEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MFPCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MFPCnt):
temMFPList = tagMCModuleFightPower()
@@ -15672,6 +22886,7 @@
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0xA1
self.TotalFightPower = 0
+ self.TotalFightPoweEx = 0
self.MFPCnt = 0
self.MFPList = list()
return
@@ -15679,6 +22894,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 4
length += 4
length += 1
for i in range(self.MFPCnt):
@@ -15690,6 +22906,7 @@
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteDWORD(data, self.TotalFightPower)
+ data = CommFunc.WriteDWORD(data, self.TotalFightPoweEx)
data = CommFunc.WriteBYTE(data, self.MFPCnt)
for i in range(self.MFPCnt):
data = CommFunc.WriteString(data, self.MFPList[i].GetLength(), self.MFPList[i].GetBuffer())
@@ -15699,12 +22916,14 @@
DumpString = '''
Head:%s,
TotalFightPower:%d,
+ TotalFightPoweEx:%d,
MFPCnt:%d,
MFPList:%s
'''\
%(
self.Head.OutputString(),
self.TotalFightPower,
+ self.TotalFightPoweEx,
self.MFPCnt,
"..."
)
@@ -16067,6 +23286,7 @@
ItemAddCnt = 0 #(WORD ItemAddCnt)//物品增加次数
PassGradeCnt = 0 #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
PassGrade = list() #(vector<DWORD> PassGrade)//副本线路对应星级值列表
+ EnterCntTotal = 0 #(DWORD EnterCntTotal)//累计进入次数
data = None
def __init__(self):
@@ -16083,6 +23303,7 @@
for i in range(self.PassGradeCnt):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PassGrade.append(value)
+ self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -16092,6 +23313,7 @@
self.ItemAddCnt = 0
self.PassGradeCnt = 0
self.PassGrade = list()
+ self.EnterCntTotal = 0
return
def GetLength(self):
@@ -16102,6 +23324,7 @@
length += 2
length += 1
length += 4 * self.PassGradeCnt
+ length += 4
return length
@@ -16114,6 +23337,7 @@
data = CommFunc.WriteBYTE(data, self.PassGradeCnt)
for i in range(self.PassGradeCnt):
data = CommFunc.WriteDWORD(data, self.PassGrade[i])
+ data = CommFunc.WriteDWORD(data, self.EnterCntTotal)
return data
def OutputString(self):
@@ -16123,7 +23347,8 @@
RecoverCnt:%d,
ItemAddCnt:%d,
PassGradeCnt:%d,
- PassGrade:%s
+ PassGrade:%s,
+ EnterCntTotal:%d
'''\
%(
self.FBID,
@@ -16131,7 +23356,8 @@
self.RecoverCnt,
self.ItemAddCnt,
self.PassGradeCnt,
- "..."
+ "...",
+ self.EnterCntTotal
)
return DumpString
@@ -16461,6 +23687,7 @@
_fields_ = [
("AlchemyID", c_int), # 丹 ID
("StartTime", c_int), # 开始炼的时间
+ ("AlchemyTimes", c_ushort), # 炼的次数
]
def __init__(self):
@@ -16475,6 +23702,7 @@
def Clear(self):
self.AlchemyID = 0
self.StartTime = 0
+ self.AlchemyTimes = 0
return
def GetLength(self):
@@ -16486,11 +23714,13 @@
def OutputString(self):
DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
AlchemyID:%d,
- StartTime:%d
+ StartTime:%d,
+ AlchemyTimes:%d
'''\
%(
self.AlchemyID,
- self.StartTime
+ self.StartTime,
+ self.AlchemyTimes
)
return DumpString
@@ -16500,7 +23730,7 @@
StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级
StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验
ItemID = 0 #(DWORD ItemID)// 合成物品id
- ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量
+ ItemCnt = 0 #(WORD ItemCnt)// 丹药数量
StoveCnt = 0 #(WORD StoveCnt)// 丹药数量
InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList)
data = None
@@ -16517,7 +23747,7 @@
self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.StoveCnt):
temInfoList = tagMCPlayerStoveInfo()
@@ -16544,7 +23774,7 @@
length += 1
length += 4
length += 4
- length += 1
+ length += 2
length += 2
for i in range(self.StoveCnt):
length += self.InfoList[i].GetLength()
@@ -16557,7 +23787,7 @@
data = CommFunc.WriteBYTE(data, self.StoveLV)
data = CommFunc.WriteDWORD(data, self.StoveExp)
data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.ItemCnt)
+ data = CommFunc.WriteWORD(data, self.ItemCnt)
data = CommFunc.WriteWORD(data, self.StoveCnt)
for i in range(self.StoveCnt):
data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
@@ -16724,6 +23954,7 @@
("ExtraCnt", c_ubyte), # VIP额外次数
("ExtraData", c_ubyte), # 额外参数1
("ExtraData2", c_ubyte), # 额外参数2
+ ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回
]
def __init__(self):
@@ -16741,6 +23972,7 @@
self.ExtraCnt = 0
self.ExtraData = 0
self.ExtraData2 = 0
+ self.HaveRecover = 0
return
def GetLength(self):
@@ -16755,14 +23987,16 @@
RecoverCnt:%d,
ExtraCnt:%d,
ExtraData:%d,
- ExtraData2:%d
+ ExtraData2:%d,
+ HaveRecover:%d
'''\
%(
self.Index,
self.RecoverCnt,
self.ExtraCnt,
self.ExtraData,
- self.ExtraData2
+ self.ExtraData2,
+ self.HaveRecover
)
return DumpString
@@ -16905,6 +24139,185 @@
m_NAtagMCRuneInfo=tagMCRuneInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
+
+
+#------------------------------------------------------
+# A3 C8 神通等级信息 #tagMCShentongLVInfo
+
+class tagMCShentongLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ShentongID", c_ubyte),
+ ("ClassLV", c_ubyte),
+ ("LV", 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.ShentongID = 0
+ self.ClassLV = 0
+ self.LV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCShentongLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
+ ShentongID:%d,
+ ClassLV:%d,
+ LV:%d
+ '''\
+ %(
+ self.ShentongID,
+ self.ClassLV,
+ self.LV
+ )
+ return DumpString
+
+
+class tagMCShentongLVInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ ShentongLVList = list() #(vector<tagMCShentongLV> ShentongLVList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC8
+ 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):
+ temShentongLVList = tagMCShentongLV()
+ _pos = temShentongLVList.ReadData(_lpData, _pos)
+ self.ShentongLVList.append(temShentongLVList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC8
+ self.Count = 0
+ self.ShentongLVList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.ShentongLVList[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.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ ShentongLVList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
+
+
+#------------------------------------------------------
+# A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
+
+class tagMCShentongSkillInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ SkillIDList = list() #(vector<DWORD> SkillIDList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC9
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SkillIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC9
+ self.Count = 0
+ self.SkillIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SkillIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
#------------------------------------------------------
@@ -17329,6 +24742,7 @@
_fields_ = [
("RecordIndex", c_ushort), #第几个记录值 每个key存31个succid 0-30为0, 31-61为1..
("Record", c_int), #对应是否领取值
+ ("PassportRecord", c_int), #通行证奖励是否领取值
]
def __init__(self):
@@ -17343,6 +24757,7 @@
def Clear(self):
self.RecordIndex = 0
self.Record = 0
+ self.PassportRecord = 0
return
def GetLength(self):
@@ -17354,11 +24769,13 @@
def OutputString(self):
DumpString = '''//A3 42 成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
RecordIndex:%d,
- Record:%d
+ Record:%d,
+ PassportRecord:%d
'''\
%(
self.RecordIndex,
- self.Record
+ self.Record,
+ self.PassportRecord
)
return DumpString
@@ -17558,6 +24975,58 @@
#------------------------------------------------------
+# A3 43 成就积分信息 #tagMCSuccessScoreInfo
+
+class tagMCSuccessScoreInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ScoreAwardState", c_int), #成就积分领奖记录,按奖励索引位记录是否领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x43
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x43
+ self.ScoreAwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSuccessScoreInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 43 成就积分信息 //tagMCSuccessScoreInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ScoreAwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ScoreAwardState
+ )
+ return DumpString
+
+
+m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
+
+
+#------------------------------------------------------
#A3 14 通知各功能的祝福值 #tagMCSyncBlessValue
class tagMCSyncSingleBlessValue(Structure):
@@ -17748,6 +25217,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("IsPass", c_ubyte), #是否通关副本
+ ("XXZLAwardState", c_int), #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
]
def __init__(self):
@@ -17765,6 +25235,7 @@
self.Cmd = 0xA3
self.SubCmd = 0x11
self.IsPass = 0
+ self.XXZLAwardState = 0
return
def GetLength(self):
@@ -17777,12 +25248,14 @@
DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
Cmd:%s,
SubCmd:%s,
- IsPass:%d
+ IsPass:%d,
+ XXZLAwardState:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsPass
+ self.IsPass,
+ self.XXZLAwardState
)
return DumpString
@@ -17792,14 +25265,13 @@
#------------------------------------------------------
-#A3 01 坐骑培养信息 #tagTrainHorseData
+# A3 CE 称号星级信息 #tagMCTitleStarInfo
-class tagMCHorseInfo(Structure):
+class tagMCTitleStar(Structure):
_pack_ = 1
_fields_ = [
- ("HorseID", c_int), #ID
- ("LV", c_ubyte), #等级
- ("Exp", c_int), #经验
+ ("TitleID", c_int), # 称号ID
+ ("Star", c_ubyte), # 星级
]
def __init__(self):
@@ -17812,36 +25284,391 @@
return _pos + self.GetLength()
def Clear(self):
- self.HorseID = 0
- self.LV = 0
- self.Exp = 0
+ self.TitleID = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagMCHorseInfo)
+ return sizeof(tagMCTitleStar)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData:
- HorseID:%d,
- LV:%d,
- Exp:%d
+ DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
+ TitleID:%d,
+ Star:%d
'''\
%(
- self.HorseID,
- self.LV,
- self.Exp
+ self.TitleID,
+ self.Star
)
return DumpString
+class tagMCTitleStarInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ TitleStarList = list() #(vector<tagMCTitleStar> TitleStarList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCE
+ 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):
+ temTitleStarList = tagMCTitleStar()
+ _pos = temTitleStarList.ReadData(_lpData, _pos)
+ self.TitleStarList.append(temTitleStarList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCE
+ self.Count = 0
+ self.TitleStarList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ TitleStarList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
+
+
+#------------------------------------------------------
+# A3 56 通天令信息 #tagMCTongTianLingInfo
+
+class tagMCTongTianLingInfo(Structure):
+ Head = tagHead()
+ TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
+ TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
+ CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
+ AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
+ CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
+ XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
+ StartTime = 0 #(DWORD StartTime)//通天令本轮开始时间戳,秒
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x56
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CommAwardStateList.append(value)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.XianAwardStateList.append(value)
+ self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x56
+ self.TTLBuyState = 0
+ self.TTLLV = 0
+ self.CurPoint = 0
+ self.AwardStateCount = 0
+ self.CommAwardStateList = list()
+ self.XianAwardStateList = list()
+ self.StartTime = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 4 * self.AwardStateCount
+ length += 4 * self.AwardStateCount
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TTLBuyState)
+ data = CommFunc.WriteBYTE(data, self.TTLLV)
+ data = CommFunc.WriteDWORD(data, self.CurPoint)
+ data = CommFunc.WriteBYTE(data, self.AwardStateCount)
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
+ data = CommFunc.WriteDWORD(data, self.StartTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TTLBuyState:%d,
+ TTLLV:%d,
+ CurPoint:%d,
+ AwardStateCount:%d,
+ CommAwardStateList:%s,
+ XianAwardStateList:%s,
+ StartTime:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TTLBuyState,
+ self.TTLLV,
+ self.CurPoint,
+ self.AwardStateCount,
+ "...",
+ "...",
+ self.StartTime
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
+
+
+#------------------------------------------------------
+# A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
+
+class tagMCTongTianLingTaskAwardInfo(Structure):
+ Head = tagHead()
+ AwardStateCount = 0 #(BYTE AwardStateCount)
+ TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x58
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TaskAwardStateList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x58
+ self.AwardStateCount = 0
+ self.TaskAwardStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.AwardStateCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AwardStateCount)
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AwardStateCount:%d,
+ TaskAwardStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AwardStateCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
+
+
+#------------------------------------------------------
+# A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
+
+class tagMCTongTianLingTaskValue(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TaskType", c_ubyte), #成就类型
+ ("IsDaily", c_ubyte), #是否每日任务
+ ("TaskValue", 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.TaskType = 0
+ self.IsDaily = 0
+ self.TaskValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTongTianLingTaskValue)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
+ TaskType:%d,
+ IsDaily:%d,
+ TaskValue:%d
+ '''\
+ %(
+ self.TaskType,
+ self.IsDaily,
+ self.TaskValue
+ )
+ return DumpString
+
+
+class tagMCTongTianLingTaskValueInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//信息个数
+ TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x57
+ 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):
+ temTaskValueList = tagMCTongTianLingTaskValue()
+ _pos = temTaskValueList.ReadData(_lpData, _pos)
+ self.TaskValueList.append(temTaskValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x57
+ self.Count = 0
+ self.TaskValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.TaskValueList[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.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ TaskValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
+
+
+#------------------------------------------------------
+#A3 01 坐骑培养信息 #tagTrainHorseData
+
class tagTrainHorseData(Structure):
Head = tagHead()
- Multiple = 0 #(BYTE Multiple)//下次暴击倍数
- Num = 0 #(BYTE Num)//个数
- InfoList = list() #(vector<tagMCHorseInfo> InfoList)// 坐骑数据列表
+ LV = 0 #(BYTE LV)//等阶
+ EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
+ SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ SkinPlusStateCount = 0 #(BYTE SkinPlusStateCount)//幻化激活状态值数
+ SkinPlusStateList = list() #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
data = None
def __init__(self):
@@ -17853,12 +25680,20 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Num):
- temInfoList = tagMCHorseInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
+ self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkinPlusStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SkinPlusStateList.append(value)
return _pos
def Clear(self):
@@ -17866,41 +25701,67 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x01
- self.Multiple = 0
- self.Num = 0
- self.InfoList = list()
+ self.LV = 0
+ self.EatItemCount = 0
+ self.SkinPlusState = 0
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
+ self.SkinPlusStateCount = 0
+ self.SkinPlusStateList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
+ length += 4
+ length += 4
length += 1
- for i in range(self.Num):
- length += self.InfoList[i].GetLength()
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+ length += 1
+ length += 4 * self.SkinPlusStateCount
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Multiple)
- data = CommFunc.WriteBYTE(data, self.Num)
- for i in range(self.Num):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.EatItemCount)
+ data = CommFunc.WriteDWORD(data, self.SkinPlusState)
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
+ for i in range(self.SkinPlusStateCount):
+ data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
return data
def OutputString(self):
DumpString = '''
Head:%s,
- Multiple:%d,
- Num:%d,
- InfoList:%s
+ LV:%d,
+ EatItemCount:%d,
+ SkinPlusState:%d,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s,
+ SkinPlusStateCount:%d,
+ SkinPlusStateList:%s
'''\
%(
self.Head.OutputString(),
- self.Multiple,
- self.Num,
+ self.LV,
+ self.EatItemCount,
+ self.SkinPlusState,
+ self.TrainTypes,
+ "...",
+ "...",
+ self.SkinPlusStateCount,
"..."
)
return DumpString
@@ -18538,6 +26399,385 @@
#------------------------------------------------------
+# A5 10 传功奖励结果 #tagMCChuangongResult
+
+class tagMCChuangongItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCChuangongItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+class tagMCChuangongResult(Structure):
+ Head = tagHead()
+ FromLV = 0 #(WORD FromLV)// 传功前等级
+ ToLV = 0 #(WORD ToLV)// 传功后等级
+ Exp = 0 #(DWORD Exp)// 获得经验求余亿部分
+ ExpPoint = 0 #(DWORD ExpPoint)// 获得经验整除亿部分
+ ItemCount = 0 #(BYTE ItemCount)
+ AwardItemList = list() #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemCount):
+ temAwardItemList = tagMCChuangongItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x10
+ self.FromLV = 0
+ self.ToLV = 0
+ self.Exp = 0
+ self.ExpPoint = 0
+ self.ItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.ItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.FromLV)
+ data = CommFunc.WriteWORD(data, self.ToLV)
+ data = CommFunc.WriteDWORD(data, self.Exp)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteBYTE(data, self.ItemCount)
+ for i in range(self.ItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FromLV:%d,
+ ToLV:%d,
+ Exp:%d,
+ ExpPoint:%d,
+ ItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FromLV,
+ self.ToLV,
+ self.Exp,
+ self.ExpPoint,
+ self.ItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCChuangongResult=tagMCChuangongResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
+
+
+#------------------------------------------------------
+# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
+
+class tagMCFamilyActivityExchangeResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Point", c_int), # 活跃令
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x02
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x02
+ self.Point = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyActivityExchangeResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
+ Cmd:%s,
+ SubCmd:%s,
+ Point:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Point
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
+
+
+#------------------------------------------------------
+# A5 08 家族事务信息 #tagMCFamilyAffairInfo
+
+class tagMCFamilyAffair(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("AffairID", c_ushort), # 事务ID
+ ("Star", c_ubyte), # 星级
+ ("State", c_ubyte), # 状态:0-无;1-进行中;2-已完成
+ ("RemainDuration", c_ushort), # 剩余时长,秒,有剩余时间代表进行中
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.AffairID = 0
+ self.Star = 0
+ self.State = 0
+ self.RemainDuration = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyAffair)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 08 家族事务信息 //tagMCFamilyAffairInfo:
+ AffairID:%d,
+ Star:%d,
+ State:%d,
+ RemainDuration:%d
+ '''\
+ %(
+ self.AffairID,
+ self.Star,
+ self.State,
+ self.RemainDuration
+ )
+ return DumpString
+
+
+class tagMCFamilyAffairInfo(Structure):
+ Head = tagHead()
+ RefreshFreeCount = 0 #(BYTE RefreshFreeCount)// 今日已免费刷新次数
+ Count = 0 #(BYTE Count)
+ AffairInfoList = list() #(vector<tagMCFamilyAffair> AffairInfoList)// 事务列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshFreeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAffairInfoList = tagMCFamilyAffair()
+ _pos = temAffairInfoList.ReadData(_lpData, _pos)
+ self.AffairInfoList.append(temAffairInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x08
+ self.RefreshFreeCount = 0
+ self.Count = 0
+ self.AffairInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.Count):
+ length += self.AffairInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RefreshFreeCount)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AffairInfoList[i].GetLength(), self.AffairInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshFreeCount:%d,
+ Count:%d,
+ AffairInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshFreeCount,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyAffairInfo=tagMCFamilyAffairInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyAffairInfo.Head.Cmd,m_NAtagMCFamilyAffairInfo.Head.SubCmd))] = m_NAtagMCFamilyAffairInfo
+
+
+#------------------------------------------------------
+# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
+
+class tagMCFamilyBosFBPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HurtTotal", c_int), # 累计伤血,亿求余部分
+ ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分
+ ("FightSeconds", c_int), # 已累计战斗时长,秒
+ ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
+ ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x07
+ self.HurtTotal = 0
+ self.HurtTotalPoint = 0
+ self.FightSeconds = 0
+ self.HurtAwardState = 0
+ self.HurtAwardStateFamily = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyBosFBPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ HurtTotal:%d,
+ HurtTotalPoint:%d,
+ FightSeconds:%d,
+ HurtAwardState:%d,
+ HurtAwardStateFamily:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HurtTotal,
+ self.HurtTotalPoint,
+ self.FightSeconds,
+ self.HurtAwardState,
+ self.HurtAwardStateFamily
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
+
+
+#------------------------------------------------------
# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
class tagMCFamilyDayAward(Structure):
@@ -18546,6 +26786,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("GetState", c_ubyte), #是否已领取
+ ("MoneyDonateCount", c_ubyte), #今日货币捐献次数
]
def __init__(self):
@@ -18563,6 +26804,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x06
self.GetState = 0
+ self.MoneyDonateCount = 0
return
def GetLength(self):
@@ -18575,12 +26817,14 @@
DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
Cmd:%s,
SubCmd:%s,
- GetState:%d
+ GetState:%d,
+ MoneyDonateCount:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.GetState
+ self.GetState,
+ self.MoneyDonateCount
)
return DumpString
@@ -18650,6 +26894,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("HasSendGold", c_int), # 已用额度
+ ("ServerGrabCnt", c_int), # 全服红包已抢次数
]
def __init__(self):
@@ -18667,6 +26912,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x05
self.HasSendGold = 0
+ self.ServerGrabCnt = 0
return
def GetLength(self):
@@ -18679,18 +26925,199 @@
DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
Cmd:%s,
SubCmd:%s,
- HasSendGold:%d
+ HasSendGold:%d,
+ ServerGrabCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.HasSendGold
+ self.HasSendGold,
+ self.ServerGrabCnt
)
return DumpString
m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
+
+
+#------------------------------------------------------
+# A5 11 打坐信息 #tagMCFamilySitInfo
+
+class tagMCFamilySitInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ExpRound", c_ushort), # 已获得经验轮次
+ ("Exp", c_int), # 获得经验求余亿部分
+ ("ExpPoint", c_int), # 获得经验整除亿部分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x11
+ self.ExpRound = 0
+ self.Exp = 0
+ self.ExpPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilySitInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ExpRound:%d,
+ Exp:%d,
+ ExpPoint:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ExpRound,
+ self.Exp,
+ self.ExpPoint
+ )
+ return DumpString
+
+
+m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+
+
+#------------------------------------------------------
+# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
+
+class tagMCFamilyZhenfa(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ZhenfaType", c_ubyte), # 阵法类型
+ ("ZhenfaLV", c_ushort), # 阵法等级
+ ("ZhenfaExp", 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.ZhenfaType = 0
+ self.ZhenfaLV = 0
+ self.ZhenfaExp = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyZhenfa)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo:
+ ZhenfaType:%d,
+ ZhenfaLV:%d,
+ ZhenfaExp:%d
+ '''\
+ %(
+ self.ZhenfaType,
+ self.ZhenfaLV,
+ self.ZhenfaExp
+ )
+ return DumpString
+
+
+class tagMCFamilyZhenfaInfo(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包
+ Count = 0 #(BYTE Count)
+ ZhenfaInfoList = list() #(vector<tagMCFamilyZhenfa> ZhenfaInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temZhenfaInfoList = tagMCFamilyZhenfa()
+ _pos = temZhenfaInfoList.ReadData(_lpData, _pos)
+ self.ZhenfaInfoList.append(temZhenfaInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x09
+ self.PlayerID = 0
+ self.Count = 0
+ self.ZhenfaInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ZhenfaInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ Count:%d,
+ ZhenfaInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo
#------------------------------------------------------
@@ -19547,6 +27974,58 @@
m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
+
+
+#------------------------------------------------------
+# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
+
+class tagMCCreateRoleAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GetState", c_ubyte), # 是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x20
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA7
+ self.SubCmd = 0x20
+ self.GetState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCreateRoleAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ GetState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GetState
+ )
+ return DumpString
+
+
+m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
#------------------------------------------------------
@@ -21044,6 +29523,7 @@
_fields_ = [
("RefreshType", c_ubyte),
("Value", c_int),
+ ("ValueEx", c_int),
]
def __init__(self):
@@ -21058,6 +29538,7 @@
def Clear(self):
self.RefreshType = 0
self.Value = 0
+ self.ValueEx = 0
return
def GetLength(self):
@@ -21069,11 +29550,13 @@
def OutputString(self):
DumpString = '''//A7 09 周围对象刷新合并包 //tagObjInfoListRefresh:
RefreshType:%d,
- Value:%d
+ Value:%d,
+ ValueEx:%d
'''\
%(
self.RefreshType,
- self.Value
+ self.Value,
+ self.ValueEx
)
return DumpString
@@ -21331,6 +29814,142 @@
m_NAtagMCItemDayUseCntInfo=tagMCItemDayUseCntInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCItemDayUseCntInfo.Head.Cmd,m_NAtagMCItemDayUseCntInfo.Head.SubCmd))] = m_NAtagMCItemDayUseCntInfo
+
+
+#------------------------------------------------------
+# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
+
+class tagMCLingQiEquipBreakResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MakeItemID", c_int), #突破后的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ 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 = 0xA8
+ self.SubCmd = 0x15
+ self.MakeItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLingQiEquipBreakResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MakeItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MakeItemID
+ )
+ return DumpString
+
+
+m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
+
+
+#------------------------------------------------------
+# A8 18 灵器培养信息 #tagMCLingQiTrainInfo
+
+class tagMCLingQiTrainInfo(Structure):
+ Head = tagHead()
+ EquipPlace = 0 #(BYTE EquipPlace)//灵器装备位
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x18
+ self.EquipPlace = 0
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EquipPlace)
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPlace:%d,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPlace,
+ self.TrainTypes,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCLingQiTrainInfo=tagMCLingQiTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiTrainInfo.Head.Cmd,m_NAtagMCLingQiTrainInfo.Head.SubCmd))] = m_NAtagMCLingQiTrainInfo
#------------------------------------------------------
@@ -21761,6 +30380,83 @@
#------------------------------------------------------
+# A8 17 宠物培养信息 #tagMCPetTrainInfo
+
+class tagMCPetTrainInfo(Structure):
+ Head = tagHead()
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x17
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x17
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TrainTypes,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCPetTrainInfo=tagMCPetTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPetTrainInfo.Head.Cmd,m_NAtagMCPetTrainInfo.Head.SubCmd))] = m_NAtagMCPetTrainInfo
+
+
+#------------------------------------------------------
# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
class tagMCShopItemDayBuyCnt(Structure):
@@ -21958,14 +30654,14 @@
#------------------------------------------------------
-# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
+# AA 67 Boss历练活动信息 #tagMCActBossTrialInfo
-class tagMCZhuXianDecomposeItem(Structure):
+class tagMCActBossTrialItem(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int), #物品ID
- ("ItemCnt", c_ubyte), #物品数量
- ("IsBind", c_ubyte), #是否绑定
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
]
def __init__(self):
@@ -21979,94 +30675,2111 @@
def Clear(self):
self.ItemID = 0
- self.ItemCnt = 0
+ self.ItemCount = 0
self.IsBind = 0
return
def GetLength(self):
- return sizeof(tagMCZhuXianDecomposeItem)
+ return sizeof(tagMCActBossTrialItem)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
+ DumpString = '''// AA 67 Boss历练活动信息 //tagMCActBossTrialInfo:
ItemID:%d,
- ItemCnt:%d,
+ ItemCount:%d,
IsBind:%d
'''\
%(
self.ItemID,
- self.ItemCnt,
+ self.ItemCount,
self.IsBind
)
return DumpString
-class tagMCZhuXianDecomposeResult(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//数量
- ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList)
+class tagMCActBossTrialBillard(Structure):
+ Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表
data = None
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x15
+ 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 = tagMCActBossTrialItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 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.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())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActBossTrialSubmitInfo(Structure):
+ RecordIndex = 0 #(BYTE RecordIndex)// 记录索引
+ NeedCount = 0 #(WORD NeedCount)// 所需提交个数
+ 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.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedCount,_pos = CommFunc.ReadWORD(_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.RecordIndex = 0
+ self.NeedCount = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.RecordIndex)
+ data = CommFunc.WriteWORD(data, self.NeedCount)
+ 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 = '''
+ RecordIndex:%d,
+ NeedCount:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.RecordIndex,
+ self.NeedCount,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActBossTrialInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ SubmitCount = 0 #(BYTE SubmitCount)
+ SubmitInfoList = list() #(vector<tagMCActBossTrialSubmitInfo> SubmitInfoList)// 提交凭证信息列表
+ BillardCount = 0 #(BYTE BillardCount)
+ BillboardInfoList = list() #(vector<tagMCActBossTrialBillard> BillboardInfoList)// 榜单信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x67
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temItemList = tagMCZhuXianDecomposeItem()
- _pos = temItemList.ReadData(_lpData, _pos)
- self.ItemList.append(temItemList)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SubmitCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SubmitCount):
+ temSubmitInfoList = tagMCActBossTrialSubmitInfo()
+ _pos = temSubmitInfoList.ReadData(_lpData, _pos)
+ self.SubmitInfoList.append(temSubmitInfoList)
+ self.BillardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BillardCount):
+ temBillboardInfoList = tagMCActBossTrialBillard()
+ _pos = temBillboardInfoList.ReadData(_lpData, _pos)
+ self.BillboardInfoList.append(temBillboardInfoList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x15
- self.Cnt = 0
- self.ItemList = list()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x67
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.SubmitCount = 0
+ self.SubmitInfoList = list()
+ self.BillardCount = 0
+ self.BillboardInfoList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
- for i in range(self.Cnt):
- length += self.ItemList[i].GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.SubmitCount):
+ length += self.SubmitInfoList[i].GetLength()
+ length += 1
+ for i in range(self.BillardCount):
+ length += self.BillboardInfoList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].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.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.SubmitCount)
+ for i in range(self.SubmitCount):
+ data = CommFunc.WriteString(data, self.SubmitInfoList[i].GetLength(), self.SubmitInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.BillardCount)
+ for i in range(self.BillardCount):
+ data = CommFunc.WriteString(data, self.BillboardInfoList[i].GetLength(), self.BillboardInfoList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- Cnt:%d,
- ItemList:%s
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ SubmitCount:%d,
+ SubmitInfoList:%s,
+ BillardCount:%d,
+ BillboardInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.Cnt,
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.SubmitCount,
+ "...",
+ self.BillardCount,
"..."
)
return DumpString
-m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
+m_NAtagMCActBossTrialInfo=tagMCActBossTrialInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBossTrialInfo.Head.Cmd,m_NAtagMCActBossTrialInfo.Head.SubCmd))] = m_NAtagMCActBossTrialInfo
+
+
+#------------------------------------------------------
+# AA 68 Boss历练活动玩家信息 #tagMCActBossTrialPlayerInfo
+
+class tagMCActBossTrialPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("SubmitCount", c_ushort), # 已提交凭证个数
+ ("SubmitCountAward", c_int), # 提交凭证奖励领奖状态
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x68
+ 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 = 0x68
+ self.ActNum = 0
+ self.SubmitCount = 0
+ self.SubmitCountAward = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActBossTrialPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 68 Boss历练活动玩家信息 //tagMCActBossTrialPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ SubmitCount:%d,
+ SubmitCountAward:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.SubmitCount,
+ self.SubmitCountAward
+ )
+ return DumpString
+
+
+m_NAtagMCActBossTrialPlayerInfo=tagMCActBossTrialPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBossTrialPlayerInfo.Cmd,m_NAtagMCActBossTrialPlayerInfo.SubCmd))] = m_NAtagMCActBossTrialPlayerInfo
+
+
+#------------------------------------------------------
+# AA 65 买一送多活动信息 #tagMCActBuyOneInfo
+
+class tagMCActBuyOneInfoFreeItem(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(tagMCActBuyOneInfoFreeItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 65 买一送多活动信息 //tagMCActBuyOneInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActBuyOneInfoFreeGift(Structure):
+ FreeIndex = 0 #(BYTE FreeIndex)// 免费领取索引
+ FreeItemCount = 0 #(BYTE FreeItemCount)// 免费礼包数
+ FreeItemList = list() #(vector<tagMCActBuyOneInfoFreeItem> FreeItemList)// 免费礼包列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.FreeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FreeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.FreeItemCount):
+ temFreeItemList = tagMCActBuyOneInfoFreeItem()
+ _pos = temFreeItemList.ReadData(_lpData, _pos)
+ self.FreeItemList.append(temFreeItemList)
+ return _pos
+
+ def Clear(self):
+ self.FreeIndex = 0
+ self.FreeItemCount = 0
+ self.FreeItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ for i in range(self.FreeItemCount):
+ length += self.FreeItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.FreeIndex)
+ data = CommFunc.WriteBYTE(data, self.FreeItemCount)
+ for i in range(self.FreeItemCount):
+ data = CommFunc.WriteString(data, self.FreeItemList[i].GetLength(), self.FreeItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ FreeIndex:%d,
+ FreeItemCount:%d,
+ FreeItemList:%s
+ '''\
+ %(
+ self.FreeIndex,
+ self.FreeItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActBuyOneInfoGiftbag(Structure):
+ CTGID = 0 #(DWORD CTGID)//所需充值ID
+ RecordIndex = 0 #(BYTE RecordIndex)// 记录索引
+ FreeGiftCount = 0 #(BYTE FreeGiftCount)// 免费礼包数
+ FreeGiftList = list() #(vector<tagMCActBuyOneInfoFreeGift> FreeGiftList)// 免费礼包列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.CTGID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FreeGiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.FreeGiftCount):
+ temFreeGiftList = tagMCActBuyOneInfoFreeGift()
+ _pos = temFreeGiftList.ReadData(_lpData, _pos)
+ self.FreeGiftList.append(temFreeGiftList)
+ return _pos
+
+ def Clear(self):
+ self.CTGID = 0
+ self.RecordIndex = 0
+ self.FreeGiftCount = 0
+ self.FreeGiftList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.FreeGiftCount):
+ length += self.FreeGiftList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.CTGID)
+ data = CommFunc.WriteBYTE(data, self.RecordIndex)
+ data = CommFunc.WriteBYTE(data, self.FreeGiftCount)
+ for i in range(self.FreeGiftCount):
+ data = CommFunc.WriteString(data, self.FreeGiftList[i].GetLength(), self.FreeGiftList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ CTGID:%d,
+ RecordIndex:%d,
+ FreeGiftCount:%d,
+ FreeGiftList:%s
+ '''\
+ %(
+ self.CTGID,
+ self.RecordIndex,
+ self.FreeGiftCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActBuyOneInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 活动礼包个数
+ GiftbagList = list() #(vector<tagMCActBuyOneInfoGiftbag> GiftbagList)// 礼包列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x65
+ 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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagList = tagMCActBuyOneInfoGiftbag()
+ _pos = temGiftbagList.ReadData(_lpData, _pos)
+ self.GiftbagList.append(temGiftbagList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x65
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.GiftbagCount = 0
+ self.GiftbagList = 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.GiftbagCount):
+ length += self.GiftbagList[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.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.GiftbagCount)
+ for i in range(self.GiftbagCount):
+ data = CommFunc.WriteString(data, self.GiftbagList[i].GetLength(), self.GiftbagList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ GiftbagCount:%d,
+ GiftbagList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActBuyOneInfo=tagMCActBuyOneInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOneInfo.Head.Cmd,m_NAtagMCActBuyOneInfo.Head.SubCmd))] = m_NAtagMCActBuyOneInfo
+
+
+#------------------------------------------------------
+# AA 66 买一送多活动玩家信息 #tagMCActBuyOnePlayerInfo
+
+class tagMCActBuyOnePlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ FreeRecordCount = 0 #(BYTE FreeRecordCount)// 免费礼包领奖记录个数
+ FreeRecordList = list() #(vector<DWORD> FreeRecordList)// 免费礼包领奖记录列表,按所需充值ID记录索引取记录,每个记录代表每个充值ID对应免费礼包的领取记录,按免费领取索引位运算记录是否已领取
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x66
+ 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.FreeRecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.FreeRecordCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.FreeRecordList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x66
+ self.ActNum = 0
+ self.FreeRecordCount = 0
+ self.FreeRecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.FreeRecordCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.FreeRecordCount)
+ for i in range(self.FreeRecordCount):
+ data = CommFunc.WriteDWORD(data, self.FreeRecordList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ FreeRecordCount:%d,
+ FreeRecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.FreeRecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActBuyOnePlayerInfo=tagMCActBuyOnePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOnePlayerInfo.Head.Cmd,m_NAtagMCActBuyOnePlayerInfo.Head.SubCmd))] = m_NAtagMCActBuyOnePlayerInfo
+
+
+#------------------------------------------------------
+# AA 40 集字活动信息 #tagMCActCollectWordsInfo
+
+class tagMCActCollectWordsNeedItem(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(tagMCActCollectWordsNeedItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActCollectWordsExchangeItem(Structure):
+ ExchangeNum = 0 #(BYTE ExchangeNum)//兑换编号
+ ExchangeCountMax = 0 #(WORD ExchangeCountMax)//最大兑换次数,0不限制
+ ItemID = 0 #(DWORD ItemID)//目标物品
+ ItemCount = 0 #(WORD ItemCount)
+ IsBind = 0 #(BYTE IsBind)
+ NeedItemCount = 0 #(BYTE NeedItemCount)
+ NeedItemList = list() #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExchangeCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NeedItemCount):
+ temNeedItemList = tagMCActCollectWordsNeedItem()
+ _pos = temNeedItemList.ReadData(_lpData, _pos)
+ self.NeedItemList.append(temNeedItemList)
+ return _pos
+
+ def Clear(self):
+ self.ExchangeNum = 0
+ self.ExchangeCountMax = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ self.NeedItemCount = 0
+ self.NeedItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 4
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.NeedItemCount):
+ length += self.NeedItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ExchangeNum)
+ data = CommFunc.WriteWORD(data, self.ExchangeCountMax)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteBYTE(data, self.IsBind)
+ data = CommFunc.WriteBYTE(data, self.NeedItemCount)
+ for i in range(self.NeedItemCount):
+ data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ExchangeNum:%d,
+ ExchangeCountMax:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ NeedItemCount:%d,
+ NeedItemList:%s
+ '''\
+ %(
+ self.ExchangeNum,
+ self.ExchangeCountMax,
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.NeedItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActCollectWordsInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ LastDayOnlyExchange = 0 #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换
+ ExchangeCount = 0 #(BYTE ExchangeCount)
+ ExchangeItemList = list() #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x40
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ExchangeCount):
+ temExchangeItemList = tagMCActCollectWordsExchangeItem()
+ _pos = temExchangeItemList.ReadData(_lpData, _pos)
+ self.ExchangeItemList.append(temExchangeItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x40
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.LastDayOnlyExchange = 0
+ self.ExchangeCount = 0
+ self.ExchangeItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.ExchangeCount):
+ length += self.ExchangeItemList[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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.LastDayOnlyExchange)
+ data = CommFunc.WriteBYTE(data, self.ExchangeCount)
+ for i in range(self.ExchangeCount):
+ data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ LastDayOnlyExchange:%d,
+ ExchangeCount:%d,
+ ExchangeItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.LastDayOnlyExchange,
+ self.ExchangeCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo
+
+
+#------------------------------------------------------
+# AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo
+
+class tagMCActCollectWordsExchangeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ExchangeNum", c_ubyte), #兑换编号
+ ("ExchangeCount", c_ushort), #已兑换次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ExchangeNum = 0
+ self.ExchangeCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActCollectWordsExchangeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo:
+ ExchangeNum:%d,
+ ExchangeCount:%d
+ '''\
+ %(
+ self.ExchangeNum,
+ self.ExchangeCount
+ )
+ return DumpString
+
+
+class tagMCActCollectWordsPlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
+ ExchangeCount = 0 #(BYTE ExchangeCount)
+ ExchangeInfoList = list() #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x41
+ 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.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ExchangeCount):
+ temExchangeInfoList = tagMCActCollectWordsExchangeInfo()
+ _pos = temExchangeInfoList.ReadData(_lpData, _pos)
+ self.ExchangeInfoList.append(temExchangeInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x41
+ self.ActNum = 0
+ self.ExchangeCount = 0
+ self.ExchangeInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.ExchangeCount):
+ length += self.ExchangeInfoList[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.WriteBYTE(data, self.ExchangeCount)
+ for i in range(self.ExchangeCount):
+ data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ ExchangeCount:%d,
+ ExchangeInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.ExchangeCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo
+
+
+#------------------------------------------------------
+# AA 55 垃圾收集活动信息 #tagMCActGarbageSortingInfo
+
+class tagMCActGarbageSortingInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x55
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x55
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ 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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType
+ )
+ return DumpString
+
+
+m_NAtagMCActGarbageSortingInfo=tagMCActGarbageSortingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageSortingInfo.Head.Cmd,m_NAtagMCActGarbageSortingInfo.Head.SubCmd))] = m_NAtagMCActGarbageSortingInfo
+
+
+#------------------------------------------------------
+# AA 57 垃圾收集活动分类结果 #tagMCActGarbageSortingResult
+
+class tagMCActGarbageSortingResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("GarbageSortingType", c_ubyte), #垃圾分类类型
+ ("IsRight", c_ubyte), #是否正确
+ ("AddEnvValue", c_int), #增加环保值
+ ("HisEnvValueTotal", c_int), # 当前活动累计获得环保值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x57
+ 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 = 0x57
+ self.ActNum = 0
+ self.GarbageSortingType = 0
+ self.IsRight = 0
+ self.AddEnvValue = 0
+ self.HisEnvValueTotal = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGarbageSortingResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 57 垃圾收集活动分类结果 //tagMCActGarbageSortingResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ GarbageSortingType:%d,
+ IsRight:%d,
+ AddEnvValue:%d,
+ HisEnvValueTotal:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.GarbageSortingType,
+ self.IsRight,
+ self.AddEnvValue,
+ self.HisEnvValueTotal
+ )
+ return DumpString
+
+
+m_NAtagMCActGarbageSortingResult=tagMCActGarbageSortingResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageSortingResult.Cmd,m_NAtagMCActGarbageSortingResult.SubCmd))] = m_NAtagMCActGarbageSortingResult
+
+
+#------------------------------------------------------
+# AA 56 垃圾收集活动任务进度信息 #tagMCActGarbageTaskInfo
+
+class tagMCActGarbageTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GarbageTaskID", c_ubyte), #垃圾任务ID
+ ("GarbageTaskValue", c_int), #当前进度值,一直累加
+ ("GarbageTaskFinishCount", c_int), #当前已完成次数; 前端计算未完成次数的进度值=max(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.GarbageTaskID = 0
+ self.GarbageTaskValue = 0
+ self.GarbageTaskFinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGarbageTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 56 垃圾收集活动任务进度信息 //tagMCActGarbageTaskInfo:
+ GarbageTaskID:%d,
+ GarbageTaskValue:%d,
+ GarbageTaskFinishCount:%d
+ '''\
+ %(
+ self.GarbageTaskID,
+ self.GarbageTaskValue,
+ self.GarbageTaskFinishCount
+ )
+ return DumpString
+
+
+class tagMCActGarbageTaskInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ HisEnvValueTotal = 0 #(DWORD HisEnvValueTotal)// 当前活动累计获得环保值
+ GarbageTaskCount = 0 #(BYTE GarbageTaskCount)//任务数
+ GarbageTaskList = list() #(vector<tagMCActGarbageTask> GarbageTaskList)//任务信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x56
+ 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.HisEnvValueTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GarbageTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GarbageTaskCount):
+ temGarbageTaskList = tagMCActGarbageTask()
+ _pos = temGarbageTaskList.ReadData(_lpData, _pos)
+ self.GarbageTaskList.append(temGarbageTaskList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x56
+ self.ActNum = 0
+ self.HisEnvValueTotal = 0
+ self.GarbageTaskCount = 0
+ self.GarbageTaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.GarbageTaskCount):
+ length += self.GarbageTaskList[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.WriteDWORD(data, self.HisEnvValueTotal)
+ data = CommFunc.WriteBYTE(data, self.GarbageTaskCount)
+ for i in range(self.GarbageTaskCount):
+ data = CommFunc.WriteString(data, self.GarbageTaskList[i].GetLength(), self.GarbageTaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ HisEnvValueTotal:%d,
+ GarbageTaskCount:%d,
+ GarbageTaskList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.HisEnvValueTotal,
+ self.GarbageTaskCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGarbageTaskInfo=tagMCActGarbageTaskInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageTaskInfo.Head.Cmd,m_NAtagMCActGarbageTaskInfo.Head.SubCmd))] = m_NAtagMCActGarbageTaskInfo
+
+
+#------------------------------------------------------
+# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
+
+class tagMCActGodGiftItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemNum", c_ubyte), # 物品在本库中的编号
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ("CanChooseTimes", c_ubyte), #可选择次数,0代表不限次数
+ ("ChooseTimes", c_ubyte), #已选次数
+ ("IsChoose", 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.ItemNum = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ self.CanChooseTimes = 0
+ self.ChooseTimes = 0
+ self.IsChoose = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGodGiftItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
+ ItemNum:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ CanChooseTimes:%d,
+ ChooseTimes:%d,
+ IsChoose:%d
+ '''\
+ %(
+ self.ItemNum,
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.CanChooseTimes,
+ self.ChooseTimes,
+ self.IsChoose
+ )
+ return DumpString
+
+
+class tagMCActGodGiftItemLib(Structure):
+ ItemLibType = 0 #(BYTE ItemLibType)//物品库类型
+ NeedChooseCount = 0 #(BYTE NeedChooseCount)//需要选择个数
+ GodGiftItemCount = 0 #(BYTE GodGiftItemCount)//可选择物品个数
+ GodGiftItemList = list() #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GodGiftItemCount):
+ temGodGiftItemList = tagMCActGodGiftItem()
+ _pos = temGodGiftItemList.ReadData(_lpData, _pos)
+ self.GodGiftItemList.append(temGodGiftItemList)
+ return _pos
+
+ def Clear(self):
+ self.ItemLibType = 0
+ self.NeedChooseCount = 0
+ self.GodGiftItemCount = 0
+ self.GodGiftItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.GodGiftItemCount):
+ length += self.GodGiftItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ItemLibType)
+ data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
+ data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
+ for i in range(self.GodGiftItemCount):
+ data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemLibType:%d,
+ NeedChooseCount:%d,
+ GodGiftItemCount:%d,
+ GodGiftItemList:%s
+ '''\
+ %(
+ self.ItemLibType,
+ self.NeedChooseCount,
+ self.GodGiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGodGiftInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每日重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ CostMoneyType = 0 #(BYTE CostMoneyType)//消耗货币类型
+ CostMoneyValueCount = 0 #(BYTE CostMoneyValueCount)
+ CostMoneyValueList = list() #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
+ PrizeMoneyType = 0 #(BYTE PrizeMoneyType)//奖励货币类型
+ PrizeMoneyValueCount = 0 #(BYTE PrizeMoneyValueCount)
+ PrizeMoneyValueList = list() #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
+ ResetLimitTimes = 0 #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
+ ResetCountMax = 0 #(BYTE ResetCountMax)//最大可重置奖池次数
+ IsAwardPoolOK = 0 #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
+ ItemLibCount = 0 #(BYTE ItemLibCount)//奖池库个数
+ ItemLibList = list() #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x60
+ 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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostMoneyValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostMoneyValueList.append(value)
+ self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PrizeMoneyValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PrizeMoneyValueList.append(value)
+ self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemLibCount):
+ temItemLibList = tagMCActGodGiftItemLib()
+ _pos = temItemLibList.ReadData(_lpData, _pos)
+ self.ItemLibList.append(temItemLibList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x60
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.CostMoneyType = 0
+ self.CostMoneyValueCount = 0
+ self.CostMoneyValueList = list()
+ self.PrizeMoneyType = 0
+ self.PrizeMoneyValueCount = 0
+ self.PrizeMoneyValueList = list()
+ self.ResetLimitTimes = 0
+ self.ResetCountMax = 0
+ self.IsAwardPoolOK = 0
+ self.ItemLibCount = 0
+ self.ItemLibList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 4 * self.CostMoneyValueCount
+ length += 1
+ length += 1
+ length += 4 * self.PrizeMoneyValueCount
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.ItemLibCount):
+ length += self.ItemLibList[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.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.CostMoneyType)
+ data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
+ for i in range(self.CostMoneyValueCount):
+ data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
+ data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
+ data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
+ for i in range(self.PrizeMoneyValueCount):
+ data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
+ data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
+ data = CommFunc.WriteBYTE(data, self.ResetCountMax)
+ data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
+ data = CommFunc.WriteBYTE(data, self.ItemLibCount)
+ for i in range(self.ItemLibCount):
+ data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ CostMoneyType:%d,
+ CostMoneyValueCount:%d,
+ CostMoneyValueList:%s,
+ PrizeMoneyType:%d,
+ PrizeMoneyValueCount:%d,
+ PrizeMoneyValueList:%s,
+ ResetLimitTimes:%d,
+ ResetCountMax:%d,
+ IsAwardPoolOK:%d,
+ ItemLibCount:%d,
+ ItemLibList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.CostMoneyType,
+ self.CostMoneyValueCount,
+ "...",
+ self.PrizeMoneyType,
+ self.PrizeMoneyValueCount,
+ "...",
+ self.ResetLimitTimes,
+ self.ResetCountMax,
+ self.IsAwardPoolOK,
+ self.ItemLibCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
+
+
+#------------------------------------------------------
+# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
+
+class tagMCActGodGiftAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemLibType", c_ubyte), #物品库类型
+ ("ItemNum", 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.ItemLibType = 0
+ self.ItemNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGodGiftAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
+ ItemLibType:%d,
+ ItemNum:%d
+ '''\
+ %(
+ self.ItemLibType,
+ self.ItemNum
+ )
+ return DumpString
+
+
+class tagMCActGodGiftPlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ ResetCount = 0 #(BYTE ResetCount)// 本次活动已重置次数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
+ AwardItemList = list() #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x61
+ 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.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCActGodGiftAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x61
+ self.ActNum = 0
+ self.ResetCount = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[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.WriteBYTE(data, self.ResetCount)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ ResetCount:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.ResetCount,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
+
+
+#------------------------------------------------------
+# AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
+
+class tagMCActGrowupBuyCTGItem(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(tagMCActGrowupBuyCTGItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 31 成长必买活动信息 //tagMCActGrowupBuyInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActGrowupBuyCTGInfo(Structure):
+ CTGID = 0 #(WORD CTGID)// 充值表ID
+ GainItemCount = 0 #(BYTE GainItemCount)// 获得物品数
+ GainItemList = list() #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.CTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GainItemCount):
+ temGainItemList = tagMCActGrowupBuyCTGItem()
+ _pos = temGainItemList.ReadData(_lpData, _pos)
+ self.GainItemList.append(temGainItemList)
+ return _pos
+
+ def Clear(self):
+ self.CTGID = 0
+ self.GainItemCount = 0
+ self.GainItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 2
+ length += 1
+ for i in range(self.GainItemCount):
+ length += self.GainItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteWORD(data, self.CTGID)
+ data = CommFunc.WriteBYTE(data, self.GainItemCount)
+ for i in range(self.GainItemCount):
+ data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ CTGID:%d,
+ GainItemCount:%d,
+ GainItemList:%s
+ '''\
+ %(
+ self.CTGID,
+ self.GainItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGrowupBuyGroup(Structure):
+ BuyCount = 0 #(BYTE BuyCount)// 循环购买礼包数
+ BuyCTGIDList = list() #(vector<tagMCActGrowupBuyCTGInfo> BuyCTGIDList)// 循环购买礼包充值ID信息列表
+ PlayerBuyIndex = 0 #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BuyCount):
+ temBuyCTGIDList = tagMCActGrowupBuyCTGInfo()
+ _pos = temBuyCTGIDList.ReadData(_lpData, _pos)
+ self.BuyCTGIDList.append(temBuyCTGIDList)
+ self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.BuyCount = 0
+ self.BuyCTGIDList = list()
+ self.PlayerBuyIndex = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.BuyCount):
+ length += self.BuyCTGIDList[i].GetLength()
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.BuyCount)
+ for i in range(self.BuyCount):
+ data = CommFunc.WriteString(data, self.BuyCTGIDList[i].GetLength(), self.BuyCTGIDList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ BuyCount:%d,
+ BuyCTGIDList:%s,
+ PlayerBuyIndex:%d
+ '''\
+ %(
+ self.BuyCount,
+ "...",
+ self.PlayerBuyIndex
+ )
+ return DumpString
+
+
+class tagMCActGrowupBuyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ GroupCount = 0 #(BYTE GroupCount)// 循环购买礼包组数
+ GroupList = list() #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x31
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GroupCount):
+ temGroupList = tagMCActGrowupBuyGroup()
+ _pos = temGroupList.ReadData(_lpData, _pos)
+ self.GroupList.append(temGroupList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x31
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.GroupCount = 0
+ self.GroupList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.GroupCount):
+ length += self.GroupList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.GroupCount)
+ for i in range(self.GroupCount):
+ data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ GroupCount:%d,
+ GroupList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.GroupCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo
+
+
+#------------------------------------------------------
+# AA 54 骑宠盛宴活动信息 #tagMCActHorsePetFeastInfo
+
+class tagMCActHorsePetFeastTime(Structure):
+ StartTime = "" #(char StartTime[5])// 开始时间 H:M
+ EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
+ return _pos
+
+ def Clear(self):
+ self.StartTime = ""
+ self.EndtTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 5
+ length += 5
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 5, self.StartTime)
+ data = CommFunc.WriteString(data, 5, self.EndtTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ StartTime:%s,
+ EndtTime:%s
+ '''\
+ %(
+ self.StartTime,
+ self.EndtTime
+ )
+ return DumpString
+
+
+class tagMCActHorsePetFeastInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ TimeCount = 0 #(BYTE TimeCount)
+ ActTimeList = list() #(vector<tagMCActHorsePetFeastTime> ActTimeList)// 活动时间 H:M 列表
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x54
+ 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.TimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TimeCount):
+ temActTimeList = tagMCActHorsePetFeastTime()
+ _pos = temActTimeList.ReadData(_lpData, _pos)
+ self.ActTimeList.append(temActTimeList)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x54
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.TimeCount = 0
+ self.ActTimeList = list()
+ self.LimitLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ for i in range(self.TimeCount):
+ length += self.ActTimeList[i].GetLength()
+ length += 2
+
+ 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.TimeCount)
+ for i in range(self.TimeCount):
+ data = CommFunc.WriteString(data, self.ActTimeList[i].GetLength(), self.ActTimeList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ TimeCount:%d,
+ ActTimeList:%s,
+ LimitLV:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.TimeCount,
+ "...",
+ self.LimitLV
+ )
+ return DumpString
+
+
+m_NAtagMCActHorsePetFeastInfo=tagMCActHorsePetFeastInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActHorsePetFeastInfo.Head.Cmd,m_NAtagMCActHorsePetFeastInfo.Head.SubCmd))] = m_NAtagMCActHorsePetFeastInfo
#------------------------------------------------------
@@ -22497,6 +33210,1331 @@
#------------------------------------------------------
+# AA 48 多日连充活动信息 #tagMCActManyDayRechargeInfo
+
+class tagMCActManyDayRechargeItem(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(tagMCActManyDayRechargeItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 48 多日连充活动信息 //tagMCActManyDayRechargeInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActManyDayRechargeAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedRecharge = 0 #(DWORD NeedRecharge)// 单天所需充值额度
+ NeedDays = 0 #(BYTE NeedDays)// 所需充值天数
+ AwardItemCount = 0 #(BYTE AwardItemCount)
+ AwardItemList = list() #(vector<tagMCActManyDayRechargeItem> 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.NeedRecharge,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCActManyDayRechargeItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedRecharge = 0
+ self.NeedDays = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedRecharge)
+ data = CommFunc.WriteBYTE(data, self.NeedDays)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedRecharge:%d,
+ NeedDays:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedRecharge,
+ self.NeedDays,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActManyDayRechargeInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardList = list() #(vector<tagMCActManyDayRechargeAward> AwardList)// 奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x48
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardList = tagMCActManyDayRechargeAward()
+ _pos = temAwardList.ReadData(_lpData, _pos)
+ self.AwardList.append(temAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x48
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.AwardCount = 0
+ self.AwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardList[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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ AwardCount:%d,
+ AwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActManyDayRechargeInfo=tagMCActManyDayRechargeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActManyDayRechargeInfo.Head.Cmd,m_NAtagMCActManyDayRechargeInfo.Head.SubCmd))] = m_NAtagMCActManyDayRechargeInfo
+
+
+#------------------------------------------------------
+# AA 49 多日连充活动玩家信息 #tagMCActManyDayRechargePlayerInfo
+
+class tagMCActManyDayRechargePlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ Days = 0 #(BYTE Days)
+ DayRechargeValues = list() #(vector<DWORD> DayRechargeValues)//活动每天充值列表
+ RecordCount = 0 #(BYTE RecordCount)
+ AwardRecord = list() #(vector<DWORD> AwardRecord)//奖励领奖记录,按奖励索引二进制位存储是否已领取
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x49
+ 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.Days,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Days):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.DayRechargeValues.append(value)
+ self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RecordCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.AwardRecord.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x49
+ self.ActNum = 0
+ self.Days = 0
+ self.DayRechargeValues = list()
+ self.RecordCount = 0
+ self.AwardRecord = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.Days
+ length += 1
+ length += 4 * self.RecordCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.Days)
+ for i in range(self.Days):
+ data = CommFunc.WriteDWORD(data, self.DayRechargeValues[i])
+ data = CommFunc.WriteBYTE(data, self.RecordCount)
+ for i in range(self.RecordCount):
+ data = CommFunc.WriteDWORD(data, self.AwardRecord[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ Days:%d,
+ DayRechargeValues:%s,
+ RecordCount:%d,
+ AwardRecord:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.Days,
+ "...",
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActManyDayRechargePlayerInfo=tagMCActManyDayRechargePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActManyDayRechargePlayerInfo.Head.Cmd,m_NAtagMCActManyDayRechargePlayerInfo.Head.SubCmd))] = m_NAtagMCActManyDayRechargePlayerInfo
+
+
+#------------------------------------------------------
+# AA 62 充值抵扣活动信息 #tagMCActRecharegeCouponInfo
+
+class tagMCActRecharegeCouponItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ("IsMainItem", c_ubyte), #是否标的物
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ self.IsMainItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRecharegeCouponItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 62 充值抵扣活动信息 //tagMCActRecharegeCouponInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ IsMainItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.IsMainItem
+ )
+ return DumpString
+
+
+class tagMCActRecharegeCouponGiftbag(Structure):
+ GiftID = 0 #(DWORD GiftID)//商城表的物品ID
+ BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
+ MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
+ MoneyNumber = 0 #(DWORD MoneyNumber)//消耗货币数量
+ MoneyOriginal = 0 #(DWORD MoneyOriginal)//原价
+ GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
+ ItemInfo = list() #(vector<tagMCActRecharegeCouponItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyNumber,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MoneyOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftItemCount):
+ temItemInfo = tagMCActRecharegeCouponItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftID = 0
+ self.BuyCountLimit = 0
+ self.MoneyType = 0
+ self.MoneyNumber = 0
+ self.MoneyOriginal = 0
+ self.GiftItemCount = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.GiftItemCount):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.GiftID)
+ data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
+ data = CommFunc.WriteBYTE(data, self.MoneyType)
+ data = CommFunc.WriteDWORD(data, self.MoneyNumber)
+ data = CommFunc.WriteDWORD(data, self.MoneyOriginal)
+ data = CommFunc.WriteBYTE(data, self.GiftItemCount)
+ for i in range(self.GiftItemCount):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GiftID:%d,
+ BuyCountLimit:%d,
+ MoneyType:%d,
+ MoneyNumber:%d,
+ MoneyOriginal:%d,
+ GiftItemCount:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.GiftID,
+ self.BuyCountLimit,
+ self.MoneyType,
+ self.MoneyNumber,
+ self.MoneyOriginal,
+ self.GiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRecharegeCouponInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ CouponMoneyType = 0 #(BYTE CouponMoneyType)//抵扣券对应货币类型
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 可购买礼包个数
+ GiftbagList = list() #(vector<tagMCActRecharegeCouponGiftbag> GiftbagList)// 可购买礼包顺序列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x62
+ 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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CouponMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagList = tagMCActRecharegeCouponGiftbag()
+ _pos = temGiftbagList.ReadData(_lpData, _pos)
+ self.GiftbagList.append(temGiftbagList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x62
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.CouponMoneyType = 0
+ self.GiftbagCount = 0
+ self.GiftbagList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagList[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.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.CouponMoneyType)
+ data = CommFunc.WriteBYTE(data, self.GiftbagCount)
+ for i in range(self.GiftbagCount):
+ data = CommFunc.WriteString(data, self.GiftbagList[i].GetLength(), self.GiftbagList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ CouponMoneyType:%d,
+ GiftbagCount:%d,
+ GiftbagList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.CouponMoneyType,
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRecharegeCouponInfo=tagMCActRecharegeCouponInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponInfo.Head.Cmd,m_NAtagMCActRecharegeCouponInfo.Head.SubCmd))] = m_NAtagMCActRecharegeCouponInfo
+
+
+#------------------------------------------------------
+# AA 63 充值抵扣活动玩家信息 #tagMCActRecharegeCouponPlayerInfo
+
+class tagMCActRecharegeCouponPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("CouponMoney", c_int), # 当前可用抵扣点
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x63
+ 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 = 0x63
+ self.ActNum = 0
+ self.CouponMoney = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRecharegeCouponPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 63 充值抵扣活动玩家信息 //tagMCActRecharegeCouponPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ CouponMoney:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.CouponMoney
+ )
+ return DumpString
+
+
+m_NAtagMCActRecharegeCouponPlayerInfo=tagMCActRecharegeCouponPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponPlayerInfo.Cmd,m_NAtagMCActRecharegeCouponPlayerInfo.SubCmd))] = m_NAtagMCActRecharegeCouponPlayerInfo
+
+
+#------------------------------------------------------
+# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
+
+class tagMCActRechargePrize(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("CTGID", c_ushort), # 对应充值表充值ID
+ ("GoldPrize", c_int), #返利仙玉数
+ ("PrizeCountLimit", 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.CTGID = 0
+ self.GoldPrize = 0
+ self.PrizeCountLimit = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRechargePrize)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
+ CTGID:%d,
+ GoldPrize:%d,
+ PrizeCountLimit:%d
+ '''\
+ %(
+ self.CTGID,
+ self.GoldPrize,
+ self.PrizeCountLimit
+ )
+ return DumpString
+
+
+class tagMCActRechargePrizeDay(Structure):
+ Prizes = 0 #(BYTE Prizes)// 返利档数
+ PrizeInfo = list() #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Prizes):
+ temPrizeInfo = tagMCActRechargePrize()
+ _pos = temPrizeInfo.ReadData(_lpData, _pos)
+ self.PrizeInfo.append(temPrizeInfo)
+ return _pos
+
+ def Clear(self):
+ self.Prizes = 0
+ self.PrizeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.Prizes):
+ length += self.PrizeInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Prizes)
+ for i in range(self.Prizes):
+ data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Prizes:%d,
+ PrizeInfo:%s
+ '''\
+ %(
+ self.Prizes,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRechargePrizeInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ PrizeDays = 0 #(BYTE PrizeDays)
+ PrizeDayInfo = list() #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PrizeDays):
+ temPrizeDayInfo = tagMCActRechargePrizeDay()
+ _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
+ self.PrizeDayInfo.append(temPrizeDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x27
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.IsDayReset = 0
+ self.PrizeDays = 0
+ self.PrizeDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.PrizeDays):
+ length += self.PrizeDayInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.PrizeDays)
+ for i in range(self.PrizeDays):
+ data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ IsDayReset:%d,
+ PrizeDays:%d,
+ PrizeDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.IsDayReset,
+ self.PrizeDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
+
+
+#------------------------------------------------------
+# AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
+
+class tagMCActRechargeRebate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RMBMin", c_int), # 充值RMB最小值
+ ("RMBMax", c_int), # 充值RMB最大值,0代表无上限
+ ("RebateRate", c_ushort), # 返利仙玉比例百分比
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.RMBMin = 0
+ self.RMBMax = 0
+ self.RebateRate = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRechargeRebate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
+ RMBMin:%d,
+ RMBMax:%d,
+ RebateRate:%d
+ '''\
+ %(
+ self.RMBMin,
+ self.RMBMax,
+ self.RebateRate
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateDay(Structure):
+ Rebates = 0 #(BYTE Rebates)// 返利档数
+ RebateInfo = list() #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Rebates):
+ temRebateInfo = tagMCActRechargeRebate()
+ _pos = temRebateInfo.ReadData(_lpData, _pos)
+ self.RebateInfo.append(temRebateInfo)
+ return _pos
+
+ def Clear(self):
+ self.Rebates = 0
+ self.RebateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.Rebates):
+ length += self.RebateInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Rebates)
+ for i in range(self.Rebates):
+ data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rebates:%d,
+ RebateInfo:%s
+ '''\
+ %(
+ self.Rebates,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateGoldInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ RebateDays = 0 #(BYTE RebateDays)
+ RebateDayInfo = list() #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RebateDays):
+ temRebateDayInfo = tagMCActRechargeRebateDay()
+ _pos = temRebateDayInfo.ReadData(_lpData, _pos)
+ self.RebateDayInfo.append(temRebateDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.IsDayReset = 0
+ self.RebateDays = 0
+ self.RebateDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.RebateDays):
+ length += self.RebateDayInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.RebateDays)
+ for i in range(self.RebateDays):
+ data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ IsDayReset:%d,
+ RebateDays:%d,
+ RebateDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.IsDayReset,
+ self.RebateDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
+
+
+#------------------------------------------------------
+# AA 50 单笔累充活动信息 #tagMCActSingleRechargeInfo
+
+class tagMCActSingleRechargeAwardItem(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(tagMCActSingleRechargeAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 50 单笔累充活动信息 //tagMCActSingleRechargeInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActSingleRechargeAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引
+ AwardCountMax = 0 #(WORD AwardCountMax)// 最大领奖次数
+ SingleRechargeValue = 0 #(DWORD SingleRechargeValue)// 单笔所需充值额度
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItem = list() #(vector<tagMCActSingleRechargeAwardItem> AwardItem)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SingleRechargeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItem = tagMCActSingleRechargeAwardItem()
+ _pos = temAwardItem.ReadData(_lpData, _pos)
+ self.AwardItem.append(temAwardItem)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.AwardCountMax = 0
+ self.SingleRechargeValue = 0
+ self.AwardItemCount = 0
+ self.AwardItem = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 4
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItem[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteWORD(data, self.AwardCountMax)
+ data = CommFunc.WriteDWORD(data, self.SingleRechargeValue)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ AwardCountMax:%d,
+ SingleRechargeValue:%d,
+ AwardItemCount:%d,
+ AwardItem:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.AwardCountMax,
+ self.SingleRechargeValue,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActSingleRechargeInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ AwardRuleType = 0 #(BYTE AwardRuleType)// 领奖规则类型 0-向下兼容;1-匹配最高档;2-精确匹配对应档次
+ AwardCount = 0 #(BYTE AwardCount)// 奖励档数
+ AwardInfo = list() #(vector<tagMCActSingleRechargeAward> AwardInfo)// 奖励档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x50
+ 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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardRuleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardInfo = tagMCActSingleRechargeAward()
+ _pos = temAwardInfo.ReadData(_lpData, _pos)
+ self.AwardInfo.append(temAwardInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x50
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.AwardRuleType = 0
+ self.AwardCount = 0
+ self.AwardInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardInfo[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.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.AwardRuleType)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ AwardRuleType:%d,
+ AwardCount:%d,
+ AwardInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.AwardRuleType,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActSingleRechargeInfo=tagMCActSingleRechargeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActSingleRechargeInfo.Head.Cmd,m_NAtagMCActSingleRechargeInfo.Head.SubCmd))] = m_NAtagMCActSingleRechargeInfo
+
+
+#------------------------------------------------------
+# AA 51 单笔累充活动玩家信息 #tagMCActSingleRechargePlayerInfo
+
+class tagMCActSingleRechargePlayerAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("AwardIndex", c_ubyte), # 奖励索引
+ ("CanGetCount", c_ushort), # 可领奖次数
+ ("GetCount", c_ushort), # 已领奖次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.CanGetCount = 0
+ self.GetCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActSingleRechargePlayerAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 51 单笔累充活动玩家信息 //tagMCActSingleRechargePlayerInfo:
+ AwardIndex:%d,
+ CanGetCount:%d,
+ GetCount:%d
+ '''\
+ %(
+ self.AwardIndex,
+ self.CanGetCount,
+ self.GetCount
+ )
+ return DumpString
+
+
+class tagMCActSingleRechargePlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
+ RecordCount = 0 #(BYTE RecordCount)
+ AwardRecordList = list() #(vector<tagMCActSingleRechargePlayerAward> AwardRecordList)// 领奖次数记录列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x51
+ 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.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RecordCount):
+ temAwardRecordList = tagMCActSingleRechargePlayerAward()
+ _pos = temAwardRecordList.ReadData(_lpData, _pos)
+ self.AwardRecordList.append(temAwardRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x51
+ self.ActNum = 0
+ self.RecordCount = 0
+ self.AwardRecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.RecordCount):
+ length += self.AwardRecordList[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.WriteBYTE(data, self.RecordCount)
+ for i in range(self.RecordCount):
+ data = CommFunc.WriteString(data, self.AwardRecordList[i].GetLength(), self.AwardRecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ RecordCount:%d,
+ AwardRecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.RecordCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActSingleRechargePlayerInfo=tagMCActSingleRechargePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActSingleRechargePlayerInfo.Head.Cmd,m_NAtagMCActSingleRechargePlayerInfo.Head.SubCmd))] = m_NAtagMCActSingleRechargePlayerInfo
+
+
+#------------------------------------------------------
# AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
class tagMCTotalRechargeAwardItem(Structure):
@@ -22658,6 +34696,7 @@
class tagMCActTotalRechargeInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -22675,6 +34714,7 @@
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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -22691,6 +34731,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x1D
+ self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
self.IsDayReset = 0
@@ -22702,6 +34743,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 10
length += 10
length += 1
@@ -22715,6 +34757,7 @@
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.IsDayReset)
@@ -22727,6 +34770,7 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
StartDate:%s,
EndtDate:%s,
IsDayReset:%d,
@@ -22736,6 +34780,7 @@
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.StartDate,
self.EndtDate,
self.IsDayReset,
@@ -22748,6 +34793,322 @@
m_NAtagMCActTotalRechargeInfo=tagMCActTotalRechargeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTotalRechargeInfo.Head.Cmd,m_NAtagMCActTotalRechargeInfo.Head.SubCmd))] = m_NAtagMCActTotalRechargeInfo
+
+
+#------------------------------------------------------
+# AA 52 转盘活动信息 #tagMCActTurntableInfo
+
+class tagMCActTurntableItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemNum", c_ubyte), #物品编号 1~n;注意转盘已确定物品编号 与 极品终极物品待选择库编号可能相同,但并不代表同一物品
+ ("ItemLibType", c_ubyte), #物品库类型;1-常规,2-极品,3-终极
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemNum = 0
+ self.ItemLibType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActTurntableItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 52 转盘活动信息 //tagMCActTurntableInfo:
+ ItemNum:%d,
+ ItemLibType:%d,
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.ItemNum,
+ self.ItemLibType,
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+class tagMCActTurntableInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ CTGPrizeCount = 0 #(BYTE CTGPrizeCount)
+ CTGPrizeList = list() #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
+ UseMoneyType = 0 #(BYTE UseMoneyType)// 累计消费货币类型
+ UseMoneyPrizeCount = 0 #(BYTE UseMoneyPrizeCount)
+ UseMoneyPrizeList = list() #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
+ TurnItemCount = 0 #(BYTE TurnItemCount)
+ TurnItemList = list() #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
+ GoodItemCount = 0 #(BYTE GoodItemCount)
+ GoodItemList = list() #(vector<tagMCActTurntableItem> GoodItemList)// 极品物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
+ GoodItemCanChooseCount = 0 #(BYTE GoodItemCanChooseCount)// 极品物品可选择个数
+ SuperItemCount = 0 #(BYTE SuperItemCount)
+ SuperItemList = list() #(vector<tagMCActTurntableItem> SuperItemList)// 终极物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
+ SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 终极物品可选择个数
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x52
+ 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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CTGPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CTGPrizeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CTGPrizeList.append(value)
+ self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.UseMoneyPrizeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.UseMoneyPrizeList.append(value)
+ self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TurnItemCount):
+ temTurnItemList = tagMCActTurntableItem()
+ _pos = temTurnItemList.ReadData(_lpData, _pos)
+ self.TurnItemList.append(temTurnItemList)
+ self.GoodItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GoodItemCount):
+ temGoodItemList = tagMCActTurntableItem()
+ _pos = temGoodItemList.ReadData(_lpData, _pos)
+ self.GoodItemList.append(temGoodItemList)
+ self.GoodItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SuperItemCount):
+ temSuperItemList = tagMCActTurntableItem()
+ _pos = temSuperItemList.ReadData(_lpData, _pos)
+ self.SuperItemList.append(temSuperItemList)
+ self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x52
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.CTGPrizeCount = 0
+ self.CTGPrizeList = list()
+ self.UseMoneyType = 0
+ self.UseMoneyPrizeCount = 0
+ self.UseMoneyPrizeList = list()
+ self.TurnItemCount = 0
+ self.TurnItemList = list()
+ self.GoodItemCount = 0
+ self.GoodItemList = list()
+ self.GoodItemCanChooseCount = 0
+ self.SuperItemCount = 0
+ self.SuperItemList = list()
+ self.SuperItemCanChooseCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ length += 4 * self.CTGPrizeCount
+ length += 1
+ length += 1
+ length += 4 * self.UseMoneyPrizeCount
+ length += 1
+ for i in range(self.TurnItemCount):
+ length += self.TurnItemList[i].GetLength()
+ length += 1
+ for i in range(self.GoodItemCount):
+ length += self.GoodItemList[i].GetLength()
+ length += 1
+ length += 1
+ for i in range(self.SuperItemCount):
+ length += self.SuperItemList[i].GetLength()
+ 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.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
+ for i in range(self.CTGPrizeCount):
+ data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
+ data = CommFunc.WriteBYTE(data, self.UseMoneyType)
+ data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
+ for i in range(self.UseMoneyPrizeCount):
+ data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
+ data = CommFunc.WriteBYTE(data, self.TurnItemCount)
+ for i in range(self.TurnItemCount):
+ data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.GoodItemCount)
+ for i in range(self.GoodItemCount):
+ data = CommFunc.WriteString(data, self.GoodItemList[i].GetLength(), self.GoodItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.GoodItemCanChooseCount)
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ for i in range(self.SuperItemCount):
+ data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ CTGPrizeCount:%d,
+ CTGPrizeList:%s,
+ UseMoneyType:%d,
+ UseMoneyPrizeCount:%d,
+ UseMoneyPrizeList:%s,
+ TurnItemCount:%d,
+ TurnItemList:%s,
+ GoodItemCount:%d,
+ GoodItemList:%s,
+ GoodItemCanChooseCount:%d,
+ SuperItemCount:%d,
+ SuperItemList:%s,
+ SuperItemCanChooseCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.CTGPrizeCount,
+ "...",
+ self.UseMoneyType,
+ self.UseMoneyPrizeCount,
+ "...",
+ self.TurnItemCount,
+ "...",
+ self.GoodItemCount,
+ "...",
+ self.GoodItemCanChooseCount,
+ self.SuperItemCount,
+ "...",
+ self.SuperItemCanChooseCount
+ )
+ return DumpString
+
+
+m_NAtagMCActTurntableInfo=tagMCActTurntableInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntableInfo.Head.Cmd,m_NAtagMCActTurntableInfo.Head.SubCmd))] = m_NAtagMCActTurntableInfo
+
+
+#------------------------------------------------------
+# AA 53 转盘活动玩家信息 #tagMCActTurntablePlayerInfo
+
+class tagMCActTurntablePlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("CanUseCount", c_ubyte), #可转盘次数
+ ("CTGTotal", c_int), #累计充值额度
+ ("UseMoneyTotal", c_int), #累计消费货币额度
+ ("TurnItemState", c_int), #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
+ ("GetItemNum", c_ubyte), #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x53
+ 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 = 0x53
+ self.ActNum = 0
+ self.CanUseCount = 0
+ self.CTGTotal = 0
+ self.UseMoneyTotal = 0
+ self.TurnItemState = 0
+ self.GetItemNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActTurntablePlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 53 转盘活动玩家信息 //tagMCActTurntablePlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ CanUseCount:%d,
+ CTGTotal:%d,
+ UseMoneyTotal:%d,
+ TurnItemState:%d,
+ GetItemNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.CanUseCount,
+ self.CTGTotal,
+ self.UseMoneyTotal,
+ self.TurnItemState,
+ self.GetItemNum
+ )
+ return DumpString
+
+
+m_NAtagMCActTurntablePlayerInfo=tagMCActTurntablePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntablePlayerInfo.Cmd,m_NAtagMCActTurntablePlayerInfo.SubCmd))] = m_NAtagMCActTurntablePlayerInfo
#------------------------------------------------------
@@ -23198,6 +35559,288 @@
#------------------------------------------------------
+# AA 59 仙匣秘境抽奖结果 #tagMCActXianXiaMJAwardItemResult
+
+class tagMCActXianXiaMJAwardItemResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
+ ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
+ ("ItemCount", c_ushort),
+ ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
+ ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x59
+ 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 = 0x59
+ self.ActNum = 0
+ self.ItemLibType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.PosNum = 0
+ self.TotalTimesNow = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActXianXiaMJAwardItemResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 59 仙匣秘境抽奖结果 //tagMCActXianXiaMJAwardItemResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ ItemLibType:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ PosNum:%d,
+ TotalTimesNow:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.ItemLibType,
+ self.ItemID,
+ self.ItemCount,
+ self.PosNum,
+ self.TotalTimesNow
+ )
+ return DumpString
+
+
+m_NAtagMCActXianXiaMJAwardItemResult=tagMCActXianXiaMJAwardItemResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJAwardItemResult.Cmd,m_NAtagMCActXianXiaMJAwardItemResult.SubCmd))] = m_NAtagMCActXianXiaMJAwardItemResult
+
+
+#------------------------------------------------------
+# AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo
+
+class tagMCActXianXiaMJAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
+ ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
+ ("ItemCount", c_ushort),
+ ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
+ ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限
+ ("LayerLimit", c_ubyte), #大于等于X层后可产出,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.ItemLibType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.PosNum = 0
+ self.TotalTimesNow = 0
+ self.TotalTimesMax = 0
+ self.LayerLimit = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActXianXiaMJAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
+ ItemLibType:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ PosNum:%d,
+ TotalTimesNow:%d,
+ TotalTimesMax:%d,
+ LayerLimit:%d
+ '''\
+ %(
+ self.ItemLibType,
+ self.ItemID,
+ self.ItemCount,
+ self.PosNum,
+ self.TotalTimesNow,
+ self.TotalTimesMax,
+ self.LayerLimit
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
+ MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
+ LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
+ AwardItemCount = 0 #(BYTE AwardItemCount)
+ AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
+ SuperItemCount = 0 #(BYTE SuperItemCount)
+ SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
+ SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCActXianXiaMJAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SuperItemCount):
+ temSuperItemList = tagMCActXianXiaMJAwardItem()
+ _pos = temSuperItemList.ReadData(_lpData, _pos)
+ self.SuperItemList.append(temSuperItemList)
+ self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.MoneyType = 0
+ self.MoneyValue = 0
+ self.LayerNum = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ self.SuperItemCount = 0
+ self.SuperItemList = list()
+ self.SuperItemCanChooseCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+ length += 1
+ for i in range(self.SuperItemCount):
+ length += self.SuperItemList[i].GetLength()
+ 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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.MoneyType)
+ data = CommFunc.WriteWORD(data, self.MoneyValue)
+ data = CommFunc.WriteBYTE(data, self.LayerNum)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ for i in range(self.SuperItemCount):
+ data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ MoneyType:%d,
+ MoneyValue:%d,
+ LayerNum:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s,
+ SuperItemCount:%d,
+ SuperItemList:%s,
+ SuperItemCanChooseCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.MoneyType,
+ self.MoneyValue,
+ self.LayerNum,
+ self.AwardItemCount,
+ "...",
+ self.SuperItemCount,
+ "...",
+ self.SuperItemCanChooseCount
+ )
+ return DumpString
+
+
+m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
+
+
+#------------------------------------------------------
# AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo
class tagMCAllPeoplePartyCount(Structure):
@@ -23320,13 +35963,434 @@
#------------------------------------------------------
+# AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo
+
+class tagMCCACTGBillboardAwardItem(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(tagMCCACTGBillboardAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCCACTGBillboardDabiao(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> 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.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCCACTGBillboardAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedRMB = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedRMB)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedRMB:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedRMB,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCACTGBillboardOrder(Structure):
+ OrderA = 0 #(BYTE OrderA)// 名次A
+ OrderB = 0 #(BYTE OrderB)// 至名次B
+ NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCCACTGBillboardAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.OrderA = 0
+ self.OrderB = 0
+ self.NeedRMB = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.OrderA)
+ data = CommFunc.WriteBYTE(data, self.OrderB)
+ data = CommFunc.WriteDWORD(data, self.NeedRMB)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ OrderA:%d,
+ OrderB:%d,
+ NeedRMB:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.OrderA,
+ self.OrderB,
+ self.NeedRMB,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCACTGBillboardTempInfo(Structure):
+ TemplateID = 0 #(BYTE TemplateID)// 活动模板ID
+ DabiaoAwardCount = 0 #(BYTE DabiaoAwardCount)// 达标奖励档数
+ DabiaoAwardInfo = list() #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息
+ OrderAwardCount = 0 #(BYTE OrderAwardCount)// 排行奖励档数
+ OrderAwardInfo = list() #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DabiaoAwardCount):
+ temDabiaoAwardInfo = tagMCCACTGBillboardDabiao()
+ _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos)
+ self.DabiaoAwardInfo.append(temDabiaoAwardInfo)
+ self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.OrderAwardCount):
+ temOrderAwardInfo = tagMCCACTGBillboardOrder()
+ _pos = temOrderAwardInfo.ReadData(_lpData, _pos)
+ self.OrderAwardInfo.append(temOrderAwardInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.DabiaoAwardCount = 0
+ self.DabiaoAwardInfo = list()
+ self.OrderAwardCount = 0
+ self.OrderAwardInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ for i in range(self.DabiaoAwardCount):
+ length += self.DabiaoAwardInfo[i].GetLength()
+ length += 1
+ for i in range(self.OrderAwardCount):
+ length += self.OrderAwardInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TemplateID)
+ data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount)
+ for i in range(self.DabiaoAwardCount):
+ data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.OrderAwardCount)
+ for i in range(self.OrderAwardCount):
+ data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ DabiaoAwardCount:%d,
+ DabiaoAwardInfo:%s,
+ OrderAwardCount:%d,
+ OrderAwardInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.DabiaoAwardCount,
+ "...",
+ self.OrderAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCCACTGBillboardInfo(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
+ TemplateID = 0 #(BYTE TemplateID)// 当前活动模板ID
+ TemplateCount = 0 #(BYTE TemplateCount)
+ TempInfo = list() #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x32
+ 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.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TemplateCount):
+ temTempInfo = tagMCCACTGBillboardTempInfo()
+ _pos = temTempInfo.ReadData(_lpData, _pos)
+ self.TempInfo.append(temTempInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x32
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.GroupValue1 = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.TemplateID = 0
+ self.TemplateCount = 0
+ self.TempInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ for i in range(self.TemplateCount):
+ length += self.TempInfo[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.WriteBYTE(data, self.TemplateID)
+ data = CommFunc.WriteBYTE(data, self.TemplateCount)
+ for i in range(self.TemplateCount):
+ data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ GroupValue1:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ TemplateID:%d,
+ TemplateCount:%d,
+ TempInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.GroupValue1,
+ self.StartDate,
+ self.EndtDate,
+ self.TemplateID,
+ self.TemplateCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo
+
+
+#------------------------------------------------------
+# AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo
+
+class tagMCCACTGBillboardPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CTGRMBTotal", c_int), # 活动已累计充值RMB
+ ("DabiaoAwardRecord", c_int), # 达标奖励记录,与达标奖励索引位或运算判断是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x33
+ 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 = 0x33
+ self.CTGRMBTotal = 0
+ self.DabiaoAwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCACTGBillboardPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CTGRMBTotal:%d,
+ DabiaoAwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CTGRMBTotal,
+ self.DabiaoAwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo
+
+
+#------------------------------------------------------
# AA 09 消费返利活动信息 #tagMCCostRebateInfo
class tagMCCostRebateAwardItem(Structure):
_pack_ = 1
_fields_ = [
("ItemID", c_int),
- ("ItemCount", c_ushort),
+ ("ItemCount", c_int),
("IsBind", c_ubyte),
]
@@ -23481,6 +36545,7 @@
class tagMCCostRebateInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -23498,6 +36563,7 @@
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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -23514,6 +36580,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x09
+ self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
self.IsDayReset = 0
@@ -23525,6 +36592,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 10
length += 10
length += 1
@@ -23538,6 +36606,7 @@
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.IsDayReset)
@@ -23550,6 +36619,7 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
StartDate:%s,
EndtDate:%s,
IsDayReset:%d,
@@ -23559,6 +36629,7 @@
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.StartDate,
self.EndtDate,
self.IsDayReset,
@@ -23581,6 +36652,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
("CostGoldTotal", c_int), #本次活动已累计消费仙玉数
("AwardRecord", c_int), #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
]
@@ -23599,6 +36671,7 @@
def Clear(self):
self.Cmd = 0xAA
self.SubCmd = 0x10
+ self.ActNum = 0
self.CostGoldTotal = 0
self.AwardRecord = 0
return
@@ -23613,12 +36686,14 @@
DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
Cmd:%s,
SubCmd:%s,
+ ActNum:%d,
CostGoldTotal:%d,
AwardRecord:%d
'''\
%(
self.Cmd,
self.SubCmd,
+ self.ActNum,
self.CostGoldTotal,
self.AwardRecord
)
@@ -23627,6 +36702,1182 @@
m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
+
+
+#------------------------------------------------------
+# AA 34 跨服全民充值活动玩家信息 #tagMCCrossActAllRechargePlayerInfo
+
+class tagMCCrossActAllRechargePlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CTGRMBTotal", c_int), # 活动已累计充值RMB
+ ("AwardRecord", c_int), # 奖励记录,根据奖励索引位或运算判断是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x34
+ 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 = 0x34
+ self.CTGRMBTotal = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossActAllRechargePlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 34 跨服全民充值活动玩家信息 //tagMCCrossActAllRechargePlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CTGRMBTotal:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CTGRMBTotal,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCCrossActAllRechargePlayerInfo=tagMCCrossActAllRechargePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActAllRechargePlayerInfo.Cmd,m_NAtagMCCrossActAllRechargePlayerInfo.SubCmd))] = m_NAtagMCCrossActAllRechargePlayerInfo
+
+
+#------------------------------------------------------
+# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
+
+class tagMCDailyGiftbagItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDailyGiftbagItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo:
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbag(Structure):
+ GiftID = 0 #(DWORD GiftID)//礼包ID,0为免费
+ OrderInfoLen = 0 #(BYTE OrderInfoLen)
+ OrderInfo = "" #(String OrderInfo)//商品编号
+ BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
+ RMB = 0 #(DWORD RMB)//所需RMB,元
+ GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
+ ItemInfo = list() #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
+ self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftItemCount):
+ temItemInfo = tagMCDailyGiftbagItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftID = 0
+ self.OrderInfoLen = 0
+ self.OrderInfo = ""
+ self.BuyCountLimit = 0
+ self.RMB = 0
+ self.GiftItemCount = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.OrderInfo)
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.GiftItemCount):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.GiftID)
+ data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
+ data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
+ data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
+ data = CommFunc.WriteDWORD(data, self.RMB)
+ data = CommFunc.WriteBYTE(data, self.GiftItemCount)
+ for i in range(self.GiftItemCount):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GiftID:%d,
+ OrderInfoLen:%d,
+ OrderInfo:%s,
+ BuyCountLimit:%d,
+ RMB:%d,
+ GiftItemCount:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.GiftID,
+ self.OrderInfoLen,
+ self.OrderInfo,
+ self.BuyCountLimit,
+ self.RMB,
+ self.GiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbagInfo(Structure):
+ Head = tagHead()
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数
+ GiftbagInfo = list() #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x25
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagInfo = tagMCDailyGiftbag()
+ _pos = temGiftbagInfo.ReadData(_lpData, _pos)
+ self.GiftbagInfo.append(temGiftbagInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x25
+ self.LimitLV = 0
+ self.GiftbagCount = 0
+ self.GiftbagInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.GiftbagCount)
+ for i in range(self.GiftbagCount):
+ data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ LimitLV:%d,
+ GiftbagCount:%d,
+ GiftbagInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.LimitLV,
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo
+
+
+#------------------------------------------------------
+# AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo
+
+class tagMCDailyGiftbagBuyCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GiftbagID", c_int), #礼包ID
+ ("BuyCount", c_ushort), #本次活动已购买次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.GiftbagID = 0
+ self.BuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDailyGiftbagBuyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo:
+ GiftbagID:%d,
+ BuyCount:%d
+ '''\
+ %(
+ self.GiftbagID,
+ self.BuyCount
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbagPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyCountList = tagMCDailyGiftbagBuyCount()
+ _pos = temBuyCountList.ReadData(_lpData, _pos)
+ self.BuyCountList.append(temBuyCountList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x26
+ self.Count = 0
+ self.BuyCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.BuyCountList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ BuyCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo
+
+
+#------------------------------------------------------
+# AA 03 每日打包直购礼包 #tagMCDailyPackBuyGiftInfo
+
+class tagMCDailyPackBuyGiftInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PackBuyTime", c_int), # 打包购买的时间戳,如果有该值,代表已经一次性打包购买了,可根据次时间戳算出当前是第几天
+ ("BuyStateToday", c_int), # 今日礼包购买状态,按礼包索引二进制位计算代表是否已购买,仅非打包购买状态下有用
+ ("AwardState", c_int), # 今日礼包领奖状态,按礼包索引二进制位计算代表是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x03
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x03
+ self.PackBuyTime = 0
+ self.BuyStateToday = 0
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDailyPackBuyGiftInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 03 每日打包直购礼包 //tagMCDailyPackBuyGiftInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ PackBuyTime:%d,
+ BuyStateToday:%d,
+ AwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PackBuyTime,
+ self.BuyStateToday,
+ self.AwardState
+ )
+ return DumpString
+
+
+m_NAtagMCDailyPackBuyGiftInfo=tagMCDailyPackBuyGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyPackBuyGiftInfo.Cmd,m_NAtagMCDailyPackBuyGiftInfo.SubCmd))] = m_NAtagMCDailyPackBuyGiftInfo
+
+
+#------------------------------------------------------
+# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
+
+class tagMCDayFreeGoldGiftState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ self.DayFreeGoldGiftState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDayFreeGoldGiftState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
+ Cmd:%s,
+ SubCmd:%s,
+ DayFreeGoldGiftState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DayFreeGoldGiftState
+ )
+ return DumpString
+
+
+m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
+
+
+#------------------------------------------------------
+# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
+
+class tagMCFeastLoginDayAwardItem(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(tagMCFeastLoginDayAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastLoginDayAward(Structure):
+ DayNum = 0 #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardItemList = list() #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardItemList = tagMCFeastLoginDayAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.DayNum = 0
+ self.AwardCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.DayNum)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayNum:%d,
+ AwardCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.DayNum,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastLoginInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCount = 0 #(BYTE DayCount)// 总共几天
+ DayAwardList = list() #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x42
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCount):
+ temDayAwardList = tagMCFeastLoginDayAward()
+ _pos = temDayAwardList.ReadData(_lpData, _pos)
+ self.DayAwardList.append(temDayAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x42
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.DayCount = 0
+ self.DayAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ for i in range(self.DayCount):
+ length += self.DayAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCount)
+ for i in range(self.DayCount):
+ data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ DayCount:%d,
+ DayAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.DayCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo
+
+
+#------------------------------------------------------
+# AA 39 节日登录奖励活动玩家信息 #tagMCFeastLoginPlayerInfo
+
+class tagMCFeastLoginPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LoginState", c_int), # 是否已登录,按天索引0代表第1天记录当天是否已登录
+ ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x39
+ 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 = 0x39
+ self.LoginState = 0
+ self.LoginAward = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastLoginPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 39 节日登录奖励活动玩家信息 //tagMCFeastLoginPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ LoginState:%d,
+ LoginAward:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LoginState,
+ self.LoginAward
+ )
+ return DumpString
+
+
+m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
+
+
+#------------------------------------------------------
+# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
+
+class tagMCFeastTravelAwardItem(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(tagMCFeastTravelAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastTravelAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
+ NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
+ AwardCountMax = 0 #(WORD AwardCountMax)//最大可领取次数,0代表不限
+ AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
+ AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> 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.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCFeastTravelAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedTravelPoint = 0
+ self.AwardCountMax = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
+ data = CommFunc.WriteWORD(data, self.AwardCountMax)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedTravelPoint:%d,
+ AwardCountMax:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedTravelPoint,
+ self.AwardCountMax,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastTravelTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("FinishNeedValue", c_ushort), #单次完成所需进度
+ ("FinishTimeMax", c_ushort), #最大可完成次数,0代表不限
+ ("AddTravelPoint", c_ushort), #单次完成获得游历值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TravelTaskID = 0
+ self.FinishNeedValue = 0
+ self.FinishTimeMax = 0
+ self.AddTravelPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ TravelTaskID:%d,
+ FinishNeedValue:%d,
+ FinishTimeMax:%d,
+ AddTravelPoint:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.FinishNeedValue,
+ self.FinishTimeMax,
+ self.AddTravelPoint
+ )
+ return DumpString
+
+
+class tagMCFeastTravelInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
+ TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
+ TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
+ TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelTaskCount):
+ temTravelTaskList = tagMCFeastTravelTask()
+ _pos = temTravelTaskList.ReadData(_lpData, _pos)
+ self.TravelTaskList.append(temTravelTaskList)
+ self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelAwardCount):
+ temTravelAwardList = tagMCFeastTravelAward()
+ _pos = temTravelAwardList.ReadData(_lpData, _pos)
+ self.TravelAwardList.append(temTravelAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.TravelTaskCount = 0
+ self.TravelTaskList = list()
+ self.TravelAwardCount = 0
+ self.TravelAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.TravelTaskCount):
+ length += self.TravelTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelAwardCount):
+ length += self.TravelAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
+ for i in range(self.TravelTaskCount):
+ data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
+ for i in range(self.TravelAwardCount):
+ data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ TravelTaskCount:%d,
+ TravelTaskList:%s,
+ TravelAwardCount:%d,
+ TravelAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.TravelTaskCount,
+ "...",
+ self.TravelAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
+
+
+#------------------------------------------------------
+# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
+
+class tagMCFeastTravelPlayerAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("AwardIndex", c_ubyte), #游历奖励索引
+ ("GetAwardCount", c_int), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
+ ]
+
+ 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.AwardIndex = 0
+ self.GetAwardCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ AwardIndex:%d,
+ GetAwardCount:%d
+ '''\
+ %(
+ self.AwardIndex,
+ self.GetAwardCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("TravelValue", c_int), #当前进度值,一直累加
+ ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(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.TravelTaskID = 0
+ self.TravelValue = 0
+ self.FinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ TravelTaskID:%d,
+ TravelValue:%d,
+ FinishCount:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.TravelValue,
+ self.FinishCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerInfo(Structure):
+ Head = tagHead()
+ TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
+ TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
+ TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
+ TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
+ TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerTaskCount):
+ temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
+ _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
+ self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
+ self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerAwardCount):
+ temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
+ _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
+ self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ self.TravelPoint = 0
+ self.TravelPlayerTaskCount = 0
+ self.TravelPlayerTaskList = list()
+ self.TravelPlayerAwardCount = 0
+ self.TravelPlayerAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.TravelPlayerTaskCount):
+ length += self.TravelPlayerTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelPlayerAwardCount):
+ length += self.TravelPlayerAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TravelPoint)
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
+ for i in range(self.TravelPlayerTaskCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
+ for i in range(self.TravelPlayerAwardCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TravelPoint:%d,
+ TravelPlayerTaskCount:%d,
+ TravelPlayerTaskList:%s,
+ TravelPlayerAwardCount:%d,
+ TravelPlayerAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TravelPoint,
+ self.TravelPlayerTaskCount,
+ "...",
+ self.TravelPlayerAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
#------------------------------------------------------
@@ -24142,6 +38393,421 @@
#------------------------------------------------------
+# AA 43 节日祝福活动信息 #tagMCFeastWishInfo
+
+class tagMCFeastWishBottleItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择
+ ("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.RecordIndex = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWishBottleItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo:
+ RecordIndex:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.RecordIndex,
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastWishBottleInfo(Structure):
+ BottleNum = 0 #(BYTE BottleNum)//瓶子编号
+ NeedWishValue = 0 #(WORD NeedWishValue)//单次领奖所需祝福值
+ ChooseTimeMax = 0 #(BYTE ChooseTimeMax)//最大可领奖次数
+ ChoosePrizeCount = 0 #(BYTE ChoosePrizeCount)//可选择奖励个数
+ ChoosePrizeList = list() #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ChoosePrizeCount):
+ temChoosePrizeList = tagMCFeastWishBottleItem()
+ _pos = temChoosePrizeList.ReadData(_lpData, _pos)
+ self.ChoosePrizeList.append(temChoosePrizeList)
+ return _pos
+
+ def Clear(self):
+ self.BottleNum = 0
+ self.NeedWishValue = 0
+ self.ChooseTimeMax = 0
+ self.ChoosePrizeCount = 0
+ self.ChoosePrizeList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.ChoosePrizeCount):
+ length += self.ChoosePrizeList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.BottleNum)
+ data = CommFunc.WriteWORD(data, self.NeedWishValue)
+ data = CommFunc.WriteBYTE(data, self.ChooseTimeMax)
+ data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount)
+ for i in range(self.ChoosePrizeCount):
+ data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ BottleNum:%d,
+ NeedWishValue:%d,
+ ChooseTimeMax:%d,
+ ChoosePrizeCount:%d,
+ ChoosePrizeList:%s
+ '''\
+ %(
+ self.BottleNum,
+ self.NeedWishValue,
+ self.ChooseTimeMax,
+ self.ChoosePrizeCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWishInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
+ WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
+ BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
+ BottleInfoList = list() #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x43
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WishPoolShowCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.WishPoolShowItemList.append(value)
+ self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BottleCount):
+ temBottleInfoList = tagMCFeastWishBottleInfo()
+ _pos = temBottleInfoList.ReadData(_lpData, _pos)
+ self.BottleInfoList.append(temBottleInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x43
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.WishPoolShowCount = 0
+ self.WishPoolShowItemList = list()
+ self.BottleCount = 0
+ self.BottleInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 4 * self.WishPoolShowCount
+ length += 1
+ for i in range(self.BottleCount):
+ length += self.BottleInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
+ for i in range(self.WishPoolShowCount):
+ data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
+ data = CommFunc.WriteBYTE(data, self.BottleCount)
+ for i in range(self.BottleCount):
+ data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ WishPoolShowCount:%d,
+ WishPoolShowItemList:%s,
+ BottleCount:%d,
+ BottleInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.WishPoolShowCount,
+ "...",
+ self.BottleCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWishInfo=tagMCFeastWishInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo
+
+
+#------------------------------------------------------
+# AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo
+
+class tagMCFeastWishPlayerBottle(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("BottleNum", c_ubyte), #瓶子编号
+ ("WishValue", c_ushort), #当前可用祝福值
+ ("ChooseRecord", 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.BottleNum = 0
+ self.WishValue = 0
+ self.ChooseRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWishPlayerBottle)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo:
+ BottleNum:%d,
+ WishValue:%d,
+ ChooseRecord:%d
+ '''\
+ %(
+ self.BottleNum,
+ self.WishValue,
+ self.ChooseRecord
+ )
+ return DumpString
+
+
+class tagMCFeastWishPlayerInfo(Structure):
+ Head = tagHead()
+ BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
+ PlayerBottleInfo = list() #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x44
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BottleCount):
+ temPlayerBottleInfo = tagMCFeastWishPlayerBottle()
+ _pos = temPlayerBottleInfo.ReadData(_lpData, _pos)
+ self.PlayerBottleInfo.append(temPlayerBottleInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x44
+ self.BottleCount = 0
+ self.PlayerBottleInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.BottleCount):
+ length += self.PlayerBottleInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.BottleCount)
+ for i in range(self.BottleCount):
+ data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ BottleCount:%d,
+ PlayerBottleInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.BottleCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo
+
+
+#------------------------------------------------------
+# AA 45 节日祝福祝福结果 #tagMCFeastWishResult
+
+class tagMCFeastWishResult(Structure):
+ Head = tagHead()
+ AddWishValue = 0 #(WORD AddWishValue)// 本次增加的祝福值
+ WishResultLen = 0 #(WORD WishResultLen)
+ WishResult = "" #(String WishResult)// 获得物品结果[[物品ID,个数,是否绑定], ...]
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x45
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x45
+ self.AddWishValue = 0
+ self.WishResultLen = 0
+ self.WishResult = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 2
+ length += len(self.WishResult)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.AddWishValue)
+ data = CommFunc.WriteWORD(data, self.WishResultLen)
+ data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AddWishValue:%d,
+ WishResultLen:%d,
+ WishResult:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AddWishValue,
+ self.WishResultLen,
+ self.WishResult
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWishResult=tagMCFeastWishResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult
+
+
+#------------------------------------------------------
# AA 02 首充信息 #tagMCFirstGoldInfo
class tagMCFirstGoldInfo(Structure):
@@ -24149,8 +38815,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖
+ ("FirstGoldRewardState", c_ubyte), #首充奖励领奖记录,按位记录首充第X天是否已领取,第1天为第0索引位
("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用
+ ("FirstGoldServerDay", c_ushort), #首充时是开服第几天,从1开始,0代表未记录充值
]
def __init__(self):
@@ -24169,6 +38836,7 @@
self.SubCmd = 0x02
self.FirstGoldRewardState = 0
self.FirstGoldTry = 0
+ self.FirstGoldServerDay = 0
return
def GetLength(self):
@@ -24182,13 +38850,15 @@
Cmd:%s,
SubCmd:%s,
FirstGoldRewardState:%d,
- FirstGoldTry:%d
+ FirstGoldTry:%d,
+ FirstGoldServerDay:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.FirstGoldRewardState,
- self.FirstGoldTry
+ self.FirstGoldTry,
+ self.FirstGoldServerDay
)
return DumpString
@@ -24488,6 +39158,7 @@
class tagMCFlashGiftbagInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
@@ -24508,6 +39179,7 @@
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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -24530,6 +39202,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x12
+ self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
self.AdvanceMinutes = 0
@@ -24544,6 +39217,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 10
length += 10
length += 2
@@ -24561,6 +39235,7 @@
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.WriteWORD(data, self.AdvanceMinutes)
@@ -24577,6 +39252,7 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
StartDate:%s,
EndtDate:%s,
AdvanceMinutes:%d,
@@ -24589,6 +39265,7 @@
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.StartDate,
self.EndtDate,
self.AdvanceMinutes,
@@ -24650,6 +39327,7 @@
class tagMCFlashGiftbagPlayerInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
Count = 0 #(BYTE Count)
BuyCountList = list() #(vector<tagMCFlashGiftbagBuyCount> BuyCountList)//礼包购买次数信息
data = None
@@ -24663,6 +39341,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
temBuyCountList = tagMCFlashGiftbagBuyCount()
@@ -24675,6 +39354,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x13
+ self.ActNum = 0
self.Count = 0
self.BuyCountList = list()
return
@@ -24682,6 +39362,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 1
for i in range(self.Count):
length += self.BuyCountList[i].GetLength()
@@ -24691,6 +39372,7 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
@@ -24699,11 +39381,13 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
Count:%d,
BuyCountList:%s
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.Count,
"..."
)
@@ -24758,6 +39442,7 @@
class tagMCFlashSaleAppointmentInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
IsAll = 0 #(BYTE IsAll)// 是否全部
GoodsCount = 0 #(WORD GoodsCount)// 商品数
GoodsList = list() #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
@@ -24772,6 +39457,7 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.GoodsCount):
@@ -24785,6 +39471,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x18
+ self.ActNum = 0
self.IsAll = 0
self.GoodsCount = 0
self.GoodsList = list()
@@ -24793,6 +39480,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 1
length += 2
for i in range(self.GoodsCount):
@@ -24803,6 +39491,7 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
data = CommFunc.WriteBYTE(data, self.IsAll)
data = CommFunc.WriteWORD(data, self.GoodsCount)
for i in range(self.GoodsCount):
@@ -24812,12 +39501,14 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
IsAll:%d,
GoodsCount:%d,
GoodsList:%s
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.IsAll,
self.GoodsCount,
"..."
@@ -25010,6 +39701,7 @@
class tagMCFlashSaleInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
@@ -25030,6 +39722,7 @@
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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -25052,6 +39745,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x17
+ self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
self.AdvanceMinutes = 0
@@ -25066,6 +39760,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 10
length += 10
length += 2
@@ -25083,6 +39778,7 @@
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.WriteWORD(data, self.AdvanceMinutes)
@@ -25099,6 +39795,7 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
StartDate:%s,
EndtDate:%s,
AdvanceMinutes:%d,
@@ -25111,6 +39808,7 @@
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.StartDate,
self.EndtDate,
self.AdvanceMinutes,
@@ -25518,6 +40216,218 @@
#------------------------------------------------------
+# AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
+
+class tagMCOnlineRechargeTH(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("AwardState", c_ubyte), #是否已领取奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x04
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x04
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCOnlineRechargeTH)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
+ Cmd:%s,
+ SubCmd:%s,
+ AwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.AwardState
+ )
+ return DumpString
+
+
+m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
+
+
+#------------------------------------------------------
+# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
+
+class tagMCRechargePrizeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("CTGID", c_ushort), # 对应充值表充值ID
+ ("PrizeCount", 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.CTGID = 0
+ self.PrizeCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRechargePrizeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
+ CTGID:%d,
+ PrizeCount:%d
+ '''\
+ %(
+ self.CTGID,
+ self.PrizeCount
+ )
+ return DumpString
+
+
+class tagMCRechargePrizePlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ PlayerInfoList = list() #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x28
+ 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):
+ temPlayerInfoList = tagMCRechargePrizeInfo()
+ _pos = temPlayerInfoList.ReadData(_lpData, _pos)
+ self.PlayerInfoList.append(temPlayerInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x28
+ self.Count = 0
+ self.PlayerInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.PlayerInfoList[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.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ PlayerInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
+
+
+#------------------------------------------------------
+# AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
+
+class tagMCRechargeRebateGoldPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RechargeRMBTotal", c_int), # 活动已累计充值RMB
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x30
+ 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 = 0x30
+ self.RechargeRMBTotal = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRechargeRebateGoldPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ RechargeRMBTotal:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RechargeRMBTotal
+ )
+ return DumpString
+
+
+m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
+
+
+#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class tagMCSpringSaleItem(Structure):
@@ -25749,6 +40659,7 @@
class tagMCSpringSaleInfo(Structure):
Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
@@ -25769,6 +40680,7 @@
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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -25791,6 +40703,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x11
+ self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
self.AdvanceMinutes = 0
@@ -25805,6 +40718,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 10
length += 10
length += 2
@@ -25822,6 +40736,7 @@
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.WriteWORD(data, self.AdvanceMinutes)
@@ -25838,6 +40753,7 @@
def OutputString(self):
DumpString = '''
Head:%s,
+ ActNum:%d,
StartDate:%s,
EndtDate:%s,
AdvanceMinutes:%d,
@@ -25850,6 +40766,7 @@
'''\
%(
self.Head.OutputString(),
+ self.ActNum,
self.StartDate,
self.EndtDate,
self.AdvanceMinutes,
@@ -25983,6 +40900,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
("GoldTotal", c_int), #本次活动已累计充值仙玉数
("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取
]
@@ -26001,6 +40919,7 @@
def Clear(self):
self.Cmd = 0xAA
self.SubCmd = 0x1C
+ self.ActNum = 0
self.GoldTotal = 0
self.AwardRecord = 0
return
@@ -26015,12 +40934,14 @@
DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo:
Cmd:%s,
SubCmd:%s,
+ ActNum:%d,
GoldTotal:%d,
AwardRecord:%d
'''\
%(
self.Cmd,
self.SubCmd,
+ self.ActNum,
self.GoldTotal,
self.AwardRecord
)
@@ -26552,6 +41473,9 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("State", c_ubyte), #0-不可领 1-可领 2-已领取
+ ("CTGTotal", c_int), #本次活动已累计充值,单位元
+ ("FireworksBuyCount", c_ushort), #已购买高级烟花数
+ ("FirewordsScore", c_int), #当前累计所有烟花总积分
]
def __init__(self):
@@ -26569,6 +41493,9 @@
self.Cmd = 0xAA
self.SubCmd = 0x14
self.State = 0
+ self.CTGTotal = 0
+ self.FireworksBuyCount = 0
+ self.FirewordsScore = 0
return
def GetLength(self):
@@ -26581,18 +41508,132 @@
DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
Cmd:%s,
SubCmd:%s,
- State:%d
+ State:%d,
+ CTGTotal:%d,
+ FireworksBuyCount:%d,
+ FirewordsScore:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.State
+ self.State,
+ self.CTGTotal,
+ self.FireworksBuyCount,
+ self.FirewordsScore
)
return DumpString
m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
+
+
+#------------------------------------------------------
+# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
+
+class tagMCBossFirstKillState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int),
+ ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.NPCID = 0
+ self.FKState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBossFirstKillState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
+ NPCID:%d,
+ FKState:%d
+ '''\
+ %(
+ self.NPCID,
+ self.FKState
+ )
+ return DumpString
+
+
+class tagMCBossFirstKillStateInfo(Structure):
+ Head = tagHead()
+ BossCount = 0 #(BYTE BossCount)
+ FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BossCount):
+ temFirstKillStateList = tagMCBossFirstKillState()
+ _pos = temFirstKillStateList.ReadData(_lpData, _pos)
+ self.FirstKillStateList.append(temFirstKillStateList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x01
+ self.BossCount = 0
+ self.FirstKillStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.BossCount):
+ length += self.FirstKillStateList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.BossCount)
+ for i in range(self.BossCount):
+ data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ BossCount:%d,
+ FirstKillStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.BossCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
#------------------------------------------------------
@@ -27743,6 +42784,126 @@
#------------------------------------------------------
+# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
+
+class tagMCActivityPlaceInfo(Structure):
+ Head = tagHead()
+ StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
+ PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数
+ RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数
+ RewardLen = 0 #(BYTE RewardLen)
+ RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
+ TodayExp = 0 #(DWORD TodayExp)
+ TodayExpPoint = 0 #(DWORD TodayExpPoint)
+ YestordayExp = 0 #(DWORD YestordayExp)
+ YestordayExpPoint = 0 #(DWORD YestordayExpPoint)
+ TotalCount = 0 #(DWORD TotalCount)// 累计活跃放置次数
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
+ self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x27
+ self.StartTime = 0
+ self.PlaceCount = 0
+ self.RewardCount = 0
+ self.RewardLen = 0
+ self.RewardInfo = ""
+ self.TodayExp = 0
+ self.TodayExpPoint = 0
+ self.YestordayExp = 0
+ self.YestordayExpPoint = 0
+ self.TotalCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += len(self.RewardInfo)
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.StartTime)
+ data = CommFunc.WriteBYTE(data, self.PlaceCount)
+ data = CommFunc.WriteBYTE(data, self.RewardCount)
+ data = CommFunc.WriteBYTE(data, self.RewardLen)
+ data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
+ data = CommFunc.WriteDWORD(data, self.TodayExp)
+ data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
+ data = CommFunc.WriteDWORD(data, self.YestordayExp)
+ data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
+ data = CommFunc.WriteDWORD(data, self.TotalCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartTime:%d,
+ PlaceCount:%d,
+ RewardCount:%d,
+ RewardLen:%d,
+ RewardInfo:%s,
+ TodayExp:%d,
+ TodayExpPoint:%d,
+ YestordayExp:%d,
+ YestordayExpPoint:%d,
+ TotalCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartTime,
+ self.PlaceCount,
+ self.RewardCount,
+ self.RewardLen,
+ self.RewardInfo,
+ self.TodayExp,
+ self.TodayExpPoint,
+ self.YestordayExp,
+ self.YestordayExpPoint,
+ self.TotalCount
+ )
+ return DumpString
+
+
+m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
+
+
+#------------------------------------------------------
#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
class tagFamilyArrestAwardReceiveState(Structure):
@@ -27840,6 +43001,62 @@
m_NAtagMCFishResult=tagMCFishResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFishResult.Cmd,m_NAtagMCFishResult.SubCmd))] = m_NAtagMCFishResult
+
+
+#------------------------------------------------------
+# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
+
+class tagMCTodayAssistMoneyInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成
+ ("SocialMoney", c_ushort), #社交额外加成
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x07
+ self.TodayAssistMoney = 0
+ self.SocialMoney = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTodayAssistMoneyInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ TodayAssistMoney:%d,
+ SocialMoney:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TodayAssistMoney,
+ self.SocialMoney
+ )
+ return DumpString
+
+
+m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
#------------------------------------------------------
@@ -27965,6 +43182,118 @@
#------------------------------------------------------
+# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
+
+class tagMCFuncSysPrivilegeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("FuncSysID", c_ubyte), # 功能系统ID
+ ("ActivateTime", c_int), # 激活时间戳
+ ("AwardState", 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.FuncSysID = 0
+ self.ActivateTime = 0
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFuncSysPrivilegeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
+ FuncSysID:%d,
+ ActivateTime:%d,
+ AwardState:%d
+ '''\
+ %(
+ self.FuncSysID,
+ self.ActivateTime,
+ self.AwardState
+ )
+ return DumpString
+
+
+class tagMCFuncSysPrivilegeInfoList(Structure):
+ Head = tagHead()
+ PrivilegeCount = 0 #(BYTE PrivilegeCount)// 特权个数
+ PrivilegeInfoList = list() #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PrivilegeCount):
+ temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
+ _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
+ self.PrivilegeInfoList.append(temPrivilegeInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x11
+ self.PrivilegeCount = 0
+ self.PrivilegeInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.PrivilegeCount):
+ length += self.PrivilegeInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
+ for i in range(self.PrivilegeCount):
+ data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PrivilegeCount:%d,
+ PrivilegeInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PrivilegeCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
+
+
+#------------------------------------------------------
# B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
class tagMCNotifyPlayerMove(Structure):
@@ -28022,6 +43351,80 @@
m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove
+
+
+#------------------------------------------------------
+# B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
+
+class tagMCOnlinePrizeNew(Structure):
+ Head = tagHead()
+ OnlineTime = 0 #(DWORD OnlineTime)//在线时间毫秒
+ Len = 0 #(BYTE Len)
+ PrizeInfo = list() #(vector<DWORD> PrizeInfo)//领奖记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PrizeInfo.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x13
+ self.OnlineTime = 0
+ self.Len = 0
+ self.PrizeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 4 * self.Len
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OnlineTime)
+ data = CommFunc.WriteBYTE(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OnlineTime:%d,
+ Len:%d,
+ PrizeInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OnlineTime,
+ self.Len,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCOnlinePrizeNew=tagMCOnlinePrizeNew()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrizeNew.Head.Cmd,m_NAtagMCOnlinePrizeNew.Head.SubCmd))] = m_NAtagMCOnlinePrizeNew
#------------------------------------------------------
@@ -28083,7 +43486,7 @@
Head = tagHead()
PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
- PointValueList = list() #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+ PointValueList = list() #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
data = None
def __init__(self):
@@ -28100,7 +43503,7 @@
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.PointAttrIDList.append(value)
for i in range(self.PointAttrIDCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PointValueList.append(value)
return _pos
@@ -28119,7 +43522,7 @@
length += self.Head.GetLength()
length += 1
length += 1 * self.PointAttrIDCount
- length += 2 * self.PointAttrIDCount
+ length += 4 * self.PointAttrIDCount
return length
@@ -28130,7 +43533,7 @@
for i in range(self.PointAttrIDCount):
data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
for i in range(self.PointAttrIDCount):
- data = CommFunc.WriteWORD(data, self.PointValueList[i])
+ data = CommFunc.WriteDWORD(data, self.PointValueList[i])
return data
def OutputString(self):
@@ -28422,6 +43825,132 @@
#------------------------------------------------------
+# B1 20 战令信息 #tagMCZhanlingInfo
+
+class tagMCZhanling(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedValue", c_int), # 奖励所需值
+ ("FreeRewardState", c_ubyte), # 免费奖励是否已领取
+ ("ZLRewardState", 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.NeedValue = 0
+ self.FreeRewardState = 0
+ self.ZLRewardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCZhanling)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 20 战令信息 //tagMCZhanlingInfo:
+ NeedValue:%d,
+ FreeRewardState:%d,
+ ZLRewardState:%d
+ '''\
+ %(
+ self.NeedValue,
+ self.FreeRewardState,
+ self.ZLRewardState
+ )
+ return DumpString
+
+
+class tagMCZhanlingInfo(Structure):
+ Head = tagHead()
+ ZhanlingType = 0 #(BYTE ZhanlingType)// 战令类型
+ IsActivite = 0 #(BYTE IsActivite)// 是否已激活
+ RewardCount = 0 #(WORD RewardCount)
+ RewardList = list() #(vector<tagMCZhanling> RewardList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZhanlingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsActivite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.RewardCount):
+ temRewardList = tagMCZhanling()
+ _pos = temRewardList.ReadData(_lpData, _pos)
+ self.RewardList.append(temRewardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x20
+ self.ZhanlingType = 0
+ self.IsActivite = 0
+ self.RewardCount = 0
+ self.RewardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 2
+ for i in range(self.RewardCount):
+ length += self.RewardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZhanlingType)
+ data = CommFunc.WriteBYTE(data, self.IsActivite)
+ data = CommFunc.WriteWORD(data, self.RewardCount)
+ for i in range(self.RewardCount):
+ data = CommFunc.WriteString(data, self.RewardList[i].GetLength(), self.RewardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ZhanlingType:%d,
+ IsActivite:%d,
+ RewardCount:%d,
+ RewardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ZhanlingType,
+ self.IsActivite,
+ self.RewardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCZhanlingInfo=tagMCZhanlingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhanlingInfo.Head.Cmd,m_NAtagMCZhanlingInfo.Head.SubCmd))] = m_NAtagMCZhanlingInfo
+
+
+#------------------------------------------------------
# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
class tagMCAddXianyuanCoinMsg(Structure):
@@ -28539,87 +44068,6 @@
m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg
-
-
-#------------------------------------------------------
-# B2 14 自定义副本奖励信息 #tagMCCuntomFBPrizeInfo
-
-class tagMCCuntomFBPrizeInfo(Structure):
- Head = tagHead()
- MapID = 0 #(DWORD MapID)
- FuncLineID = 0 #(WORD FuncLineID)
- PrizeItemCount = 0 #(BYTE PrizeItemCount)
- PrizeItemIDList = list() #(vector<DWORD> PrizeItemIDList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.PrizeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PrizeItemCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.PrizeItemIDList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x14
- self.MapID = 0
- self.FuncLineID = 0
- self.PrizeItemCount = 0
- self.PrizeItemIDList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 2
- length += 1
- length += 4 * self.PrizeItemCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteWORD(data, self.FuncLineID)
- data = CommFunc.WriteBYTE(data, self.PrizeItemCount)
- for i in range(self.PrizeItemCount):
- data = CommFunc.WriteDWORD(data, self.PrizeItemIDList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- MapID:%d,
- FuncLineID:%d,
- PrizeItemCount:%d,
- PrizeItemIDList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.MapID,
- self.FuncLineID,
- self.PrizeItemCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCCuntomFBPrizeInfo=tagMCCuntomFBPrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCuntomFBPrizeInfo.Head.Cmd,m_NAtagMCCuntomFBPrizeInfo.Head.SubCmd))] = m_NAtagMCCuntomFBPrizeInfo
#------------------------------------------------------
@@ -28926,6 +44374,7 @@
_fields_ = [
("DataMapID", c_int), # 地图ID
("RemainTime", c_int), # 剩余时间秒
+ ("RegainCnt", c_ubyte), # 今日已恢复次数
]
def __init__(self):
@@ -28940,6 +44389,7 @@
def Clear(self):
self.DataMapID = 0
self.RemainTime = 0
+ self.RegainCnt = 0
return
def GetLength(self):
@@ -28951,11 +44401,13 @@
def OutputString(self):
DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime:
DataMapID:%d,
- RemainTime:%d
+ RemainTime:%d,
+ RegainCnt:%d
'''\
%(
self.DataMapID,
- self.RemainTime
+ self.RemainTime,
+ self.RegainCnt
)
return DumpString
@@ -29757,9 +45209,9 @@
#------------------------------------------------------
-# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
+# B2 17 境界塔信息 #tagMCRealmTowerInfo
-class tagMCSkyTowerInfo(Structure):
+class tagMCRealmTowerInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
@@ -29770,7 +45222,7 @@
def __init__(self):
self.Clear()
self.Cmd = 0xB2
- self.SubCmd = 0x13
+ self.SubCmd = 0x17
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -29780,18 +45232,18 @@
def Clear(self):
self.Cmd = 0xB2
- self.SubCmd = 0x13
+ self.SubCmd = 0x17
self.Floor = 0
return
def GetLength(self):
- return sizeof(tagMCSkyTowerInfo)
+ return sizeof(tagMCRealmTowerInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
+ DumpString = '''// B2 17 境界塔信息 //tagMCRealmTowerInfo:
Cmd:%s,
SubCmd:%s,
Floor:%d
@@ -29804,8 +45256,183 @@
return DumpString
+m_NAtagMCRealmTowerInfo=tagMCRealmTowerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRealmTowerInfo.Cmd,m_NAtagMCRealmTowerInfo.SubCmd))] = m_NAtagMCRealmTowerInfo
+
+
+#------------------------------------------------------
+# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
+
+class tagMCSkyTowerServerReward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Floor", c_int), # 全服奖励层ID
+ ("ServerRewardRecord", 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.Floor = 0
+ self.ServerRewardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkyTowerServerReward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
+ Floor:%d,
+ ServerRewardRecord:%d
+ '''\
+ %(
+ self.Floor,
+ self.ServerRewardRecord
+ )
+ return DumpString
+
+
+class tagMCSkyTowerInfo(Structure):
+ Head = tagHead()
+ Floor = 0 #(DWORD Floor)// 已通关层
+ ServerRewardCount = 0 #(WORD ServerRewardCount)
+ ServerRewardList = list() #(vector<tagMCSkyTowerServerReward> ServerRewardList)// 全服奖励领取记录列表,下发的层记录替换更新即可,领奖记录没有变化时服务端不会下发
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Floor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerRewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.ServerRewardCount):
+ temServerRewardList = tagMCSkyTowerServerReward()
+ _pos = temServerRewardList.ReadData(_lpData, _pos)
+ self.ServerRewardList.append(temServerRewardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x13
+ self.Floor = 0
+ self.ServerRewardCount = 0
+ self.ServerRewardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 2
+ for i in range(self.ServerRewardCount):
+ length += self.ServerRewardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.Floor)
+ data = CommFunc.WriteWORD(data, self.ServerRewardCount)
+ for i in range(self.ServerRewardCount):
+ data = CommFunc.WriteString(data, self.ServerRewardList[i].GetLength(), self.ServerRewardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Floor:%d,
+ ServerRewardCount:%d,
+ ServerRewardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Floor,
+ self.ServerRewardCount,
+ "..."
+ )
+ return DumpString
+
+
m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Head.Cmd,m_NAtagMCSkyTowerInfo.Head.SubCmd))] = m_NAtagMCSkyTowerInfo
+
+
+#------------------------------------------------------
+# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
+
+class tagMCStartCustomSceneResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("FuncLineID", c_ushort),
+ ("Result", c_ubyte), #是否允许
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.Result = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartCustomSceneResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ Result:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID,
+ self.Result
+ )
+ return DumpString
+
+
+m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
#------------------------------------------------------
@@ -29932,6 +45559,166 @@
#------------------------------------------------------
+# B3 30 情缘相关信息 #tagMCLoveInfo
+
+class tagMCLoveInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("EatCandyToday", c_int), # 今日已吃喜糖次数,包含免费及付费的所有次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x30
+ 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 = 0x30
+ self.EatCandyToday = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLoveInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 30 情缘相关信息 //tagMCLoveInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ EatCandyToday:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.EatCandyToday
+ )
+ return DumpString
+
+
+m_NAtagMCLoveInfo=tagMCLoveInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveInfo.Cmd,m_NAtagMCLoveInfo.SubCmd))] = m_NAtagMCLoveInfo
+
+
+#------------------------------------------------------
+# B3 27 情戒信息 #tagMCLoveRingInfo
+
+class tagMCLoveRingInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 阶
+ ("StarLV", c_ubyte), # 星
+ ("EatCount", c_int), # 本星已淬炼道具数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x27
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x27
+ self.ClassLV = 0
+ self.StarLV = 0
+ self.EatCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLoveRingInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 27 情戒信息 //tagMCLoveRingInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ StarLV:%d,
+ EatCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.StarLV,
+ self.EatCount
+ )
+ return DumpString
+
+
+m_NAtagMCLoveRingInfo=tagMCLoveRingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingInfo.Cmd,m_NAtagMCLoveRingInfo.SubCmd))] = m_NAtagMCLoveRingInfo
+
+
+#------------------------------------------------------
+# B3 29 情戒解锁成功 #tagMCLoveRingUnlockOK
+
+class tagMCLoveRingUnlockOK(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x29
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x29
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLoveRingUnlockOK)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 29 情戒解锁成功 //tagMCLoveRingUnlockOK:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCLoveRingUnlockOK=tagMCLoveRingUnlockOK()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingUnlockOK.Cmd,m_NAtagMCLoveRingUnlockOK.SubCmd))] = m_NAtagMCLoveRingUnlockOK
+
+
+#------------------------------------------------------
# B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer
class tagMCAddMaliciousAtkPlayer(Structure):
@@ -29981,6 +45768,226 @@
m_NAtagMCAddMaliciousAtkPlayer=tagMCAddMaliciousAtkPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddMaliciousAtkPlayer.Cmd,m_NAtagMCAddMaliciousAtkPlayer.SubCmd))] = m_NAtagMCAddMaliciousAtkPlayer
+
+
+#------------------------------------------------------
+# B4 15 Boss伤血排行榜信息 #tagMCBossHurtValueRankInfo
+
+class tagMCBossHurtValueAssist(Structure):
+ PlayerID = 0 #(DWORD PlayerID)// 助战玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ HurtValue = 0 #(DWORD HurtValue)//不超过亿部分
+ HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagMCBossHurtValue(Structure):
+ HurtType = 0 #(BYTE HurtType)// 伤血类型 1-玩家,2-队伍
+ HurtID = 0 #(DWORD HurtID)//玩家时为玩家ID,队伍时为队伍ID
+ HurtName = "" #(char HurtName[33])// 名称
+ HurtValue = 0 #(DWORD HurtValue)//不超过亿部分
+ HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.HurtType = 0
+ self.HurtID = 0
+ self.HurtName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.HurtType)
+ data = CommFunc.WriteDWORD(data, self.HurtID)
+ data = CommFunc.WriteString(data, 33, self.HurtName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ HurtType:%d,
+ HurtID:%d,
+ HurtName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.HurtType,
+ self.HurtID,
+ self.HurtName,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagMCBossHurtValueRankInfo(Structure):
+ Head = tagHead()
+ ObjID = 0 #(DWORD ObjID)//NPC实例ID
+ HurtCount = 0 #(BYTE HurtCount)//伤血数目
+ HurtValueList = list() #(vector<tagMCBossHurtValue> HurtValueList)
+ AssistHurtCount = 0 #(BYTE AssistHurtCount)//助战伤血数目
+ AssistHurtValueList = list() #(vector<tagMCBossHurtValueAssist> AssistHurtValueList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtValueList = tagMCBossHurtValue()
+ _pos = temHurtValueList.ReadData(_lpData, _pos)
+ self.HurtValueList.append(temHurtValueList)
+ self.AssistHurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AssistHurtCount):
+ temAssistHurtValueList = tagMCBossHurtValueAssist()
+ _pos = temAssistHurtValueList.ReadData(_lpData, _pos)
+ self.AssistHurtValueList.append(temAssistHurtValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x15
+ self.ObjID = 0
+ self.HurtCount = 0
+ self.HurtValueList = list()
+ self.AssistHurtCount = 0
+ self.AssistHurtValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.HurtCount):
+ length += self.HurtValueList[i].GetLength()
+ length += 1
+ for i in range(self.AssistHurtCount):
+ length += self.AssistHurtValueList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ObjID)
+ data = CommFunc.WriteBYTE(data, self.HurtCount)
+ for i in range(self.HurtCount):
+ data = CommFunc.WriteString(data, self.HurtValueList[i].GetLength(), self.HurtValueList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AssistHurtCount)
+ for i in range(self.AssistHurtCount):
+ data = CommFunc.WriteString(data, self.AssistHurtValueList[i].GetLength(), self.AssistHurtValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ObjID:%d,
+ HurtCount:%d,
+ HurtValueList:%s,
+ AssistHurtCount:%d,
+ AssistHurtValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ObjID,
+ self.HurtCount,
+ "...",
+ self.AssistHurtCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossHurtValueRankInfo=tagMCBossHurtValueRankInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossHurtValueRankInfo.Head.Cmd,m_NAtagMCBossHurtValueRankInfo.Head.SubCmd))] = m_NAtagMCBossHurtValueRankInfo
#------------------------------------------------------
@@ -30853,6 +46860,7 @@
("ObjID", c_int),
("AttackType", c_ubyte), #爆击, miss
("HurtHP", c_int),
+ ("HurtHPEx", c_int),
("CurHP", c_int),
("CurHPEx", c_int),
]
@@ -30871,6 +46879,7 @@
self.ObjID = 0
self.AttackType = 0
self.HurtHP = 0
+ self.HurtHPEx = 0
self.CurHP = 0
self.CurHPEx = 0
return
@@ -30887,6 +46896,7 @@
ObjID:%d,
AttackType:%d,
HurtHP:%d,
+ HurtHPEx:%d,
CurHP:%d,
CurHPEx:%d
'''\
@@ -30895,6 +46905,7 @@
self.ObjID,
self.AttackType,
self.HurtHP,
+ self.HurtHPEx,
self.CurHP,
self.CurHPEx
)
@@ -30910,6 +46921,7 @@
PosY = 0 #(WORD PosY)
HurtCount = 0 #(WORD HurtCount)//伤害数目
HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
+ SkillElementID = 0 #(WORD SkillElementID)//专精技能ID
data = None
def __init__(self):
@@ -30931,6 +46943,7 @@
temHurtList = tagSkillPosHurtObj()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -30945,6 +46958,7 @@
self.PosY = 0
self.HurtCount = 0
self.HurtList = list()
+ self.SkillElementID = 0
return
def GetLength(self):
@@ -30958,6 +46972,7 @@
length += 2
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 2
return length
@@ -30972,6 +46987,7 @@
data = CommFunc.WriteWORD(data, self.HurtCount)
for i in range(self.HurtCount):
data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.SkillElementID)
return data
def OutputString(self):
@@ -30983,7 +46999,8 @@
PosX:%d,
PosY:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ SkillElementID:%d
'''\
%(
self.Head.OutputString(),
@@ -30993,7 +47010,8 @@
self.PosX,
self.PosY,
self.HurtCount,
- "..."
+ "...",
+ self.SkillElementID
)
return DumpString
@@ -31228,6 +47246,126 @@
m_NAtagMCTJGInfo=tagMCTJGInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGInfo.Head.Cmd,m_NAtagMCTJGInfo.Head.SubCmd))] = m_NAtagMCTJGInfo
+
+
+#------------------------------------------------------
+# C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo
+
+class tagMCChampionshipPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("WorshipCount", c_ubyte), # 今日已膜拜次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x09
+ self.WorshipCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCChampionshipPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 09 跨服排位玩家信息 //tagMCChampionshipPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ WorshipCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.WorshipCount
+ )
+ return DumpString
+
+
+m_NAtagMCChampionshipPlayerInfo=tagMCChampionshipPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionshipPlayerInfo.Cmd,m_NAtagMCChampionshipPlayerInfo.SubCmd))] = m_NAtagMCChampionshipPlayerInfo
+
+
+#------------------------------------------------------
+# C1 07 跨服战场玩家信息 #tagMCCrossBattlefieldPlayerInfo
+
+class tagMCCrossBattlefieldPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BuyOpenCountToday", c_ubyte), # 今日已购买开启战场次数
+ ("HighScoreToday", c_int), # 今日最高积分
+ ("EnterCountWeek", c_int), # 本周总参与次数
+ ("BuyOpenCountWeek", c_int), # 本周总购买召集次数
+ ("HighScoreTotalWeek", c_int), # 本周每日最高分累加总分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x07
+ self.BuyOpenCountToday = 0
+ self.HighScoreToday = 0
+ self.EnterCountWeek = 0
+ self.BuyOpenCountWeek = 0
+ self.HighScoreTotalWeek = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossBattlefieldPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 07 跨服战场玩家信息 //tagMCCrossBattlefieldPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BuyOpenCountToday:%d,
+ HighScoreToday:%d,
+ EnterCountWeek:%d,
+ BuyOpenCountWeek:%d,
+ HighScoreTotalWeek:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BuyOpenCountToday,
+ self.HighScoreToday,
+ self.EnterCountWeek,
+ self.BuyOpenCountWeek,
+ self.HighScoreTotalWeek
+ )
+ return DumpString
+
+
+m_NAtagMCCrossBattlefieldPlayerInfo=tagMCCrossBattlefieldPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossBattlefieldPlayerInfo.Cmd,m_NAtagMCCrossBattlefieldPlayerInfo.SubCmd))] = m_NAtagMCCrossBattlefieldPlayerInfo
#------------------------------------------------------
@@ -31547,6 +47685,58 @@
#------------------------------------------------------
+# C1 08 幸运云购玩家信息 #tagMCLuckyCloudBuyPlayerInfo
+
+class tagMCLuckyCloudBuyPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BuyCount", c_ushort), # 本轮已购买份数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x08
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x08
+ self.BuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLuckyCloudBuyPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 08 幸运云购玩家信息 //tagMCLuckyCloudBuyPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BuyCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BuyCount
+ )
+ return DumpString
+
+
+m_NAtagMCLuckyCloudBuyPlayerInfo=tagMCLuckyCloudBuyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyCloudBuyPlayerInfo.Cmd,m_NAtagMCLuckyCloudBuyPlayerInfo.SubCmd))] = m_NAtagMCLuckyCloudBuyPlayerInfo
+
+
+#------------------------------------------------------
# C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
class tagMCPrepareEnterCrossServer(Structure):
@@ -31643,4 +47833,4 @@
m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
\ No newline at end of file
diff --git a/Tool/RobotTest/Protocol/PacketsSend.py b/Tool/RobotTest/Protocol/PacketsSend.py
index 1ae5f43..ba4ef2b 100644
--- a/Tool/RobotTest/Protocol/PacketsSend.py
+++ b/Tool/RobotTest/Protocol/PacketsSend.py
@@ -5204,7 +5204,7 @@
Phone = 0 #(BYTE Phone)//是否绑定手机
ServerID = 0 #(DWORD ServerID)//服务器ID
Adult = 0 #(BYTE Adult)//是否成年 0未成年 1成年
- ExtraLen = 0 #(BYTE ExtraLen)//扩展长度
+ ExtraLen = 0 #(WORD ExtraLen)//扩展长度
Extra = "" #(String Extra)//扩展内容,根据不同平台而定
data = None
@@ -5229,7 +5229,7 @@
self.Phone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Adult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ExtraLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExtraLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Extra,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraLen)
return _pos
@@ -5269,7 +5269,7 @@
length += 1
length += 4
length += 1
- length += 1
+ length += 2
length += len(self.Extra)
return length
@@ -5289,7 +5289,7 @@
data = CommFunc.WriteBYTE(data, self.Phone)
data = CommFunc.WriteDWORD(data, self.ServerID)
data = CommFunc.WriteBYTE(data, self.Adult)
- data = CommFunc.WriteBYTE(data, self.ExtraLen)
+ data = CommFunc.WriteWORD(data, self.ExtraLen)
data = CommFunc.WriteString(data, self.ExtraLen, self.Extra)
return data
@@ -21445,4 +21445,4 @@
m_NAtagCGMCMD=tagCGMCMD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
\ No newline at end of file
diff --git a/Tool/RobotTest/Protocol/PacketsSendPY.py b/Tool/RobotTest/Protocol/PacketsSendPY.py
index a765658..f32553e 100644
--- a/Tool/RobotTest/Protocol/PacketsSendPY.py
+++ b/Tool/RobotTest/Protocol/PacketsSendPY.py
@@ -706,58 +706,6 @@
#------------------------------------------------------
-# A4 05 开启家族boss副本 #tagCGOpenFamilyBossFB
-
-class tagCGOpenFamilyBossFB(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int), # 开启的副本地图ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA4
- self.SubCmd = 0x05
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA4
- self.SubCmd = 0x05
- self.MapID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGOpenFamilyBossFB)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A4 05 开启家族boss副本 //tagCGOpenFamilyBossFB:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID
- )
- return DumpString
-
-
-m_NAtagCGOpenFamilyBossFB=tagCGOpenFamilyBossFB()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGOpenFamilyBossFB.Cmd,m_NAtagCGOpenFamilyBossFB.SubCmd))] = m_NAtagCGOpenFamilyBossFB
-
-
-#------------------------------------------------------
# A4 04 创建家族 #tagCGPyCreatFamily
class tagCGPyCreatFamily(Structure):
@@ -1245,6 +1193,162 @@
m_NAtagCGFuzzySearchPlayer=tagCGFuzzySearchPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFuzzySearchPlayer.Head.Cmd,m_NAtagCGFuzzySearchPlayer.Head.SubCmd))] = m_NAtagCGFuzzySearchPlayer
+
+
+#------------------------------------------------------
+# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward
+
+class tagCGGetBossFirstKillAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int),
+ ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA9
+ self.SubCmd = 0x01
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA9
+ self.SubCmd = 0x01
+ self.NPCID = 0
+ self.AwardType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGGetBossFirstKillAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d,
+ AwardType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID,
+ self.AwardType
+ )
+ return DumpString
+
+
+m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward
+
+
+#------------------------------------------------------
+# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
+
+class tagCGQueryArenaBattlePlayer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerID", c_int), #目标玩家ID,仅支持查真实玩家
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA9
+ self.SubCmd = 0xA5
+ 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 = 0xA9
+ self.SubCmd = 0xA5
+ self.PlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryArenaBattlePlayer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 A5 查看竞技场对战玩家最新信息 //tagCGQueryArenaBattlePlayer:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerID
+ )
+ return DumpString
+
+
+m_NAtagCGQueryArenaBattlePlayer=tagCGQueryArenaBattlePlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattlePlayer.Cmd,m_NAtagCGQueryArenaBattlePlayer.SubCmd))] = m_NAtagCGQueryArenaBattlePlayer
+
+
+#------------------------------------------------------
+# A9 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord
+
+class tagCGQueryArenaBattleRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA9
+ self.SubCmd = 0xA8
+ 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 = 0xA9
+ self.SubCmd = 0xA8
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryArenaBattleRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 A8 查看竞技场对战记录 //tagCGQueryArenaBattleRecord:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGQueryArenaBattleRecord=tagCGQueryArenaBattleRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattleRecord.Cmd,m_NAtagCGQueryArenaBattleRecord.SubCmd))] = m_NAtagCGQueryArenaBattleRecord
#------------------------------------------------------
@@ -1904,6 +2008,115 @@
#------------------------------------------------------
+# B0 13 取消协助Boss #tagCGCancelAssistBoss
+
+class tagCGCancelAssistBoss(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x13
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagCGCancelAssistBoss=tagCGCancelAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelAssistBoss.Head.Cmd,m_NAtagCGCancelAssistBoss.Head.SubCmd))] = m_NAtagCGCancelAssistBoss
+
+
+#------------------------------------------------------
+# B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift
+
+class tagCGGetAssistThanksGift(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsPreview", c_ubyte), #是否预览,非预览即确认领取,无额外奖励确认时也需要回复领取包代表已读
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x15
+ self.IsPreview = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGGetAssistThanksGift)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 15 接收协助感谢礼物 //tagCGGetAssistThanksGift:
+ Cmd:%s,
+ SubCmd:%s,
+ IsPreview:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsPreview
+ )
+ return DumpString
+
+
+m_NAtagCGGetAssistThanksGift=tagCGGetAssistThanksGift()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetAssistThanksGift.Cmd,m_NAtagCGGetAssistThanksGift.SubCmd))] = m_NAtagCGGetAssistThanksGift
+
+
+#------------------------------------------------------
#B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState
class tagQueryFamilyArrestOverState(Structure):
@@ -1949,6 +2162,335 @@
m_NAtagQueryFamilyArrestOverState=tagQueryFamilyArrestOverState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestOverState.Cmd,m_NAtagQueryFamilyArrestOverState.SubCmd))] = m_NAtagQueryFamilyArrestOverState
+
+
+#------------------------------------------------------
+# B0 12 开始协助Boss #tagCGStartAssistBoss
+
+class tagCGStartAssistBoss(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x12
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagCGStartAssistBoss=tagCGStartAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGStartAssistBoss.Head.Cmd,m_NAtagCGStartAssistBoss.Head.SubCmd))] = m_NAtagCGStartAssistBoss
+
+
+#------------------------------------------------------
+# B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift
+
+class tagCGUseAssistThanksGift(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int),
+ ("IsPreview", c_ubyte), #是否预览,非预览即确认使用
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x14
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x14
+ self.ItemID = 0
+ self.IsPreview = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGUseAssistThanksGift)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 14 使用协助感谢礼盒 //tagCGUseAssistThanksGift:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ IsPreview:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.IsPreview
+ )
+ return DumpString
+
+
+m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift
+
+
+#------------------------------------------------------
+# B3 19 提升魅力等级 #tagCGCharmLVUp
+
+class tagCGCharmLVUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x19
+ 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 = 0x19
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGCharmLVUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGCharmLVUp=tagCGCharmLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
+
+
+#------------------------------------------------------
+# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
+
+class tagCGCharmOfferBillboardQuery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerID", c_int), # 魅力玩家ID
+ ("QueryType", c_ubyte), # 查看类型: 1-总榜,2-周榜,3-日榜
+ ("QueryCount", c_ubyte), # 查看名次数量,最大255
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x09
+ self.PlayerID = 0
+ self.QueryType = 0
+ self.QueryCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGCharmOfferBillboardQuery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerID:%d,
+ QueryType:%d,
+ QueryCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerID,
+ self.QueryType,
+ self.QueryCount
+ )
+ return DumpString
+
+
+m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
+
+
+#------------------------------------------------------
+# B3 16 和平离婚回应 #tagGCMarryBreakResponse
+
+class tagGCMarryBreakResponse(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsOK", c_ubyte), # 是否同意,0-否,1-是
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x16
+ self.IsOK = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCMarryBreakResponse)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
+ Cmd:%s,
+ SubCmd:%s,
+ IsOK:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsOK
+ )
+ return DumpString
+
+
+m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
+
+
+#------------------------------------------------------
+# B3 12 提亲回应 #tagCGMarryResponse
+
+class tagCGMarryResponse(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ReqPlayerID", c_int), # 提亲的玩家ID
+ ("IsOK", c_ubyte), # 是否同意,0-否,1-是
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ 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 = 0xB3
+ self.SubCmd = 0x12
+ self.ReqPlayerID = 0
+ self.IsOK = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGMarryResponse)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
+ Cmd:%s,
+ SubCmd:%s,
+ ReqPlayerID:%d,
+ IsOK:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ReqPlayerID,
+ self.IsOK
+ )
+ return DumpString
+
+
+m_NAtagCGMarryResponse=tagCGMarryResponse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
#------------------------------------------------------
@@ -3289,6 +3831,58 @@
#------------------------------------------------------
+# B9 11 请求加入队伍 #tagCGRequestJoinTeam
+
+class tagCGRequestJoinTeam(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TeamID", c_int), # 目标队伍ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB9
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB9
+ self.SubCmd = 0x11
+ self.TeamID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGRequestJoinTeam)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B9 11 请求加入队伍 //tagCGRequestJoinTeam:
+ Cmd:%s,
+ SubCmd:%s,
+ TeamID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TeamID
+ )
+ return DumpString
+
+
+m_NAtagCGRequestJoinTeam=tagCGRequestJoinTeam()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRequestJoinTeam.Cmd,m_NAtagCGRequestJoinTeam.SubCmd))] = m_NAtagCGRequestJoinTeam
+
+
+#------------------------------------------------------
# B9 09 队员进入副本准备选择 #tagCGTeamMemberPrepare
class tagCGTeamMemberPrepare(Structure):
@@ -3341,6 +3935,422 @@
#------------------------------------------------------
+# C0 21 跨服排位仙官申请回应 #tagCGChampionshipOfficialApplyReply
+
+class tagCGChampionshipOfficialApplyReply(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #申请官职ID
+ ("PlayerID", c_int), #申请的玩家ID
+ ("IsOK", c_ubyte), #是否同意;1-是;0-否
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x21
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x21
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.PlayerID = 0
+ self.IsOK = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGChampionshipOfficialApplyReply)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 21 跨服排位仙官申请回应 //tagCGChampionshipOfficialApplyReply:
+ Cmd:%s,
+ SubCmd:%s,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ PlayerID:%d,
+ IsOK:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.PlayerID,
+ self.IsOK
+ )
+ return DumpString
+
+
+m_NAtagCGChampionshipOfficialApplyReply=tagCGChampionshipOfficialApplyReply()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialApplyReply.Cmd,m_NAtagCGChampionshipOfficialApplyReply.SubCmd))] = m_NAtagCGChampionshipOfficialApplyReply
+
+
+#------------------------------------------------------
+# C0 23 跨服排位仙官挑战记录查询 #tagCGChampionshipOfficialChallengeQuery
+
+class tagCGChampionshipOfficialChallengeQuery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #查询官职ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x23
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x23
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGChampionshipOfficialChallengeQuery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 23 跨服排位仙官挑战记录查询 //tagCGChampionshipOfficialChallengeQuery:
+ Cmd:%s,
+ SubCmd:%s,
+ MainOfficialID:%d,
+ OfficialID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MainOfficialID,
+ self.OfficialID
+ )
+ return DumpString
+
+
+m_NAtagCGChampionshipOfficialChallengeQuery=tagCGChampionshipOfficialChallengeQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialChallengeQuery.Cmd,m_NAtagCGChampionshipOfficialChallengeQuery.SubCmd))] = m_NAtagCGChampionshipOfficialChallengeQuery
+
+
+#------------------------------------------------------
+# C0 24 跨服排位辞退下级仙官 #tagCGChampionshipOfficialKick
+
+class tagCGChampionshipOfficialKick(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #目标官职ID
+ ("PlayerID", c_int), #目标玩家ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x24
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x24
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.PlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGChampionshipOfficialKick)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 24 跨服排位辞退下级仙官 //tagCGChampionshipOfficialKick:
+ Cmd:%s,
+ SubCmd:%s,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ PlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.PlayerID
+ )
+ return DumpString
+
+
+m_NAtagCGChampionshipOfficialKick=tagCGChampionshipOfficialKick()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialKick.Cmd,m_NAtagCGChampionshipOfficialKick.SubCmd))] = m_NAtagCGChampionshipOfficialKick
+
+
+#------------------------------------------------------
+# C0 25 跨服排位主动离任仙官 #tagCGChampionshipOfficialLeave
+
+class tagCGChampionshipOfficialLeave(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #离任官职ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x25
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x25
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGChampionshipOfficialLeave)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 25 跨服排位主动离任仙官 //tagCGChampionshipOfficialLeave:
+ Cmd:%s,
+ SubCmd:%s,
+ MainOfficialID:%d,
+ OfficialID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MainOfficialID,
+ self.OfficialID
+ )
+ return DumpString
+
+
+m_NAtagCGChampionshipOfficialLeave=tagCGChampionshipOfficialLeave()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChampionshipOfficialLeave.Cmd,m_NAtagCGChampionshipOfficialLeave.SubCmd))] = m_NAtagCGChampionshipOfficialLeave
+
+
+#------------------------------------------------------
+# C0 09 跨服战场召集场次修改 #tagCGCrossBattlefieldCallChange
+
+class tagCGCrossBattlefieldCallChange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Hour", c_ubyte), #战场开启时
+ ("Minute", c_ubyte), #战场开启分
+ ("ServerOnly", c_ubyte), #是否仅本服玩家可加入,0-否,1-是
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x09
+ self.Hour = 0
+ self.Minute = 0
+ self.ServerOnly = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGCrossBattlefieldCallChange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 09 跨服战场召集场次修改 //tagCGCrossBattlefieldCallChange:
+ Cmd:%s,
+ SubCmd:%s,
+ Hour:%d,
+ Minute:%d,
+ ServerOnly:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Hour,
+ self.Minute,
+ self.ServerOnly
+ )
+ return DumpString
+
+
+m_NAtagCGCrossBattlefieldCallChange=tagCGCrossBattlefieldCallChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallChange.Cmd,m_NAtagCGCrossBattlefieldCallChange.SubCmd))] = m_NAtagCGCrossBattlefieldCallChange
+
+
+#------------------------------------------------------
+# C0 08 跨服战场召集场次踢人 #tagCGCrossBattlefieldCallKick
+
+class tagCGCrossBattlefieldCallKick(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Hour", c_ubyte), #战场开启时
+ ("Minute", c_ubyte), #战场开启分
+ ("TagPlayerID", c_int), #目标玩家ID,即要被踢出去的玩家ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x08
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x08
+ self.Hour = 0
+ self.Minute = 0
+ self.TagPlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGCrossBattlefieldCallKick)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 08 跨服战场召集场次踢人 //tagCGCrossBattlefieldCallKick:
+ Cmd:%s,
+ SubCmd:%s,
+ Hour:%d,
+ Minute:%d,
+ TagPlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Hour,
+ self.Minute,
+ self.TagPlayerID
+ )
+ return DumpString
+
+
+m_NAtagCGCrossBattlefieldCallKick=tagCGCrossBattlefieldCallKick()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldCallKick.Cmd,m_NAtagCGCrossBattlefieldCallKick.SubCmd))] = m_NAtagCGCrossBattlefieldCallKick
+
+
+#------------------------------------------------------
+# C0 07 跨服战场加入召集场次 #tagCGCrossBattlefieldJoinByCall
+
+class tagCGCrossBattlefieldJoinByCall(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Hour", c_ubyte), #战场开启时
+ ("Minute", c_ubyte), #战场开启分
+ ("BuyPlayerID", c_int), #加入目标玩家的召集队伍,即购买召集场的玩家ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x07
+ self.Hour = 0
+ self.Minute = 0
+ self.BuyPlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGCrossBattlefieldJoinByCall)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 07 跨服战场加入召集场次 //tagCGCrossBattlefieldJoinByCall:
+ Cmd:%s,
+ SubCmd:%s,
+ Hour:%d,
+ Minute:%d,
+ BuyPlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Hour,
+ self.Minute,
+ self.BuyPlayerID
+ )
+ return DumpString
+
+
+m_NAtagCGCrossBattlefieldJoinByCall=tagCGCrossBattlefieldJoinByCall()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCrossBattlefieldJoinByCall.Cmd,m_NAtagCGCrossBattlefieldJoinByCall.SubCmd))] = m_NAtagCGCrossBattlefieldJoinByCall
+
+
+#------------------------------------------------------
# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
class tagCGForceQuitCrossState(Structure):
@@ -3386,6 +4396,166 @@
m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
+
+
+#------------------------------------------------------
+# C0 06 查询幸运云购开奖记录 #tagCGQueryLuckyCloudBuyLotteryRec
+
+class tagCGQueryLuckyCloudBuyLotteryRec(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), #查询分区ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x06
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x06
+ self.ZoneID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryLuckyCloudBuyLotteryRec)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 06 查询幸运云购开奖记录 //tagCGQueryLuckyCloudBuyLotteryRec:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID
+ )
+ return DumpString
+
+
+m_NAtagCGQueryLuckyCloudBuyLotteryRec=tagCGQueryLuckyCloudBuyLotteryRec()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyLotteryRec.Cmd,m_NAtagCGQueryLuckyCloudBuyLotteryRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyLotteryRec
+
+
+#------------------------------------------------------
+# C0 05 查询幸运云购购买号码记录 #tagCGQueryLuckyCloudBuyNumRec
+
+class tagCGQueryLuckyCloudBuyNumRec(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x05
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x05
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryLuckyCloudBuyNumRec)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 05 查询幸运云购购买号码记录 //tagCGQueryLuckyCloudBuyNumRec:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGQueryLuckyCloudBuyNumRec=tagCGQueryLuckyCloudBuyNumRec()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyNumRec.Cmd,m_NAtagCGQueryLuckyCloudBuyNumRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyNumRec
+
+
+#------------------------------------------------------
+# C0 04 查看跨服排行榜 #tagCGViewCrossBillboard
+
+class tagCGViewCrossBillboard(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ubyte), #榜单类型
+ ("GroupValue1", c_ubyte), # 分组值1
+ ("GroupValue2", c_ubyte), # 分组值2,与分组值1组合归为同组榜单数据
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x04
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x04
+ self.Type = 0
+ self.GroupValue1 = 0
+ self.GroupValue2 = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGViewCrossBillboard)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d,
+ GroupValue1:%d,
+ GroupValue2:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type,
+ self.GroupValue1,
+ self.GroupValue2
+ )
+ return DumpString
+
+
+m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard
#------------------------------------------------------
@@ -3498,6 +4668,196 @@
m_NAtagCGViewCrossPlayerInfo=tagCGViewCrossPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPlayerInfo.Cmd,m_NAtagCGViewCrossPlayerInfo.SubCmd))] = m_NAtagCGViewCrossPlayerInfo
+
+
+#------------------------------------------------------
+# A1 21 转职业 #tagCMChangeJob
+
+class tagCMChangeJob(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TagJob", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ self.SubCmd = 0x21
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA1
+ self.SubCmd = 0x21
+ self.TagJob = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChangeJob)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 21 转职业 //tagCMChangeJob:
+ Cmd:%s,
+ SubCmd:%s,
+ TagJob:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TagJob
+ )
+ return DumpString
+
+
+m_NAtagCMChangeJob=tagCMChangeJob()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
+
+
+#------------------------------------------------------
+# A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo
+
+class tagCMCoinBuyOrderInfo(Structure):
+ Head = tagHead()
+ AppIDLen = 0 #(BYTE AppIDLen)
+ AppID = "" #(String AppID)
+ OrderInfoLen = 0 #(BYTE OrderInfoLen)
+ OrderInfo = "" #(String OrderInfo)//商品编号
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x25
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AppIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AppID,_pos = CommFunc.ReadString(_lpData, _pos,self.AppIDLen)
+ self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x25
+ self.AppIDLen = 0
+ self.AppID = ""
+ self.OrderInfoLen = 0
+ self.OrderInfo = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.AppID)
+ length += 1
+ length += len(self.OrderInfo)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AppIDLen)
+ data = CommFunc.WriteString(data, self.AppIDLen, self.AppID)
+ data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
+ data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AppIDLen:%d,
+ AppID:%s,
+ OrderInfoLen:%d,
+ OrderInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AppIDLen,
+ self.AppID,
+ self.OrderInfoLen,
+ self.OrderInfo
+ )
+ return DumpString
+
+
+m_NAtagCMCoinBuyOrderInfo=tagCMCoinBuyOrderInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCoinBuyOrderInfo.Head.Cmd,m_NAtagCMCoinBuyOrderInfo.Head.SubCmd))] = m_NAtagCMCoinBuyOrderInfo
+
+
+#------------------------------------------------------
+# A1 20 货币兑换 #tagCMMoneyExchange
+
+class tagCMMoneyExchange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SrcMoneyType", c_ubyte), # 源货币类型
+ ("TagMoneyType", c_ubyte), # 目标货币类型
+ ("ExchangeValue", c_int), # 兑换数量(消耗源货币的数量)
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ self.SubCmd = 0x20
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA1
+ self.SubCmd = 0x20
+ self.SrcMoneyType = 0
+ self.TagMoneyType = 0
+ self.ExchangeValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMoneyExchange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
+ Cmd:%s,
+ SubCmd:%s,
+ SrcMoneyType:%d,
+ TagMoneyType:%d,
+ ExchangeValue:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SrcMoneyType,
+ self.TagMoneyType,
+ self.ExchangeValue
+ )
+ return DumpString
+
+
+m_NAtagCMMoneyExchange=tagCMMoneyExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
#------------------------------------------------------
@@ -3618,6 +4978,58 @@
m_NAtagCMPCInfo=tagCMPCInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
+
+
+#------------------------------------------------------
+# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
+
+class tagCMQueryCoinToGoldCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RecordID", c_ushort), #充值记录ID,也就是充值ID,发0则查全部
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ self.SubCmd = 0x23
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA1
+ self.SubCmd = 0x23
+ self.RecordID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMQueryCoinToGoldCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 23 查询充值次数 //tagCMQueryCoinToGoldCount:
+ Cmd:%s,
+ SubCmd:%s,
+ RecordID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RecordID
+ )
+ return DumpString
+
+
+m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
#------------------------------------------------------
@@ -5276,6 +6688,58 @@
#------------------------------------------------------
+# A2 35 选择境界难度层级 #tagCMSelectRealmDifficulty
+
+class tagCMSelectRealmDifficulty(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RealmDifficulty", c_ubyte), #境界难度 = 100 + 所选境界等级,如境界13,则发113
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x35
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA2
+ self.SubCmd = 0x35
+ self.RealmDifficulty = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSelectRealmDifficulty)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 35 选择境界难度层级 //tagCMSelectRealmDifficulty:
+ Cmd:%s,
+ SubCmd:%s,
+ RealmDifficulty:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RealmDifficulty
+ )
+ return DumpString
+
+
+m_NAtagCMSelectRealmDifficulty=tagCMSelectRealmDifficulty()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectRealmDifficulty.Cmd,m_NAtagCMSelectRealmDifficulty.SubCmd))] = m_NAtagCMSelectRealmDifficulty
+
+
+#------------------------------------------------------
# A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox
class tagCMSetChatBubbleBox(Structure):
@@ -5656,6 +7120,58 @@
m_NAtagCMVoiceChat=tagCMVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVoiceChat.Head.Cmd,m_NAtagCMVoiceChat.Head.SubCmd))] = m_NAtagCMVoiceChat
+
+
+#------------------------------------------------------
+# A2 07 接受任务 #tagCMTakeTask
+
+class tagCMTakeTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TaskID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA2
+ self.SubCmd = 0x07
+ self.TaskID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTakeTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 07 接受任务 //tagCMTakeTask:
+ Cmd:%s,
+ SubCmd:%s,
+ TaskID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TaskID
+ )
+ return DumpString
+
+
+m_NAtagCMTakeTask=tagCMTakeTask()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeTask.Cmd,m_NAtagCMTakeTask.SubCmd))] = m_NAtagCMTakeTask
#------------------------------------------------------
@@ -6211,6 +7727,58 @@
#------------------------------------------------------
+# A3 30 装备神装进阶 #tagCMEquipEvolve
+
+class tagCMEquipEvolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("EquipIndex", c_ubyte), # 要进阶的装备在装备背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x30
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x30
+ self.EquipIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipEvolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ EquipIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.EquipIndex
+ )
+ return DumpString
+
+
+m_NAtagCMEquipEvolve=tagCMEquipEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve
+
+
+#------------------------------------------------------
#A3 01 装备强化 #tagEquipPlus
class tagEquipPlus(Structure):
@@ -6316,6 +7884,73 @@
m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
+# A3 31 装备神装拆解 #tagCMEquipShenDecompose
+
+class tagCMEquipShenDecompose(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//所在背包索引的数量
+ IndexList = list() #(vector<WORD> IndexList)//所在背包索引列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x31
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.IndexList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x31
+ self.Count = 0
+ self.IndexList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteWORD(data, self.IndexList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ IndexList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipShenDecompose=tagCMEquipShenDecompose()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipShenDecompose.Head.Cmd,m_NAtagCMEquipShenDecompose.Head.SubCmd))] = m_NAtagCMEquipShenDecompose
#------------------------------------------------------
@@ -6599,62 +8234,6 @@
#------------------------------------------------------
-# A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
-
-class tagCMEquipZhuXianItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
- ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x30
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x30
- self.EquipIndex = 0
- self.ItemIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMEquipZhuXianItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
- Cmd:%s,
- SubCmd:%s,
- EquipIndex:%d,
- ItemIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipIndex,
- self.ItemIndex
- )
- return DumpString
-
-
-m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
-
-
-#------------------------------------------------------
# A3 12 守护拾取物品 #tagCMGuardPickupItem
class tagCMGuardPickupItem(Structure):
@@ -6783,6 +8362,7 @@
("SubCmd", c_ubyte),
("PackType", c_ubyte), #背包类型
("ItemIndex", c_ubyte), #物品在背包中索引
+ ("IsAll", c_ubyte), #是否处理所有过期物品
]
def __init__(self):
@@ -6801,6 +8381,7 @@
self.SubCmd = 0x08
self.PackType = 0
self.ItemIndex = 0
+ self.IsAll = 0
return
def GetLength(self):
@@ -6814,19 +8395,133 @@
Cmd:%s,
SubCmd:%s,
PackType:%d,
- ItemIndex:%d
+ ItemIndex:%d,
+ IsAll:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.PackType,
- self.ItemIndex
+ self.ItemIndex,
+ self.IsAll
)
return DumpString
m_NAtagCMItemTimeout=tagCMItemTimeout()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
+
+
+#------------------------------------------------------
+# A3 18 灵器突破 #tagCMLingQiEquipBreak
+
+class tagCMLingQiEquipBreak(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), #突破的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x18
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x18
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLingQiEquipBreak)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 18 灵器突破 //tagCMLingQiEquipBreak:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak
+
+
+#------------------------------------------------------
+# A3 27 灵器培养 #tagCMLingQiTrain
+
+class tagCMLingQiTrain(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("EquipPlace", c_ubyte), #灵器装备位
+ ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
+ ("UseItemCnt", c_ushort), #消耗材料个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x27
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x27
+ self.EquipPlace = 0
+ self.TrainType = 0
+ self.UseItemCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLingQiTrain)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 27 灵器培养 //tagCMLingQiTrain:
+ Cmd:%s,
+ SubCmd:%s,
+ EquipPlace:%d,
+ TrainType:%d,
+ UseItemCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.EquipPlace,
+ self.TrainType,
+ self.UseItemCnt
+ )
+ return DumpString
+
+
+m_NAtagCMLingQiTrain=tagCMLingQiTrain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiTrain.Cmd,m_NAtagCMLingQiTrain.SubCmd))] = m_NAtagCMLingQiTrain
#------------------------------------------------------
@@ -7295,58 +8990,6 @@
#------------------------------------------------------
-# A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
-
-class tagCMUnEquipZhuXianItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x31
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x31
- self.EquipIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUnEquipZhuXianItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
- Cmd:%s,
- SubCmd:%s,
- EquipIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipIndex
- )
- return DumpString
-
-
-m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
-
-
-#------------------------------------------------------
# A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
class tagCMUseAllAttrFruit(Structure):
@@ -7526,90 +9169,6 @@
#------------------------------------------------------
-# A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
-
-class tagCMZhuXianEquipDecompose(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//材料所在背包索引的数量
- IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
- ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
- IsAuto = 0 #(BYTE IsAuto)//是否自动分解
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.IndexList.append(value)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.ItemIDList.append(value)
- self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- self.Count = 0
- self.IndexList = list()
- self.ItemIDList = list()
- self.IsAuto = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 2 * self.Count
- length += 4 * self.Count
- length += 1
-
- 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.WriteWORD(data, self.IndexList[i])
- for i in range(self.Count):
- data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
- data = CommFunc.WriteBYTE(data, self.IsAuto)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- IndexList:%s,
- ItemIDList:%s,
- IsAuto:%d
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "...",
- "...",
- self.IsAuto
- )
- return DumpString
-
-
-m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
-
-
-#------------------------------------------------------
# A5 30 购买魔魂铜钱经验什么的 #tagCMBuySomething
class tagCMBuySomething(Structure):
@@ -7669,7 +9228,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_int), #坐骑ID
+ ("HorseID", c_int), #坐骑幻化ID
]
def __init__(self):
@@ -7711,6 +9270,62 @@
m_NAtagPlayerActivateHorse=tagPlayerActivateHorse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerActivateHorse.Cmd,m_NAtagPlayerActivateHorse.SubCmd))] = m_NAtagPlayerActivateHorse
+
+
+#------------------------------------------------------
+# A5 C7 激活大师强化等级 #tagCMActivateMasterPlusLV
+
+class tagCMActivateMasterPlusLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 所属装备阶
+ ("MasterPlusLV", c_ushort), # 大师强化等级
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC7
+ 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 = 0xC7
+ self.ClassLV = 0
+ self.MasterPlusLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivateMasterPlusLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C7 激活大师强化等级 //tagCMActivateMasterPlusLV:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ MasterPlusLV:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.MasterPlusLV
+ )
+ return DumpString
+
+
+m_NAtagCMActivateMasterPlusLV=tagCMActivateMasterPlusLV()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateMasterPlusLV.Cmd,m_NAtagCMActivateMasterPlusLV.SubCmd))] = m_NAtagCMActivateMasterPlusLV
#------------------------------------------------------
@@ -8442,6 +10057,54 @@
m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt
+
+
+#------------------------------------------------------
+# A5 46 购买通天令 #tagCMBuyTongTianLing
+
+class tagCMBuyTongTianLing(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x46
+ 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 = 0x46
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMBuyTongTianLing)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 46 购买通天令 //tagCMBuyTongTianLing:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMBuyTongTianLing=tagCMBuyTongTianLing()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyTongTianLing.Cmd,m_NAtagCMBuyTongTianLing.SubCmd))] = m_NAtagCMBuyTongTianLing
#------------------------------------------------------
@@ -9276,6 +10939,7 @@
CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ AutoBuy = 0 #(BYTE AutoBuy)// 自动购买 0-不自动购买,1-自动购买并升星,2-自动购买预览(未满概率时预览消耗时使用)
data = None
def __init__(self):
@@ -9295,6 +10959,7 @@
for i in range(self.CostEquipCnt):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.CostEquipID.append(value)
+ self.AutoBuy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -9306,6 +10971,7 @@
self.CostEquipCnt = 0
self.CostEquipIndex = list()
self.CostEquipID = list()
+ self.AutoBuy = 0
return
def GetLength(self):
@@ -9315,6 +10981,7 @@
length += 1
length += 2 * self.CostEquipCnt
length += 4 * self.CostEquipCnt
+ length += 1
return length
@@ -9327,6 +10994,7 @@
data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
for i in range(self.CostEquipCnt):
data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ data = CommFunc.WriteBYTE(data, self.AutoBuy)
return data
def OutputString(self):
@@ -9335,20 +11003,86 @@
EquipPackIndex:%d,
CostEquipCnt:%d,
CostEquipIndex:%s,
- CostEquipID:%s
+ CostEquipID:%s,
+ AutoBuy:%d
'''\
%(
self.Head.OutputString(),
self.EquipPackIndex,
self.CostEquipCnt,
"...",
- "..."
+ "...",
+ self.AutoBuy
)
return DumpString
m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
+# A5 C6 装备部位星级套装激活 #tagCMEquipPartSuiteActivate
+
+class tagCMEquipPartSuiteActivate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 所属装备阶
+ ("SuiteID", c_ushort), # 套装ID
+ ("SuiteCount", c_ubyte), # 件数
+ ("Star", c_ubyte), # 星数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC6
+ 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 = 0xC6
+ self.ClassLV = 0
+ self.SuiteID = 0
+ self.SuiteCount = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPartSuiteActivate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C6 装备部位星级套装激活 //tagCMEquipPartSuiteActivate:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ SuiteID:%d,
+ SuiteCount:%d,
+ Star:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.SuiteID,
+ self.SuiteCount,
+ self.Star
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartSuiteActivate=tagCMEquipPartSuiteActivate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartSuiteActivate.Cmd,m_NAtagCMEquipPartSuiteActivate.SubCmd))] = m_NAtagCMEquipPartSuiteActivate
#------------------------------------------------------
@@ -9405,6 +11139,114 @@
m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
+
+
+#------------------------------------------------------
+# A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint
+
+class tagCMExchangeTongTianLVPoint(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ExchangePoint", c_int), # 兑换点数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x45
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x45
+ self.ExchangePoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMExchangeTongTianLVPoint)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 45 兑换通天令等级经验积分点 //tagCMExchangeTongTianLVPoint:
+ Cmd:%s,
+ SubCmd:%s,
+ ExchangePoint:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ExchangePoint
+ )
+ return DumpString
+
+
+m_NAtagCMExchangeTongTianLVPoint=tagCMExchangeTongTianLVPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeTongTianLVPoint.Cmd,m_NAtagCMExchangeTongTianLVPoint.SubCmd))] = m_NAtagCMExchangeTongTianLVPoint
+
+
+#------------------------------------------------------
+# A5 32 法器升级 #tagCMFaQiLVUp
+
+class tagCMFaQiLVUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("UseItemCnt", c_ushort), #消耗材料个数
+ ("IsAutoBuy", c_ubyte), #是否自动购买
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x32
+ 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 = 0x32
+ self.UseItemCnt = 0
+ self.IsAutoBuy = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFaQiLVUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
+ Cmd:%s,
+ SubCmd:%s,
+ UseItemCnt:%d,
+ IsAutoBuy:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.UseItemCnt,
+ self.IsAutoBuy
+ )
+ return DumpString
+
+
+m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
#------------------------------------------------------
@@ -9686,6 +11528,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Index", c_ubyte), # 奖励索引,其他按顺序
+ ("IsDaily", c_ubyte), # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
]
def __init__(self):
@@ -9703,6 +11546,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x06
self.Index = 0
+ self.IsDaily = 0
return
def GetLength(self):
@@ -9715,12 +11559,14 @@
DumpString = '''//A5 06 玩家领取在线奖励 //tagCMGetOnlinePrize:
Cmd:%s,
SubCmd:%s,
- Index:%d
+ Index:%d,
+ IsDaily:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index
+ self.Index,
+ self.IsDaily
)
return DumpString
@@ -9738,6 +11584,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("SuccID", c_int), #成就ID
+ ("IsPassport", c_ubyte), #是否通行证奖励
]
def __init__(self):
@@ -9755,6 +11602,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x42
self.SuccID = 0
+ self.IsPassport = 0
return
def GetLength(self):
@@ -9767,18 +11615,128 @@
DumpString = '''// A5 42 领取成就奖励 //tagMCGetSuccessAward:
Cmd:%s,
SubCmd:%s,
- SuccID:%d
+ SuccID:%d,
+ IsPassport:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.SuccID
+ self.SuccID,
+ self.IsPassport
)
return DumpString
m_NAtagMCGetSuccessAward=tagMCGetSuccessAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGetSuccessAward.Cmd,m_NAtagMCGetSuccessAward.SubCmd))] = m_NAtagMCGetSuccessAward
+
+
+#------------------------------------------------------
+# A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward
+
+class tagCMGetTongTianLVAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TTLV", c_ubyte), # 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励
+ ("IsXian", c_ubyte), # 是否领取仙品奖励,仅指定等级奖励有效
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x44
+ 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 = 0x44
+ self.TTLV = 0
+ self.IsXian = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGetTongTianLVAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 44 通天令领取等级奖励 //tagCMGetTongTianLVAward:
+ Cmd:%s,
+ SubCmd:%s,
+ TTLV:%d,
+ IsXian:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TTLV,
+ self.IsXian
+ )
+ return DumpString
+
+
+m_NAtagCMGetTongTianLVAward=tagCMGetTongTianLVAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianLVAward.Cmd,m_NAtagCMGetTongTianLVAward.SubCmd))] = m_NAtagCMGetTongTianLVAward
+
+
+#------------------------------------------------------
+# A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward
+
+class tagCMGetTongTianTaskAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TaskID", c_ubyte), # 任务ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x43
+ 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 = 0x43
+ self.TaskID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGetTongTianTaskAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 43 通天令领取任务奖励 //tagCMGetTongTianTaskAward:
+ Cmd:%s,
+ SubCmd:%s,
+ TaskID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TaskID
+ )
+ return DumpString
+
+
+m_NAtagCMGetTongTianTaskAward=tagCMGetTongTianTaskAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianTaskAward.Cmd,m_NAtagCMGetTongTianTaskAward.SubCmd))] = m_NAtagCMGetTongTianTaskAward
#------------------------------------------------------
@@ -9954,6 +11912,234 @@
#------------------------------------------------------
+# A5 29 骑宠觉醒 #tagCMHorsePetAwake
+
+class tagCMHorsePetAwake(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ushort), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("EatItemID", c_int), # 吞噬的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x29
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x29
+ self.Type = 0
+ self.ID = 0
+ self.EatItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorsePetAwake)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d,
+ ID:%d,
+ EatItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type,
+ self.ID,
+ self.EatItemID
+ )
+ return DumpString
+
+
+m_NAtagCMHorsePetAwake=tagCMHorsePetAwake()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake
+
+
+#------------------------------------------------------
+# A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect
+
+class tagCMHorsePetSkinSelect(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ushort), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("SkinIndex", c_ubyte), # 外观索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x30
+ 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 = 0x30
+ self.Type = 0
+ self.ID = 0
+ self.SkinIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorsePetSkinSelect)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d,
+ ID:%d,
+ SkinIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type,
+ self.ID,
+ self.SkinIndex
+ )
+ return DumpString
+
+
+m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect
+
+
+#------------------------------------------------------
+# A5 35 坐骑升星 #tagCMHorseStarUp
+
+class tagCMHorseStarUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HorseID", c_int), #坐骑ID,对应坐骑表ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x35
+ 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 = 0x35
+ self.HorseID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorseStarUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 35 坐骑升星 //tagCMHorseStarUp:
+ Cmd:%s,
+ SubCmd:%s,
+ HorseID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HorseID
+ )
+ return DumpString
+
+
+m_NAtagCMHorseStarUp=tagCMHorseStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseStarUp.Cmd,m_NAtagCMHorseStarUp.SubCmd))] = m_NAtagCMHorseStarUp
+
+
+#------------------------------------------------------
+# A5 31 坐骑培养 #tagCMHorseTrain
+
+class tagCMHorseTrain(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
+ ("UseItemCnt", c_ushort), #消耗材料个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x31
+ 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 = 0x31
+ self.TrainType = 0
+ self.UseItemCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorseTrain)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 31 坐骑培养 //tagCMHorseTrain:
+ Cmd:%s,
+ SubCmd:%s,
+ TrainType:%d,
+ UseItemCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TrainType,
+ self.UseItemCnt
+ )
+ return DumpString
+
+
+m_NAtagCMHorseTrain=tagCMHorseTrain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseTrain.Cmd,m_NAtagCMHorseTrain.SubCmd))] = m_NAtagCMHorseTrain
+
+
+#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class tagCMHorseUp(Structure):
@@ -9961,8 +12147,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_int), #坐骑ID
- ("UseItemCnt", c_ubyte), #消耗材料个数
+ ("UseItemCnt", c_ushort), #消耗材料个数
("IsAutoBuy", c_ubyte), #是否自动购买
]
@@ -9980,7 +12165,6 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x27
- self.HorseID = 0
self.UseItemCnt = 0
self.IsAutoBuy = 0
return
@@ -9995,14 +12179,12 @@
DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp:
Cmd:%s,
SubCmd:%s,
- HorseID:%d,
UseItemCnt:%d,
IsAutoBuy:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.HorseID,
self.UseItemCnt,
self.IsAutoBuy
)
@@ -10011,6 +12193,110 @@
m_NAtagCMHorseUp=tagCMHorseUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp
+
+
+#------------------------------------------------------
+# A5 34 炼体突破 #tagCMLianTiLVUp
+
+class tagCMLianTiLVUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x34
+ 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 = 0x34
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLianTiLVUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
+
+
+#------------------------------------------------------
+# A5 33 炼体提升 #tagCMLianTiUp
+
+class tagCMLianTiUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("UseItemCnt", c_int), #消耗材料个数
+ ("IsAutoBuy", c_ubyte), #是否自动购买
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x33
+ 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 = 0x33
+ self.UseItemCnt = 0
+ self.IsAutoBuy = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLianTiUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
+ Cmd:%s,
+ SubCmd:%s,
+ UseItemCnt:%d,
+ IsAutoBuy:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.UseItemCnt,
+ self.IsAutoBuy
+ )
+ return DumpString
+
+
+m_NAtagCMLianTiUp=tagCMLianTiUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
#------------------------------------------------------
@@ -10173,7 +12459,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Index", c_int), #选择索引
+ ("ChooseType", c_ubyte), # 1-按等阶,2-按幻化
+ ("LVID", c_ubyte), # 阶等级或幻化ID
]
def __init__(self):
@@ -10190,7 +12477,8 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x02
- self.Index = 0
+ self.ChooseType = 0
+ self.LVID = 0
return
def GetLength(self):
@@ -10203,12 +12491,14 @@
DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse:
Cmd:%s,
SubCmd:%s,
- Index:%d
+ ChooseType:%d,
+ LVID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index
+ self.ChooseType,
+ self.LVID
)
return DumpString
@@ -10304,6 +12594,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("AlchemyID", c_int), # 丹药ID
+ ("AlchemyTimes", c_ushort), # 丹药次数
("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
]
@@ -10322,6 +12613,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x76
self.AlchemyID = 0
+ self.AlchemyTimes = 0
self.DoType = 0
return
@@ -10336,12 +12628,14 @@
Cmd:%s,
SubCmd:%s,
AlchemyID:%d,
+ AlchemyTimes:%d,
DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.AlchemyID,
+ self.AlchemyTimes,
self.DoType
)
return DumpString
@@ -11065,6 +13359,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("SkillTypeID", c_int), # 专精技能ID
+ ("DoType", c_ubyte), # 0-激活 1-使用
]
def __init__(self):
@@ -11082,6 +13377,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x16
self.SkillTypeID = 0
+ self.DoType = 0
return
def GetLength(self):
@@ -11094,12 +13390,14 @@
DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
Cmd:%s,
SubCmd:%s,
- SkillTypeID:%d
+ SkillTypeID:%d,
+ DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.SkillTypeID
+ self.SkillTypeID,
+ self.DoType
)
return DumpString
@@ -11254,6 +13552,58 @@
m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
+
+
+#------------------------------------------------------
+# A5 36 称号升星 #tagCMTitleStarUp
+
+class tagCMTitleStarUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TitleID", c_int), #称号ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x36
+ 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 = 0x36
+ self.TitleID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTitleStarUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 36 称号升星 //tagCMTitleStarUp:
+ Cmd:%s,
+ SubCmd:%s,
+ TitleID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TitleID
+ )
+ return DumpString
+
+
+m_NAtagCMTitleStarUp=tagCMTitleStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTitleStarUp.Cmd,m_NAtagCMTitleStarUp.SubCmd))] = m_NAtagCMTitleStarUp
#------------------------------------------------------
@@ -11581,6 +13931,66 @@
#------------------------------------------------------
+# A6 15 传功操作 #tagCMChuangongOP
+
+class tagCMChuangongOP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("OPType", c_ubyte), # 操作类型:1-邀请;2-回应;3-领奖;
+ ("PlayerID", c_int), # 目标玩家ID;回应时为邀请方玩家ID
+ ("OPData", c_ubyte), # 操作数据,可选:回应时为是否同意
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA6
+ 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 = 0xA6
+ self.SubCmd = 0x15
+ self.OPType = 0
+ self.PlayerID = 0
+ self.OPData = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChuangongOP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A6 15 传功操作 //tagCMChuangongOP:
+ Cmd:%s,
+ SubCmd:%s,
+ OPType:%d,
+ PlayerID:%d,
+ OPData:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.OPType,
+ self.PlayerID,
+ self.OPData
+ )
+ return DumpString
+
+
+m_NAtagCMChuangongOP=tagCMChuangongOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChuangongOP.Cmd,m_NAtagCMChuangongOP.SubCmd))] = m_NAtagCMChuangongOP
+
+
+#------------------------------------------------------
# A6 11 家族改名 #tagCMRenameFamily
class tagCMRenameFamily(Structure):
@@ -11652,19 +14062,98 @@
#------------------------------------------------------
-# A6 05 家族捐献兽粮 #tagCMFamilyDonate
+# A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
-class tagCMFamilyDonate(Structure):
+class tagCMFamilyActivityExchange(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//材料所在背包索引的数量
+ IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
+ ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA6
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.IndexList.append(value)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA6
+ self.Head.SubCmd = 0x06
+ self.Count = 0
+ self.IndexList = list()
+ self.ItemIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2 * self.Count
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteWORD(data, self.IndexList[i])
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ IndexList:%s,
+ ItemIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange
+
+
+#------------------------------------------------------
+# A6 13 家族事务操作 #tagCMFamilyAffairOP
+
+class tagCMFamilyAffairOP(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("OPType", c_ubyte), # 操作类型:1-刷新事务;2-开始事务;3-领取事务奖励;
+ ("AffairID", c_ushort), # 事务ID,可选
]
def __init__(self):
self.Clear()
self.Cmd = 0xA6
- self.SubCmd = 0x05
+ self.SubCmd = 0x13
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11674,29 +14163,87 @@
def Clear(self):
self.Cmd = 0xA6
- self.SubCmd = 0x05
+ self.SubCmd = 0x13
+ self.OPType = 0
+ self.AffairID = 0
return
def GetLength(self):
- return sizeof(tagCMFamilyDonate)
+ return sizeof(tagCMFamilyAffairOP)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A6 05 家族捐献兽粮 //tagCMFamilyDonate:
+ DumpString = '''// A6 13 家族事务操作 //tagCMFamilyAffairOP:
Cmd:%s,
- SubCmd:%s
+ SubCmd:%s,
+ OPType:%d,
+ AffairID:%d
'''\
%(
self.Cmd,
- self.SubCmd
+ self.SubCmd,
+ self.OPType,
+ self.AffairID
)
return DumpString
-m_NAtagCMFamilyDonate=tagCMFamilyDonate()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyDonate.Cmd,m_NAtagCMFamilyDonate.SubCmd))] = m_NAtagCMFamilyDonate
+m_NAtagCMFamilyAffairOP=tagCMFamilyAffairOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyAffairOP.Cmd,m_NAtagCMFamilyAffairOP.SubCmd))] = m_NAtagCMFamilyAffairOP
+
+
+#------------------------------------------------------
+# A6 12 家族捐献货币 #tagCMFamilyMoneyDonate
+
+class tagCMFamilyMoneyDonate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MoneyType", c_ubyte), # 捐献货币类型
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA6
+ 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 = 0xA6
+ self.SubCmd = 0x12
+ self.MoneyType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFamilyMoneyDonate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A6 12 家族捐献货币 //tagCMFamilyMoneyDonate:
+ Cmd:%s,
+ SubCmd:%s,
+ MoneyType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MoneyType
+ )
+ return DumpString
+
+
+m_NAtagCMFamilyMoneyDonate=tagCMFamilyMoneyDonate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyMoneyDonate.Cmd,m_NAtagCMFamilyMoneyDonate.SubCmd))] = m_NAtagCMFamilyMoneyDonate
#------------------------------------------------------
@@ -11809,6 +14356,66 @@
m_NAtagCMFamilyStoreExchange=tagCMFamilyStoreExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyStoreExchange.Cmd,m_NAtagCMFamilyStoreExchange.SubCmd))] = m_NAtagCMFamilyStoreExchange
+
+
+#------------------------------------------------------
+# A6 14 家族阵法升级 #tagCMFamilyZhenfaLVUP
+
+class tagCMFamilyZhenfaLVUP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZhenfaType", c_ubyte), # 阵法类型
+ ("ItemID", c_int), # 消耗的物品ID
+ ("ItemCount", c_ushort), # 消耗个数,默认1
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA6
+ self.SubCmd = 0x14
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA6
+ self.SubCmd = 0x14
+ self.ZhenfaType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFamilyZhenfaLVUP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A6 14 家族阵法升级 //tagCMFamilyZhenfaLVUP:
+ Cmd:%s,
+ SubCmd:%s,
+ ZhenfaType:%d,
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZhenfaType,
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+m_NAtagCMFamilyZhenfaLVUP=tagCMFamilyZhenfaLVUP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyZhenfaLVUP.Cmd,m_NAtagCMFamilyZhenfaLVUP.SubCmd))] = m_NAtagCMFamilyZhenfaLVUP
#------------------------------------------------------
@@ -11928,6 +14535,7 @@
PacketCnt = 0 #(WORD PacketCnt)// 红包数量
MoneyNum = 0 #(WORD MoneyNum)//金钱数量
Wish = "" #(char Wish[33])//祝福语
+ IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
data = None
def __init__(self):
@@ -11943,6 +14551,7 @@
self.PacketCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -11954,6 +14563,7 @@
self.PacketCnt = 0
self.MoneyNum = 0
self.Wish = ""
+ self.IsAnonymous = 0
return
def GetLength(self):
@@ -11963,6 +14573,7 @@
length += 2
length += 2
length += 33
+ length += 1
return length
@@ -11973,6 +14584,7 @@
data = CommFunc.WriteWORD(data, self.PacketCnt)
data = CommFunc.WriteWORD(data, self.MoneyNum)
data = CommFunc.WriteString(data, 33, self.Wish)
+ data = CommFunc.WriteBYTE(data, self.IsAnonymous)
return data
def OutputString(self):
@@ -11981,14 +14593,16 @@
RedPacketID:%d,
PacketCnt:%d,
MoneyNum:%d,
- Wish:%s
+ Wish:%s,
+ IsAnonymous:%d
'''\
%(
self.Head.OutputString(),
self.RedPacketID,
self.PacketCnt,
self.MoneyNum,
- self.Wish
+ self.Wish,
+ self.IsAnonymous
)
return DumpString
@@ -12159,6 +14773,114 @@
m_NAtagCMPetClassUP=tagCMPetClassUP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetClassUP.Cmd,m_NAtagCMPetClassUP.SubCmd))] = m_NAtagCMPetClassUP
+
+
+#------------------------------------------------------
+# A7 06 宠物升星 #tagCMPetStarUp
+
+class tagCMPetStarUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PetItemIndex", c_ubyte), #宠物数据背包索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x06
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA7
+ self.SubCmd = 0x06
+ self.PetItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMPetStarUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 06 宠物升星 //tagCMPetStarUp:
+ Cmd:%s,
+ SubCmd:%s,
+ PetItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PetItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMPetStarUp=tagCMPetStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetStarUp.Cmd,m_NAtagCMPetStarUp.SubCmd))] = m_NAtagCMPetStarUp
+
+
+#------------------------------------------------------
+# A7 05 宠物培养 #tagCMPetTrain
+
+class tagCMPetTrain(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TrainType", c_ubyte), #培养类型: 1-基础培养,2-特殊培养,3-百分比培养
+ ("UseItemCnt", c_ushort), #消耗材料个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x05
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA7
+ self.SubCmd = 0x05
+ self.TrainType = 0
+ self.UseItemCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMPetTrain)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 05 宠物培养 //tagCMPetTrain:
+ Cmd:%s,
+ SubCmd:%s,
+ TrainType:%d,
+ UseItemCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TrainType,
+ self.UseItemCnt
+ )
+ return DumpString
+
+
+m_NAtagCMPetTrain=tagCMPetTrain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetTrain.Cmd,m_NAtagCMPetTrain.SubCmd))] = m_NAtagCMPetTrain
#------------------------------------------------------
@@ -12418,6 +15140,689 @@
#------------------------------------------------------
+# AA 24 Boss历练领奖 #tagCMActBossTrialGetAward
+
+class tagCMActBossTrialGetAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("SubmitCount", c_ushort), #领取凭证个数对应奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ self.ActNum = 0
+ self.SubmitCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActBossTrialGetAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 24 Boss历练领奖 //tagCMActBossTrialGetAward:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ SubmitCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.SubmitCount
+ )
+ return DumpString
+
+
+m_NAtagCMActBossTrialGetAward=tagCMActBossTrialGetAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActBossTrialGetAward.Cmd,m_NAtagCMActBossTrialGetAward.SubCmd))] = m_NAtagCMActBossTrialGetAward
+
+
+#------------------------------------------------------
+# AA 23 Boss历练提交凭证 #tagCMActBossTrialSubmit
+
+class tagCMActBossTrialSubmit(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("SubmitCount", c_ushort), #提交凭证个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x23
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x23
+ self.ActNum = 0
+ self.SubmitCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActBossTrialSubmit)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 23 Boss历练提交凭证 //tagCMActBossTrialSubmit:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ SubmitCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.SubmitCount
+ )
+ return DumpString
+
+
+m_NAtagCMActBossTrialSubmit=tagCMActBossTrialSubmit()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActBossTrialSubmit.Cmd,m_NAtagCMActBossTrialSubmit.SubCmd))] = m_NAtagCMActBossTrialSubmit
+
+
+#------------------------------------------------------
+# AA 09 集字活动兑换 #tagCMActCollectWordsExchange
+
+class tagCMActCollectWordsExchange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号,1 或 2,相互独立的活动,可同时开启
+ ("ExchangeNum", c_ubyte), #兑换编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x09
+ self.ActNum = 0
+ self.ExchangeNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActCollectWordsExchange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 09 集字活动兑换 //tagCMActCollectWordsExchange:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ ExchangeNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.ExchangeNum
+ )
+ return DumpString
+
+
+m_NAtagCMActCollectWordsExchange=tagCMActCollectWordsExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActCollectWordsExchange.Cmd,m_NAtagCMActCollectWordsExchange.SubCmd))] = m_NAtagCMActCollectWordsExchange
+
+
+#------------------------------------------------------
+# AA 15 垃圾分类活动收集已完成的任务垃圾 #tagCMActGarbageGetTaskAward
+
+class tagCMActGarbageGetTaskAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("GarbageTaskID", c_ubyte), #垃圾任务ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x15
+ self.ActNum = 0
+ self.GarbageTaskID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActGarbageGetTaskAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 15 垃圾分类活动收集已完成的任务垃圾 //tagCMActGarbageGetTaskAward:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ GarbageTaskID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.GarbageTaskID
+ )
+ return DumpString
+
+
+m_NAtagCMActGarbageGetTaskAward=tagCMActGarbageGetTaskAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageGetTaskAward.Cmd,m_NAtagCMActGarbageGetTaskAward.SubCmd))] = m_NAtagCMActGarbageGetTaskAward
+
+
+#------------------------------------------------------
+# AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
+
+class tagCMActGarbageSorting(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ GarbageSortingType = 0 #(BYTE GarbageSortingType)//垃圾分类类型,即属于哪种垃圾
+ ItemIndexCount = 0 #(BYTE ItemIndexCount)//垃圾背包中的物品索引数
+ ItemIndexList = list() #(vector<BYTE> ItemIndexList)//垃圾背包中的物品索引列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x14
+ 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.GarbageSortingType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemIndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.ItemIndexList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x14
+ self.ActNum = 0
+ self.GarbageSortingType = 0
+ self.ItemIndexCount = 0
+ self.ItemIndexList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1
+ length += 1 * self.ItemIndexCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.GarbageSortingType)
+ data = CommFunc.WriteBYTE(data, self.ItemIndexCount)
+ for i in range(self.ItemIndexCount):
+ data = CommFunc.WriteBYTE(data, self.ItemIndexList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ GarbageSortingType:%d,
+ ItemIndexCount:%d,
+ ItemIndexList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.GarbageSortingType,
+ self.ItemIndexCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMActGarbageSorting=tagCMActGarbageSorting()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageSorting.Head.Cmd,m_NAtagCMActGarbageSorting.Head.SubCmd))] = m_NAtagCMActGarbageSorting
+
+
+#------------------------------------------------------
+# AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
+
+class tagCMActGodGiftChooseItemInfo(Structure):
+ ItemLibType = 0 #(BYTE ItemLibType)//物品库类型
+ Count = 0 #(BYTE Count)//选择个数
+ ItemNumList = list() #(vector<BYTE> ItemNumList)//选择物品编号列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.ItemNumList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.ItemLibType = 0
+ self.Count = 0
+ self.ItemNumList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ItemLibType)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteBYTE(data, self.ItemNumList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemLibType:%d,
+ Count:%d,
+ ItemNumList:%s
+ '''\
+ %(
+ self.ItemLibType,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagCMActGodGiftChooseItem(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ ChooseLibCount = 0 #(BYTE ChooseLibCount)//选择库个数
+ ChooseItemList = list() #(vector<tagCMActGodGiftChooseItemInfo> ChooseItemList)//选择库物品信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ 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.ChooseLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ChooseLibCount):
+ temChooseItemList = tagCMActGodGiftChooseItemInfo()
+ _pos = temChooseItemList.ReadData(_lpData, _pos)
+ self.ChooseItemList.append(temChooseItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ self.ActNum = 0
+ self.ChooseLibCount = 0
+ self.ChooseItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.ChooseLibCount):
+ length += self.ChooseItemList[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.WriteBYTE(data, self.ChooseLibCount)
+ for i in range(self.ChooseLibCount):
+ data = CommFunc.WriteString(data, self.ChooseItemList[i].GetLength(), self.ChooseItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ ChooseLibCount:%d,
+ ChooseItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.ChooseLibCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMActGodGiftChooseItem=tagCMActGodGiftChooseItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftChooseItem.Head.Cmd,m_NAtagCMActGodGiftChooseItem.Head.SubCmd))] = m_NAtagCMActGodGiftChooseItem
+
+
+#------------------------------------------------------
+# AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
+
+class tagCMActGodGiftlottery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x21
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x21
+ self.ActNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActGodGiftlottery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 21 天帝礼包抽奖 //tagCMActGodGiftlottery:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum
+ )
+ return DumpString
+
+
+m_NAtagCMActGodGiftlottery=tagCMActGodGiftlottery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftlottery.Cmd,m_NAtagCMActGodGiftlottery.SubCmd))] = m_NAtagCMActGodGiftlottery
+
+
+#------------------------------------------------------
+# AA 22 天帝礼包重置 #tagCMActGodGiftReset
+
+class tagCMActGodGiftReset(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x22
+ 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 = 0x22
+ self.ActNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActGodGiftReset)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 22 天帝礼包重置 //tagCMActGodGiftReset:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum
+ )
+ return DumpString
+
+
+m_NAtagCMActGodGiftReset=tagCMActGodGiftReset()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset
+
+
+#------------------------------------------------------
+# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
+
+class tagCMActTurntableChooseItem(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ GoodItemNumCount = 0 #(BYTE GoodItemNumCount)
+ GoodItemNumList = list() #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
+ SuperItemNumCount = 0 #(BYTE SuperItemNumCount)
+ SuperItemNumList = list() #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GoodItemNumCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.GoodItemNumList.append(value)
+ self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SuperItemNumCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.SuperItemNumList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x12
+ self.ActNum = 0
+ self.GoodItemNumCount = 0
+ self.GoodItemNumList = list()
+ self.SuperItemNumCount = 0
+ self.SuperItemNumList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1 * self.GoodItemNumCount
+ length += 1
+ length += 1 * self.SuperItemNumCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
+ for i in range(self.GoodItemNumCount):
+ data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
+ data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
+ for i in range(self.SuperItemNumCount):
+ data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ GoodItemNumCount:%d,
+ GoodItemNumList:%s,
+ SuperItemNumCount:%d,
+ SuperItemNumList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.GoodItemNumCount,
+ "...",
+ self.SuperItemNumCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
+
+
+#------------------------------------------------------
+# AA 13 启动转盘 #tagCMActTurntableStart
+
+class tagCMActTurntableStart(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x13
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x13
+ self.ActNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActTurntableStart)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum
+ )
+ return DumpString
+
+
+m_NAtagCMActTurntableStart=tagCMActTurntableStart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
+
+
+#------------------------------------------------------
# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
class tagCMActWishingRefresh(Structure):
@@ -12467,6 +15872,188 @@
m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
+
+
+#------------------------------------------------------
+# AA 18 仙匣秘境活动奖池刷新 #tagCMActXianXiaMJAwardPoolRefresh
+
+class tagCMActXianXiaMJAwardPoolRefresh(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x18
+ 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 = 0x18
+ self.ActNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActXianXiaMJAwardPoolRefresh)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 18 仙匣秘境活动奖池刷新 //tagCMActXianXiaMJAwardPoolRefresh:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum
+ )
+ return DumpString
+
+
+m_NAtagCMActXianXiaMJAwardPoolRefresh=tagCMActXianXiaMJAwardPoolRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJAwardPoolRefresh.Cmd,m_NAtagCMActXianXiaMJAwardPoolRefresh.SubCmd))] = m_NAtagCMActXianXiaMJAwardPoolRefresh
+
+
+#------------------------------------------------------
+# AA 17 仙匣秘境活动抽奖 #tagCMActXianXiaMJLottery
+
+class tagCMActXianXiaMJLottery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("PosNum", c_ubyte), #玩家点击的奖励位置编号,从1开始
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x17
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x17
+ self.ActNum = 0
+ self.PosNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActXianXiaMJLottery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 17 仙匣秘境活动抽奖 //tagCMActXianXiaMJLottery:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ PosNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.PosNum
+ )
+ return DumpString
+
+
+m_NAtagCMActXianXiaMJLottery=tagCMActXianXiaMJLottery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJLottery.Cmd,m_NAtagCMActXianXiaMJLottery.SubCmd))] = m_NAtagCMActXianXiaMJLottery
+
+
+#------------------------------------------------------
+# AA 16 仙匣秘境活动选择大奖 #tagCMActXianXiaMJSuperItem
+
+class tagCMActXianXiaMJSuperItem(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)//活动编号
+ SuperItemCount = 0 #(BYTE SuperItemCount)//选择物品数量
+ SuperItemIDList = list() #(vector<DWORD> SuperItemIDList)//选择的大奖库物品ID列表,每次重新选择需要发送全部已选择的大奖物品ID,不能只发单个物品ID;
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SuperItemCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SuperItemIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ self.ActNum = 0
+ self.SuperItemCount = 0
+ self.SuperItemIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.SuperItemCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ for i in range(self.SuperItemCount):
+ data = CommFunc.WriteDWORD(data, self.SuperItemIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ SuperItemCount:%d,
+ SuperItemIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.SuperItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMActXianXiaMJSuperItem=tagCMActXianXiaMJSuperItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActXianXiaMJSuperItem.Head.Cmd,m_NAtagCMActXianXiaMJSuperItem.Head.SubCmd))] = m_NAtagCMActXianXiaMJSuperItem
#------------------------------------------------------
@@ -12534,6 +16121,114 @@
#------------------------------------------------------
+# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
+
+class tagCMFeastWishBottleChooseItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BottleNum", c_ubyte), #瓶子编号
+ ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x10
+ self.BottleNum = 0
+ self.RecordIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFeastWishBottleChooseItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
+ Cmd:%s,
+ SubCmd:%s,
+ BottleNum:%d,
+ RecordIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BottleNum,
+ self.RecordIndex
+ )
+ return DumpString
+
+
+m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
+
+
+#------------------------------------------------------
+# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
+
+class tagCMFeastWishPoolWish(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("WishCount", c_ubyte), #祝福次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x11
+ self.WishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFeastWishPoolWish)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
+ Cmd:%s,
+ SubCmd:%s,
+ WishCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.WishCount
+ )
+ return DumpString
+
+
+m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
+
+
+#------------------------------------------------------
# AA 05 限时抢购预约 #tagCMFlashSaleAppointment
class tagCMFlashSaleAppointment(Structure):
@@ -12541,6 +16236,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
("GoodsID", c_int), # 抢购商品标识
("State", c_ubyte), # 1-预约 0-取消
]
@@ -12559,6 +16255,7 @@
def Clear(self):
self.Cmd = 0xAA
self.SubCmd = 0x05
+ self.ActNum = 0
self.GoodsID = 0
self.State = 0
return
@@ -12573,12 +16270,14 @@
DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
Cmd:%s,
SubCmd:%s,
+ ActNum:%d,
GoodsID:%d,
State:%d
'''\
%(
self.Cmd,
self.SubCmd,
+ self.ActNum,
self.GoodsID,
self.State
)
@@ -13438,6 +17137,154 @@
#------------------------------------------------------
+# B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
+
+class tagCMActivityPlaceQuery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x29
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x29
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceQuery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery
+
+
+#------------------------------------------------------
+# B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
+
+class tagCMActivityPlaceQuickFinish(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FinishCount", c_ubyte), #完成次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x28
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x28
+ self.FinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceQuickFinish)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish:
+ Cmd:%s,
+ SubCmd:%s,
+ FinishCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.FinishCount
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish
+
+
+#------------------------------------------------------
+# B0 27 活跃放置启动 #tagCMActivityPlaceStart
+
+class tagCMActivityPlaceStart(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x27
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x27
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceStart)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart
+
+
+#------------------------------------------------------
# B0 50 钓鱼收杆 #tagCMDoFish
class tagCMDoFish(Structure):
@@ -13591,6 +17438,118 @@
m_NAtagReceiveFamilyArrestAward=tagReceiveFamilyArrestAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagReceiveFamilyArrestAward.Cmd,m_NAtagReceiveFamilyArrestAward.SubCmd))] = m_NAtagReceiveFamilyArrestAward
+
+
+#------------------------------------------------------
+# B0 10 请求协助Boss #tagCMRequestAssistBoss
+
+class tagCMRequestAssistBoss(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x10
+ self.ObjID = 0
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRequestAssistBoss)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 10 请求协助Boss //tagCMRequestAssistBoss:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagCMRequestAssistBoss=tagCMRequestAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistBoss.Cmd,m_NAtagCMRequestAssistBoss.SubCmd))] = m_NAtagCMRequestAssistBoss
+
+
+#------------------------------------------------------
+# B0 11 请求协助组队副本 #tagCMRequestAssistTeamFB
+
+class tagCMRequestAssistTeamFB(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_ushort),
+ ("LineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x11
+ self.MapID = 0
+ self.LineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRequestAssistTeamFB)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 11 请求协助组队副本 //tagCMRequestAssistTeamFB:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ LineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.LineID
+ )
+ return DumpString
+
+
+m_NAtagCMRequestAssistTeamFB=tagCMRequestAssistTeamFB()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistTeamFB.Cmd,m_NAtagCMRequestAssistTeamFB.SubCmd))] = m_NAtagCMRequestAssistTeamFB
#------------------------------------------------------
@@ -13834,62 +17793,6 @@
#------------------------------------------------------
-# B1 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize
-
-class tagCMGiveCustomFBPrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x09
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x09
- self.MapID = 0
- self.FuncLineID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGiveCustomFBPrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID
- )
- return DumpString
-
-
-m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize
-
-
-#------------------------------------------------------
# B1 06 助战召唤 #tagCMHelpBattleCall
class tagCMHelpBattleCall(Structure):
@@ -14106,62 +18009,6 @@
#------------------------------------------------------
-# B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize
-
-class tagCMRefreshCustomFBPrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- self.MapID = 0
- self.FuncLineID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMRefreshCustomFBPrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID
- )
- return DumpString
-
-
-m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize
-
-
-#------------------------------------------------------
# B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble
class tagCMSetFMTDouble(Structure):
@@ -14214,13 +18061,80 @@
#------------------------------------------------------
+# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
+
+class tagCMActivateFuncSysPrivilege(Structure):
+ Head = tagHead()
+ ActivateCount = 0 #(BYTE ActivateCount)// 激活个数
+ ActivateFuncSysIDList = list() #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActivateCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.ActivateFuncSysIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x11
+ self.ActivateCount = 0
+ self.ActivateFuncSysIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.ActivateCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActivateCount)
+ for i in range(self.ActivateCount):
+ data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActivateCount:%d,
+ ActivateFuncSysIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActivateCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
+
+
+#------------------------------------------------------
# B2 06 玩家加点 #tagCMAddPoint
class tagCMAddPoint(Structure):
Head = tagHead()
PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
- PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
+ PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表
data = None
def __init__(self):
@@ -14237,7 +18151,7 @@
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.PointAttrIDList.append(value)
for i in range(self.PointAttrIDCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PointValueList.append(value)
return _pos
@@ -14256,7 +18170,7 @@
length += self.Head.GetLength()
length += 1
length += 1 * self.PointAttrIDCount
- length += 2 * self.PointAttrIDCount
+ length += 4 * self.PointAttrIDCount
return length
@@ -14267,7 +18181,7 @@
for i in range(self.PointAttrIDCount):
data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
for i in range(self.PointAttrIDCount):
- data = CommFunc.WriteWORD(data, self.PointValueList[i])
+ data = CommFunc.WriteDWORD(data, self.PointValueList[i])
return data
def OutputString(self):
@@ -14288,6 +18202,326 @@
m_NAtagCMAddPoint=tagCMAddPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
+
+
+#------------------------------------------------------
+# B2 10 竞技场挑战玩家 #tagCMArenaBattle
+
+class tagCMArenaBattle(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TagPlayerID", c_int), # 目标玩家ID或机器人ID
+ ("Result", c_ubyte), # 0-进入自定义场景发送通知后端;1-胜利(后端处理,暂时不需要发送此状态);2-失败(前端被对手击杀需要发送此状态)
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x10
+ self.TagPlayerID = 0
+ self.Result = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMArenaBattle)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 10 竞技场挑战玩家 //tagCMArenaBattle:
+ Cmd:%s,
+ SubCmd:%s,
+ TagPlayerID:%d,
+ Result:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TagPlayerID,
+ self.Result
+ )
+ return DumpString
+
+
+m_NAtagCMArenaBattle=tagCMArenaBattle()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaBattle.Cmd,m_NAtagCMArenaBattle.SubCmd))] = m_NAtagCMArenaBattle
+
+
+#------------------------------------------------------
+# B2 09 竞技场匹配玩家 #tagCMArenaMatch
+
+class tagCMArenaMatch(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsRefresh", c_ubyte), # 0-打开界面无匹配数据时时查询,1-强制刷新匹配列表
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x09
+ self.IsRefresh = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMArenaMatch)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 09 竞技场匹配玩家 //tagCMArenaMatch:
+ Cmd:%s,
+ SubCmd:%s,
+ IsRefresh:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsRefresh
+ )
+ return DumpString
+
+
+m_NAtagCMArenaMatch=tagCMArenaMatch()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch
+
+
+#------------------------------------------------------
+# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
+
+class tagCMGetFuncSysPrivilegeAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FuncSysID", c_ubyte), # 功能系统ID
+ ("DayNum", c_ubyte), # 第X天,1为第1天
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x12
+ self.FuncSysID = 0
+ self.DayNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGetFuncSysPrivilegeAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
+ Cmd:%s,
+ SubCmd:%s,
+ FuncSysID:%d,
+ DayNum:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.FuncSysID,
+ self.DayNum
+ )
+ return DumpString
+
+
+m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
+
+
+#------------------------------------------------------
+# B2 16 古宝激活 #tagCMGubaoActivate
+
+class tagCMGubaoActivate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GubaoID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ self.GubaoID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGubaoActivate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 16 古宝激活 //tagCMGubaoActivate:
+ Cmd:%s,
+ SubCmd:%s,
+ GubaoID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GubaoID
+ )
+ return DumpString
+
+
+m_NAtagCMGubaoActivate=tagCMGubaoActivate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoActivate.Cmd,m_NAtagCMGubaoActivate.SubCmd))] = m_NAtagCMGubaoActivate
+
+
+#------------------------------------------------------
+# B2 18 古宝升级 #tagCMGubaoLVUp
+
+class tagCMGubaoLVUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GubaoID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x18
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x18
+ self.GubaoID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGubaoLVUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 18 古宝升级 //tagCMGubaoLVUp:
+ Cmd:%s,
+ SubCmd:%s,
+ GubaoID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GubaoID
+ )
+ return DumpString
+
+
+m_NAtagCMGubaoLVUp=tagCMGubaoLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoLVUp.Cmd,m_NAtagCMGubaoLVUp.SubCmd))] = m_NAtagCMGubaoLVUp
+
+
+#------------------------------------------------------
+# B2 17 古宝升星 #tagCMGubaoStarUp
+
+class tagCMGubaoStarUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GubaoID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x17
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x17
+ self.GubaoID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGubaoStarUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 17 古宝升星 //tagCMGubaoStarUp:
+ Cmd:%s,
+ SubCmd:%s,
+ GubaoID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GubaoID
+ )
+ return DumpString
+
+
+m_NAtagCMGubaoStarUp=tagCMGubaoStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoStarUp.Cmd,m_NAtagCMGubaoStarUp.SubCmd))] = m_NAtagCMGubaoStarUp
#------------------------------------------------------
@@ -14336,6 +18570,125 @@
m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
+
+
+#------------------------------------------------------
+# B2 19 神通升级 #tagCMShentongLVUp
+
+class tagCMShentongLVUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ShentongID", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x19
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x19
+ self.ShentongID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMShentongLVUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
+ Cmd:%s,
+ SubCmd:%s,
+ ShentongID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ShentongID
+ )
+ return DumpString
+
+
+m_NAtagCMShentongLVUp=tagCMShentongLVUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
+
+
+#------------------------------------------------------
+# B2 20 神通技能设置 #tagCMShentongSkillSet
+
+class tagCMShentongSkillSet(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ SkillIDList = list() #(vector<DWORD> SkillIDList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x20
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SkillIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x20
+ self.Count = 0
+ self.SkillIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SkillIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
#------------------------------------------------------
@@ -14622,6 +18975,498 @@
#------------------------------------------------------
+# B3 17 情戒解锁 #tagCMLoveRingUnlock
+
+class tagCMLoveRingUnlock(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x17
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x17
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLoveRingUnlock)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
+
+
+#------------------------------------------------------
+# B3 18 情戒升级 #tagCMLoveRingUp
+
+class tagCMLoveRingUp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("UseItemCnt", c_int), #消耗材料个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x18
+ 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 = 0x18
+ self.UseItemCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLoveRingUp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
+ Cmd:%s,
+ SubCmd:%s,
+ UseItemCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.UseItemCnt
+ )
+ return DumpString
+
+
+m_NAtagCMLoveRingUp=tagCMLoveRingUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
+
+
+#------------------------------------------------------
+# B3 15 离婚 #tagCMMarryBreak
+
+class tagCMMarryBreak(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BreakType", c_ubyte), # 0-和平离婚;1-强制离婚
+ ]
+
+ 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.BreakType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMarryBreak)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
+ Cmd:%s,
+ SubCmd:%s,
+ BreakType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BreakType
+ )
+ return DumpString
+
+
+m_NAtagCMMarryBreak=tagCMMarryBreak()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
+
+
+#------------------------------------------------------
+# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
+
+class tagCMMarryBuyFireworks(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerIDA", c_int), # 喜糖所属玩家IDA
+ ("PlayerIDB", c_int), # 喜糖所属玩家IDB
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x14
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x14
+ self.PlayerIDA = 0
+ self.PlayerIDB = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMarryBuyFireworks)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerIDA:%d,
+ PlayerIDB:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerIDA,
+ self.PlayerIDB
+ )
+ return DumpString
+
+
+m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
+
+
+#------------------------------------------------------
+# B3 13 吃喜糖 #tagCMMarryEatCandy
+
+class tagCMMarryEatCandy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerIDA", c_int), # 喜糖所属玩家IDA
+ ("PlayerIDB", c_int), # 喜糖所属玩家IDB
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x13
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x13
+ self.PlayerIDA = 0
+ self.PlayerIDB = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMarryEatCandy)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerIDA:%d,
+ PlayerIDB:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerIDA,
+ self.PlayerIDB
+ )
+ return DumpString
+
+
+m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
+
+
+#------------------------------------------------------
+# B3 11 提亲 #tagCMMarryReq
+
+class tagCMMarryReq(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TagPlayerID", c_int), # 目标玩家ID
+ ("BridePriceID", c_ubyte), # 聘礼ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x11
+ self.TagPlayerID = 0
+ self.BridePriceID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMarryReq)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 11 提亲 //tagCMMarryReq:
+ Cmd:%s,
+ SubCmd:%s,
+ TagPlayerID:%d,
+ BridePriceID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TagPlayerID,
+ self.BridePriceID
+ )
+ return DumpString
+
+
+m_NAtagCMMarryReq=tagCMMarryReq()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
+
+
+#------------------------------------------------------
+# B3 10 送礼物 #tagCMSendGifts
+
+class tagCMSendGifts(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TagPlayerID", c_int), # 目标玩家ID
+ ("GiftNum", c_ushort), # 赠送礼物编号
+ ("GiftCount", c_int), # 赠送礼物数量
+ ("IsAutoBuy", c_ubyte), # 是否自动购买
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB3
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB3
+ self.SubCmd = 0x10
+ self.TagPlayerID = 0
+ self.GiftNum = 0
+ self.GiftCount = 0
+ self.IsAutoBuy = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSendGifts)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
+ Cmd:%s,
+ SubCmd:%s,
+ TagPlayerID:%d,
+ GiftNum:%d,
+ GiftCount:%d,
+ IsAutoBuy:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TagPlayerID,
+ self.GiftNum,
+ self.GiftCount,
+ self.IsAutoBuy
+ )
+ return DumpString
+
+
+m_NAtagCMSendGifts=tagCMSendGifts()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
+
+
+#------------------------------------------------------
+# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
+
+class tagCMRecyclePriWoodPile(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0F
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0F
+ self.ObjID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRecyclePriWoodPile)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID
+ )
+ return DumpString
+
+
+m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
+
+
+#------------------------------------------------------
+# B4 0E 玩家掉血 #tagCMRoleLostHP
+
+class tagCMRoleLostHP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LostHP", c_int),
+ ("LostHPEx", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0E
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0E
+ self.LostHP = 0
+ self.LostHPEx = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRoleLostHP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
+ Cmd:%s,
+ SubCmd:%s,
+ LostHP:%d,
+ LostHPEx:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LostHP,
+ self.LostHPEx
+ )
+ return DumpString
+
+
+m_NAtagCMRoleLostHP=tagCMRoleLostHP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
+
+
+#------------------------------------------------------
# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
class tagCMSummonPriWoodPile(Structure):
@@ -14631,6 +19476,8 @@
("SubCmd", c_ubyte),
("NPCID", c_int),
("Count", c_ubyte), #默认1个,最多5个
+ ("HP", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
+ ("HPEx", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
]
def __init__(self):
@@ -14649,6 +19496,8 @@
self.SubCmd = 0x0C
self.NPCID = 0
self.Count = 0
+ self.HP = 0
+ self.HPEx = 0
return
def GetLength(self):
@@ -14662,13 +19511,17 @@
Cmd:%s,
SubCmd:%s,
NPCID:%d,
- Count:%d
+ Count:%d,
+ HP:%d,
+ HPEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.NPCID,
- self.Count
+ self.Count,
+ self.HP,
+ self.HPEx
)
return DumpString
@@ -15182,6 +20035,7 @@
("ObjID", c_int),
("AttackType", c_ubyte), #爆击, miss
("HurtHP", c_int),
+ ("HurtHPEx", c_int),
]
def __init__(self):
@@ -15198,6 +20052,7 @@
self.ObjID = 0
self.AttackType = 0
self.HurtHP = 0
+ self.HurtHPEx = 0
return
def GetLength(self):
@@ -15211,13 +20066,15 @@
ObjType:%d,
ObjID:%d,
AttackType:%d,
- HurtHP:%d
+ HurtHP:%d,
+ HurtHPEx:%d
'''\
%(
self.ObjType,
self.ObjID,
self.AttackType,
- self.HurtHP
+ self.HurtHP,
+ self.HurtHPEx
)
return DumpString
@@ -15583,7 +20440,7 @@
class tagCMBiddingAuctionItem(Structure):
Head = tagHead()
ItemGUID = "" #(char ItemGUID[40])
- BiddingPrice = 0 #(WORD BiddingPrice)//竞价价格
+ BiddingPrice = 0 #(DWORD BiddingPrice)//竞价价格
data = None
def __init__(self):
@@ -15596,7 +20453,7 @@
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -15612,7 +20469,7 @@
length = 0
length += self.Head.GetLength()
length += 40
- length += 2
+ length += 4
return length
@@ -15620,7 +20477,7 @@
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 40, self.ItemGUID)
- data = CommFunc.WriteWORD(data, self.BiddingPrice)
+ data = CommFunc.WriteDWORD(data, self.BiddingPrice)
return data
def OutputString(self):
@@ -15799,6 +20656,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("ItemIndex", c_ubyte), #物品在背包中索引
+ ("SellCount", c_ushort), #上架个数,0代表全部上架
]
def __init__(self):
@@ -15816,6 +20674,7 @@
self.Cmd = 0xB5
self.SubCmd = 0x13
self.ItemIndex = 0
+ self.SellCount = 0
return
def GetLength(self):
@@ -15828,18 +20687,77 @@
DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
Cmd:%s,
SubCmd:%s,
- ItemIndex:%d
+ ItemIndex:%d,
+ SellCount:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ItemIndex
+ self.ItemIndex,
+ self.SellCount
)
return DumpString
m_NAtagCMSellAuctionItem=tagCMSellAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem
+
+
+#------------------------------------------------------
+# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem
+
+class tagCMUnsellAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x15
+ self.ItemGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID
+ )
+ return DumpString
+
+
+m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem
#------------------------------------------------------
@@ -15896,6 +20814,322 @@
m_NAtagCMChangeTeamCheckState=tagCMChangeTeamCheckState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeTeamCheckState.Cmd,m_NAtagCMChangeTeamCheckState.SubCmd))] = m_NAtagCMChangeTeamCheckState
+
+
+#------------------------------------------------------
+# C1 22 跨服排位竞猜 #tagCMChampionshipGuess
+
+class tagCMChampionshipGuess(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), #排位数据分区ID
+ ("GuessType", c_ubyte), #竞猜类型 8-8强;4-4强排位
+ ("PlayerID", c_int), #目标玩家ID
+ ("GuessCount", c_ubyte), #投注/追加份数
+ ("GuessRank", c_ubyte), # 竞猜名次,没有名次的竞猜默认0;1-代表第一名
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x22
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x22
+ self.ZoneID = 0
+ self.GuessType = 0
+ self.PlayerID = 0
+ self.GuessCount = 0
+ self.GuessRank = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChampionshipGuess)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 22 跨服排位竞猜 //tagCMChampionshipGuess:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d,
+ GuessType:%d,
+ PlayerID:%d,
+ GuessCount:%d,
+ GuessRank:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID,
+ self.GuessType,
+ self.PlayerID,
+ self.GuessCount,
+ self.GuessRank
+ )
+ return DumpString
+
+
+m_NAtagCMChampionshipGuess=tagCMChampionshipGuess()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipGuess.Cmd,m_NAtagCMChampionshipGuess.SubCmd))] = m_NAtagCMChampionshipGuess
+
+
+#------------------------------------------------------
+# C1 20 跨服排位仙官申请 #tagCMChampionshipOfficialApply
+
+class tagCMChampionshipOfficialApply(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), #仙官数据分区ID
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #申请官职ID
+ ("Cancel", c_ubyte), #是否取消申请,默认0-申请;1-取消申请
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x20
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x20
+ self.ZoneID = 0
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.Cancel = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChampionshipOfficialApply)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 20 跨服排位仙官申请 //tagCMChampionshipOfficialApply:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ Cancel:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.Cancel
+ )
+ return DumpString
+
+
+m_NAtagCMChampionshipOfficialApply=tagCMChampionshipOfficialApply()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialApply.Cmd,m_NAtagCMChampionshipOfficialApply.SubCmd))] = m_NAtagCMChampionshipOfficialApply
+
+
+#------------------------------------------------------
+# C1 21 跨服排位仙官挑战 #tagCMChampionshipOfficialChallenge
+
+class tagCMChampionshipOfficialChallenge(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), #仙官数据分区ID
+ ("MainOfficialID", c_ushort), #界主官职ID
+ ("OfficialID", c_ushort), #挑战的目标官职ID
+ ("PlayerID", c_int), #挑战时的目标玩家ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x21
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x21
+ self.ZoneID = 0
+ self.MainOfficialID = 0
+ self.OfficialID = 0
+ self.PlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChampionshipOfficialChallenge)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 21 跨服排位仙官挑战 //tagCMChampionshipOfficialChallenge:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d,
+ MainOfficialID:%d,
+ OfficialID:%d,
+ PlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID,
+ self.MainOfficialID,
+ self.OfficialID,
+ self.PlayerID
+ )
+ return DumpString
+
+
+m_NAtagCMChampionshipOfficialChallenge=tagCMChampionshipOfficialChallenge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipOfficialChallenge.Cmd,m_NAtagCMChampionshipOfficialChallenge.SubCmd))] = m_NAtagCMChampionshipOfficialChallenge
+
+
+#------------------------------------------------------
+# C1 23 跨服排位膜拜 #tagCMChampionshipWorship
+
+class tagCMChampionshipWorship(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ZoneID", c_ubyte), #仙官数据分区ID
+ ("PlayerID", c_int), #目标玩家ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x23
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x23
+ self.ZoneID = 0
+ self.PlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMChampionshipWorship)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 23 跨服排位膜拜 //tagCMChampionshipWorship:
+ Cmd:%s,
+ SubCmd:%s,
+ ZoneID:%d,
+ PlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ZoneID,
+ self.PlayerID
+ )
+ return DumpString
+
+
+m_NAtagCMChampionshipWorship=tagCMChampionshipWorship()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChampionshipWorship.Cmd,m_NAtagCMChampionshipWorship.SubCmd))] = m_NAtagCMChampionshipWorship
+
+
+#------------------------------------------------------
+# C1 09 跨服战场购买开启场次 #tagCMCrossBattlefieldBuyOpen
+
+class tagCMCrossBattlefieldBuyOpen(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Hour", c_ubyte), #战场开启时
+ ("Minute", c_ubyte), #战场开启分
+ ("Faction", c_ubyte), #阵营 1-红;2-蓝
+ ("ServerOnly", c_ubyte), #是否仅本服玩家可加入,0-否,1-是
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x09
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x09
+ self.Hour = 0
+ self.Minute = 0
+ self.Faction = 0
+ self.ServerOnly = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossBattlefieldBuyOpen)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 09 跨服战场购买开启场次 //tagCMCrossBattlefieldBuyOpen:
+ Cmd:%s,
+ SubCmd:%s,
+ Hour:%d,
+ Minute:%d,
+ Faction:%d,
+ ServerOnly:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Hour,
+ self.Minute,
+ self.Faction,
+ self.ServerOnly
+ )
+ return DumpString
+
+
+m_NAtagCMCrossBattlefieldBuyOpen=tagCMCrossBattlefieldBuyOpen()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossBattlefieldBuyOpen.Cmd,m_NAtagCMCrossBattlefieldBuyOpen.SubCmd))] = m_NAtagCMCrossBattlefieldBuyOpen
#------------------------------------------------------
@@ -16272,3 +21506,55 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
+
+
+#------------------------------------------------------
+# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
+
+class tagCMLuckyCloudBuy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BuyCount", c_ushort), # 购买份数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC1
+ self.SubCmd = 0x10
+ self.BuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLuckyCloudBuy)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy:
+ Cmd:%s,
+ SubCmd:%s,
+ BuyCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BuyCount
+ )
+ return DumpString
+
+
+m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy
\ No newline at end of file
--
Gitblit v1.8.0