From a1ea5474ffd2b081668f9a0cef8d069aa78db85d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 十二月 2025 20:53:42 +0800
Subject: [PATCH] 389 流向记录(战斗服务器不记录流向)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 4725 ++++++++++++++---------------------------------------------
1 files changed, 1,170 insertions(+), 3,555 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index af57e4b..c12717b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5117,129 +5117,6 @@
#------------------------------------------------------
-#A3 04 玩家扫荡信息 #tagMCFBWipeOutData
-
-class tagMCFBData(Structure):
- _pack_ = 1
- _fields_ = [
- ("FBID", c_int), #fbId
- ("LineIndex", c_ubyte), #副本通关场次
- ("WipeOutCnt", c_ubyte), #扫荡次数
- ("passGrade", 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.FBID = 0
- self.LineIndex = 0
- self.WipeOutCnt = 0
- self.passGrade = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFBData)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 04 玩家扫荡信息 //tagMCFBWipeOutData:
- FBID:%d,
- LineIndex:%d,
- WipeOutCnt:%d,
- passGrade:%d
- '''\
- %(
- self.FBID,
- self.LineIndex,
- self.WipeOutCnt,
- self.passGrade
- )
- return DumpString
-
-
-class tagMCFBWipeOutData(Structure):
- Head = tagHead()
- WipeOutFBID = 0 #(DWORD WipeOutFBID)//当前扫荡的副本id
- FBDataCnt = 0 #(BYTE FBDataCnt)//
- FBDataList = list() #(vector<tagMCFBData> FBDataList)//
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x04
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.WipeOutFBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FBDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.FBDataCnt):
- temFBDataList = tagMCFBData()
- _pos = temFBDataList.ReadData(_lpData, _pos)
- self.FBDataList.append(temFBDataList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x04
- self.WipeOutFBID = 0
- self.FBDataCnt = 0
- self.FBDataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- for i in range(self.FBDataCnt):
- length += self.FBDataList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.WipeOutFBID)
- data = CommFunc.WriteBYTE(data, self.FBDataCnt)
- for i in range(self.FBDataCnt):
- data = CommFunc.WriteString(data, self.FBDataList[i].GetLength(), self.FBDataList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- WipeOutFBID:%d,
- FBDataCnt:%d,
- FBDataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.WipeOutFBID,
- self.FBDataCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFBWipeOutData=tagMCFBWipeOutData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBWipeOutData.Head.Cmd,m_NAtagMCFBWipeOutData.Head.SubCmd))] = m_NAtagMCFBWipeOutData
-
-
-#------------------------------------------------------
# A3 18 极品白拿信息 #tagMCFreeGoodsInfo
class tagMCFreeGoods(Structure):
@@ -5527,135 +5404,6 @@
#------------------------------------------------------
-# A3 37 投资理财信息 #tagMCGoldInvestInfo
-
-class tagMCInvestReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("RewardIndex", c_ushort), # 索引
- ("RewardValue", 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.RewardIndex = 0
- self.RewardValue = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCInvestReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 37 投资理财信息 //tagMCGoldInvestInfo:
- RewardIndex:%d,
- RewardValue:%d
- '''\
- %(
- self.RewardIndex,
- self.RewardValue
- )
- return DumpString
-
-
-class tagMCGoldInvestInfo(Structure):
- Head = tagHead()
- InvestType = 0 #(BYTE InvestType)// 投资类型
- CurDay = 0 #(DWORD CurDay)// 当前天数
- InvestGold = 0 #(DWORD InvestGold)// 投资额度
- RewardRecordCnt = 0 #(BYTE RewardRecordCnt)// 投资回报个数
- InvestRewardList = list() #(vector<tagMCInvestReward> InvestRewardList)// 投资回报记录
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x37
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.CurDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.InvestGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RewardRecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RewardRecordCnt):
- temInvestRewardList = tagMCInvestReward()
- _pos = temInvestRewardList.ReadData(_lpData, _pos)
- self.InvestRewardList.append(temInvestRewardList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x37
- self.InvestType = 0
- self.CurDay = 0
- self.InvestGold = 0
- self.RewardRecordCnt = 0
- self.InvestRewardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4
- length += 4
- length += 1
- for i in range(self.RewardRecordCnt):
- length += self.InvestRewardList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.InvestType)
- data = CommFunc.WriteDWORD(data, self.CurDay)
- data = CommFunc.WriteDWORD(data, self.InvestGold)
- data = CommFunc.WriteBYTE(data, self.RewardRecordCnt)
- for i in range(self.RewardRecordCnt):
- data = CommFunc.WriteString(data, self.InvestRewardList[i].GetLength(), self.InvestRewardList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- InvestType:%d,
- CurDay:%d,
- InvestGold:%d,
- RewardRecordCnt:%d,
- InvestRewardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.InvestType,
- self.CurDay,
- self.InvestGold,
- self.RewardRecordCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCGoldInvestInfo=tagMCGoldInvestInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGoldInvestInfo.Head.Cmd,m_NAtagMCGoldInvestInfo.Head.SubCmd))] = m_NAtagMCGoldInvestInfo
-
-
-#------------------------------------------------------
# A3 C7 古宝信息 #tagMCGubaoInfo
class tagMCGubao(Structure):
@@ -5824,20 +5572,22 @@
#------------------------------------------------------
-# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
+# A3 03 坐骑阶级信息 #tagSCHorseClassInfo
-class tagMCHorsePetSkinInfo(Structure):
+class tagSCHorseClassInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Type", c_ubyte), # 1-坐骑 2-灵宠
- ("ID", c_int), # 对应坐骑表灵宠表ID
- ("Exp", c_int), #经验
- ("SkinLV", c_ubyte), #觉醒等级
- ("SkinIndex", c_ubyte), #当前选择外观
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), #当前阶级,从0开始
+ ("HorseLV", c_ushort), #当前阶等级,从1开始
+ ("Exp", c_ushort), #当前阶等级经验,每级从0开始
]
def __init__(self):
self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x03
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -5846,111 +5596,51 @@
return _pos + self.GetLength()
def Clear(self):
- self.Type = 0
- self.ID = 0
+ self.Cmd = 0xA3
+ self.SubCmd = 0x03
+ self.ClassLV = 0
+ self.HorseLV = 0
self.Exp = 0
- self.SkinLV = 0
- self.SkinIndex = 0
return
def GetLength(self):
- return sizeof(tagMCHorsePetSkinInfo)
+ return sizeof(tagSCHorseClassInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
- Type:%d,
- ID:%d,
- Exp:%d,
- SkinLV:%d,
- SkinIndex:%d
+ DumpString = '''// A3 03 坐骑阶级信息 //tagSCHorseClassInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ HorseLV:%d,
+ Exp:%d
'''\
%(
- self.Type,
- self.ID,
- self.Exp,
- self.SkinLV,
- self.SkinIndex
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.HorseLV,
+ self.Exp
)
return DumpString
-class tagMCHorsePetSkinData(Structure):
- Head = tagHead()
- Num = 0 #(BYTE Num)//个数
- InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x12
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Num):
- temInfoList = tagMCHorsePetSkinInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x12
- self.Num = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Num):
- length += self.InfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Num)
- for i in range(self.Num):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Num:%d,
- InfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Num,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+m_NAtagSCHorseClassInfo=tagSCHorseClassInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseClassInfo.Cmd,m_NAtagSCHorseClassInfo.SubCmd))] = m_NAtagSCHorseClassInfo
#------------------------------------------------------
-# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
+# A3 04 坐骑外观信息 #tagSCHorseSkinInfo
-class tagMCHorseSkinTimeInfo(Structure):
+class tagSCHorseSkin(Structure):
_pack_ = 1
_fields_ = [
- ("ID", c_int), # 对应坐骑幻化表ID
- ("InvalidTime", c_int), # 失效时间戳
+ ("HorseSkinID", c_ushort), #坐骑外观ID
+ ("State", c_ubyte), #是否已激活
+ ("EndTime", c_int), #到期时间戳,0为永久
+ ("Star", c_ubyte), #星级
]
def __init__(self):
@@ -5963,146 +5653,44 @@
return _pos + self.GetLength()
def Clear(self):
- self.ID = 0
- self.InvalidTime = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCHorseSkinTimeInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
- ID:%d,
- InvalidTime:%d
- '''\
- %(
- self.ID,
- self.InvalidTime
- )
- return DumpString
-
-
-class tagMCHorseSkinTimeInfoList(Structure):
- Head = tagHead()
- TimeCnt = 0 #(BYTE TimeCnt)//个数
- TimeInfoList = list() #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x10
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TimeCnt):
- temTimeInfoList = tagMCHorseSkinTimeInfo()
- _pos = temTimeInfoList.ReadData(_lpData, _pos)
- self.TimeInfoList.append(temTimeInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x10
- self.TimeCnt = 0
- self.TimeInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.TimeCnt):
- length += self.TimeInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TimeCnt)
- for i in range(self.TimeCnt):
- data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- TimeCnt:%d,
- TimeInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.TimeCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
-
-
-#------------------------------------------------------
-# A3 CD 坐骑星级信息 #tagMCHorseStarInfo
-
-class tagMCHorseStar(Structure):
- _pack_ = 1
- _fields_ = [
- ("HorseID", c_int), # 坐骑表ID
- ("Star", c_ubyte), # 星级
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.HorseID = 0
+ self.HorseSkinID = 0
+ self.State = 0
+ self.EndTime = 0
self.Star = 0
return
def GetLength(self):
- return sizeof(tagMCHorseStar)
+ return sizeof(tagSCHorseSkin)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
- HorseID:%d,
+ DumpString = '''// A3 04 坐骑外观信息 //tagSCHorseSkinInfo:
+ HorseSkinID:%d,
+ State:%d,
+ EndTime:%d,
Star:%d
'''\
%(
- self.HorseID,
+ self.HorseSkinID,
+ self.State,
+ self.EndTime,
self.Star
)
return DumpString
-class tagMCHorseStarInfo(Structure):
+class tagSCHorseSkinInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)
- HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
+ HorseSkinList = list() #(vector<tagSCHorseSkin> HorseSkinList)
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xCD
+ self.Head.SubCmd = 0x04
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -6110,18 +5698,18 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temHorseStarList = tagMCHorseStar()
- _pos = temHorseStarList.ReadData(_lpData, _pos)
- self.HorseStarList.append(temHorseStarList)
+ temHorseSkinList = tagSCHorseSkin()
+ _pos = temHorseSkinList.ReadData(_lpData, _pos)
+ self.HorseSkinList.append(temHorseSkinList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xCD
+ self.Head.SubCmd = 0x04
self.Count = 0
- self.HorseStarList = list()
+ self.HorseSkinList = list()
return
def GetLength(self):
@@ -6129,7 +5717,7 @@
length += self.Head.GetLength()
length += 1
for i in range(self.Count):
- length += self.HorseStarList[i].GetLength()
+ length += self.HorseSkinList[i].GetLength()
return length
@@ -6138,14 +5726,14 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteBYTE(data, self.Count)
for i in range(self.Count):
- data = CommFunc.WriteString(data, self.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
+ data = CommFunc.WriteString(data, self.HorseSkinList[i].GetLength(), self.HorseSkinList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
Count:%d,
- HorseStarList:%s
+ HorseSkinList:%s
'''\
%(
self.Head.OutputString(),
@@ -6155,99 +5743,72 @@
return DumpString
-m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
+m_NAtagSCHorseSkinInfo=tagSCHorseSkinInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHorseSkinInfo.Head.Cmd,m_NAtagSCHorseSkinInfo.Head.SubCmd))] = m_NAtagSCHorseSkinInfo
#------------------------------------------------------
-# A3 38 投资理财信息 #tagMCInvestInfo
+# A3 38 投资信息 #tagSCInvestInfo
-class tagMCInvestInfo(Structure):
- Head = tagHead()
- InvestType = 0 #(BYTE InvestType)// 投资类型
- CurDay = 0 #(WORD CurDay)// 当前天数,投资第一天为1
- ValueCount = 0 #(BYTE ValueCount)
- RewardValue = list() #(vector<DWORD> RewardValue)//领奖记录值,按投资回报索引位记录是否已领取
- ProgressValue = list() #(vector<DWORD> ProgressValue)//投资相关可领取进度记录值: 9登录投资-记录已登录天数;11Boss投资-按回报索引位记录是否已击杀该boss
- data = None
+class tagSCInvestInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("InvestType", c_ubyte), # 投资类型
+ ("InvestBuyTime", c_int), # 投资购买时间戳,永久的通过该时间判断是否有效或已过天数,任意类型均有该值,过期没有重置,前端自己判断
+ ("InvestEndTime", c_int), # 投资到期时间戳,非永久的通过该时间判断到期时间,有天数限制的才有值
+ ("AwardState", c_ubyte), # 今日是否已领取奖励
+ ]
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x38
+ self.Cmd = 0xA3
+ self.SubCmd = 0x38
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.InvestType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.CurDay,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ValueCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.RewardValue.append(value)
- for i in range(self.ValueCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.ProgressValue.append(value)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x38
+ self.Cmd = 0xA3
+ self.SubCmd = 0x38
self.InvestType = 0
- self.CurDay = 0
- self.ValueCount = 0
- self.RewardValue = list()
- self.ProgressValue = list()
+ self.InvestBuyTime = 0
+ self.InvestEndTime = 0
+ self.AwardState = 0
return
def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 2
- length += 1
- length += 4 * self.ValueCount
- length += 4 * self.ValueCount
-
- return length
+ return sizeof(tagSCInvestInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.InvestType)
- data = CommFunc.WriteWORD(data, self.CurDay)
- data = CommFunc.WriteBYTE(data, self.ValueCount)
- for i in range(self.ValueCount):
- data = CommFunc.WriteDWORD(data, self.RewardValue[i])
- for i in range(self.ValueCount):
- data = CommFunc.WriteDWORD(data, self.ProgressValue[i])
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Head:%s,
+ DumpString = '''// A3 38 投资信息 //tagSCInvestInfo:
+ Cmd:%s,
+ SubCmd:%s,
InvestType:%d,
- CurDay:%d,
- ValueCount:%d,
- RewardValue:%s,
- ProgressValue:%s
+ InvestBuyTime:%d,
+ InvestEndTime:%d,
+ AwardState:%d
'''\
%(
- self.Head.OutputString(),
+ self.Cmd,
+ self.SubCmd,
self.InvestType,
- self.CurDay,
- self.ValueCount,
- "...",
- "..."
+ self.InvestBuyTime,
+ self.InvestEndTime,
+ self.AwardState
)
return DumpString
-m_NAtagMCInvestInfo=tagMCInvestInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCInvestInfo.Head.Cmd,m_NAtagMCInvestInfo.Head.SubCmd))] = m_NAtagMCInvestInfo
+m_NAtagSCInvestInfo=tagSCInvestInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
#------------------------------------------------------
@@ -7430,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):
@@ -7877,185 +7490,6 @@
m_NAtagMCRuneInfo=tagMCRuneInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
-
-
-#------------------------------------------------------
-# A3 C8 神通等级信息 #tagMCShentongLVInfo
-
-class tagMCShentongLV(Structure):
- _pack_ = 1
- _fields_ = [
- ("ShentongID", c_ubyte),
- ("ClassLV", c_ubyte),
- ("LV", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ShentongID = 0
- self.ClassLV = 0
- self.LV = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShentongLV)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
- ShentongID:%d,
- ClassLV:%d,
- LV:%d
- '''\
- %(
- self.ShentongID,
- self.ClassLV,
- self.LV
- )
- return DumpString
-
-
-class tagMCShentongLVInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- ShentongLVList = list() #(vector<tagMCShentongLV> ShentongLVList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xC8
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temShentongLVList = tagMCShentongLV()
- _pos = temShentongLVList.ReadData(_lpData, _pos)
- self.ShentongLVList.append(temShentongLVList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xC8
- self.Count = 0
- self.ShentongLVList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.ShentongLVList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- ShentongLVList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
-
-
-#------------------------------------------------------
-# A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
-
-class tagMCShentongSkillInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- SkillIDList = list() #(vector<DWORD> SkillIDList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xC9
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.SkillIDList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xC9
- self.Count = 0
- self.SkillIDList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4 * self.Count
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- SkillIDList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
#------------------------------------------------------
@@ -9241,121 +8675,6 @@
#------------------------------------------------------
-#A3 01 坐骑培养信息 #tagTrainHorseData
-
-class tagTrainHorseData(Structure):
- Head = tagHead()
- LV = 0 #(BYTE LV)//等阶
- EatItemCount = 0 #(DWORD EatItemCount)//当前阶已吃丹个数
- SkinPlusState = 0 #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
- TrainTypes = 0 #(BYTE TrainTypes)//培养类型数
- TrainLVList = list() #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
- TrainItemCountList = list() #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
- SkinPlusStateCount = 0 #(BYTE SkinPlusStateCount)//幻化激活状态值数
- SkinPlusStateList = list() #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _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)
- 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):
- 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()
- self.SkinPlusStateCount = 0
- self.SkinPlusStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4
- length += 4
- length += 1
- length += 4 * self.TrainTypes
- length += 4 * self.TrainTypes
- length += 1
- length += 4 * self.SkinPlusStateCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.LV)
- data = CommFunc.WriteDWORD(data, self.EatItemCount)
- data = CommFunc.WriteDWORD(data, self.SkinPlusState)
- data = CommFunc.WriteBYTE(data, self.TrainTypes)
- for i in range(self.TrainTypes):
- data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
- for i in range(self.TrainTypes):
- data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
- data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
- for i in range(self.SkinPlusStateCount):
- data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- LV:%d,
- EatItemCount:%d,
- SkinPlusState:%d,
- TrainTypes:%d,
- TrainLVList:%s,
- TrainItemCountList:%s,
- SkinPlusStateCount:%d,
- SkinPlusStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.LV,
- self.EatItemCount,
- self.SkinPlusState,
- self.TrainTypes,
- "...",
- "...",
- self.SkinPlusStateCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagTrainHorseData=tagTrainHorseData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
-
-
-#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class tagMCTreasureGridLimit(Structure):
@@ -9641,152 +8960,6 @@
#------------------------------------------------------
-#A3 05 扫荡奖励信息 #tagMCWipeOutPrize
-
-class tagMCPrizeItemInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemID", c_int), #物品id
- ("ItemCnt", c_ubyte), #物品数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x05
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x05
- self.ItemID = 0
- self.ItemCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCPrizeItemInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 05 扫荡奖励信息 //tagMCWipeOutPrize:
- Cmd:%s,
- SubCmd:%s,
- ItemID:%d,
- ItemCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemID,
- self.ItemCnt
- )
- return DumpString
-
-
-class tagMCWipeOutPrize(Structure):
- Head = tagHead()
- FBID = 0 #(DWORD FBID)//副本id
- WipeOutCnt = 0 #(DWORD WipeOutCnt)//扫荡次数
- GiveExp = 0 #(DWORD GiveExp)//给予经验
- SilverCnt = 0 #(DWORD SilverCnt)//给予金币
- PrizeCnt = 0 #(BYTE PrizeCnt)//状态
- PrizeInfo = list() #(vector<tagMCPrizeItemInfo> PrizeInfo)//状态
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x05
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.FBID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.WipeOutCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GiveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SilverCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PrizeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PrizeCnt):
- temPrizeInfo = tagMCPrizeItemInfo()
- _pos = temPrizeInfo.ReadData(_lpData, _pos)
- self.PrizeInfo.append(temPrizeInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x05
- self.FBID = 0
- self.WipeOutCnt = 0
- self.GiveExp = 0
- self.SilverCnt = 0
- self.PrizeCnt = 0
- self.PrizeInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 4
- length += 4
- length += 1
- for i in range(self.PrizeCnt):
- length += self.PrizeInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.FBID)
- data = CommFunc.WriteDWORD(data, self.WipeOutCnt)
- data = CommFunc.WriteDWORD(data, self.GiveExp)
- data = CommFunc.WriteDWORD(data, self.SilverCnt)
- data = CommFunc.WriteBYTE(data, self.PrizeCnt)
- for i in range(self.PrizeCnt):
- data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- FBID:%d,
- WipeOutCnt:%d,
- GiveExp:%d,
- SilverCnt:%d,
- PrizeCnt:%d,
- PrizeInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.FBID,
- self.WipeOutCnt,
- self.GiveExp,
- self.SilverCnt,
- self.PrizeCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCWipeOutPrize=tagMCWipeOutPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWipeOutPrize.Head.Cmd,m_NAtagMCWipeOutPrize.Head.SubCmd))] = m_NAtagMCWipeOutPrize
-
-
-#------------------------------------------------------
# A3 35 通知世界等级 #tagPyMCWorldAverageLv
class tagPyMCWorldAverageLv(Structure):
@@ -9840,114 +9013,6 @@
m_NAtagPyMCWorldAverageLv=tagPyMCWorldAverageLv()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyMCWorldAverageLv.Cmd,m_NAtagPyMCWorldAverageLv.SubCmd))] = m_NAtagPyMCWorldAverageLv
-
-
-#------------------------------------------------------
-# A3 48 仙宝寻主领奖记录 #tagMCXBXZAwardRecordList
-
-class tagMCXBXZAwardRecord(Structure):
- _pack_ = 1
- _fields_ = [
- ("RecordIndex", c_ushort), #第几个记录值 每个key存31个id 0-30为0, 31-61为1..
- ("Record", 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.RecordIndex = 0
- self.Record = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCXBXZAwardRecord)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 48 仙宝寻主领奖记录 //tagMCXBXZAwardRecordList:
- RecordIndex:%d,
- Record:%d
- '''\
- %(
- self.RecordIndex,
- self.Record
- )
- return DumpString
-
-
-class tagMCXBXZAwardRecordList(Structure):
- Head = tagHead()
- RecordCnt = 0 #(WORD RecordCnt)//记录个数
- RecordList = list() #(vector<tagMCXBXZAwardRecord> RecordList)//记录列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x48
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RecordCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.RecordCnt):
- temRecordList = tagMCXBXZAwardRecord()
- _pos = temRecordList.ReadData(_lpData, _pos)
- self.RecordList.append(temRecordList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x48
- self.RecordCnt = 0
- self.RecordList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.RecordCnt):
- length += self.RecordList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.RecordCnt)
- for i in range(self.RecordCnt):
- data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RecordCnt:%d,
- RecordList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RecordCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCXBXZAwardRecordList=tagMCXBXZAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXBXZAwardRecordList.Head.Cmd,m_NAtagMCXBXZAwardRecordList.Head.SubCmd))] = m_NAtagMCXBXZAwardRecordList
#------------------------------------------------------
@@ -14491,6 +13556,7 @@
Face = 0 #(DWORD Face)
FacePic = 0 #(DWORD FacePic)
ModelMark = 0 #(DWORD ModelMark)//变形模型mark
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//其他外观信息
TitleID = 0 #(DWORD TitleID)//佩戴的称号
ServerID = 0 #(DWORD ServerID)
FightPower = 0 #(DWORD FightPower)
@@ -14520,6 +13586,7 @@
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -14545,6 +13612,7 @@
self.Face = 0
self.FacePic = 0
self.ModelMark = 0
+ self.EquipShowSwitch = 0
self.TitleID = 0
self.ServerID = 0
self.FightPower = 0
@@ -14573,6 +13641,7 @@
length += 4
length += 4
length += 4
+ length += 4
length += 33
length += 4
length += 3
@@ -14592,6 +13661,7 @@
data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.ModelMark)
+ data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
data = CommFunc.WriteDWORD(data, self.TitleID)
data = CommFunc.WriteDWORD(data, self.ServerID)
data = CommFunc.WriteDWORD(data, self.FightPower)
@@ -14615,6 +13685,7 @@
Face:%d,
FacePic:%d,
ModelMark:%d,
+ EquipShowSwitch:%d,
TitleID:%d,
ServerID:%d,
FightPower:%d,
@@ -14636,6 +13707,7 @@
self.Face,
self.FacePic,
self.ModelMark,
+ self.EquipShowSwitch,
self.TitleID,
self.ServerID,
self.FightPower,
@@ -15353,98 +14425,6 @@
#------------------------------------------------------
-# A8 10 通知获得物品 #tagMCNotifyUseItemGetItem
-
-class tagMCNotifyUseItemGetItem(Structure):
- Head = tagHead()
- UseItemID = 0 #(DWORD UseItemID)// 使用的物品ID
- UseCount = 0 #(WORD UseCount)// 使用物品个数
- GetItemLen = 0 #(WORD GetItemLen)
- GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
- MoneyType = 0 #(BYTE MoneyType)// 获得货币类型
- MoneyCount = 0 #(DWORD MoneyCount)// 获得货币数量
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x10
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.UseItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UseCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.GetItemLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.GetItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.GetItemLen)
- self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MoneyCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x10
- self.UseItemID = 0
- self.UseCount = 0
- self.GetItemLen = 0
- self.GetItemData = ""
- self.MoneyType = 0
- self.MoneyCount = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 2
- length += 2
- length += len(self.GetItemData)
- length += 1
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.UseItemID)
- data = CommFunc.WriteWORD(data, self.UseCount)
- data = CommFunc.WriteWORD(data, self.GetItemLen)
- data = CommFunc.WriteString(data, self.GetItemLen, self.GetItemData)
- data = CommFunc.WriteBYTE(data, self.MoneyType)
- data = CommFunc.WriteDWORD(data, self.MoneyCount)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- UseItemID:%d,
- UseCount:%d,
- GetItemLen:%d,
- GetItemData:%s,
- MoneyType:%d,
- MoneyCount:%d
- '''\
- %(
- self.Head.OutputString(),
- self.UseItemID,
- self.UseCount,
- self.GetItemLen,
- self.GetItemData,
- self.MoneyType,
- self.MoneyCount
- )
- return DumpString
-
-
-m_NAtagMCNotifyUseItemGetItem=tagMCNotifyUseItemGetItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyUseItemGetItem.Head.Cmd,m_NAtagMCNotifyUseItemGetItem.Head.SubCmd))] = m_NAtagMCNotifyUseItemGetItem
-
-
-#------------------------------------------------------
# A8 17 宠物培养信息 #tagMCPetTrainInfo
class tagMCPetTrainInfo(Structure):
@@ -15967,6 +14947,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Score", c_int), #当前积分
+ ("WinCnt", c_int), #累计胜利次数
]
def __init__(self):
@@ -15984,6 +14965,7 @@
self.Cmd = 0xA9
self.SubCmd = 0x23
self.Score = 0
+ self.WinCnt = 0
return
def GetLength(self):
@@ -15996,12 +14978,14 @@
DumpString = '''// A9 23 演武场玩家信息 //tagSCArenaPlayerInfo:
Cmd:%s,
SubCmd:%s,
- Score:%d
+ Score:%d,
+ WinCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Score
+ self.Score,
+ self.WinCnt
)
return DumpString
@@ -26135,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):
@@ -26430,460 +25362,6 @@
m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
-
-
-#------------------------------------------------------
-# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
-
-class tagMCFeastTravelAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastTravelAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCFeastTravelAward(Structure):
- AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
- NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
- AwardCountMax = 0 #(WORD AwardCountMax)//最大可领取次数,0代表不限
- AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
- AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.AwardCountMax,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItemList = tagMCFeastTravelAwardItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.AwardIndex = 0
- self.NeedTravelPoint = 0
- self.AwardCountMax = 0
- self.AwardItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += 2
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.AwardIndex)
- data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
- data = CommFunc.WriteWORD(data, self.AwardCountMax)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- AwardIndex:%d,
- NeedTravelPoint:%d,
- AwardCountMax:%d,
- AwardItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.AwardIndex,
- self.NeedTravelPoint,
- self.AwardCountMax,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCFeastTravelTask(Structure):
- _pack_ = 1
- _fields_ = [
- ("TravelTaskID", c_ubyte), #游历任务ID
- ("FinishNeedValue", c_ushort), #单次完成所需进度
- ("FinishTimeMax", c_ushort), #最大可完成次数,0代表不限
- ("AddTravelPoint", c_ushort), #单次完成获得游历值
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.TravelTaskID = 0
- self.FinishNeedValue = 0
- self.FinishTimeMax = 0
- self.AddTravelPoint = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastTravelTask)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
- TravelTaskID:%d,
- FinishNeedValue:%d,
- FinishTimeMax:%d,
- AddTravelPoint:%d
- '''\
- %(
- self.TravelTaskID,
- self.FinishNeedValue,
- self.FinishTimeMax,
- self.AddTravelPoint
- )
- return DumpString
-
-
-class tagMCFeastTravelInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
- TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
- TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
- TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
- TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x46
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TravelTaskCount):
- temTravelTaskList = tagMCFeastTravelTask()
- _pos = temTravelTaskList.ReadData(_lpData, _pos)
- self.TravelTaskList.append(temTravelTaskList)
- self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TravelAwardCount):
- temTravelAwardList = tagMCFeastTravelAward()
- _pos = temTravelAwardList.ReadData(_lpData, _pos)
- self.TravelAwardList.append(temTravelAwardList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x46
- self.StartDate = ""
- self.EndtDate = ""
- self.LimitLV = 0
- self.ResetType = 0
- self.TravelTaskCount = 0
- self.TravelTaskList = list()
- self.TravelAwardCount = 0
- self.TravelAwardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 1
- length += 1
- for i in range(self.TravelTaskCount):
- length += self.TravelTaskList[i].GetLength()
- length += 1
- for i in range(self.TravelAwardCount):
- length += self.TravelAwardList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
- for i in range(self.TravelTaskCount):
- data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
- for i in range(self.TravelAwardCount):
- data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- LimitLV:%d,
- ResetType:%d,
- TravelTaskCount:%d,
- TravelTaskList:%s,
- TravelAwardCount:%d,
- TravelAwardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.LimitLV,
- self.ResetType,
- self.TravelTaskCount,
- "...",
- self.TravelAwardCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
-
-
-#------------------------------------------------------
-# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
-
-class tagMCFeastTravelPlayerAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("AwardIndex", c_ubyte), #游历奖励索引
- ("GetAwardCount", c_int), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.AwardIndex = 0
- self.GetAwardCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastTravelPlayerAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
- AwardIndex:%d,
- GetAwardCount:%d
- '''\
- %(
- self.AwardIndex,
- self.GetAwardCount
- )
- return DumpString
-
-
-class tagMCFeastTravelPlayerTask(Structure):
- _pack_ = 1
- _fields_ = [
- ("TravelTaskID", c_ubyte), #游历任务ID
- ("TravelValue", c_int), #当前进度值,一直累加
- ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.TravelTaskID = 0
- self.TravelValue = 0
- self.FinishCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastTravelPlayerTask)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
- TravelTaskID:%d,
- TravelValue:%d,
- FinishCount:%d
- '''\
- %(
- self.TravelTaskID,
- self.TravelValue,
- self.FinishCount
- )
- return DumpString
-
-
-class tagMCFeastTravelPlayerInfo(Structure):
- Head = tagHead()
- TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
- TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
- TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
- TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
- TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x47
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TravelPlayerTaskCount):
- temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
- _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
- self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
- self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TravelPlayerAwardCount):
- temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
- _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
- self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x47
- self.TravelPoint = 0
- self.TravelPlayerTaskCount = 0
- self.TravelPlayerTaskList = list()
- self.TravelPlayerAwardCount = 0
- self.TravelPlayerAwardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- for i in range(self.TravelPlayerTaskCount):
- length += self.TravelPlayerTaskList[i].GetLength()
- length += 1
- for i in range(self.TravelPlayerAwardCount):
- length += self.TravelPlayerAwardList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.TravelPoint)
- data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
- for i in range(self.TravelPlayerTaskCount):
- data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
- for i in range(self.TravelPlayerAwardCount):
- data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- TravelPoint:%d,
- TravelPlayerTaskCount:%d,
- TravelPlayerTaskList:%s,
- TravelPlayerAwardCount:%d,
- TravelPlayerAwardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.TravelPoint,
- self.TravelPlayerTaskCount,
- "...",
- self.TravelPlayerAwardCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
#------------------------------------------------------
@@ -29222,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):
@@ -30535,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):
@@ -30992,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
#------------------------------------------------------
@@ -31715,896 +29638,6 @@
#------------------------------------------------------
-# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
-
-class tagMCActivityPlaceInfo(Structure):
- Head = tagHead()
- StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
- PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数
- RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数
- RewardLen = 0 #(BYTE RewardLen)
- RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
- TodayExp = 0 #(DWORD TodayExp)
- TodayExpPoint = 0 #(DWORD TodayExpPoint)
- YestordayExp = 0 #(DWORD YestordayExp)
- YestordayExpPoint = 0 #(DWORD YestordayExpPoint)
- TotalCount = 0 #(DWORD TotalCount)// 累计活跃放置次数
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
- self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x27
- self.StartTime = 0
- self.PlaceCount = 0
- self.RewardCount = 0
- self.RewardLen = 0
- self.RewardInfo = ""
- self.TodayExp = 0
- self.TodayExpPoint = 0
- self.YestordayExp = 0
- self.YestordayExpPoint = 0
- self.TotalCount = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 1
- length += 1
- length += len(self.RewardInfo)
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.StartTime)
- data = CommFunc.WriteBYTE(data, self.PlaceCount)
- data = CommFunc.WriteBYTE(data, self.RewardCount)
- data = CommFunc.WriteBYTE(data, self.RewardLen)
- data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
- data = CommFunc.WriteDWORD(data, self.TodayExp)
- data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
- data = CommFunc.WriteDWORD(data, self.YestordayExp)
- data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
- data = CommFunc.WriteDWORD(data, self.TotalCount)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartTime:%d,
- PlaceCount:%d,
- RewardCount:%d,
- RewardLen:%d,
- RewardInfo:%s,
- TodayExp:%d,
- TodayExpPoint:%d,
- YestordayExp:%d,
- YestordayExpPoint:%d,
- TotalCount:%d
- '''\
- %(
- self.Head.OutputString(),
- self.StartTime,
- self.PlaceCount,
- self.RewardCount,
- self.RewardLen,
- self.RewardInfo,
- self.TodayExp,
- self.TodayExpPoint,
- self.YestordayExp,
- self.YestordayExpPoint,
- self.TotalCount
- )
- return DumpString
-
-
-m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
-
-
-#------------------------------------------------------
-# B0 01 新增协助 #tagGCAssistInfoList
-
-class tagGCAssistInfo(Structure):
- AssistGUID = "" #(char AssistGUID[40])//协助GUID
- PlayerID = 0 #(DWORD PlayerID)
- PlayerName = "" #(char PlayerName[33])
- Job = 0 #(BYTE Job)
- LV = 0 #(WORD LV)//等级
- RealmLV = 0 #(BYTE RealmLV)//境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- MapID = 0 #(DWORD MapID)
- LineID = 0 #(DWORD LineID)
- NPCID = 0 #(DWORD NPCID)
- ExDataLen = 0 #(WORD ExDataLen)
- ExData = "" #(String ExData)//其他自定义数据
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
- return _pos
-
- def Clear(self):
- self.AssistGUID = ""
- self.PlayerID = 0
- self.PlayerName = ""
- self.Job = 0
- self.LV = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- self.MapID = 0
- self.LineID = 0
- self.NPCID = 0
- self.ExDataLen = 0
- self.ExData = ""
- return
-
- def GetLength(self):
- length = 0
- length += 40
- length += 4
- length += 33
- length += 1
- length += 2
- length += 1
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 2
- length += len(self.ExData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, 40, self.AssistGUID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteString(data, 33, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.LineID)
- data = CommFunc.WriteDWORD(data, self.NPCID)
- data = CommFunc.WriteWORD(data, self.ExDataLen)
- data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
- return data
-
- def OutputString(self):
- DumpString = '''
- AssistGUID:%s,
- PlayerID:%d,
- PlayerName:%s,
- Job:%d,
- LV:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d,
- MapID:%d,
- LineID:%d,
- NPCID:%d,
- ExDataLen:%d,
- ExData:%s
- '''\
- %(
- self.AssistGUID,
- self.PlayerID,
- self.PlayerName,
- self.Job,
- self.LV,
- self.RealmLV,
- self.Face,
- self.FacePic,
- self.MapID,
- self.LineID,
- self.NPCID,
- self.ExDataLen,
- self.ExData
- )
- return DumpString
-
-
-class tagGCAssistInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temAssistInfoList = tagGCAssistInfo()
- _pos = temAssistInfoList.ReadData(_lpData, _pos)
- self.AssistInfoList.append(temAssistInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x01
- self.Count = 0
- self.AssistInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.AssistInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- AssistInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCAssistInfoList=tagGCAssistInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
-
-
-#------------------------------------------------------
-# B0 03 正在进行中的协助 #tagGCAssistingInfo
-
-class tagGCAssistingInfo(Structure):
- Head = tagHead()
- AssistGUID = "" #(char AssistGUID[40])//协助GUID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x03
- self.AssistGUID = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 40
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 40, self.AssistGUID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- AssistGUID:%s
- '''\
- %(
- self.Head.OutputString(),
- self.AssistGUID
- )
- return DumpString
-
-
-m_NAtagGCAssistingInfo=tagGCAssistingInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
-
-
-#------------------------------------------------------
-# B0 08 协助结束 #tagGCAssistOver
-
-class tagGCAssistOver(Structure):
- Head = tagHead()
- IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因
- ReasonLen = 0 #(BYTE ReasonLen)
- Reason = "" #(String Reason)//原因
- AssistGUID = "" #(char AssistGUID[40])//协助GUID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x08
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
- self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x08
- self.IsTagPlayerReason = 0
- self.ReasonLen = 0
- self.Reason = ""
- self.AssistGUID = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += len(self.Reason)
- length += 40
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
- data = CommFunc.WriteBYTE(data, self.ReasonLen)
- data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
- data = CommFunc.WriteString(data, 40, self.AssistGUID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- IsTagPlayerReason:%d,
- ReasonLen:%d,
- Reason:%s,
- AssistGUID:%s
- '''\
- %(
- self.Head.OutputString(),
- self.IsTagPlayerReason,
- self.ReasonLen,
- self.Reason,
- self.AssistGUID
- )
- return DumpString
-
-
-m_NAtagGCAssistOver=tagGCAssistOver()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
-
-
-#------------------------------------------------------
-# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
-
-class tagGCCanGetAssistThanksGiftCount(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CanGetCount", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x06
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB0
- self.SubCmd = 0x06
- self.CanGetCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCCanGetAssistThanksGiftCount)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
- Cmd:%s,
- SubCmd:%s,
- CanGetCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CanGetCount
- )
- return DumpString
-
-
-m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
-
-
-#------------------------------------------------------
-# B0 02 删除协助 #tagGCClearAssist
-
-class tagGCClearAssist(Structure):
- Head = tagHead()
- AssistGUID = "" #(char AssistGUID[40])//协助GUID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x02
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x02
- self.AssistGUID = ""
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 40
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 40, self.AssistGUID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- AssistGUID:%s
- '''\
- %(
- self.Head.OutputString(),
- self.AssistGUID
- )
- return DumpString
-
-
-m_NAtagGCClearAssist=tagGCClearAssist()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
-
-
-#------------------------------------------------------
-#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
-
-class tagFamilyArrestAwardReceiveState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ReceiveState", c_int), #悬赏任务奖励领取情况
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x25
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB0
- self.SubCmd = 0x25
- self.ReceiveState = 0
- return
-
- def GetLength(self):
- return sizeof(tagFamilyArrestAwardReceiveState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B0 25 家族悬赏任务奖励领取情况 //tagFamilyArrestAwardReceiveState:
- Cmd:%s,
- SubCmd:%s,
- ReceiveState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ReceiveState
- )
- return DumpString
-
-
-m_NAtagFamilyArrestAwardReceiveState=tagFamilyArrestAwardReceiveState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestAwardReceiveState.Cmd,m_NAtagFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagFamilyArrestAwardReceiveState
-
-
-#------------------------------------------------------
-#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
-
-class tagFamilyArrestOverState(Structure):
- ID = 0 #(DWORD ID)//悬赏任务ID
- NameLen = 0 #(WORD NameLen)//名字长度
- Name = "" #(String Name)//size = NameLen
- OverState = 0 #(DWORD OverState)//任务完成情况
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.OverState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.ID = 0
- self.NameLen = 0
- self.Name = ""
- self.OverState = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 2
- length += len(self.Name)
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.ID)
- data = CommFunc.WriteWORD(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteDWORD(data, self.OverState)
- return data
-
- def OutputString(self):
- DumpString = '''
- ID:%d,
- NameLen:%d,
- Name:%s,
- OverState:%d
- '''\
- %(
- self.ID,
- self.NameLen,
- self.Name,
- self.OverState
- )
- return DumpString
-
-
-class tagFamilyArrestOverStateInfo(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x26
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temArrestOverStateInfo = tagFamilyArrestOverState()
- _pos = temArrestOverStateInfo.ReadData(_lpData, _pos)
- self.ArrestOverStateInfo.append(temArrestOverStateInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x26
- self.Count = 0
- self.ArrestOverStateInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.ArrestOverStateInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.ArrestOverStateInfo[i].GetLength(), self.ArrestOverStateInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- ArrestOverStateInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
-
-
-#------------------------------------------------------
-# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
-
-class tagGCGetAssistThanksGiftPreview(Structure):
- Head = tagHead()
- ItemID = 0 #(DWORD ItemID)//礼盒ID
- PlayerID = 0 #(DWORD PlayerID)//发起玩家ID
- PlayerName = "" #(char PlayerName[33])
- Job = 0 #(BYTE Job)
- LV = 0 #(WORD LV)
- RealmLV = 0 #(BYTE RealmLV)//境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- MapID = 0 #(DWORD MapID)
- LineID = 0 #(DWORD LineID)
- NPCID = 0 #(DWORD NPCID)
- ExDataLen = 0 #(WORD ExDataLen)
- ExData = "" #(String ExData)//其他自定义数据
- TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
- ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x05
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
- self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
- self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x05
- self.ItemID = 0
- self.PlayerID = 0
- self.PlayerName = ""
- self.Job = 0
- self.LV = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- self.MapID = 0
- self.LineID = 0
- self.NPCID = 0
- self.ExDataLen = 0
- self.ExData = ""
- self.TimeStr = ""
- self.ExtraAward = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 33
- length += 1
- length += 2
- length += 1
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 2
- length += len(self.ExData)
- length += 19
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteString(data, 33, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.LineID)
- data = CommFunc.WriteDWORD(data, self.NPCID)
- data = CommFunc.WriteWORD(data, self.ExDataLen)
- data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
- data = CommFunc.WriteString(data, 19, self.TimeStr)
- data = CommFunc.WriteBYTE(data, self.ExtraAward)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ItemID:%d,
- PlayerID:%d,
- PlayerName:%s,
- Job:%d,
- LV:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d,
- MapID:%d,
- LineID:%d,
- NPCID:%d,
- ExDataLen:%d,
- ExData:%s,
- TimeStr:%s,
- ExtraAward:%d
- '''\
- %(
- self.Head.OutputString(),
- self.ItemID,
- self.PlayerID,
- self.PlayerName,
- self.Job,
- self.LV,
- self.RealmLV,
- self.Face,
- self.FacePic,
- self.MapID,
- self.LineID,
- self.NPCID,
- self.ExDataLen,
- self.ExData,
- self.TimeStr,
- self.ExtraAward
- )
- return DumpString
-
-
-m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
-
-
-#------------------------------------------------------
# B0 37 淘金营地信息 #tagSCGoldRushCampInfo
class tagSCGoldRushCamp(Structure):
@@ -32827,21 +29860,20 @@
#------------------------------------------------------
-# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
+# B0 40 游历信息 #tagSCTravelInfo
-class tagMCTodayAssistMoneyInfo(Structure):
+class tagSCTravelGrid(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成
- ("SocialMoney", c_ushort), #社交额外加成
+ ("Row", c_ubyte), #行,从1开始
+ ("Col", c_ubyte), #列,从1开始
+ ("State", c_ubyte), #状态:0-未点击;1-已开启;2-裂纹
+ ("Multi", c_ubyte), #奖励倍值: 默认1倍;2-双倍;...
+ ("EventID", c_ushort), #事件ID
]
def __init__(self):
self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x07
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -32850,434 +29882,358 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xB0
- self.SubCmd = 0x07
- self.TodayAssistMoney = 0
- self.SocialMoney = 0
+ self.Row = 0
+ self.Col = 0
+ self.State = 0
+ self.Multi = 0
+ self.EventID = 0
return
def GetLength(self):
- return sizeof(tagMCTodayAssistMoneyInfo)
+ return sizeof(tagSCTravelGrid)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
- Cmd:%s,
- SubCmd:%s,
- TodayAssistMoney:%d,
- SocialMoney:%d
+ DumpString = '''// B0 40 游历信息 //tagSCTravelInfo:
+ Row:%d,
+ Col:%d,
+ State:%d,
+ Multi:%d,
+ EventID:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.TodayAssistMoney,
- self.SocialMoney
+ self.Row,
+ self.Col,
+ self.State,
+ self.Multi,
+ self.EventID
)
return DumpString
-m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
-
-
-#------------------------------------------------------
-# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
-
-class tagGCAssistPlayerInfo(Structure):
- PlayerID = 0 #(DWORD PlayerID)
- PlayerName = "" #(char PlayerName[33])
- Job = 0 #(BYTE Job)
- LV = 0 #(WORD LV)
- RealmLV = 0 #(BYTE RealmLV)//境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.PlayerID = 0
- self.PlayerName = ""
- self.Job = 0
- self.LV = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 33
- length += 1
- length += 2
- length += 1
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteString(data, 33, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- return data
-
- def OutputString(self):
- DumpString = '''
- PlayerID:%d,
- PlayerName:%s,
- Job:%d,
- LV:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d
- '''\
- %(
- self.PlayerID,
- self.PlayerName,
- self.Job,
- self.LV,
- self.RealmLV,
- self.Face,
- self.FacePic
- )
- return DumpString
-
-
-class tagGCUseAssistThanksGiftPreview(Structure):
+class tagSCTravelInfo(Structure):
Head = tagHead()
- ItemID = 0 #(DWORD ItemID)//礼盒ID
- MapID = 0 #(DWORD MapID)
- LineID = 0 #(DWORD LineID)
- NPCID = 0 #(DWORD NPCID)
- ExDataLen = 0 #(WORD ExDataLen)
- ExData = "" #(String ExData)//其他自定义数据
- AssistPlayerCount = 0 #(BYTE AssistPlayerCount)
- AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
+ Energy = 0 #(BYTE Energy)//剩余体力
+ EnergyTime = 0 #(DWORD EnergyTime)//上次恢复体力时间戳
+ TravelCnt = 0 #(DWORD TravelCnt)//累计游历次数
+ SceneryType = 0 #(BYTE SceneryType)//景观类型
+ SceneryRow = 0 #(BYTE SceneryRow)//景观左上角所在行,从1开始
+ SceneryCol = 0 #(BYTE SceneryCol)//景观左上角所在列,从1开始
+ SceneryLVInfo = 0 #(DWORD SceneryLVInfo)//景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
+ Result = 0 #(BYTE Result)//后端处理:0-无;1-常规;2-马车炸弹;3-传送门;4-景观;5-重置开始
+ GridCnt = 0 #(BYTE GridCnt)
+ GridList = list() #(vector<tagSCTravelGrid> GridList)//格子信息列表,只同步变化的
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x04
+ self.Head.SubCmd = 0x40
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
- self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AssistPlayerCount):
- temAssistPlayerList = tagGCAssistPlayerInfo()
- _pos = temAssistPlayerList.ReadData(_lpData, _pos)
- self.AssistPlayerList.append(temAssistPlayerList)
+ self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SceneryRow,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SceneryCol,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SceneryLVInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GridCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GridCnt):
+ temGridList = tagSCTravelGrid()
+ _pos = temGridList.ReadData(_lpData, _pos)
+ self.GridList.append(temGridList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x04
- self.ItemID = 0
- self.MapID = 0
- self.LineID = 0
- self.NPCID = 0
- self.ExDataLen = 0
- self.ExData = ""
- self.AssistPlayerCount = 0
- self.AssistPlayerList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 4
- length += 4
- length += 2
- length += len(self.ExData)
- length += 1
- for i in range(self.AssistPlayerCount):
- length += self.AssistPlayerList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.LineID)
- data = CommFunc.WriteDWORD(data, self.NPCID)
- data = CommFunc.WriteWORD(data, self.ExDataLen)
- data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
- data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
- for i in range(self.AssistPlayerCount):
- data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ItemID:%d,
- MapID:%d,
- LineID:%d,
- NPCID:%d,
- ExDataLen:%d,
- ExData:%s,
- AssistPlayerCount:%d,
- AssistPlayerList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ItemID,
- self.MapID,
- self.LineID,
- self.NPCID,
- self.ExDataLen,
- self.ExData,
- self.AssistPlayerCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
-
-
-#------------------------------------------------------
-# B0 20 膜拜信息列表 #tagGCWorshipInfoList
-
-class tagGCWorshipInfo(Structure):
- PlayerID = 0 #(DWORD PlayerID)// 目标玩家ID
- WorshipType = 0 #(BYTE WorshipType)// 膜拜类型
- WorshipValue = 0 #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
- InfoLen = 0 #(WORD InfoLen)
- PlayerInfo = "" #(String PlayerInfo)// 玩家信息{k:v, ...}
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
- return _pos
-
- def Clear(self):
- self.PlayerID = 0
- self.WorshipType = 0
- self.WorshipValue = 0
- self.InfoLen = 0
- self.PlayerInfo = ""
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += 4
- length += 2
- length += len(self.PlayerInfo)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.WorshipType)
- data = CommFunc.WriteDWORD(data, self.WorshipValue)
- data = CommFunc.WriteWORD(data, self.InfoLen)
- data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
- return data
-
- def OutputString(self):
- DumpString = '''
- PlayerID:%d,
- WorshipType:%d,
- WorshipValue:%d,
- InfoLen:%d,
- PlayerInfo:%s
- '''\
- %(
- self.PlayerID,
- self.WorshipType,
- self.WorshipValue,
- self.InfoLen,
- self.PlayerInfo
- )
- return DumpString
-
-
-class tagGCWorshipInfoList(Structure):
- Head = tagHead()
- WorshipCount = 0 #(BYTE WorshipCount)
- WorshipInfoList = list() #(vector<tagGCWorshipInfo> WorshipInfoList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x20
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.WorshipCount):
- temWorshipInfoList = tagGCWorshipInfo()
- _pos = temWorshipInfoList.ReadData(_lpData, _pos)
- self.WorshipInfoList.append(temWorshipInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB0
- self.Head.SubCmd = 0x20
- self.WorshipCount = 0
- self.WorshipInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.WorshipCount):
- length += self.WorshipInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.WorshipCount)
- for i in range(self.WorshipCount):
- data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- WorshipCount:%d,
- WorshipInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.WorshipCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
-
-
-#------------------------------------------------------
-# B0 21 膜拜结果 #tagGCWorshipResult
-
-class tagGCWorshipResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PlayerID", c_int), # 目标玩家ID
- ("WorshipType", c_ubyte), # 膜拜类型
- ("WorshipValue", c_int), # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
- ("Result", c_ubyte), # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
- ("MoneyType", c_ubyte), # 货币类型
- ("MoneyValue", c_int), # 货币奖励
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB0
- self.SubCmd = 0x21
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB0
- self.SubCmd = 0x21
- self.PlayerID = 0
- self.WorshipType = 0
- self.WorshipValue = 0
+ self.Head.SubCmd = 0x40
+ self.Energy = 0
+ self.EnergyTime = 0
+ self.TravelCnt = 0
+ self.SceneryType = 0
+ self.SceneryRow = 0
+ self.SceneryCol = 0
+ self.SceneryLVInfo = 0
self.Result = 0
- self.MoneyType = 0
- self.MoneyValue = 0
+ self.GridCnt = 0
+ self.GridList = list()
return
def GetLength(self):
- return sizeof(tagGCWorshipResult)
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.GridCnt):
+ length += self.GridList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Energy)
+ data = CommFunc.WriteDWORD(data, self.EnergyTime)
+ data = CommFunc.WriteDWORD(data, self.TravelCnt)
+ data = CommFunc.WriteBYTE(data, self.SceneryType)
+ data = CommFunc.WriteBYTE(data, self.SceneryRow)
+ data = CommFunc.WriteBYTE(data, self.SceneryCol)
+ data = CommFunc.WriteDWORD(data, self.SceneryLVInfo)
+ data = CommFunc.WriteBYTE(data, self.Result)
+ data = CommFunc.WriteBYTE(data, self.GridCnt)
+ for i in range(self.GridCnt):
+ data = CommFunc.WriteString(data, self.GridList[i].GetLength(), self.GridList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Energy:%d,
+ EnergyTime:%d,
+ TravelCnt:%d,
+ SceneryType:%d,
+ SceneryRow:%d,
+ SceneryCol:%d,
+ SceneryLVInfo:%d,
+ Result:%d,
+ GridCnt:%d,
+ GridList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Energy,
+ self.EnergyTime,
+ self.TravelCnt,
+ self.SceneryType,
+ self.SceneryRow,
+ self.SceneryCol,
+ self.SceneryLVInfo,
+ self.Result,
+ self.GridCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCTravelInfo=tagSCTravelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
+
+
+#------------------------------------------------------
+# B1 30 红颜信息 #tagSCBeautyInfo
+
+class tagSCBeautySkin(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkinID", c_ushort), #时装ID
+ ("State", c_ubyte), #是否已激活
+ ("Used", c_ubyte), #是否已穿戴该时装,某个红颜的所有时装穿戴可能都为0,则前端取默认时装进行展示,如果有同步已穿戴的则以后端为准
+ ("Star", 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.SkinID = 0
+ self.State = 0
+ self.Used = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCBeautySkin)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
- Cmd:%s,
- SubCmd:%s,
- PlayerID:%d,
- WorshipType:%d,
- WorshipValue:%d,
- Result:%d,
- MoneyType:%d,
- MoneyValue:%d
+ DumpString = '''// B1 30 红颜信息 //tagSCBeautyInfo:
+ SkinID:%d,
+ State:%d,
+ Used:%d,
+ Star:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.PlayerID,
- self.WorshipType,
- self.WorshipValue,
- self.Result,
- self.MoneyType,
- self.MoneyValue
+ self.SkinID,
+ self.State,
+ self.Used,
+ self.Star
)
return DumpString
-m_NAtagGCWorshipResult=tagGCWorshipResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
+class tagSCBeauty(Structure):
+ BeautyID = 0 #(WORD BeautyID)//红颜ID
+ State = 0 #(BYTE State)//是否已激活
+ LV = 0 #(WORD LV)//红颜好感等级,激活时为0级
+ Exp = 0 #(WORD Exp)//当前等级经验
+ AwardLV = 0 #(WORD AwardLV)//已经领取到的奖励等级记录
+ SkinCnt = 0 #(BYTE SkinCnt)
+ SkinList = list() #(vector<tagSCBeautySkin> SkinList)//时装皮肤列表,默认解锁的不通知,有变化的才会同步
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.BeautyID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Exp,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SkinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkinCnt):
+ temSkinList = tagSCBeautySkin()
+ _pos = temSkinList.ReadData(_lpData, _pos)
+ self.SkinList.append(temSkinList)
+ return _pos
+
+ def Clear(self):
+ self.BeautyID = 0
+ self.State = 0
+ self.LV = 0
+ self.Exp = 0
+ self.AwardLV = 0
+ self.SkinCnt = 0
+ self.SkinList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 2
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ for i in range(self.SkinCnt):
+ length += self.SkinList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteWORD(data, self.BeautyID)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.Exp)
+ data = CommFunc.WriteWORD(data, self.AwardLV)
+ data = CommFunc.WriteBYTE(data, self.SkinCnt)
+ for i in range(self.SkinCnt):
+ data = CommFunc.WriteString(data, self.SkinList[i].GetLength(), self.SkinList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ BeautyID:%d,
+ State:%d,
+ LV:%d,
+ Exp:%d,
+ AwardLV:%d,
+ SkinCnt:%d,
+ SkinList:%s
+ '''\
+ %(
+ self.BeautyID,
+ self.State,
+ self.LV,
+ self.Exp,
+ self.AwardLV,
+ self.SkinCnt,
+ "..."
+ )
+ return DumpString
+
+
+class tagSCBeautyInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BeautyList = list() #(vector<tagSCBeauty> BeautyList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x30
+ 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):
+ temBeautyList = tagSCBeauty()
+ _pos = temBeautyList.ReadData(_lpData, _pos)
+ self.BeautyList.append(temBeautyList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x30
+ self.Count = 0
+ self.BeautyList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.BeautyList[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.BeautyList[i].GetLength(), self.BeautyList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ BeautyList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCBeautyInfo=tagSCBeautyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCBeautyInfo.Head.Cmd,m_NAtagSCBeautyInfo.Head.SubCmd))] = m_NAtagSCBeautyInfo
#------------------------------------------------------
@@ -34123,6 +31079,118 @@
#------------------------------------------------------
+# B1 31 宿缘信息 #tagSCHeroFatesInfo
+
+class tagSCHeroFates(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("FatesID", c_ubyte), # 宿缘ID
+ ("State", c_ubyte), # 宿缘状态:0-未激活;1-已激活已领奖
+ ("FatesLV", 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.FatesID = 0
+ self.State = 0
+ self.FatesLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCHeroFates)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 31 宿缘信息 //tagSCHeroFatesInfo:
+ FatesID:%d,
+ State:%d,
+ FatesLV:%d
+ '''\
+ %(
+ self.FatesID,
+ self.State,
+ self.FatesLV
+ )
+ return DumpString
+
+
+class tagSCHeroFatesInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ FatesList = list() #(vector<tagSCHeroFates> FatesList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x31
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temFatesList = tagSCHeroFates()
+ _pos = temFatesList.ReadData(_lpData, _pos)
+ self.FatesList.append(temFatesList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x31
+ self.Count = 0
+ self.FatesList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.FatesList[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.FatesList[i].GetLength(), self.FatesList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ FatesList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCHeroFatesInfo=tagSCHeroFatesInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroFatesInfo.Head.Cmd,m_NAtagSCHeroFatesInfo.Head.SubCmd))] = m_NAtagSCHeroFatesInfo
+
+
+#------------------------------------------------------
# B1 22 武将信息 #tagSCHeroInfo
class tagSCHero(Structure):
@@ -34379,6 +31447,114 @@
m_NAtagSCLineupInfo=tagSCLineupInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupInfo.Head.Cmd,m_NAtagSCLineupInfo.Head.SubCmd))] = m_NAtagSCLineupInfo
+
+
+#------------------------------------------------------
+# B1 29 阵容推荐信息 #tagSCLineupRecommendInfo
+
+class tagSCLineupRecommend(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RecommendID", c_ubyte), #推荐阵容表ID
+ ("AwardState", c_int), #推荐武将领奖状态,按武将配置的顺序位存储是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.RecommendID = 0
+ self.AwardState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCLineupRecommend)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 29 阵容推荐信息 //tagSCLineupRecommendInfo:
+ RecommendID:%d,
+ AwardState:%d
+ '''\
+ %(
+ self.RecommendID,
+ self.AwardState
+ )
+ return DumpString
+
+
+class tagSCLineupRecommendInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ RecommendList = list() #(vector<tagSCLineupRecommend> RecommendList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x29
+ 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):
+ temRecommendList = tagSCLineupRecommend()
+ _pos = temRecommendList.ReadData(_lpData, _pos)
+ self.RecommendList.append(temRecommendList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x29
+ self.Count = 0
+ self.RecommendList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.RecommendList[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.RecommendList[i].GetLength(), self.RecommendList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ RecommendList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCLineupRecommendInfo=tagSCLineupRecommendInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLineupRecommendInfo.Head.Cmd,m_NAtagSCLineupRecommendInfo.Head.SubCmd))] = m_NAtagSCLineupRecommendInfo
#------------------------------------------------------
@@ -35495,8 +32671,8 @@
("TreeLV", c_ubyte), # 当前仙树等级
("LVUPState", c_ubyte), # 0-非升级中;1-升级中
("LVUPRemainTime", c_int), # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
- ("FreeTimeCnt", c_ubyte), # 今日已免费减时次数
- ("FreeTimeLast", c_int), # 上次免费减时时间戳
+ ("Energy", c_ubyte), # 当前累计充能次数
+ ("EnergyTimeLast", c_int), # 上次获得充能次数时间戳
]
def __init__(self):
@@ -35516,8 +32692,8 @@
self.TreeLV = 0
self.LVUPState = 0
self.LVUPRemainTime = 0
- self.FreeTimeCnt = 0
- self.FreeTimeLast = 0
+ self.Energy = 0
+ self.EnergyTimeLast = 0
return
def GetLength(self):
@@ -35533,8 +32709,8 @@
TreeLV:%d,
LVUPState:%d,
LVUPRemainTime:%d,
- FreeTimeCnt:%d,
- FreeTimeLast:%d
+ Energy:%d,
+ EnergyTimeLast:%d
'''\
%(
self.Cmd,
@@ -35542,8 +32718,8 @@
self.TreeLV,
self.LVUPState,
self.LVUPRemainTime,
- self.FreeTimeCnt,
- self.FreeTimeLast
+ self.Energy,
+ self.EnergyTimeLast
)
return DumpString
@@ -37998,6 +35174,7 @@
RealmLV = 0 #(BYTE RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
FacePic = 0 #(DWORD FacePic)//头像框
+ TitleID = 0 #(DWORD TitleID)//佩戴的称号
ServerID = 0 #(DWORD ServerID)//所属区服ID
data = None
@@ -38022,6 +35199,7 @@
self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -38042,6 +35220,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
return
@@ -38058,6 +35237,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -38079,6 +35259,7 @@
data = CommFunc.WriteBYTE(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FacePic)
+ data = CommFunc.WriteDWORD(data, self.TitleID)
data = CommFunc.WriteDWORD(data, self.ServerID)
return data
@@ -38097,6 +35278,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d
'''\
%(
@@ -38113,6 +35295,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID
)
return DumpString
@@ -38137,6 +35320,7 @@
RealmLV = 0 #(BYTE RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
FacePic = 0 #(DWORD FacePic)//头像框
+ TitleID = 0 #(DWORD TitleID)//佩戴的称号
ServerID = 0 #(DWORD ServerID)//所属区服ID
TalkTime = 0 #(DWORD TalkTime)//该聊天发送时间戳
data = None
@@ -38158,6 +35342,7 @@
self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
@@ -38174,6 +35359,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
self.TalkTime = 0
return
@@ -38189,6 +35375,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -38209,6 +35396,7 @@
data = CommFunc.WriteBYTE(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.Face)
data = CommFunc.WriteDWORD(data, self.FacePic)
+ data = CommFunc.WriteDWORD(data, self.TitleID)
data = CommFunc.WriteDWORD(data, self.ServerID)
data = CommFunc.WriteDWORD(data, self.TalkTime)
return data
@@ -38226,6 +35414,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d,
TalkTime:%d
'''\
@@ -38241,6 +35430,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID,
self.TalkTime
)
@@ -38937,6 +36127,74 @@
m_NAtagMCNPCSkillWarn=tagMCNPCSkillWarn()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCSkillWarn.Head.Cmd,m_NAtagMCNPCSkillWarn.Head.SubCmd))] = m_NAtagMCNPCSkillWarn
+
+
+#------------------------------------------------------
+# B4 19 对象最新生命刷新 #tagSCObjHPRefresh
+
+class tagSCObjHPRefresh(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("HP", c_int), # 当前血量,求余亿部分
+ ("HPEx", c_int), # 当前血量,整除亿部分
+ ("MaxHP", c_int), # 最大血量,求余亿部分
+ ("MaxHPEx", c_int), # 最大血量,整除亿部分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x19
+ self.ObjID = 0
+ self.HP = 0
+ self.HPEx = 0
+ self.MaxHP = 0
+ self.MaxHPEx = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCObjHPRefresh)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 19 对象最新生命刷新 //tagSCObjHPRefresh:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ HP:%d,
+ HPEx:%d,
+ MaxHP:%d,
+ MaxHPEx:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.HP,
+ self.HPEx,
+ self.MaxHP,
+ self.MaxHPEx
+ )
+ return DumpString
+
+
+m_NAtagSCObjHPRefresh=tagSCObjHPRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCObjHPRefresh.Cmd,m_NAtagSCObjHPRefresh.SubCmd))] = m_NAtagSCObjHPRefresh
#------------------------------------------------------
@@ -39872,10 +37130,10 @@
("NPCID", c_int), # 战斗NPCID,不同的实例ID对应的NPCID可能一样
("HeroID", c_int), # 武将ID,玩家或NPC均可能有,如果有值则外观相关以该武将为准,否则以NPCID为准
("SkinID", c_int), # 武将皮肤ID,玩家或NPC均可能有,如果有值则皮肤以该值为准,否则取NPCID对应的皮肤ID
- ("HP", c_int), # 当前血量,求余20亿部分
- ("HPEx", c_int), # 当前血量,整除20亿部分
- ("MaxHP", c_int), # 最大血量,求余20亿部分
- ("MaxHPEx", c_int), # 最大血量,整除20亿部分
+ ("HP", c_int), # 当前血量,求余亿部分
+ ("HPEx", c_int), # 当前血量,整除亿部分
+ ("MaxHP", c_int), # 最大血量,求余亿部分
+ ("MaxHPEx", c_int), # 最大血量,整除亿部分
("LV", c_ushort), # 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
("PosNum", c_ubyte), # 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
("AngreXP", c_ushort), # 当前怒气值
@@ -40478,6 +37736,150 @@
#------------------------------------------------------
+# 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
+
+
+#------------------------------------------------------
# B4 20 回合制战斗状态 #tagMCTurnFightState
class tagMCTurnFightState(Structure):
@@ -40643,17 +38045,16 @@
#------------------------------------------------------
# B4 27 使用技能 #tagSCUseSkill
-class tagSCUseSkillHurt(Structure):
+class tagSCUseSkillHurtEx(Structure):
_pack_ = 1
_fields_ = [
- ("ObjID", c_int),
- ("AttackTypes", c_int), # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
+ ("ObjID", c_int), # 额外目标,如溅射伤害、平摊伤害目标,非技能自身的主要目标
+ ("AttackTypes", c_int), # 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
("HurtHP", c_int), # 飘血值,求余亿部分
("HurtHPEx", c_int), # 飘血值,整除亿部分
("CurHP", c_int), # 更新剩余血量,求余亿部分
("CurHPEx", c_int), # 更新剩余血量,整除亿部分
("SuckHP", c_int), # 本次伤害转化的吸血量
- ("BounceHP", c_int), # 本次伤害反弹的伤害量
]
def __init__(self):
@@ -40673,11 +38074,10 @@
self.CurHP = 0
self.CurHPEx = 0
self.SuckHP = 0
- self.BounceHP = 0
return
def GetLength(self):
- return sizeof(tagSCUseSkillHurt)
+ return sizeof(tagSCUseSkillHurtEx)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
@@ -40690,8 +38090,110 @@
HurtHPEx:%d,
CurHP:%d,
CurHPEx:%d,
+ SuckHP:%d
+ '''\
+ %(
+ self.ObjID,
+ self.AttackTypes,
+ self.HurtHP,
+ self.HurtHPEx,
+ self.CurHP,
+ self.CurHPEx,
+ self.SuckHP
+ )
+ return DumpString
+
+
+class tagSCUseSkillHurt(Structure):
+ ObjID = 0 #(DWORD ObjID)// 技能自身目标ID
+ AttackTypes = 0 #(DWORD AttackTypes)// 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;4-免疫;5-格挡;6-无视防御;7-暴击;8-击晕;9-闪避
+ HurtHP = 0 #(DWORD HurtHP)// 飘血值,求余亿部分
+ HurtHPEx = 0 #(DWORD HurtHPEx)// 飘血值,整除亿部分
+ CurHP = 0 #(DWORD CurHP)// 更新剩余血量,求余亿部分
+ CurHPEx = 0 #(DWORD CurHPEx)// 更新剩余血量,整除亿部分
+ SuckHP = 0 #(DWORD SuckHP)// 本次伤害转化的吸血量
+ BounceHP = 0 #(DWORD BounceHP)// 本次伤害反弹的伤害量
+ HurtCountEx = 0 #(BYTE HurtCountEx)
+ HurtListEx = list() #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端多次伤害的有效,如弹射的平摊伤害
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AttackTypes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SuckHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BounceHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCountEx):
+ temHurtListEx = tagSCUseSkillHurtEx()
+ _pos = temHurtListEx.ReadData(_lpData, _pos)
+ self.HurtListEx.append(temHurtListEx)
+ return _pos
+
+ def Clear(self):
+ self.ObjID = 0
+ self.AttackTypes = 0
+ self.HurtHP = 0
+ self.HurtHPEx = 0
+ self.CurHP = 0
+ self.CurHPEx = 0
+ self.SuckHP = 0
+ self.BounceHP = 0
+ self.HurtCountEx = 0
+ self.HurtListEx = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.HurtCountEx):
+ length += self.HurtListEx[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.ObjID)
+ data = CommFunc.WriteDWORD(data, self.AttackTypes)
+ data = CommFunc.WriteDWORD(data, self.HurtHP)
+ data = CommFunc.WriteDWORD(data, self.HurtHPEx)
+ data = CommFunc.WriteDWORD(data, self.CurHP)
+ data = CommFunc.WriteDWORD(data, self.CurHPEx)
+ data = CommFunc.WriteDWORD(data, self.SuckHP)
+ data = CommFunc.WriteDWORD(data, self.BounceHP)
+ data = CommFunc.WriteBYTE(data, self.HurtCountEx)
+ for i in range(self.HurtCountEx):
+ data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ObjID:%d,
+ AttackTypes:%d,
+ HurtHP:%d,
+ HurtHPEx:%d,
+ CurHP:%d,
+ CurHPEx:%d,
SuckHP:%d,
- BounceHP:%d
+ BounceHP:%d,
+ HurtCountEx:%d,
+ HurtListEx:%s
'''\
%(
self.ObjID,
@@ -40701,7 +38203,9 @@
self.CurHP,
self.CurHPEx,
self.SuckHP,
- self.BounceHP
+ self.BounceHP,
+ self.HurtCountEx,
+ "..."
)
return DumpString
@@ -40710,13 +38214,15 @@
Head = tagHead()
ObjID = 0 #(DWORD ObjID)
PMType = 0 #(BYTE PMType)// 物法类型 0或1-物理;2-法术
- BattleType = 0 #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的
+ BattleType = 0 #(BYTE BattleType)// 战斗类型 0-常规;1-连击;2-反击;3-追击;4-子技能;5-被动触发的;6-dot结算;7-持续治疗结算
CurHP = 0 #(DWORD CurHP)// 释放技能后剩余血量,吸血、反弹可能引起变化,求余亿部分
CurHPEx = 0 #(DWORD CurHPEx)// 释放技能后剩余血量,吸血、反弹可能引起变化,整除亿部分
SkillID = 0 #(DWORD SkillID)
RelatedSkillID = 0 #(DWORD RelatedSkillID)// 关联的技能ID,一般是主技能ID或由于某个技能释放引起的
- HurtCount = 0 #(BYTE HurtCount)//伤害数目
- HurtList = list() #(vector<tagSCUseSkillHurt> HurtList)//size = HurtCount
+ HurtCount = 0 #(BYTE HurtCount)
+ HurtList = list() #(vector<tagSCUseSkillHurt> HurtList)// 主要伤害目标列表
+ HurtCountEx = 0 #(BYTE HurtCountEx)
+ HurtListEx = list() #(vector<tagSCUseSkillHurtEx> HurtListEx)// 额外伤害目标列表,仅后端单次伤害的有效,如平摊或溅射伤害
data = None
def __init__(self):
@@ -40740,6 +38246,11 @@
temHurtList = tagSCUseSkillHurt()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.HurtCountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCountEx):
+ temHurtListEx = tagSCUseSkillHurtEx()
+ _pos = temHurtListEx.ReadData(_lpData, _pos)
+ self.HurtListEx.append(temHurtListEx)
return _pos
def Clear(self):
@@ -40756,6 +38267,8 @@
self.RelatedSkillID = 0
self.HurtCount = 0
self.HurtList = list()
+ self.HurtCountEx = 0
+ self.HurtListEx = list()
return
def GetLength(self):
@@ -40771,6 +38284,9 @@
length += 1
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 1
+ for i in range(self.HurtCountEx):
+ length += self.HurtListEx[i].GetLength()
return length
@@ -40787,6 +38303,9 @@
data = CommFunc.WriteBYTE(data, self.HurtCount)
for i in range(self.HurtCount):
data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.HurtCountEx)
+ for i in range(self.HurtCountEx):
+ data = CommFunc.WriteString(data, self.HurtListEx[i].GetLength(), self.HurtListEx[i].GetBuffer())
return data
def OutputString(self):
@@ -40800,7 +38319,9 @@
SkillID:%d,
RelatedSkillID:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ HurtCountEx:%d,
+ HurtListEx:%s
'''\
%(
self.Head.OutputString(),
@@ -40812,6 +38333,8 @@
self.SkillID,
self.RelatedSkillID,
self.HurtCount,
+ "...",
+ self.HurtCountEx,
"..."
)
return DumpString
@@ -50314,6 +47837,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