From 8dad95f1a282f7f2fdc32487251e09db07ec5503 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 08 十月 2021 14:49:17 +0800
Subject: [PATCH] 9256 【BT4】【BT5】个人BOSS扫荡触发杀怪事件(击杀或扫荡个人boss触发任务事件 fb_event/passvipboss.xml)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1196 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 871 insertions(+), 325 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 219c323..72b4c21 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -2368,6 +2368,112 @@
#------------------------------------------------------
+# A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo
+
+class tagGCArenaBattlePlayerInfo(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)//目标玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
+ Score = 0 #(DWORD Score)//积分
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x26
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Score = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Score)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ FightPower:%d,
+ FightPowerEx:%d,
+ Score:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.FightPower,
+ self.FightPowerEx,
+ self.Score
+ )
+ return DumpString
+
+
+m_NAtagGCArenaBattlePlayerInfo=tagGCArenaBattlePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattlePlayerInfo.Head.Cmd,m_NAtagGCArenaBattlePlayerInfo.Head.SubCmd))] = m_NAtagGCArenaBattlePlayerInfo
+
+
+#------------------------------------------------------
# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList
class tagGCArenaBattleRecord(Structure):
@@ -2376,7 +2482,9 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
- FightPower = 0 #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
+ Score = 0 #(DWORD Score)//积分
AddScoreLen = 0 #(BYTE AddScoreLen)
AddScore = "" #(String AddScore)//本次对战增加的积分,有正负
IsWin = 0 #(BYTE IsWin)//是否获胜
@@ -2395,6 +2503,8 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -2408,6 +2518,8 @@
self.LV = 0
self.RealmLV = 0
self.FightPower = 0
+ self.FightPowerEx = 0
+ self.Score = 0
self.AddScoreLen = 0
self.AddScore = ""
self.IsWin = 0
@@ -2421,6 +2533,8 @@
length += 1
length += 2
length += 2
+ length += 4
+ length += 4
length += 4
length += 1
length += len(self.AddScore)
@@ -2437,6 +2551,8 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+ data = CommFunc.WriteDWORD(data, self.Score)
data = CommFunc.WriteBYTE(data, self.AddScoreLen)
data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
data = CommFunc.WriteBYTE(data, self.IsWin)
@@ -2451,6 +2567,8 @@
LV:%d,
RealmLV:%d,
FightPower:%d,
+ FightPowerEx:%d,
+ Score:%d,
AddScoreLen:%d,
AddScore:%s,
IsWin:%d,
@@ -2463,6 +2581,8 @@
self.LV,
self.RealmLV,
self.FightPower,
+ self.FightPowerEx,
+ self.Score,
self.AddScoreLen,
self.AddScore,
self.IsWin,
@@ -2546,7 +2666,8 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)//等级
RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
- FightPower = 0 #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
+ FightPower = 0 #(DWORD FightPower)//战力求余亿部分,机器人读等级表取等级对应战力
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分,机器人读等级表取等级对应战力
Score = 0 #(DWORD Score)//积分
data = None
@@ -2562,6 +2683,7 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -2572,6 +2694,7 @@
self.LV = 0
self.RealmLV = 0
self.FightPower = 0
+ self.FightPowerEx = 0
self.Score = 0
return
@@ -2582,6 +2705,7 @@
length += 1
length += 2
length += 2
+ length += 4
length += 4
length += 4
@@ -2595,6 +2719,7 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
data = CommFunc.WriteDWORD(data, self.Score)
return data
@@ -2606,6 +2731,7 @@
LV:%d,
RealmLV:%d,
FightPower:%d,
+ FightPowerEx:%d,
Score:%d
'''\
%(
@@ -2615,6 +2741,7 @@
self.LV,
self.RealmLV,
self.FightPower,
+ self.FightPowerEx,
self.Score
)
return DumpString
@@ -15427,6 +15554,87 @@
#------------------------------------------------------
+# A3 C4 装备神装拆解结果 #tagMCEquipDecomposeRet
+
+class tagMCEquipDecomposeRet(Structure):
+ Head = tagHead()
+ DecomposeEquipIDCount = 0 #(BYTE DecomposeEquipIDCount)// 已分解的装备个数
+ DecomposeEquipIDList = list() #(vector<DWORD> DecomposeEquipIDList)// 已分解的神装装备ID列表
+ GetItemLen = 0 #(WORD GetItemLen)
+ GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC4
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.DecomposeEquipIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DecomposeEquipIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.DecomposeEquipIDList.append(value)
+ self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC4
+ self.DecomposeEquipIDCount = 0
+ self.DecomposeEquipIDList = list()
+ self.GetItemLen = 0
+ self.GetItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.DecomposeEquipIDCount
+ length += 2
+ length += len(self.GetItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.DecomposeEquipIDCount)
+ for i in range(self.DecomposeEquipIDCount):
+ data = CommFunc.WriteDWORD(data, self.DecomposeEquipIDList[i])
+ data = CommFunc.WriteWORD(data, self.GetItemLen)
+ data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ DecomposeEquipIDCount:%d,
+ DecomposeEquipIDList:%s,
+ GetItemLen:%d,
+ GetItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.DecomposeEquipIDCount,
+ "...",
+ self.GetItemLen,
+ self.GetItemData
+ )
+ return DumpString
+
+
+m_NAtagMCEquipDecomposeRet=tagMCEquipDecomposeRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipDecomposeRet.Head.Cmd,m_NAtagMCEquipDecomposeRet.Head.SubCmd))] = m_NAtagMCEquipDecomposeRet
+
+
+#------------------------------------------------------
# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
class tagMCEquipPartStar(Structure):
@@ -20023,60 +20231,98 @@
#A3 01 坐骑培养信息 #tagTrainHorseData
class tagTrainHorseData(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LV", c_ubyte), #等阶
- ("EatItemCount", c_int), #当前阶已吃丹个数
- ("SkinPlusState", c_int), #幻化激活状态,按位存储是否激活,幻化编号ID对应位
- ]
+ Head = tagHead()
+ LV = 0 #(BYTE LV)//等阶
+ EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
+ SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x01
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x01
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EatItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SkinPlusState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ return _pos
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x01
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x01
self.LV = 0
self.EatItemCount = 0
self.SkinPlusState = 0
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
return
def GetLength(self):
- return sizeof(tagTrainHorseData)
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.LV)
+ data = CommFunc.WriteDWORD(data, self.EatItemCount)
+ data = CommFunc.WriteDWORD(data, self.SkinPlusState)
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ return data
def OutputString(self):
- DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
LV:%d,
EatItemCount:%d,
- SkinPlusState:%d
+ SkinPlusState:%d,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.LV,
self.EatItemCount,
- self.SkinPlusState
+ self.SkinPlusState,
+ self.TrainTypes,
+ "...",
+ "..."
)
return DumpString
m_NAtagTrainHorseData=tagTrainHorseData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Cmd,m_NAtagTrainHorseData.SubCmd))] = m_NAtagTrainHorseData
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
#------------------------------------------------------
@@ -23667,6 +23913,90 @@
#------------------------------------------------------
+# A8 18 灵器培养信息 #tagMCLingQiTrainInfo
+
+class tagMCLingQiTrainInfo(Structure):
+ Head = tagHead()
+ EquipPlace = 0 #(BYTE EquipPlace)//灵器装备位
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x18
+ self.EquipPlace = 0
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EquipPlace)
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPlace:%d,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPlace,
+ self.TrainTypes,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCLingQiTrainInfo=tagMCLingQiTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiTrainInfo.Head.Cmd,m_NAtagMCLingQiTrainInfo.Head.SubCmd))] = m_NAtagMCLingQiTrainInfo
+
+
+#------------------------------------------------------
# A8 14 合成结果通知 #tagMCMakeItemAnswer
class tagMCMakeItemAnswer(Structure):
@@ -24091,6 +24421,83 @@
m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
+
+
+#------------------------------------------------------
+# A8 17 宠物培养信息 #tagMCPetTrainInfo
+
+class tagMCPetTrainInfo(Structure):
+ Head = tagHead()
+ TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
+ TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
+ TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x17
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TrainTypes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainLVList.append(value)
+ for i in range(self.TrainTypes):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.TrainItemCountList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x17
+ self.TrainTypes = 0
+ self.TrainLVList = list()
+ self.TrainItemCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.TrainTypes
+ length += 4 * self.TrainTypes
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TrainTypes)
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
+ for i in range(self.TrainTypes):
+ data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TrainTypes:%d,
+ TrainLVList:%s,
+ TrainItemCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TrainTypes,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCPetTrainInfo=tagMCPetTrainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPetTrainInfo.Head.Cmd,m_NAtagMCPetTrainInfo.Head.SubCmd))] = m_NAtagMCPetTrainInfo
#------------------------------------------------------
@@ -24638,203 +25045,7 @@
#------------------------------------------------------
-# AA 57 垃圾收集活动玩家信息 #tagMCActGarbagePlayerInfo
-
-class tagMCActGarbageAwardItemResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
- ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
- ("ItemCount", c_ushort),
- ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
- ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemLibType = 0
- self.ItemID = 0
- self.ItemCount = 0
- self.PosNum = 0
- self.TotalTimesNow = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCActGarbageAwardItemResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 57 垃圾收集活动玩家信息 //tagMCActGarbagePlayerInfo:
- ItemLibType:%d,
- ItemID:%d,
- ItemCount:%d,
- PosNum:%d,
- TotalTimesNow:%d
- '''\
- %(
- self.ItemLibType,
- self.ItemID,
- self.ItemCount,
- self.PosNum,
- self.TotalTimesNow
- )
- return DumpString
-
-
-class tagMCActGarbagePlayerInfo(Structure):
- Head = tagHead()
- ActNum = 0 #(BYTE ActNum)//活动编号
- GuideTaskFinish = 0 #(BYTE GuideTaskFinish)//引导任务是否已完成,有需要NPC对话引导任务时,则需要先完成才显示活动界面
- EnvironmentValue = 0 #(DWORD EnvironmentValue)//当前可用环保值
- EnvironmentValueHis = 0 #(DWORD EnvironmentValueHis)//历史环保值
- AwardItemResult=tagMCActGarbageAwardItemResult() #(tagMCActGarbageAwardItemResult AwardItemResult)//本次抽奖结果物品信息,可能为空
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x57
- 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.GuideTaskFinish,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.EnvironmentValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EnvironmentValueHis,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- _pos = self.AwardItemResult.ReadData(_lpData,_pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x57
- self.ActNum = 0
- self.GuideTaskFinish = 0
- self.EnvironmentValue = 0
- self.EnvironmentValueHis = 0
- self.AwardItemResult=tagMCActGarbageAwardItemResult()
- self.AwardItemResult.Clear()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 4
- length += 4
- length += self.AwardItemResult.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.GuideTaskFinish)
- data = CommFunc.WriteDWORD(data, self.EnvironmentValue)
- data = CommFunc.WriteDWORD(data, self.EnvironmentValueHis)
- data = CommFunc.WriteString(data,self.AwardItemResult.GetLength(),self.AwardItemResult.GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActNum:%d,
- GuideTaskFinish:%d,
- EnvironmentValue:%d,
- EnvironmentValueHis:%d,
- AwardItemResult:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActNum,
- self.GuideTaskFinish,
- self.EnvironmentValue,
- self.EnvironmentValueHis,
- self.AwardItemResult.OutputString()
- )
- return DumpString
-
-
-m_NAtagMCActGarbagePlayerInfo=tagMCActGarbagePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbagePlayerInfo.Head.Cmd,m_NAtagMCActGarbagePlayerInfo.Head.SubCmd))] = m_NAtagMCActGarbagePlayerInfo
-
-
-#------------------------------------------------------
# AA 55 垃圾收集活动信息 #tagMCActGarbageSortingInfo
-
-class tagMCActGarbageAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
- ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
- ("ItemCount", c_ushort),
- ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
- ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
- ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限
- ("LayerLimit", c_ubyte), #大于等于X层后可产出,0不限
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemLibType = 0
- self.ItemID = 0
- self.ItemCount = 0
- self.PosNum = 0
- self.TotalTimesNow = 0
- self.TotalTimesMax = 0
- self.LayerLimit = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCActGarbageAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 55 垃圾收集活动信息 //tagMCActGarbageSortingInfo:
- ItemLibType:%d,
- ItemID:%d,
- ItemCount:%d,
- PosNum:%d,
- TotalTimesNow:%d,
- TotalTimesMax:%d,
- LayerLimit:%d
- '''\
- %(
- self.ItemLibType,
- self.ItemID,
- self.ItemCount,
- self.PosNum,
- self.TotalTimesNow,
- self.TotalTimesMax,
- self.LayerLimit
- )
- return DumpString
-
class tagMCActGarbageSortingInfo(Structure):
Head = tagHead()
@@ -24842,12 +25053,7 @@
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
LimitLV = 0 #(WORD LimitLV)// 限制等级
- LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
- AwardItemCount = 0 #(BYTE AwardItemCount)
- AwardItemList = list() #(vector<tagMCActGarbageAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
- SuperItemCount = 0 #(BYTE SuperItemCount)
- SuperItemList = list() #(vector<tagMCActGarbageAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
- SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
data = None
def __init__(self):
@@ -24863,18 +25069,7 @@
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItemList = tagMCActGarbageAwardItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.SuperItemCount):
- temSuperItemList = tagMCActGarbageAwardItem()
- _pos = temSuperItemList.ReadData(_lpData, _pos)
- self.SuperItemList.append(temSuperItemList)
- self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -24886,12 +25081,7 @@
self.StartDate = ""
self.EndtDate = ""
self.LimitLV = 0
- self.LayerNum = 0
- self.AwardItemCount = 0
- self.AwardItemList = list()
- self.SuperItemCount = 0
- self.SuperItemList = list()
- self.SuperItemCanChooseCount = 0
+ self.ResetType = 0
return
def GetLength(self):
@@ -24901,13 +25091,6 @@
length += 10
length += 10
length += 2
- length += 1
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItemList[i].GetLength()
- length += 1
- for i in range(self.SuperItemCount):
- length += self.SuperItemList[i].GetLength()
length += 1
return length
@@ -24919,14 +25102,7 @@
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.LayerNum)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.SuperItemCount)
- for i in range(self.SuperItemCount):
- data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
return data
def OutputString(self):
@@ -24936,12 +25112,7 @@
StartDate:%s,
EndtDate:%s,
LimitLV:%d,
- LayerNum:%d,
- AwardItemCount:%d,
- AwardItemList:%s,
- SuperItemCount:%d,
- SuperItemList:%s,
- SuperItemCanChooseCount:%d
+ ResetType:%d
'''\
%(
self.Head.OutputString(),
@@ -24949,12 +25120,7 @@
self.StartDate,
self.EndtDate,
self.LimitLV,
- self.LayerNum,
- self.AwardItemCount,
- "...",
- self.SuperItemCount,
- "...",
- self.SuperItemCanChooseCount
+ self.ResetType
)
return DumpString
@@ -24964,17 +25130,24 @@
#------------------------------------------------------
-# AA 56 垃圾收集活动任务进度信息 #tagMCActGarbageTaskInfo
+# AA 57 垃圾收集活动分类结果 #tagMCActGarbageSortingResult
-class tagMCActGarbageTaskItem(Structure):
+class tagMCActGarbageSortingResult(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), #活动编号
+ ("GarbageSortingType", c_ubyte), #垃圾分类类型
+ ("IsRight", c_ubyte), #是否正确
+ ("AddEnvValue", c_int), #增加环保值
+ ("HisEnvValueTotal", c_int), # 当前活动累计获得环保值
]
def __init__(self):
self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x57
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -24983,34 +25156,56 @@
return _pos + self.GetLength()
def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
+ self.Cmd = 0xAA
+ self.SubCmd = 0x57
+ self.ActNum = 0
+ self.GarbageSortingType = 0
+ self.IsRight = 0
+ self.AddEnvValue = 0
+ self.HisEnvValueTotal = 0
return
def GetLength(self):
- return sizeof(tagMCActGarbageTaskItem)
+ return sizeof(tagMCActGarbageSortingResult)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 56 垃圾收集活动任务进度信息 //tagMCActGarbageTaskInfo:
- ItemID:%d,
- ItemCount:%d
+ DumpString = '''// AA 57 垃圾收集活动分类结果 //tagMCActGarbageSortingResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ GarbageSortingType:%d,
+ IsRight:%d,
+ AddEnvValue:%d,
+ HisEnvValueTotal:%d
'''\
%(
- self.ItemID,
- self.ItemCount
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.GarbageSortingType,
+ self.IsRight,
+ self.AddEnvValue,
+ self.HisEnvValueTotal
)
return DumpString
+
+m_NAtagMCActGarbageSortingResult=tagMCActGarbageSortingResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageSortingResult.Cmd,m_NAtagMCActGarbageSortingResult.SubCmd))] = m_NAtagMCActGarbageSortingResult
+
+
+#------------------------------------------------------
+# AA 56 垃圾收集活动任务进度信息 #tagMCActGarbageTaskInfo
class tagMCActGarbageTask(Structure):
_pack_ = 1
_fields_ = [
("GarbageTaskID", c_ubyte), #垃圾任务ID
("GarbageTaskValue", c_int), #当前进度值,一直累加
- ("GarbageTaskFinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
+ ("GarbageTaskFinishCount", c_int), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
]
def __init__(self):
@@ -25051,10 +25246,9 @@
class tagMCActGarbageTaskInfo(Structure):
Head = tagHead()
ActNum = 0 #(BYTE ActNum)// 活动编号
+ HisEnvValueTotal = 0 #(DWORD HisEnvValueTotal)// 当前活动累计获得环保值
GarbageTaskCount = 0 #(BYTE GarbageTaskCount)//任务数
GarbageTaskList = list() #(vector<tagMCActGarbageTask> GarbageTaskList)//任务信息列表
- TaskItemCount = 0 #(BYTE TaskItemCount)//本次获得的垃圾收集任务奖励物品个数,可能为0
- GarbageTaskItemList = list() #(vector<tagMCActGarbageTaskItem> GarbageTaskItemList)
data = None
def __init__(self):
@@ -25067,16 +25261,12 @@
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HisEnvValueTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.GarbageTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.GarbageTaskCount):
temGarbageTaskList = tagMCActGarbageTask()
_pos = temGarbageTaskList.ReadData(_lpData, _pos)
self.GarbageTaskList.append(temGarbageTaskList)
- self.TaskItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TaskItemCount):
- temGarbageTaskItemList = tagMCActGarbageTaskItem()
- _pos = temGarbageTaskItemList.ReadData(_lpData, _pos)
- self.GarbageTaskItemList.append(temGarbageTaskItemList)
return _pos
def Clear(self):
@@ -25085,22 +25275,19 @@
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x56
self.ActNum = 0
+ self.HisEnvValueTotal = 0
self.GarbageTaskCount = 0
self.GarbageTaskList = list()
- self.TaskItemCount = 0
- self.GarbageTaskItemList = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
+ length += 4
length += 1
for i in range(self.GarbageTaskCount):
length += self.GarbageTaskList[i].GetLength()
- length += 1
- for i in range(self.TaskItemCount):
- length += self.GarbageTaskItemList[i].GetLength()
return length
@@ -25108,29 +25295,25 @@
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteDWORD(data, self.HisEnvValueTotal)
data = CommFunc.WriteBYTE(data, self.GarbageTaskCount)
for i in range(self.GarbageTaskCount):
data = CommFunc.WriteString(data, self.GarbageTaskList[i].GetLength(), self.GarbageTaskList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TaskItemCount)
- for i in range(self.TaskItemCount):
- data = CommFunc.WriteString(data, self.GarbageTaskItemList[i].GetLength(), self.GarbageTaskItemList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
ActNum:%d,
+ HisEnvValueTotal:%d,
GarbageTaskCount:%d,
- GarbageTaskList:%s,
- TaskItemCount:%d,
- GarbageTaskItemList:%s
+ GarbageTaskList:%s
'''\
%(
self.Head.OutputString(),
self.ActNum,
+ self.HisEnvValueTotal,
self.GarbageTaskCount,
- "...",
- self.TaskItemCount,
"..."
)
return DumpString
@@ -27236,8 +27419,9 @@
LimitLV = 0 #(WORD LimitLV)// 限制等级
CTGPrizeCount = 0 #(BYTE CTGPrizeCount)
CTGPrizeList = list() #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
- UseGoldPrizeCount = 0 #(BYTE UseGoldPrizeCount)
- UseGoldPrizeList = list() #(vector<DWORD> UseGoldPrizeList)// 累计消费仙玉奖励次数列表 [奖励第1次所需累计消费仙玉, 第2次, ...]
+ UseMoneyType = 0 #(BYTE UseMoneyType)// 累计消费货币类型
+ UseMoneyPrizeCount = 0 #(BYTE UseMoneyPrizeCount)
+ UseMoneyPrizeList = list() #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
TurnItemCount = 0 #(BYTE TurnItemCount)
TurnItemList = list() #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
GoodItemCount = 0 #(BYTE GoodItemCount)
@@ -27266,10 +27450,11 @@
for i in range(self.CTGPrizeCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.CTGPrizeList.append(value)
- self.UseGoldPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.UseGoldPrizeCount):
+ self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.UseMoneyPrizeCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.UseGoldPrizeList.append(value)
+ self.UseMoneyPrizeList.append(value)
self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.TurnItemCount):
temTurnItemList = tagMCActTurntableItem()
@@ -27301,8 +27486,9 @@
self.LimitLV = 0
self.CTGPrizeCount = 0
self.CTGPrizeList = list()
- self.UseGoldPrizeCount = 0
- self.UseGoldPrizeList = list()
+ self.UseMoneyType = 0
+ self.UseMoneyPrizeCount = 0
+ self.UseMoneyPrizeList = list()
self.TurnItemCount = 0
self.TurnItemList = list()
self.GoodItemCount = 0
@@ -27324,7 +27510,8 @@
length += 1
length += 4 * self.CTGPrizeCount
length += 1
- length += 4 * self.UseGoldPrizeCount
+ length += 1
+ length += 4 * self.UseMoneyPrizeCount
length += 1
for i in range(self.TurnItemCount):
length += self.TurnItemList[i].GetLength()
@@ -27350,9 +27537,10 @@
data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
for i in range(self.CTGPrizeCount):
data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
- data = CommFunc.WriteBYTE(data, self.UseGoldPrizeCount)
- for i in range(self.UseGoldPrizeCount):
- data = CommFunc.WriteDWORD(data, self.UseGoldPrizeList[i])
+ data = CommFunc.WriteBYTE(data, self.UseMoneyType)
+ data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
+ for i in range(self.UseMoneyPrizeCount):
+ data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
data = CommFunc.WriteBYTE(data, self.TurnItemCount)
for i in range(self.TurnItemCount):
data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
@@ -27376,8 +27564,9 @@
LimitLV:%d,
CTGPrizeCount:%d,
CTGPrizeList:%s,
- UseGoldPrizeCount:%d,
- UseGoldPrizeList:%s,
+ UseMoneyType:%d,
+ UseMoneyPrizeCount:%d,
+ UseMoneyPrizeList:%s,
TurnItemCount:%d,
TurnItemList:%s,
GoodItemCount:%d,
@@ -27396,7 +27585,8 @@
self.LimitLV,
self.CTGPrizeCount,
"...",
- self.UseGoldPrizeCount,
+ self.UseMoneyType,
+ self.UseMoneyPrizeCount,
"...",
self.TurnItemCount,
"...",
@@ -27425,7 +27615,7 @@
("ActNum", c_ubyte), #活动编号
("CanUseCount", c_ubyte), #可转盘次数
("CTGTotal", c_int), #累计充值额度
- ("UseGoldTotal", c_int), #累计消费仙玉额度
+ ("UseMoneyTotal", c_int), #累计消费货币额度
("TurnItemState", c_int), #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
("GetItemNum", c_ubyte), #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
]
@@ -27447,7 +27637,7 @@
self.ActNum = 0
self.CanUseCount = 0
self.CTGTotal = 0
- self.UseGoldTotal = 0
+ self.UseMoneyTotal = 0
self.TurnItemState = 0
self.GetItemNum = 0
return
@@ -27465,7 +27655,7 @@
ActNum:%d,
CanUseCount:%d,
CTGTotal:%d,
- UseGoldTotal:%d,
+ UseMoneyTotal:%d,
TurnItemState:%d,
GetItemNum:%d
'''\
@@ -27475,7 +27665,7 @@
self.ActNum,
self.CanUseCount,
self.CTGTotal,
- self.UseGoldTotal,
+ self.UseMoneyTotal,
self.TurnItemState,
self.GetItemNum
)
@@ -27931,6 +28121,288 @@
m_NAtagMCActWishingWellPlayerInfo=tagMCActWishingWellPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellPlayerInfo.Head.Cmd,m_NAtagMCActWishingWellPlayerInfo.Head.SubCmd))] = m_NAtagMCActWishingWellPlayerInfo
+
+
+#------------------------------------------------------
+# AA 59 仙匣秘境抽奖结果 #tagMCActXianXiaMJAwardItemResult
+
+class tagMCActXianXiaMJAwardItemResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
+ ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
+ ("ItemCount", c_ushort),
+ ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
+ ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x59
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x59
+ self.ActNum = 0
+ self.ItemLibType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.PosNum = 0
+ self.TotalTimesNow = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActXianXiaMJAwardItemResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 59 仙匣秘境抽奖结果 //tagMCActXianXiaMJAwardItemResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ ItemLibType:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ PosNum:%d,
+ TotalTimesNow:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.ItemLibType,
+ self.ItemID,
+ self.ItemCount,
+ self.PosNum,
+ self.TotalTimesNow
+ )
+ return DumpString
+
+
+m_NAtagMCActXianXiaMJAwardItemResult=tagMCActXianXiaMJAwardItemResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJAwardItemResult.Cmd,m_NAtagMCActXianXiaMJAwardItemResult.SubCmd))] = m_NAtagMCActXianXiaMJAwardItemResult
+
+
+#------------------------------------------------------
+# AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo
+
+class tagMCActXianXiaMJAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库
+ ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同
+ ("ItemCount", c_ushort),
+ ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中;
+ ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0
+ ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限
+ ("LayerLimit", c_ubyte), #大于等于X层后可产出,0不限
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemLibType = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.PosNum = 0
+ self.TotalTimesNow = 0
+ self.TotalTimesMax = 0
+ self.LayerLimit = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActXianXiaMJAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo:
+ ItemLibType:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ PosNum:%d,
+ TotalTimesNow:%d,
+ TotalTimesMax:%d,
+ LayerLimit:%d
+ '''\
+ %(
+ self.ItemLibType,
+ self.ItemID,
+ self.ItemCount,
+ self.PosNum,
+ self.TotalTimesNow,
+ self.TotalTimesMax,
+ self.LayerLimit
+ )
+ return DumpString
+
+
+class tagMCActXianXiaMJInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
+ MoneyValue = 0 #(WORD MoneyValue)//消耗货币值
+ LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层
+ AwardItemCount = 0 #(BYTE AwardItemCount)
+ AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品
+ SuperItemCount = 0 #(BYTE SuperItemCount)
+ SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品;
+ SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCActXianXiaMJAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SuperItemCount):
+ temSuperItemList = tagMCActXianXiaMJAwardItem()
+ _pos = temSuperItemList.ReadData(_lpData, _pos)
+ self.SuperItemList.append(temSuperItemList)
+ self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x58
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.MoneyType = 0
+ self.MoneyValue = 0
+ self.LayerNum = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ self.SuperItemCount = 0
+ self.SuperItemList = list()
+ self.SuperItemCanChooseCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+ length += 1
+ for i in range(self.SuperItemCount):
+ length += self.SuperItemList[i].GetLength()
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.MoneyType)
+ data = CommFunc.WriteWORD(data, self.MoneyValue)
+ data = CommFunc.WriteBYTE(data, self.LayerNum)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.SuperItemCount)
+ for i in range(self.SuperItemCount):
+ data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ MoneyType:%d,
+ MoneyValue:%d,
+ LayerNum:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s,
+ SuperItemCount:%d,
+ SuperItemList:%s,
+ SuperItemCanChooseCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.MoneyType,
+ self.MoneyValue,
+ self.LayerNum,
+ self.AwardItemCount,
+ "...",
+ self.SuperItemCount,
+ "...",
+ self.SuperItemCanChooseCount
+ )
+ return DumpString
+
+
+m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo
#------------------------------------------------------
@@ -35324,6 +35796,80 @@
#------------------------------------------------------
+# B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
+
+class tagMCOnlinePrizeNew(Structure):
+ Head = tagHead()
+ OnlineTime = 0 #(DWORD OnlineTime)//在线时间毫秒
+ Len = 0 #(BYTE Len)
+ PrizeInfo = list() #(vector<DWORD> PrizeInfo)//领奖记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Len):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.PrizeInfo.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x13
+ self.OnlineTime = 0
+ self.Len = 0
+ self.PrizeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 4 * self.Len
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.OnlineTime)
+ data = CommFunc.WriteBYTE(data, self.Len)
+ for i in range(self.Len):
+ data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ OnlineTime:%d,
+ Len:%d,
+ PrizeInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.OnlineTime,
+ self.Len,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCOnlinePrizeNew=tagMCOnlinePrizeNew()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrizeNew.Head.Cmd,m_NAtagMCOnlinePrizeNew.Head.SubCmd))] = m_NAtagMCOnlinePrizeNew
+
+
+#------------------------------------------------------
# B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime
class tagMCPlayerDeadTime(Structure):
--
Gitblit v1.8.0