From 4bf976c6e6af3c7bb6bcb2798544b7f47cd7844d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 22 三月 2024 15:48:37 +0800
Subject: [PATCH] 10138 内存分析(修复读取活动配置部分属性错误bug)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 4396 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 4,079 insertions(+), 317 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 0a29534..52f7c44 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.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):
@@ -1301,6 +1249,58 @@
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
#------------------------------------------------------
@@ -2117,6 +2117,110 @@
#------------------------------------------------------
+# B0 34 福地请求结算奖励 #tagCGMineAreaAwardGet
+
+class tagCGMineAreaAwardGet(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x34
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGMineAreaAwardGet)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 34 福地请求结算奖励 //tagCGMineAreaAwardGet:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGMineAreaAwardGet=tagCGMineAreaAwardGet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaAwardGet.Cmd,m_NAtagCGMineAreaAwardGet.SubCmd))] = m_NAtagCGMineAreaAwardGet
+
+
+#------------------------------------------------------
+# B0 33 福地查看 #tagCGMineAreaView
+
+class tagCGMineAreaView(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("QueryType", c_ubyte), # 查询同步类型:0-后端主动同步;1-查看指定福地;2-查看道友福地列表;3-查看周围随机福地列表;4-退出他人福地;5-查看记录
+ ("QueryValue", c_int), # 查询值,类型1时-发送目标玩家ID;3时-发送是否重新随机
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x33
+ self.QueryType = 0
+ self.QueryValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGMineAreaView)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 33 福地查看 //tagCGMineAreaView:
+ Cmd:%s,
+ SubCmd:%s,
+ QueryType:%d,
+ QueryValue:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.QueryType,
+ self.QueryValue
+ )
+ return DumpString
+
+
+m_NAtagCGMineAreaView=tagCGMineAreaView()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMineAreaView.Cmd,m_NAtagCGMineAreaView.SubCmd))] = m_NAtagCGMineAreaView
+
+
+#------------------------------------------------------
#B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState
class tagQueryFamilyArrestOverState(Structure):
@@ -2275,6 +2379,222 @@
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
#------------------------------------------------------
@@ -3719,6 +4039,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):
@@ -3764,6 +4500,106 @@
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
#------------------------------------------------------
@@ -3939,6 +4775,196 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# A1 01 玩家电脑信息 #tagCMPCInfo
class tagCMPCInfo(Structure):
@@ -4066,7 +5092,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RecordID", c_ubyte), #充值记录ID,也就是充值ID,发0则查全部
+ ("RecordID", c_ushort), #充值记录ID,也就是充值ID,发0则查全部
]
def __init__(self):
@@ -5766,6 +6792,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):
@@ -6756,98 +7834,52 @@
# A3 30 装备神装进阶 #tagCMEquipEvolve
class tagCMEquipEvolve(Structure):
- Head = tagHead()
- EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
- NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
- NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
- NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
- NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
- NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("EquipIndex", c_ubyte), # 要进阶的装备在装备背包中索引
+ ]
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x30
+ self.Cmd = 0xA3
+ self.SubCmd = 0x30
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.NeedItemIDIndexCnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.NeedItemIDIndex.append(value)
- self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.NeedSuitIndexCnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.NeedSuitIndex.append(value)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x30
+ self.Cmd = 0xA3
+ self.SubCmd = 0x30
self.EquipIndex = 0
- self.NeedEquipIDIndex = 0
- self.NeedItemIDIndexCnt = 0
- self.NeedItemIDIndex = list()
- self.NeedSuitIndexCnt = 0
- self.NeedSuitIndex = list()
return
def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1
- length += 1 * self.NeedItemIDIndexCnt
- length += 1
- length += 1 * self.NeedSuitIndexCnt
-
- return length
+ return sizeof(tagCMEquipEvolve)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.EquipIndex)
- data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
- data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
- for i in range(self.NeedItemIDIndexCnt):
- data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
- data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
- for i in range(self.NeedSuitIndexCnt):
- data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Head:%s,
- EquipIndex:%d,
- NeedEquipIDIndex:%d,
- NeedItemIDIndexCnt:%d,
- NeedItemIDIndex:%s,
- NeedSuitIndexCnt:%d,
- NeedSuitIndex:%s
+ DumpString = '''// A3 30 装备神装进阶 //tagCMEquipEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ EquipIndex:%d
'''\
%(
- self.Head.OutputString(),
- self.EquipIndex,
- self.NeedEquipIDIndex,
- self.NeedItemIDIndexCnt,
- "...",
- self.NeedSuitIndexCnt,
- "..."
+ self.Cmd,
+ self.SubCmd,
+ self.EquipIndex
)
return DumpString
m_NAtagCMEquipEvolve=tagCMEquipEvolve()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Cmd,m_NAtagCMEquipEvolve.SubCmd))] = m_NAtagCMEquipEvolve
#------------------------------------------------------
@@ -6956,6 +7988,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
#------------------------------------------------------
@@ -7467,6 +8566,66 @@
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
#------------------------------------------------------
@@ -9005,6 +10164,54 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
#A5 3B 请求领取补偿#tagCMRequestCompensation
class tagCMRequestCompensation(Structure):
@@ -10039,6 +11246,114 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# A5 1C 聚魂合成 #tagCMGatherSoulCompound
class tagCMGatherSoulCompound(Structure):
@@ -10317,6 +11632,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Index", c_ubyte), # 奖励索引,其他按顺序
+ ("IsDaily", c_ubyte), # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
]
def __init__(self):
@@ -10334,6 +11650,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x06
self.Index = 0
+ self.IsDaily = 0
return
def GetLength(self):
@@ -10346,12 +11663,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
@@ -10414,6 +11733,114 @@
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
#------------------------------------------------------
@@ -10709,6 +12136,114 @@
#------------------------------------------------------
+# 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):
@@ -10762,6 +12297,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
#------------------------------------------------------
@@ -12020,6 +13659,58 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# A5 11 试用首充武器 #tagCMTryFirstGoldItem
class tagCMTryFirstGoldItem(Structure):
@@ -12344,6 +14035,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):
@@ -12492,19 +14243,21 @@
#------------------------------------------------------
-# A6 05 家族捐献兽粮 #tagCMFamilyDonate
+# A6 13 家族事务操作 #tagCMFamilyAffairOP
-class tagCMFamilyDonate(Structure):
+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):
@@ -12514,29 +14267,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
#------------------------------------------------------
@@ -12649,6 +14460,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
#------------------------------------------------------
@@ -13009,6 +14880,114 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# A8 04 购买VIP礼包 #tagCMBuyVIPItem
class tagCMBuyVIPItem(Structure):
@@ -13265,6 +15244,118 @@
#------------------------------------------------------
+# 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):
@@ -13321,80 +15412,6 @@
#------------------------------------------------------
-# AA 16 垃圾分类活动选择大奖 #tagCMActGarbageChooseSuperItem
-
-class tagCMActGarbageChooseSuperItem(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_NAtagCMActGarbageChooseSuperItem=tagCMActGarbageChooseSuperItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageChooseSuperItem.Head.Cmd,m_NAtagCMActGarbageChooseSuperItem.Head.SubCmd))] = m_NAtagCMActGarbageChooseSuperItem
-
-
-#------------------------------------------------------
# AA 15 垃圾分类活动收集已完成的任务垃圾 #tagCMActGarbageGetTaskAward
class tagCMActGarbageGetTaskAward(Structure):
@@ -13448,62 +15465,6 @@
m_NAtagCMActGarbageGetTaskAward=tagCMActGarbageGetTaskAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageGetTaskAward.Cmd,m_NAtagCMActGarbageGetTaskAward.SubCmd))] = m_NAtagCMActGarbageGetTaskAward
-
-
-#------------------------------------------------------
-# AA 17 垃圾分类活动抽奖 #tagCMActGarbageLottery
-
-class tagCMActGarbageLottery(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(tagCMActGarbageLottery)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 17 垃圾分类活动抽奖 //tagCMActGarbageLottery:
- Cmd:%s,
- SubCmd:%s,
- ActNum:%d,
- PosNum:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActNum,
- self.PosNum
- )
- return DumpString
-
-
-m_NAtagCMActGarbageLottery=tagCMActGarbageLottery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGarbageLottery.Cmd,m_NAtagCMActGarbageLottery.SubCmd))] = m_NAtagCMActGarbageLottery
#------------------------------------------------------
@@ -13585,6 +15546,241 @@
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
#------------------------------------------------------
@@ -13780,6 +15976,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
#------------------------------------------------------
@@ -14012,58 +16390,6 @@
m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
-
-
-#------------------------------------------------------
-# AA 18 垃圾分类活动奖池刷新 #tagCMGarbageAwardPoolRefresh
-
-class tagCMGarbageAwardPoolRefresh(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(tagCMGarbageAwardPoolRefresh)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 18 垃圾分类活动奖池刷新 //tagCMGarbageAwardPoolRefresh:
- Cmd:%s,
- SubCmd:%s,
- ActNum:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActNum
- )
- return DumpString
-
-
-m_NAtagCMGarbageAwardPoolRefresh=tagCMGarbageAwardPoolRefresh()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGarbageAwardPoolRefresh.Cmd,m_NAtagCMGarbageAwardPoolRefresh.SubCmd))] = m_NAtagCMGarbageAwardPoolRefresh
#------------------------------------------------------
@@ -15119,6 +17445,170 @@
#------------------------------------------------------
+# B0 30 福地物品拉 #tagCMMineItemPull
+
+class tagCMMineItemPull(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PlayerID", c_int), # 福地所属玩家ID,0默认自己
+ ("ItemIndex", c_ubyte), # 物品所在位置索引0~n
+ ("WorkerCount", c_ubyte), # 上工人人数
+ ("IsPreview", c_ubyte), # 是否预览;0-直接拉,1-预览大概时间
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x30
+ self.PlayerID = 0
+ self.ItemIndex = 0
+ self.WorkerCount = 0
+ self.IsPreview = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMineItemPull)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 30 福地物品拉 //tagCMMineItemPull:
+ Cmd:%s,
+ SubCmd:%s,
+ PlayerID:%d,
+ ItemIndex:%d,
+ WorkerCount:%d,
+ IsPreview:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PlayerID,
+ self.ItemIndex,
+ self.WorkerCount,
+ self.IsPreview
+ )
+ return DumpString
+
+
+m_NAtagCMMineItemPull=tagCMMineItemPull()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineItemPull.Cmd,m_NAtagCMMineItemPull.SubCmd))] = m_NAtagCMMineItemPull
+
+
+#------------------------------------------------------
+# B0 31 福地物品刷新 #tagCMMineItemRefresh
+
+class tagCMMineItemRefresh(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsSuper", c_ubyte), # 是否超级刷新
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x31
+ self.IsSuper = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMineItemRefresh)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh:
+ Cmd:%s,
+ SubCmd:%s,
+ IsSuper:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsSuper
+ )
+ return DumpString
+
+
+m_NAtagCMMineItemRefresh=tagCMMineItemRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineItemRefresh.Cmd,m_NAtagCMMineItemRefresh.SubCmd))] = m_NAtagCMMineItemRefresh
+
+
+#------------------------------------------------------
+# B0 32 福地工人雇佣 #tagCMMineWorkerEmploy
+
+class tagCMMineWorkerEmploy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ 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 = 0xB0
+ self.SubCmd = 0x32
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMineWorkerEmploy)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 32 福地工人雇佣 //tagCMMineWorkerEmploy:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMMineWorkerEmploy=tagCMMineWorkerEmploy()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineWorkerEmploy.Cmd,m_NAtagCMMineWorkerEmploy.SubCmd))] = m_NAtagCMMineWorkerEmploy
+
+
+#------------------------------------------------------
#B0 26 请求家族悬赏奖励领取情况 #tagQueryFamilyArrestAwardReceiveState
class tagQueryFamilyArrestAwardReceiveState(Structure):
@@ -16091,6 +18581,139 @@
#------------------------------------------------------
+# B2 21 玩家砍树 #tagCMCutTree
+
+class tagCMCutTree(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CutCount", c_ubyte), # 砍几次,默认1
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x21
+ self.CutCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCutTree)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 21 玩家砍树 //tagCMCutTree:
+ Cmd:%s,
+ SubCmd:%s,
+ CutCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CutCount
+ )
+ return DumpString
+
+
+m_NAtagCMCutTree=tagCMCutTree()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCutTree.Cmd,m_NAtagCMCutTree.SubCmd))] = m_NAtagCMCutTree
+
+
+#------------------------------------------------------
+# B2 22 砍树装备操作 #tagCMCutTreeEquipOP
+
+class tagCMCutTreeEquipOP(Structure):
+ Head = tagHead()
+ IndexCount = 0 #(BYTE IndexCount)
+ ItemIndexList = list() #(vector<BYTE> ItemIndexList)// 物品在砍树背包的索引列表
+ OPType = 0 #(BYTE OPType)// 操作类型:1-替换;2-分解
+ AutoDecompose = 0 #(BYTE AutoDecompose)// 替换后是否自动分解原装备:0否1是,仅替换操作下有用
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x22
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.ItemIndexList.append(value)
+ self.OPType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AutoDecompose,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x22
+ self.IndexCount = 0
+ self.ItemIndexList = list()
+ self.OPType = 0
+ self.AutoDecompose = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.IndexCount
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IndexCount)
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteBYTE(data, self.ItemIndexList[i])
+ data = CommFunc.WriteBYTE(data, self.OPType)
+ data = CommFunc.WriteBYTE(data, self.AutoDecompose)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IndexCount:%d,
+ ItemIndexList:%s,
+ OPType:%d,
+ AutoDecompose:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IndexCount,
+ "...",
+ self.OPType,
+ self.AutoDecompose
+ )
+ return DumpString
+
+
+m_NAtagCMCutTreeEquipOP=tagCMCutTreeEquipOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCutTreeEquipOP.Head.Cmd,m_NAtagCMCutTreeEquipOP.Head.SubCmd))] = m_NAtagCMCutTreeEquipOP
+
+
+#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
class tagCMGetFuncSysPrivilegeAward(Structure):
@@ -16147,6 +18770,162 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# B2 07 重置加点 #tagCMResetAttrPoint
class tagCMResetAttrPoint(Structure):
@@ -16192,6 +18971,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
#------------------------------------------------------
@@ -16475,6 +19373,442 @@
m_NAtagCMTJGnpc=tagCMTJGnpc()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc
+
+
+#------------------------------------------------------
+# B2 23 仙树升级 #tagCMTreeLVUP
+
+class tagCMTreeLVUP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ubyte), # 0-开始升级(请求扣除消耗,开始升级倒计时);1-执行升级(前端自行倒计时,时间到后发送该类型)
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x23
+ self.Type = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTreeLVUP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 23 仙树升级 //tagCMTreeLVUP:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type
+ )
+ return DumpString
+
+
+m_NAtagCMTreeLVUP=tagCMTreeLVUP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTreeLVUP.Cmd,m_NAtagCMTreeLVUP.SubCmd))] = m_NAtagCMTreeLVUP
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -17554,6 +20888,66 @@
#------------------------------------------------------
+# B4 10 回合制战斗 #tagCMTurnFight
+
+class tagCMTurnFight(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int), # 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
+ ("FuncLineID", c_ushort),
+ ("PlayerID", c_int), # 对应玩家ID,可为0,某些功能可能有用,如竞技场
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x10
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.PlayerID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTurnFight)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 10 回合制战斗 //tagCMTurnFight:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ PlayerID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID,
+ self.PlayerID
+ )
+ return DumpString
+
+
+m_NAtagCMTurnFight=tagCMTurnFight()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTurnFight.Cmd,m_NAtagCMTurnFight.SubCmd))] = m_NAtagCMTurnFight
+
+
+#------------------------------------------------------
# B5 14 拍卖行竞价物品 #tagCMBiddingAuctionItem
class tagCMBiddingAuctionItem(Structure):
@@ -17936,6 +21330,322 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# C1 06 跨服NPC对话 #tagCMCrossNPCTalk
class tagCMCrossNPCTalk(Structure):
@@ -18308,4 +22018,56 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
\ No newline at end of file
+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