From ca212ad097edfe324b5b6035e64cfbcf5146b044 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 09 十二月 2025 10:50:22 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(突破单独配置所需武将等级,不需要满级才能突破;突破消耗物品改为支持多种物品;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 927 +++++++++++++++++++--------------------------------------
1 files changed, 304 insertions(+), 623 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 6986c21..94bbe03 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -6991,6 +6991,58 @@
#------------------------------------------------------
+# A3 19 分包下载奖励记录 #tagMCPackDownloadRecord
+
+class tagMCPackDownloadRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Record", c_ubyte), # 0-未领取 1-已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x19
+ self.Record = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPackDownloadRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 19 分包下载奖励记录 //tagMCPackDownloadRecord:
+ Cmd:%s,
+ SubCmd:%s,
+ Record:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Record
+ )
+ return DumpString
+
+
+m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
+
+
+#------------------------------------------------------
#A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
class tagMCPlayerLVAwardGetRecord(Structure):
@@ -25067,58 +25119,6 @@
#------------------------------------------------------
-# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
-
-class tagMCDayFreeGoldGiftState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x24
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xAA
- self.SubCmd = 0x24
- self.DayFreeGoldGiftState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDayFreeGoldGiftState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
- Cmd:%s,
- SubCmd:%s,
- DayFreeGoldGiftState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DayFreeGoldGiftState
- )
- return DumpString
-
-
-m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
-
-
-#------------------------------------------------------
# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
class tagMCFeastLoginDayAwardItem(Structure):
@@ -27700,58 +27700,6 @@
#------------------------------------------------------
-# AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
-
-class tagMCOnlineRechargeTH(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("AwardState", c_ubyte), #是否已领取奖励
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- self.AwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCOnlineRechargeTH)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
- Cmd:%s,
- SubCmd:%s,
- AwardState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.AwardState
- )
- return DumpString
-
-
-m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
-
-
-#------------------------------------------------------
# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
class tagMCRechargePrizeInfo(Structure):
@@ -29013,454 +28961,21 @@
#------------------------------------------------------
-# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
+# AB 05 开服庆典信息 #tagSCOSACelebrationInfo
-class tagMCBossFirstKillState(Structure):
- _pack_ = 1
- _fields_ = [
- ("NPCID", c_int),
- ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.NPCID = 0
- self.FKState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossFirstKillState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
- NPCID:%d,
- FKState:%d
- '''\
- %(
- self.NPCID,
- self.FKState
- )
- return DumpString
-
-
-class tagMCBossFirstKillStateInfo(Structure):
- Head = tagHead()
- BossCount = 0 #(BYTE BossCount)
- FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.BossCount):
- temFirstKillStateList = tagMCBossFirstKillState()
- _pos = temFirstKillStateList.ReadData(_lpData, _pos)
- self.FirstKillStateList.append(temFirstKillStateList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x01
- self.BossCount = 0
- self.FirstKillStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.BossCount):
- length += self.FirstKillStateList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.BossCount)
- for i in range(self.BossCount):
- data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- BossCount:%d,
- FirstKillStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.BossCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
-
-
-#------------------------------------------------------
-# AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
-
-class tagMCBossRebornData(Structure):
- _pack_ = 1
- _fields_ = [
- ("ActID", c_ubyte), #活动ID
- ("CurTimes", c_ushort), #已完成次数
- ("GotTimes", c_ushort), #已领取次数
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ActID = 0
- self.CurTimes = 0
- self.GotTimes = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossRebornData)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
- ActID:%d,
- CurTimes:%d,
- GotTimes:%d
- '''\
- %(
- self.ActID,
- self.CurTimes,
- self.GotTimes
- )
- return DumpString
-
-
-class tagMCBossRebornPlayerInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//活动个数
- DataList = list() #(vector<tagMCBossRebornData> DataList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x03
- 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):
- temDataList = tagMCBossRebornData()
- _pos = temDataList.ReadData(_lpData, _pos)
- self.DataList.append(temDataList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x03
- self.Count = 0
- self.DataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.DataList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.DataList[i].GetLength(), self.DataList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- DataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
-
-
-#------------------------------------------------------
-# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
-
-class tagMCBossRebornAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossRebornAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCBossRebornTaskInfo(Structure):
- TaskID = 0 #(BYTE TaskID)// id
- TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
- SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItem = tagMCBossRebornAwardItem()
- _pos = temAwardItem.ReadData(_lpData, _pos)
- self.AwardItem.append(temAwardItem)
- return _pos
-
- def Clear(self):
- self.TaskID = 0
- self.TotalTimes = 0
- self.SingleTimes = 0
- self.AwardItemCount = 0
- self.AwardItem = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- length += 1
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItem[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TaskID)
- data = CommFunc.WriteBYTE(data, self.TotalTimes)
- data = CommFunc.WriteBYTE(data, self.SingleTimes)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- TaskID:%d,
- TotalTimes:%d,
- SingleTimes:%d,
- AwardItemCount:%d,
- AwardItem:%s
- '''\
- %(
- self.TaskID,
- self.TotalTimes,
- self.SingleTimes,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCBossRebornInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- TaskCnt = 0 #(BYTE TaskCnt)
- TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x04
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TaskCnt):
- temTaskInfo = tagMCBossRebornTaskInfo()
- _pos = temTaskInfo.ReadData(_lpData, _pos)
- self.TaskInfo.append(temTaskInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x04
- self.StartDate = ""
- self.EndtDate = ""
- self.ResetType = 0
- self.LimitLV = 0
- self.TaskCnt = 0
- self.TaskInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 1
- length += 2
- length += 1
- for i in range(self.TaskCnt):
- length += self.TaskInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.TaskCnt)
- for i in range(self.TaskCnt):
- data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- ResetType:%d,
- LimitLV:%d,
- TaskCnt:%d,
- TaskInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.ResetType,
- self.LimitLV,
- self.TaskCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
-
-
-#------------------------------------------------------
-# AB 19 炼制奖励信息 #tagMCRefineGiftInfo
-
-class tagMCRefineGiftInfo(Structure):
+class tagSCOSACelebrationInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ExpRefineStartTime", c_int), # 经验炼制活动开始时间
- ("MoneyRefineStartTime", c_int), # 金币炼制活动开始时间
- ("ExpRefineCnt", c_ubyte), # 经验已炼制次数
- ("MoneyRefineCnt", c_ubyte), # 金币已炼制次数
+ ("PointTotal", c_int), # 累计庆典积分
+ ("PointAward", c_int), # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
]
def __init__(self):
self.Clear()
self.Cmd = 0xAB
- self.SubCmd = 0x19
+ self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -29470,105 +28985,35 @@
def Clear(self):
self.Cmd = 0xAB
- self.SubCmd = 0x19
- self.ExpRefineStartTime = 0
- self.MoneyRefineStartTime = 0
- self.ExpRefineCnt = 0
- self.MoneyRefineCnt = 0
+ self.SubCmd = 0x05
+ self.PointTotal = 0
+ self.PointAward = 0
return
def GetLength(self):
- return sizeof(tagMCRefineGiftInfo)
+ return sizeof(tagSCOSACelebrationInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
+ DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
Cmd:%s,
SubCmd:%s,
- ExpRefineStartTime:%d,
- MoneyRefineStartTime:%d,
- ExpRefineCnt:%d,
- MoneyRefineCnt:%d
+ PointTotal:%d,
+ PointAward:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ExpRefineStartTime,
- self.MoneyRefineStartTime,
- self.ExpRefineCnt,
- self.MoneyRefineCnt
+ self.PointTotal,
+ self.PointAward
)
return DumpString
-m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
-
-
-#------------------------------------------------------
-# AC 08 boss复活点数通知 #tagGCBossRebornPoint
-
-class tagGCBossRebornPoint(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Point", c_int), # 复活点数
- ("TotalPoint", c_int), # 复活总点数
- ("RebornCnt", c_ushort), # 今日已复活次数
- ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAC
- 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 = 0xAC
- self.SubCmd = 0x08
- self.Point = 0
- self.TotalPoint = 0
- self.RebornCnt = 0
- self.TotalRebornCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCBossRebornPoint)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
- Cmd:%s,
- SubCmd:%s,
- Point:%d,
- TotalPoint:%d,
- RebornCnt:%d,
- TotalRebornCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Point,
- self.TotalPoint,
- self.RebornCnt,
- self.TotalRebornCnt
- )
- return DumpString
-
-
-m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
+m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
#------------------------------------------------------
@@ -38176,6 +37621,150 @@
m_NAtagSCTurnFightReportSign=tagSCTurnFightReportSign()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightReportSign.Cmd,m_NAtagSCTurnFightReportSign.SubCmd))] = m_NAtagSCTurnFightReportSign
+
+
+#------------------------------------------------------
+# B4 31 战斗战报结果 #tagSCTurnFightRet
+
+class tagSCTurnFightRet(Structure):
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
+ FuncLineID = 0 #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
+ TagType = 0 #(BYTE TagType)// 目标类型,0-NPC阵容,1-玩家
+ TagID = 0 #(DWORD TagID)// 目标类型对应的ID,如玩家ID
+ ValueCount = 0 #(BYTE ValueCount)
+ ValueList = list() #(vector<DWORD> ValueList)// 附加值列表,可选,具体含义由MapID决定
+ IsWin = 0 #(BYTE IsWin)//是否获胜
+ AwardLen = 0 #(WORD AwardLen)
+ AwardMsg = "" #(String AwardMsg)//功能结算奖励信息,不含战斗相关统计信息
+ BatLen = 0 #(WORD BatLen)
+ BatStatMsg = "" #(String BatStatMsg)//战斗相关统计信息
+ PathDate = "" #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
+ GUID = "" #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x31
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FuncLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ValueList.append(value)
+ self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
+ self.BatLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BatStatMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.BatLen)
+ self.PathDate,_pos = CommFunc.ReadString(_lpData, _pos,8)
+ self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x31
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.TagType = 0
+ self.TagID = 0
+ self.ValueCount = 0
+ self.ValueList = list()
+ self.IsWin = 0
+ self.AwardLen = 0
+ self.AwardMsg = ""
+ self.BatLen = 0
+ self.BatStatMsg = ""
+ self.PathDate = ""
+ self.GUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 4 * self.ValueCount
+ length += 1
+ length += 2
+ length += len(self.AwardMsg)
+ length += 2
+ length += len(self.BatStatMsg)
+ length += 8
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.FuncLineID)
+ data = CommFunc.WriteBYTE(data, self.TagType)
+ data = CommFunc.WriteDWORD(data, self.TagID)
+ data = CommFunc.WriteBYTE(data, self.ValueCount)
+ for i in range(self.ValueCount):
+ data = CommFunc.WriteDWORD(data, self.ValueList[i])
+ data = CommFunc.WriteBYTE(data, self.IsWin)
+ data = CommFunc.WriteWORD(data, self.AwardLen)
+ data = CommFunc.WriteString(data, self.AwardLen, self.AwardMsg)
+ data = CommFunc.WriteWORD(data, self.BatLen)
+ data = CommFunc.WriteString(data, self.BatLen, self.BatStatMsg)
+ data = CommFunc.WriteString(data, 8, self.PathDate)
+ data = CommFunc.WriteString(data, 40, self.GUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ TagType:%d,
+ TagID:%d,
+ ValueCount:%d,
+ ValueList:%s,
+ IsWin:%d,
+ AwardLen:%d,
+ AwardMsg:%s,
+ BatLen:%d,
+ BatStatMsg:%s,
+ PathDate:%s,
+ GUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MapID,
+ self.FuncLineID,
+ self.TagType,
+ self.TagID,
+ self.ValueCount,
+ "...",
+ self.IsWin,
+ self.AwardLen,
+ self.AwardMsg,
+ self.BatLen,
+ self.BatStatMsg,
+ self.PathDate,
+ self.GUID
+ )
+ return DumpString
+
+
+m_NAtagSCTurnFightRet=tagSCTurnFightRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightRet.Head.Cmd,m_NAtagSCTurnFightRet.Head.SubCmd))] = m_NAtagSCTurnFightRet
#------------------------------------------------------
@@ -48136,6 +47725,98 @@
#------------------------------------------------------
+# C2 02 跨服通用信息包 #tagSSCommMsg
+
+class tagSSCommMsg(Structure):
+ Head = tagHead()
+ FromServerID = 0 #(DWORD FromServerID)//哪个服发的
+ ServerTime = 0 #(DWORD ServerTime)//来源服务器时间戳
+ TypeLen = 0 #(BYTE TypeLen)
+ MsgType = "" #(String MsgType)
+ Len = 0 #(DWORD Len)
+ Data = "" #(String Data)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC2
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
+ self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC2
+ self.Head.SubCmd = 0x02
+ self.FromServerID = 0
+ self.ServerTime = 0
+ self.TypeLen = 0
+ self.MsgType = ""
+ self.Len = 0
+ self.Data = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.MsgType)
+ length += 4
+ length += len(self.Data)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.FromServerID)
+ data = CommFunc.WriteDWORD(data, self.ServerTime)
+ data = CommFunc.WriteBYTE(data, self.TypeLen)
+ data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
+ data = CommFunc.WriteDWORD(data, self.Len)
+ data = CommFunc.WriteString(data, self.Len, self.Data)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FromServerID:%d,
+ ServerTime:%d,
+ TypeLen:%d,
+ MsgType:%s,
+ Len:%d,
+ Data:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FromServerID,
+ self.ServerTime,
+ self.TypeLen,
+ self.MsgType,
+ self.Len,
+ self.Data
+ )
+ return DumpString
+
+
+m_NAtagSSCommMsg=tagSSCommMsg()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
+
+
+#------------------------------------------------------
# C2 01 跨服服务器间的测试包 #tagSSTest
class tagSSTest(Structure):
--
Gitblit v1.8.0