From 7e17abc560ec66bc164e5e1f8deff42e96ca8af8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 16 十一月 2022 16:26:28 +0800
Subject: [PATCH] 9750 【BT7】【越南】【主干】【服务端】服务器无人登录警告
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1217 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,215 insertions(+), 2 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 934c504..f7d12aa 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -5263,6 +5263,224 @@
#------------------------------------------------------
+# AC 13 跨服全民充值活动信息 #tagGCCrossActAllRechargeInfo
+
+class tagGCCrossActAllRechargeItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte), # 是否拍品
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossActAllRechargeItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 13 跨服全民充值活动信息 //tagGCCrossActAllRechargeInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagGCCrossActAllRechargeAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
+ NeedRMB = 0 #(DWORD NeedRMB)// 所需全民充值RMB
+ NeedPlayerCount = 0 #(WORD NeedPlayerCount)// 所需充值达到该档玩家数
+ NowPlayerCount = 0 #(WORD NowPlayerCount)// 当前充值达到该档玩家数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
+ AwardItemList = list() #(vector<tagGCCrossActAllRechargeItem> AwardItemList)// 奖励物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NeedPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.NowPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagGCCrossActAllRechargeItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedRMB = 0
+ self.NeedPlayerCount = 0
+ self.NowPlayerCount = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedRMB)
+ data = CommFunc.WriteWORD(data, self.NeedPlayerCount)
+ data = CommFunc.WriteWORD(data, self.NowPlayerCount)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedRMB:%d,
+ NeedPlayerCount:%d,
+ NowPlayerCount:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedRMB,
+ self.NeedPlayerCount,
+ self.NowPlayerCount,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCCrossActAllRechargeInfo(Structure):
+ Head = tagHead()
+ ServerInfoLen = 0 #(BYTE ServerInfoLen)
+ ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardList = list() #(vector<tagGCCrossActAllRechargeAward> AwardList)// 奖励档次信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardList = tagGCCrossActAllRechargeAward()
+ _pos = temAwardList.ReadData(_lpData, _pos)
+ self.AwardList.append(temAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x13
+ self.ServerInfoLen = 0
+ self.ServerIDRangeInfo = ""
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AwardCount = 0
+ self.AwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.ServerIDRangeInfo)
+ length += 10
+ length += 10
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
+ data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ServerInfoLen:%d,
+ ServerIDRangeInfo:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AwardCount:%d,
+ AwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ServerInfoLen,
+ self.ServerIDRangeInfo,
+ self.StartDate,
+ self.EndtDate,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCCrossActAllRechargeInfo=tagGCCrossActAllRechargeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActAllRechargeInfo.Head.Cmd,m_NAtagGCCrossActAllRechargeInfo.Head.SubCmd))] = m_NAtagGCCrossActAllRechargeInfo
+
+
+#------------------------------------------------------
# AC 12 跨服运营活动结束 # tagGCCrossActEnd
class tagGCCrossActEnd(Structure):
@@ -14922,6 +15140,118 @@
#------------------------------------------------------
+# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
+
+class tagGCCrossYaomoBossPlayerHurtInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("HurtTotal", c_int), # 总伤害值,小于亿部分
+ ("HurtTotalEx", c_int), # 总伤害值,整除亿部分
+ ("AwardState", c_int), # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x11
+ self.HurtTotal = 0
+ self.HurtTotalEx = 0
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ HurtTotal:%d,
+ HurtTotalEx:%d,
+ AwardState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.HurtTotal,
+ self.HurtTotalEx,
+ self.AwardState
+ )
+ return DumpString
+
+
+m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
+
+
+#------------------------------------------------------
+# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
+
+class tagGCCrossZoneInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CommZoneID", c_ubyte), # 所属常规分区ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xC0
+ self.SubCmd = 0x10
+ self.CommZoneID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCrossZoneInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 10 跨服所属分区信息 //tagGCCrossZoneInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CommZoneID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CommZoneID
+ )
+ return DumpString
+
+
+m_NAtagGCCrossZoneInfo=tagGCCrossZoneInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossZoneInfo.Cmd,m_NAtagGCCrossZoneInfo.SubCmd))] = m_NAtagGCCrossZoneInfo
+
+
+#------------------------------------------------------
# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
class tagGCLuckyCloudBuyLotteryRec(Structure):
@@ -20587,6 +20917,114 @@
#------------------------------------------------------
+# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
+
+class tagMCHorseSkinTimeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ID", c_int), # 对应坐骑幻化表ID
+ ("InvalidTime", c_int), # 失效时间戳
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ID = 0
+ self.InvalidTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHorseSkinTimeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
+ ID:%d,
+ InvalidTime:%d
+ '''\
+ %(
+ self.ID,
+ self.InvalidTime
+ )
+ return DumpString
+
+
+class tagMCHorseSkinTimeInfoList(Structure):
+ Head = tagHead()
+ TimeCnt = 0 #(BYTE TimeCnt)//个数
+ TimeInfoList = list() #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TimeCnt):
+ temTimeInfoList = tagMCHorseSkinTimeInfo()
+ _pos = temTimeInfoList.ReadData(_lpData, _pos)
+ self.TimeInfoList.append(temTimeInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x10
+ self.TimeCnt = 0
+ self.TimeInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.TimeCnt):
+ length += self.TimeInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TimeCnt)
+ for i in range(self.TimeCnt):
+ data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TimeCnt:%d,
+ TimeInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TimeCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
+
+
+#------------------------------------------------------
# A3 38 投资理财信息 #tagMCInvestInfo
class tagMCInvestInfo(Structure):
@@ -23476,16 +23914,302 @@
#------------------------------------------------------
+# A3 56 通天令信息 #tagMCTongTianLingInfo
+
+class tagMCTongTianLingInfo(Structure):
+ Head = tagHead()
+ TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
+ TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
+ CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
+ AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
+ CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
+ XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
+ StartTime = 0 #(DWORD StartTime)//通天令本轮开始时间戳,秒
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x56
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CommAwardStateList.append(value)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.XianAwardStateList.append(value)
+ self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x56
+ self.TTLBuyState = 0
+ self.TTLLV = 0
+ self.CurPoint = 0
+ self.AwardStateCount = 0
+ self.CommAwardStateList = list()
+ self.XianAwardStateList = list()
+ self.StartTime = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 4 * self.AwardStateCount
+ length += 4 * self.AwardStateCount
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TTLBuyState)
+ data = CommFunc.WriteBYTE(data, self.TTLLV)
+ data = CommFunc.WriteDWORD(data, self.CurPoint)
+ data = CommFunc.WriteBYTE(data, self.AwardStateCount)
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
+ data = CommFunc.WriteDWORD(data, self.StartTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TTLBuyState:%d,
+ TTLLV:%d,
+ CurPoint:%d,
+ AwardStateCount:%d,
+ CommAwardStateList:%s,
+ XianAwardStateList:%s,
+ StartTime:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TTLBuyState,
+ self.TTLLV,
+ self.CurPoint,
+ self.AwardStateCount,
+ "...",
+ "...",
+ self.StartTime
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
+
+
+#------------------------------------------------------
+# A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
+
+class tagMCTongTianLingTaskAwardInfo(Structure):
+ Head = tagHead()
+ AwardStateCount = 0 #(BYTE AwardStateCount)
+ TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x58
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TaskAwardStateList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x58
+ self.AwardStateCount = 0
+ self.TaskAwardStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.AwardStateCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AwardStateCount)
+ for i in range(self.AwardStateCount):
+ data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AwardStateCount:%d,
+ TaskAwardStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AwardStateCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
+
+
+#------------------------------------------------------
+# A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
+
+class tagMCTongTianLingTaskValue(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TaskType", c_ubyte), #成就类型
+ ("IsDaily", c_ubyte), #是否每日任务
+ ("TaskValue", c_int), #当前完成进度值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TaskType = 0
+ self.IsDaily = 0
+ self.TaskValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTongTianLingTaskValue)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
+ TaskType:%d,
+ IsDaily:%d,
+ TaskValue:%d
+ '''\
+ %(
+ self.TaskType,
+ self.IsDaily,
+ self.TaskValue
+ )
+ return DumpString
+
+
+class tagMCTongTianLingTaskValueInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//信息个数
+ TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x57
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temTaskValueList = tagMCTongTianLingTaskValue()
+ _pos = temTaskValueList.ReadData(_lpData, _pos)
+ self.TaskValueList.append(temTaskValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x57
+ self.Count = 0
+ self.TaskValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.TaskValueList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ TaskValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
+
+
+#------------------------------------------------------
#A3 01 坐骑培养信息 #tagTrainHorseData
class tagTrainHorseData(Structure):
Head = tagHead()
LV = 0 #(BYTE LV)//等阶
EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
- SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位
+ SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ SkinPlusStateCount = 0 #(BYTE SkinPlusStateCount)//幻化激活状态值数
+ SkinPlusStateList = list() #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
data = None
def __init__(self):
@@ -23507,6 +24231,10 @@
for i in range(self.TrainTypes):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.TrainItemCountList.append(value)
+ self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkinPlusStateCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SkinPlusStateList.append(value)
return _pos
def Clear(self):
@@ -23520,6 +24248,8 @@
self.TrainTypes = 0
self.TrainLVList = list()
self.TrainItemCountList = list()
+ self.SkinPlusStateCount = 0
+ self.SkinPlusStateList = list()
return
def GetLength(self):
@@ -23531,6 +24261,8 @@
length += 1
length += 4 * self.TrainTypes
length += 4 * self.TrainTypes
+ length += 1
+ length += 4 * self.SkinPlusStateCount
return length
@@ -23545,6 +24277,9 @@
data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
for i in range(self.TrainTypes):
data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
+ for i in range(self.SkinPlusStateCount):
+ data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
return data
def OutputString(self):
@@ -23555,7 +24290,9 @@
SkinPlusState:%d,
TrainTypes:%d,
TrainLVList:%s,
- TrainItemCountList:%s
+ TrainItemCountList:%s,
+ SkinPlusStateCount:%d,
+ SkinPlusStateList:%s
'''\
%(
self.Head.OutputString(),
@@ -23564,6 +24301,8 @@
self.SkinPlusState,
self.TrainTypes,
"...",
+ "...",
+ self.SkinPlusStateCount,
"..."
)
return DumpString
@@ -28572,6 +29311,424 @@
#------------------------------------------------------
+# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
+
+class tagMCActGodGiftItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemNum", c_ubyte), # 物品在本库中的编号
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ("CanChooseTimes", c_ubyte), #可选择次数,0代表不限次数
+ ("ChooseTimes", c_ubyte), #已选次数
+ ("IsChoose", c_ubyte), #本次奖池是否被选择
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemNum = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ self.CanChooseTimes = 0
+ self.ChooseTimes = 0
+ self.IsChoose = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGodGiftItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
+ ItemNum:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d,
+ CanChooseTimes:%d,
+ ChooseTimes:%d,
+ IsChoose:%d
+ '''\
+ %(
+ self.ItemNum,
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind,
+ self.CanChooseTimes,
+ self.ChooseTimes,
+ self.IsChoose
+ )
+ return DumpString
+
+
+class tagMCActGodGiftItemLib(Structure):
+ ItemLibType = 0 #(BYTE ItemLibType)//物品库类型
+ NeedChooseCount = 0 #(BYTE NeedChooseCount)//需要选择个数
+ GodGiftItemCount = 0 #(BYTE GodGiftItemCount)//可选择物品个数
+ GodGiftItemList = list() #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GodGiftItemCount):
+ temGodGiftItemList = tagMCActGodGiftItem()
+ _pos = temGodGiftItemList.ReadData(_lpData, _pos)
+ self.GodGiftItemList.append(temGodGiftItemList)
+ return _pos
+
+ def Clear(self):
+ self.ItemLibType = 0
+ self.NeedChooseCount = 0
+ self.GodGiftItemCount = 0
+ self.GodGiftItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.GodGiftItemCount):
+ length += self.GodGiftItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ItemLibType)
+ data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
+ data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
+ for i in range(self.GodGiftItemCount):
+ data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemLibType:%d,
+ NeedChooseCount:%d,
+ GodGiftItemCount:%d,
+ GodGiftItemList:%s
+ '''\
+ %(
+ self.ItemLibType,
+ self.NeedChooseCount,
+ self.GodGiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActGodGiftInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)// 是否每日重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ CostMoneyType = 0 #(BYTE CostMoneyType)//消耗货币类型
+ CostMoneyValueCount = 0 #(BYTE CostMoneyValueCount)
+ CostMoneyValueList = list() #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
+ PrizeMoneyType = 0 #(BYTE PrizeMoneyType)//奖励货币类型
+ PrizeMoneyValueCount = 0 #(BYTE PrizeMoneyValueCount)
+ PrizeMoneyValueList = list() #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
+ ResetLimitTimes = 0 #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
+ ResetCountMax = 0 #(BYTE ResetCountMax)//最大可重置奖池次数
+ IsAwardPoolOK = 0 #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
+ ItemLibCount = 0 #(BYTE ItemLibCount)//奖池库个数
+ ItemLibList = list() #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x60
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostMoneyValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostMoneyValueList.append(value)
+ self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PrizeMoneyValueCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PrizeMoneyValueList.append(value)
+ self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemLibCount):
+ temItemLibList = tagMCActGodGiftItemLib()
+ _pos = temItemLibList.ReadData(_lpData, _pos)
+ self.ItemLibList.append(temItemLibList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x60
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.LimitLV = 0
+ self.CostMoneyType = 0
+ self.CostMoneyValueCount = 0
+ self.CostMoneyValueList = list()
+ self.PrizeMoneyType = 0
+ self.PrizeMoneyValueCount = 0
+ self.PrizeMoneyValueList = list()
+ self.ResetLimitTimes = 0
+ self.ResetCountMax = 0
+ self.IsAwardPoolOK = 0
+ self.ItemLibCount = 0
+ self.ItemLibList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 4 * self.CostMoneyValueCount
+ length += 1
+ length += 1
+ length += 4 * self.PrizeMoneyValueCount
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.ItemLibCount):
+ length += self.ItemLibList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.CostMoneyType)
+ data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
+ for i in range(self.CostMoneyValueCount):
+ data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
+ data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
+ data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
+ for i in range(self.PrizeMoneyValueCount):
+ data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
+ data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
+ data = CommFunc.WriteBYTE(data, self.ResetCountMax)
+ data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
+ data = CommFunc.WriteBYTE(data, self.ItemLibCount)
+ for i in range(self.ItemLibCount):
+ data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ LimitLV:%d,
+ CostMoneyType:%d,
+ CostMoneyValueCount:%d,
+ CostMoneyValueList:%s,
+ PrizeMoneyType:%d,
+ PrizeMoneyValueCount:%d,
+ PrizeMoneyValueList:%s,
+ ResetLimitTimes:%d,
+ ResetCountMax:%d,
+ IsAwardPoolOK:%d,
+ ItemLibCount:%d,
+ ItemLibList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.LimitLV,
+ self.CostMoneyType,
+ self.CostMoneyValueCount,
+ "...",
+ self.PrizeMoneyType,
+ self.PrizeMoneyValueCount,
+ "...",
+ self.ResetLimitTimes,
+ self.ResetCountMax,
+ self.IsAwardPoolOK,
+ self.ItemLibCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
+
+
+#------------------------------------------------------
+# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
+
+class tagMCActGodGiftAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemLibType", c_ubyte), #物品库类型
+ ("ItemNum", c_ubyte), #物品在本库中的编号
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemLibType = 0
+ self.ItemNum = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActGodGiftAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
+ ItemLibType:%d,
+ ItemNum:%d
+ '''\
+ %(
+ self.ItemLibType,
+ self.ItemNum
+ )
+ return DumpString
+
+
+class tagMCActGodGiftPlayerInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ ResetCount = 0 #(BYTE ResetCount)// 本次活动已重置次数
+ AwardItemCount = 0 #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
+ AwardItemList = list() #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x61
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCActGodGiftAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x61
+ self.ActNum = 0
+ self.ResetCount = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteBYTE(data, self.ResetCount)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ ResetCount:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.ResetCount,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
+
+
+#------------------------------------------------------
# AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
class tagMCActGrowupBuyCTGItem(Structure):
@@ -32518,6 +33675,62 @@
#------------------------------------------------------
+# AA 34 跨服全民充值活动玩家信息 #tagMCCrossActAllRechargePlayerInfo
+
+class tagMCCrossActAllRechargePlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CTGRMBTotal", c_int), # 活动已累计充值RMB
+ ("AwardRecord", c_int), # 奖励记录,根据奖励索引位或运算判断是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x34
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x34
+ self.CTGRMBTotal = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCrossActAllRechargePlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 34 跨服全民充值活动玩家信息 //tagMCCrossActAllRechargePlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ CTGRMBTotal:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CTGRMBTotal,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCCrossActAllRechargePlayerInfo=tagMCCrossActAllRechargePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActAllRechargePlayerInfo.Cmd,m_NAtagMCCrossActAllRechargePlayerInfo.SubCmd))] = m_NAtagMCCrossActAllRechargePlayerInfo
+
+
+#------------------------------------------------------
# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
class tagMCDailyGiftbagItem(Structure):
--
Gitblit v1.8.0