From b4488bc3020cf5da3bf9fe4a0b27ba59b2d9f8cc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 十二月 2025 20:18:02 +0800
Subject: [PATCH] 389 流向记录(每日累计在线时长流向 OnlineTimeToday)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 6384 ++++++++++++++---------------------------------------------
1 files changed, 1,515 insertions(+), 4,869 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c4a4a30..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,247 +5404,6 @@
#------------------------------------------------------
-# A3 1D 神兵等级信息 #tagMCGodWeaponLVList
-
-class tagMCGodWeaponLVInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("WeaponType", c_ubyte), #神兵类型
- ("WeaponLV", c_ushort), #神兵等级
- ("WeaponExp", 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.WeaponType = 0
- self.WeaponLV = 0
- self.WeaponExp = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCGodWeaponLVInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 1D 神兵等级信息 //tagMCGodWeaponLVList:
- WeaponType:%d,
- WeaponLV:%d,
- WeaponExp:%d
- '''\
- %(
- self.WeaponType,
- self.WeaponLV,
- self.WeaponExp
- )
- return DumpString
-
-
-class tagMCGodWeaponLVList(Structure):
- Head = tagHead()
- WeaponNum = 0 #(BYTE WeaponNum)//神器个数
- WeaponInfoList = list() #(vector<tagMCGodWeaponLVInfo> WeaponInfoList)// 副本数据列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x1D
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.WeaponNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.WeaponNum):
- temWeaponInfoList = tagMCGodWeaponLVInfo()
- _pos = temWeaponInfoList.ReadData(_lpData, _pos)
- self.WeaponInfoList.append(temWeaponInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x1D
- self.WeaponNum = 0
- self.WeaponInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.WeaponNum):
- length += self.WeaponInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.WeaponNum)
- for i in range(self.WeaponNum):
- data = CommFunc.WriteString(data, self.WeaponInfoList[i].GetLength(), self.WeaponInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- WeaponNum:%d,
- WeaponInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.WeaponNum,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCGodWeaponLVList=tagMCGodWeaponLVList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGodWeaponLVList.Head.Cmd,m_NAtagMCGodWeaponLVList.Head.SubCmd))] = m_NAtagMCGodWeaponLVList
-
-
-#------------------------------------------------------
-# 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):
@@ -5936,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):
@@ -5958,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):
@@ -6075,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):
@@ -6222,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):
@@ -6241,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
@@ -6250,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(),
@@ -6267,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
#------------------------------------------------------
@@ -7549,7 +6998,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), # 0-未领取 1-已领取
]
def __init__(self):
@@ -8041,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
#------------------------------------------------------
@@ -9405,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):
@@ -9805,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):
@@ -10004,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
#------------------------------------------------------
@@ -10628,208 +9529,6 @@
m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
-
-
-#------------------------------------------------------
-# A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
-
-class tagGCFamilyStoreItem(Structure):
- Index = 0 #(BYTE Index)// 仓库格子索引,从0开始代表第一格
- ItemID = 0 #(DWORD ItemID)// 物品ID
- ItemDataLen = 0 #(WORD ItemDataLen)
- ItemData = "" #(String ItemData)//size = ItemDataLen
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
- return _pos
-
- def Clear(self):
- self.Index = 0
- self.ItemID = 0
- self.ItemDataLen = 0
- self.ItemData = ""
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 2
- length += len(self.ItemData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Index)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteWORD(data, self.ItemDataLen)
- data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
- return data
-
- def OutputString(self):
- DumpString = '''
- Index:%d,
- ItemID:%d,
- ItemDataLen:%d,
- ItemData:%s
- '''\
- %(
- self.Index,
- self.ItemID,
- self.ItemDataLen,
- self.ItemData
- )
- return DumpString
-
-
-class tagGCFamilyStoreItemInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//数量
- StoreItemList = list() #(vector<tagGCFamilyStoreItem> StoreItemList)//size = Count
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x06
- 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):
- temStoreItemList = tagGCFamilyStoreItem()
- _pos = temStoreItemList.ReadData(_lpData, _pos)
- self.StoreItemList.append(temStoreItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x06
- self.Count = 0
- self.StoreItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.StoreItemList[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.StoreItemList[i].GetLength(), self.StoreItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- StoreItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCFamilyStoreItemInfo=tagGCFamilyStoreItemInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemInfo.Head.Cmd,m_NAtagGCFamilyStoreItemInfo.Head.SubCmd))] = m_NAtagGCFamilyStoreItemInfo
-
-
-#------------------------------------------------------
-# A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
-
-class tagGCFamilyStoreItemClear(Structure):
- Head = tagHead()
- ClearType = 0 #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
- IndexCount = 0 #(BYTE IndexCount)
- IndexList = list() #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.IndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x07
- self.ClearType = 0
- self.IndexCount = 0
- self.IndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.IndexCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ClearType)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteBYTE(data, self.IndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ClearType:%d,
- IndexCount:%d,
- IndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ClearType,
- self.IndexCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
#------------------------------------------------------
@@ -11566,194 +10265,6 @@
#------------------------------------------------------
-# A5 35 王者仙盟每日俸禄奖励状态 #tagMCChampionFamilyDailyReward
-
-class tagMCChampionFamilyDailyReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GetState", c_ubyte), #是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x35
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA5
- self.SubCmd = 0x35
- self.GetState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCChampionFamilyDailyReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 35 王者仙盟每日俸禄奖励状态 //tagMCChampionFamilyDailyReward:
- Cmd:%s,
- SubCmd:%s,
- GetState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GetState
- )
- return DumpString
-
-
-m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
-
-
-#------------------------------------------------------
-# A5 10 传功奖励结果 #tagMCChuangongResult
-
-class tagMCChuangongItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", 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.ItemID = 0
- self.ItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCChuangongItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
- ItemID:%d,
- ItemCount:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount
- )
- return DumpString
-
-
-class tagMCChuangongResult(Structure):
- Head = tagHead()
- FromLV = 0 #(WORD FromLV)// 传功前等级
- ToLV = 0 #(WORD ToLV)// 传功后等级
- Exp = 0 #(DWORD Exp)// 获得经验求余亿部分
- ExpPoint = 0 #(DWORD ExpPoint)// 获得经验整除亿部分
- ItemCount = 0 #(BYTE ItemCount)
- AwardItemList = list() #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x10
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ItemCount):
- temAwardItemList = tagMCChuangongItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x10
- self.FromLV = 0
- self.ToLV = 0
- self.Exp = 0
- self.ExpPoint = 0
- self.ItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 2
- length += 4
- length += 4
- length += 1
- for i in range(self.ItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.FromLV)
- data = CommFunc.WriteWORD(data, self.ToLV)
- data = CommFunc.WriteDWORD(data, self.Exp)
- data = CommFunc.WriteDWORD(data, self.ExpPoint)
- data = CommFunc.WriteBYTE(data, self.ItemCount)
- for i in range(self.ItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- FromLV:%d,
- ToLV:%d,
- Exp:%d,
- ExpPoint:%d,
- ItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.FromLV,
- self.ToLV,
- self.Exp,
- self.ExpPoint,
- self.ItemCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCChuangongResult=tagMCChuangongResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
-
-
-#------------------------------------------------------
# A5 02 捐献次数信息 #tagSCDonateCntInfo
class tagSCDonateCntInfo(Structure):
@@ -12012,74 +10523,6 @@
#------------------------------------------------------
-# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
-
-class tagMCFamilyBosFBPlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("HurtTotal", c_int), # 累计伤血,亿求余部分
- ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分
- ("FightSeconds", c_int), # 已累计战斗时长,秒
- ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
- ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x07
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA5
- self.SubCmd = 0x07
- self.HurtTotal = 0
- self.HurtTotalPoint = 0
- self.FightSeconds = 0
- self.HurtAwardState = 0
- self.HurtAwardStateFamily = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyBosFBPlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- HurtTotal:%d,
- HurtTotalPoint:%d,
- FightSeconds:%d,
- HurtAwardState:%d,
- HurtAwardStateFamily:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.HurtTotal,
- self.HurtTotalPoint,
- self.FightSeconds,
- self.HurtAwardState,
- self.HurtAwardStateFamily
- )
- return DumpString
-
-
-m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
-
-
-#------------------------------------------------------
# A5 21 家族变更 #tagMCFamilyChange
class tagMCFamilyChange(Structure):
@@ -12129,114 +10572,6 @@
m_NAtagMCFamilyChange=tagMCFamilyChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
-
-
-#------------------------------------------------------
-# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
-
-class tagMCFamilyDayAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GetState", c_ubyte), #是否已领取
- ("MoneyDonateCount", c_ubyte), #今日货币捐献次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x06
- self.GetState = 0
- self.MoneyDonateCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyDayAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
- Cmd:%s,
- SubCmd:%s,
- GetState:%d,
- MoneyDonateCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GetState,
- self.MoneyDonateCount
- )
- return DumpString
-
-
-m_NAtagMCFamilyDayAward=tagMCFamilyDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyDayAward.Cmd,m_NAtagMCFamilyDayAward.SubCmd))] = m_NAtagMCFamilyDayAward
-
-
-#------------------------------------------------------
-# A5 03 当日祈福信息 #tagMCFamilyPrayInfo
-
-class tagMCFamilyPrayInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PrayCntInfo", c_int), # 当日祈福次数信息, 按位存储祈福类型对应次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x03
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA5
- self.SubCmd = 0x03
- self.PrayCntInfo = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyPrayInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 03 当日祈福信息 //tagMCFamilyPrayInfo:
- Cmd:%s,
- SubCmd:%s,
- PrayCntInfo:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PrayCntInfo
- )
- return DumpString
-
-
-m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
#------------------------------------------------------
@@ -12438,22 +10773,205 @@
#------------------------------------------------------
-# A5 11 打坐信息 #tagMCFamilySitInfo
+# A5 04 公会讨伐攻击结果 #tagSCFamilyTaofaAtkRet
-class tagMCFamilySitInfo(Structure):
+class tagSCFamilyTaofaAtkItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", 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.ItemID = 0
+ self.Count = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCFamilyTaofaAtkItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+ ItemID:%d,
+ Count:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count
+ )
+ return DumpString
+
+
+class tagSCFamilyTaofaAtkHurt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("IsSuper", c_ubyte), # 是否暴击
+ ("HurtValue", c_int), # 本次伤害,求余亿部分
+ ("HurtValueEx", 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.IsSuper = 0
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCFamilyTaofaAtkHurt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+ IsSuper:%d,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.IsSuper,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagSCFamilyTaofaAtkRet(Structure):
+ Head = tagHead()
+ AtkType = 0 #(BYTE AtkType)// 攻击类型:0-常规;1-怒气攻击
+ HurtCount = 0 #(BYTE HurtCount)
+ HurtList = list() #(vector<tagSCFamilyTaofaAtkHurt> HurtList)// 伤害次数列表,如怒气攻击有多次伤害
+ ItemCount = 0 #(BYTE ItemCount)
+ ItemList = list() #(vector<tagSCFamilyTaofaAtkItem> ItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AtkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtList = tagSCFamilyTaofaAtkHurt()
+ _pos = temHurtList.ReadData(_lpData, _pos)
+ self.HurtList.append(temHurtList)
+ self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemCount):
+ temItemList = tagSCFamilyTaofaAtkItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x04
+ self.AtkType = 0
+ self.HurtCount = 0
+ self.HurtList = list()
+ self.ItemCount = 0
+ self.ItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.HurtCount):
+ length += self.HurtList[i].GetLength()
+ length += 1
+ for i in range(self.ItemCount):
+ length += self.ItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AtkType)
+ 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.ItemCount)
+ for i in range(self.ItemCount):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AtkType:%d,
+ HurtCount:%d,
+ HurtList:%s,
+ ItemCount:%d,
+ ItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AtkType,
+ self.HurtCount,
+ "...",
+ self.ItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCFamilyTaofaAtkRet=tagSCFamilyTaofaAtkRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaAtkRet.Head.Cmd,m_NAtagSCFamilyTaofaAtkRet.Head.SubCmd))] = m_NAtagSCFamilyTaofaAtkRet
+
+
+#------------------------------------------------------
+# A5 03 公会讨伐信息 #tagSCFamilyTaofaInfo
+
+class tagSCFamilyTaofaInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ExpRound", c_ushort), # 已获得经验轮次
- ("Exp", c_int), # 获得经验求余亿部分
- ("ExpPoint", c_int), # 获得经验整除亿部分
+ ("BuZhenState", c_ubyte), # 是否已布阵
+ ("AtkCount", c_ushort), # 已斩杀次数,用于计算剩余次数=免费次数+道具增加次数-已斩杀次数
+ ("ItemAddCount", c_ushort), # 道具增加斩杀次数
+ ("Anger", c_ushort), # 当前怒气值
+ ("BoxUnGetCount", c_ushort), # 当前未领取的宝箱数,即可领取的
+ ("BoxHurt", c_int), # 宝箱奖励计算累计伤害,求余亿部分;个人今日累计伤害,换公会不会重置
+ ("BoxHurtEx", c_int), # 宝箱奖励计算累计伤害,整除亿部分
+ ("BoxHurtHis", c_int), # 宝箱奖励计算累计历史最高伤害,求余亿部分
+ ("BoxHurtHisEx", c_int), # 宝箱奖励计算累计历史最高伤害,整除亿部分
]
def __init__(self):
self.Clear()
self.Cmd = 0xA5
- self.SubCmd = 0x11
+ self.SubCmd = 0x03
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -12463,38 +10981,56 @@
def Clear(self):
self.Cmd = 0xA5
- self.SubCmd = 0x11
- self.ExpRound = 0
- self.Exp = 0
- self.ExpPoint = 0
+ self.SubCmd = 0x03
+ self.BuZhenState = 0
+ self.AtkCount = 0
+ self.ItemAddCount = 0
+ self.Anger = 0
+ self.BoxUnGetCount = 0
+ self.BoxHurt = 0
+ self.BoxHurtEx = 0
+ self.BoxHurtHis = 0
+ self.BoxHurtHisEx = 0
return
def GetLength(self):
- return sizeof(tagMCFamilySitInfo)
+ return sizeof(tagSCFamilyTaofaInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
+ DumpString = '''// A5 03 公会讨伐信息 //tagSCFamilyTaofaInfo:
Cmd:%s,
SubCmd:%s,
- ExpRound:%d,
- Exp:%d,
- ExpPoint:%d
+ BuZhenState:%d,
+ AtkCount:%d,
+ ItemAddCount:%d,
+ Anger:%d,
+ BoxUnGetCount:%d,
+ BoxHurt:%d,
+ BoxHurtEx:%d,
+ BoxHurtHis:%d,
+ BoxHurtHisEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ExpRound,
- self.Exp,
- self.ExpPoint
+ self.BuZhenState,
+ self.AtkCount,
+ self.ItemAddCount,
+ self.Anger,
+ self.BoxUnGetCount,
+ self.BoxHurt,
+ self.BoxHurtEx,
+ self.BoxHurtHis,
+ self.BoxHurtHisEx
)
return DumpString
-m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+m_NAtagSCFamilyTaofaInfo=tagSCFamilyTaofaInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaInfo.Cmd,m_NAtagSCFamilyTaofaInfo.SubCmd))] = m_NAtagSCFamilyTaofaInfo
#------------------------------------------------------
@@ -12798,125 +11334,6 @@
m_NAtagMCFamilyZhenbaogeInfo=tagMCFamilyZhenbaogeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenbaogeInfo.Cmd,m_NAtagMCFamilyZhenbaogeInfo.SubCmd))] = m_NAtagMCFamilyZhenbaogeInfo
-
-
-#------------------------------------------------------
-# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo
-
-class tagMCFamilyZhenfa(Structure):
- _pack_ = 1
- _fields_ = [
- ("ZhenfaType", c_ubyte), # 阵法类型
- ("ZhenfaLV", c_ushort), # 阵法等级
- ("ZhenfaExp", 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.ZhenfaType = 0
- self.ZhenfaLV = 0
- self.ZhenfaExp = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyZhenfa)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo:
- ZhenfaType:%d,
- ZhenfaLV:%d,
- ZhenfaExp:%d
- '''\
- %(
- self.ZhenfaType,
- self.ZhenfaLV,
- self.ZhenfaExp
- )
- return DumpString
-
-
-class tagMCFamilyZhenfaInfo(Structure):
- Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包
- Count = 0 #(BYTE Count)
- ZhenfaInfoList = list() #(vector<tagMCFamilyZhenfa> ZhenfaInfoList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x09
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temZhenfaInfoList = tagMCFamilyZhenfa()
- _pos = temZhenfaInfoList.ReadData(_lpData, _pos)
- self.ZhenfaInfoList.append(temZhenfaInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x09
- self.PlayerID = 0
- self.Count = 0
- self.ZhenfaInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- for i in range(self.Count):
- length += self.ZhenfaInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerID:%d,
- Count:%d,
- ZhenfaInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerID,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo
#------------------------------------------------------
@@ -15139,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)
@@ -15168,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)
@@ -15193,6 +13612,7 @@
self.Face = 0
self.FacePic = 0
self.ModelMark = 0
+ self.EquipShowSwitch = 0
self.TitleID = 0
self.ServerID = 0
self.FightPower = 0
@@ -15221,6 +13641,7 @@
length += 4
length += 4
length += 4
+ length += 4
length += 33
length += 4
length += 3
@@ -15240,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)
@@ -15263,6 +13685,7 @@
Face:%d,
FacePic:%d,
ModelMark:%d,
+ EquipShowSwitch:%d,
TitleID:%d,
ServerID:%d,
FightPower:%d,
@@ -15284,6 +13707,7 @@
self.Face,
self.FacePic,
self.ModelMark,
+ self.EquipShowSwitch,
self.TitleID,
self.ServerID,
self.FightPower,
@@ -16001,373 +14425,6 @@
#------------------------------------------------------
-# A8 11 商店购买结果 #tagMCShoppingResult
-
-class tagMCShoppingResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemIndex", c_int),
- ("ItemCnt", c_int), #购买数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA8
- self.SubCmd = 0x11
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA8
- self.SubCmd = 0x11
- self.ItemIndex = 0
- self.ItemCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShoppingResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 11 商店购买结果 //tagMCShoppingResult:
- Cmd:%s,
- SubCmd:%s,
- ItemIndex:%d,
- ItemCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemIndex,
- self.ItemCnt
- )
- return DumpString
-
-
-m_NAtagMCShoppingResult=tagMCShoppingResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
-
-
-#------------------------------------------------------
-# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
-
-class tagMCMysticalShopGoods(Structure):
- _pack_ = 1
- _fields_ = [
- ("GoodsID", c_int), # 商品ID
- ]
-
- 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.GoodsID = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMysticalShopGoods)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
- GoodsID:%d
- '''\
- %(
- self.GoodsID
- )
- return DumpString
-
-
-class tagMCMysticalShopInfo(Structure):
- Head = tagHead()
- RefreshCnt = 0 #(WORD RefreshCnt)// 刷新次数
- Count = 0 #(BYTE Count)// 商品数
- GoodsList = list() #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x16
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temGoodsList = tagMCMysticalShopGoods()
- _pos = temGoodsList.ReadData(_lpData, _pos)
- self.GoodsList.append(temGoodsList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x16
- self.RefreshCnt = 0
- self.Count = 0
- self.GoodsList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 1
- for i in range(self.Count):
- length += self.GoodsList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.RefreshCnt)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RefreshCnt:%d,
- Count:%d,
- GoodsList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RefreshCnt,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
-
-
-#------------------------------------------------------
-# A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo
-
-class tagMCMysticalShopTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("GoodsID", c_int), # 商品ID
- ("StartTime", 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.GoodsID = 0
- self.StartTime = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMysticalShopTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 06 通知神秘限购商品时间 //tagMCMysticalShopTimeInfo:
- GoodsID:%d,
- StartTime:%d
- '''\
- %(
- self.GoodsID,
- self.StartTime
- )
- return DumpString
-
-
-class tagMCMysticalShopTimeInfo(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)// 商品数
- ShopTimeList = list() #(vector<tagMCMysticalShopTime> ShopTimeList)// 商品开卖信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x06
- 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):
- temShopTimeList = tagMCMysticalShopTime()
- _pos = temShopTimeList.ReadData(_lpData, _pos)
- self.ShopTimeList.append(temShopTimeList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x06
- self.Count = 0
- self.ShopTimeList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.ShopTimeList[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.ShopTimeList[i].GetLength(), self.ShopTimeList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- ShopTimeList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMysticalShopTimeInfo=tagMCMysticalShopTimeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopTimeInfo.Head.Cmd,m_NAtagMCMysticalShopTimeInfo.Head.SubCmd))] = m_NAtagMCMysticalShopTimeInfo
-
-
-#------------------------------------------------------
-# 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):
@@ -16445,14 +14502,13 @@
#------------------------------------------------------
-# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
+# A8 02 商店物品已购买次数 #tagSCShopItemBuyCntInfo
-class tagMCShopItemDayBuyCnt(Structure):
+class tagSCShopItemBuyCnt(Structure):
_pack_ = 1
_fields_ = [
- ("ItemIndex", c_int),
- ("BuyCnt", c_int), # 今日已购买次数
- ("IsReset", c_ubyte), #是否重置
+ ("ShopID", c_int), # 商品ID
+ ("BuyCnt", c_int), # 已购买次数
]
def __init__(self):
@@ -16465,35 +14521,32 @@
return _pos + self.GetLength()
def Clear(self):
- self.ItemIndex = 0
+ self.ShopID = 0
self.BuyCnt = 0
- self.IsReset = 0
return
def GetLength(self):
- return sizeof(tagMCShopItemDayBuyCnt)
+ return sizeof(tagSCShopItemBuyCnt)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A8 02 通知NPC商店物品今日已购买次数 //tagMCShopItemDayBuyCntInfo:
- ItemIndex:%d,
- BuyCnt:%d,
- IsReset:%d
+ DumpString = '''// A8 02 商店物品已购买次数 //tagSCShopItemBuyCntInfo:
+ ShopID:%d,
+ BuyCnt:%d
'''\
%(
- self.ItemIndex,
- self.BuyCnt,
- self.IsReset
+ self.ShopID,
+ self.BuyCnt
)
return DumpString
-class tagMCShopItemDayBuyCntInfo(Structure):
+class tagSCShopItemBuyCntInfo(Structure):
Head = tagHead()
- Count = 0 #(WORD Count)//通知个数,注意不限制每日购买次数的默认不通知
- DayBuyCntList = list() #(vector<tagMCShopItemDayBuyCnt> DayBuyCntList)
+ Count = 0 #(WORD Count)
+ BuyCntList = list() #(vector<tagSCShopItemBuyCnt> BuyCntList)//仅通知有限购次数的商品
data = None
def __init__(self):
@@ -16507,9 +14560,9 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.Count):
- temDayBuyCntList = tagMCShopItemDayBuyCnt()
- _pos = temDayBuyCntList.ReadData(_lpData, _pos)
- self.DayBuyCntList.append(temDayBuyCntList)
+ temBuyCntList = tagSCShopItemBuyCnt()
+ _pos = temBuyCntList.ReadData(_lpData, _pos)
+ self.BuyCntList.append(temBuyCntList)
return _pos
def Clear(self):
@@ -16518,7 +14571,7 @@
self.Head.Cmd = 0xA8
self.Head.SubCmd = 0x02
self.Count = 0
- self.DayBuyCntList = list()
+ self.BuyCntList = list()
return
def GetLength(self):
@@ -16526,7 +14579,7 @@
length += self.Head.GetLength()
length += 2
for i in range(self.Count):
- length += self.DayBuyCntList[i].GetLength()
+ length += self.BuyCntList[i].GetLength()
return length
@@ -16535,14 +14588,14 @@
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.DayBuyCntList[i].GetLength(), self.DayBuyCntList[i].GetBuffer())
+ data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
Count:%d,
- DayBuyCntList:%s
+ BuyCntList:%s
'''\
%(
self.Head.OutputString(),
@@ -16552,8 +14605,89 @@
return DumpString
-m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
+m_NAtagSCShopItemBuyCntInfo=tagSCShopItemBuyCntInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopItemBuyCntInfo.Head.Cmd,m_NAtagSCShopItemBuyCntInfo.Head.SubCmd))] = m_NAtagSCShopItemBuyCntInfo
+
+
+#------------------------------------------------------
+# A8 03 商店刷新解锁的商品信息 #tagSCShopRefreshItemInfo
+
+class tagSCShopRefreshItemInfo(Structure):
+ Head = tagHead()
+ ShopType = 0 #(WORD ShopType)// 商店类型
+ RefreshCnt = 0 #(BYTE RefreshCnt)// 今日已刷新次数
+ Count = 0 #(BYTE Count)
+ ShopIDList = list() #(vector<DWORD> ShopIDList)// 对应刷新出来的商店表商品ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x03
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RefreshCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ShopIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x03
+ self.ShopType = 0
+ self.RefreshCnt = 0
+ self.Count = 0
+ self.ShopIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 1
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.ShopType)
+ data = CommFunc.WriteBYTE(data, self.RefreshCnt)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.ShopIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ShopType:%d,
+ RefreshCnt:%d,
+ Count:%d,
+ ShopIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ShopType,
+ self.RefreshCnt,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCShopRefreshItemInfo=tagSCShopRefreshItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCShopRefreshItemInfo.Head.Cmd,m_NAtagSCShopRefreshItemInfo.Head.SubCmd))] = m_NAtagSCShopRefreshItemInfo
#------------------------------------------------------
@@ -16647,6 +14781,7 @@
class tagSCArenaMatchInfo(Structure):
PlayerID = 0 #(DWORD PlayerID)//目标玩家ID
PlayerName = "" #(char PlayerName[33])
+ LV = 0 #(WORD LV)// 玩家等级
RealmLV = 0 #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
FightPower = 0 #(DWORD FightPower)//战力求余亿部分
FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分
@@ -16663,6 +14798,7 @@
self.Clear()
self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16674,6 +14810,7 @@
def Clear(self):
self.PlayerID = 0
self.PlayerName = ""
+ self.LV = 0
self.RealmLV = 0
self.FightPower = 0
self.FightPowerEx = 0
@@ -16687,6 +14824,7 @@
length += 4
length += 33
length += 2
+ length += 2
length += 4
length += 4
length += 4
@@ -16699,6 +14837,7 @@
data = ''
data = CommFunc.WriteDWORD(data, self.PlayerID)
data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteDWORD(data, self.FightPowerEx)
@@ -16711,6 +14850,7 @@
DumpString = '''
PlayerID:%d,
PlayerName:%s,
+ LV:%d,
RealmLV:%d,
FightPower:%d,
FightPowerEx:%d,
@@ -16721,6 +14861,7 @@
%(
self.PlayerID,
self.PlayerName,
+ self.LV,
self.RealmLV,
self.FightPower,
self.FightPowerEx,
@@ -16806,6 +14947,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Score", c_int), #当前积分
+ ("WinCnt", c_int), #累计胜利次数
]
def __init__(self):
@@ -16823,6 +14965,7 @@
self.Cmd = 0xA9
self.SubCmd = 0x23
self.Score = 0
+ self.WinCnt = 0
return
def GetLength(self):
@@ -16835,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
@@ -17962,80 +16107,6 @@
m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
-
-
-#------------------------------------------------------
-#A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
-
-class tagGCOpenServerCampaignAwardCount(Structure):
- Head = tagHead()
- CampaignType = 0 #(BYTE CampaignType)//奖励类型
- AwardTypeCount = 0 #(BYTE AwardTypeCount)//奖品种类数量
- GotCountList = list() #(vector<DWORD> GotCountList)//奖品已领取数量列表,根据种类索引依次
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CampaignType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AwardTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardTypeCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.GotCountList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x03
- self.CampaignType = 0
- self.AwardTypeCount = 0
- self.GotCountList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 4 * self.AwardTypeCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.CampaignType)
- data = CommFunc.WriteBYTE(data, self.AwardTypeCount)
- for i in range(self.AwardTypeCount):
- data = CommFunc.WriteDWORD(data, self.GotCountList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CampaignType:%d,
- AwardTypeCount:%d,
- GotCountList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.CampaignType,
- self.AwardTypeCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCOpenServerCampaignAwardCount=tagGCOpenServerCampaignAwardCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCOpenServerCampaignAwardCount.Head.Cmd,m_NAtagGCOpenServerCampaignAwardCount.Head.SubCmd))] = m_NAtagGCOpenServerCampaignAwardCount
#------------------------------------------------------
@@ -27048,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):
@@ -27343,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
#------------------------------------------------------
@@ -30135,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):
@@ -31448,574 +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 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
-
-class tagMCOpenServerCampaignAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("CampaignType", c_ubyte), #奖励类型
- ("BillAwardRecord", c_ubyte), #排行奖励是否已领取
- ("TagAwardRecord", c_int), #目标奖励索引位领取记录:0-未领;1-已领
- ("RecordData", c_int), #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
- ("RecordDataEx", c_int), #活动时的记录值,整除亿部分,1代表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.CampaignType = 0
- self.BillAwardRecord = 0
- self.TagAwardRecord = 0
- self.RecordData = 0
- self.RecordDataEx = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCOpenServerCampaignAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 17 开服活动奖励状态 //tagMCOpenServerCampaignAwardList:
- CampaignType:%d,
- BillAwardRecord:%d,
- TagAwardRecord:%d,
- RecordData:%d,
- RecordDataEx:%d
- '''\
- %(
- self.CampaignType,
- self.BillAwardRecord,
- self.TagAwardRecord,
- self.RecordData,
- self.RecordDataEx
- )
- return DumpString
-
-
-class tagMCOpenServerCampaignAwardList(Structure):
- Head = tagHead()
- OSCAwardCnt = 0 #(BYTE OSCAwardCnt)//奖励类型数
- OSCAwardList = list() #(vector<tagMCOpenServerCampaignAward> OSCAwardList)// 奖励状态列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x17
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.OSCAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.OSCAwardCnt):
- temOSCAwardList = tagMCOpenServerCampaignAward()
- _pos = temOSCAwardList.ReadData(_lpData, _pos)
- self.OSCAwardList.append(temOSCAwardList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x17
- self.OSCAwardCnt = 0
- self.OSCAwardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.OSCAwardCnt):
- length += self.OSCAwardList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.OSCAwardCnt)
- for i in range(self.OSCAwardCnt):
- data = CommFunc.WriteString(data, self.OSCAwardList[i].GetLength(), self.OSCAwardList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- OSCAwardCnt:%d,
- OSCAwardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.OSCAwardCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
-
-
-#------------------------------------------------------
-# 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):
@@ -32025,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
#------------------------------------------------------
@@ -32748,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):
@@ -33860,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):
@@ -33883,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
#------------------------------------------------------
@@ -35156,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):
@@ -35412,6 +31447,178 @@
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
+
+
+#------------------------------------------------------
+# B1 28 历练秘笈信息 #tagSCLLMJInfo
+
+class tagSCLLMJInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MJLV", c_ubyte), # 秘笈等级,激活后从1开始
+ ("Zhanchui", c_int), # 秘笈累计消耗战锤
+ ("ExpEx", c_int), # 秘笈今日已额外获得经验
+ ("DecomposeEx", c_int), # 秘笈今日已额外获得分解货币
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x28
+ 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 = 0xB1
+ self.SubCmd = 0x28
+ self.MJLV = 0
+ self.Zhanchui = 0
+ self.ExpEx = 0
+ self.DecomposeEx = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCLLMJInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 28 历练秘笈信息 //tagSCLLMJInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ MJLV:%d,
+ Zhanchui:%d,
+ ExpEx:%d,
+ DecomposeEx:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MJLV,
+ self.Zhanchui,
+ self.ExpEx,
+ self.DecomposeEx
+ )
+ return DumpString
+
+
+m_NAtagSCLLMJInfo=tagSCLLMJInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCLLMJInfo.Cmd,m_NAtagSCLLMJInfo.SubCmd))] = m_NAtagSCLLMJInfo
#------------------------------------------------------
@@ -36464,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):
@@ -36485,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):
@@ -36502,8 +32709,8 @@
TreeLV:%d,
LVUPState:%d,
LVUPRemainTime:%d,
- FreeTimeCnt:%d,
- FreeTimeLast:%d
+ Energy:%d,
+ EnergyTimeLast:%d
'''\
%(
self.Cmd,
@@ -36511,8 +32718,8 @@
self.TreeLV,
self.LVUPState,
self.LVUPRemainTime,
- self.FreeTimeCnt,
- self.FreeTimeLast
+ self.Energy,
+ self.EnergyTimeLast
)
return DumpString
@@ -38967,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
@@ -38991,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
@@ -39011,6 +35220,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
return
@@ -39027,6 +35237,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -39048,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
@@ -39066,6 +35278,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d
'''\
%(
@@ -39082,6 +35295,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID
)
return DumpString
@@ -39106,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
@@ -39127,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
@@ -39143,6 +35359,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
self.TalkTime = 0
return
@@ -39158,6 +35375,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -39178,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
@@ -39195,6 +35414,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d,
TalkTime:%d
'''\
@@ -39210,6 +35430,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID,
self.TalkTime
)
@@ -39906,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
#------------------------------------------------------
@@ -40841,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), # 当前怒气值
@@ -41447,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):
@@ -41612,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):
@@ -41642,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())
@@ -41659,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,
@@ -41670,7 +38203,9 @@
self.CurHP,
self.CurHPEx,
self.SuckHP,
- self.BounceHP
+ self.BounceHP,
+ self.HurtCountEx,
+ "..."
)
return DumpString
@@ -41679,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):
@@ -41709,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):
@@ -41725,6 +38267,8 @@
self.RelatedSkillID = 0
self.HurtCount = 0
self.HurtList = list()
+ self.HurtCountEx = 0
+ self.HurtListEx = list()
return
def GetLength(self):
@@ -41740,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
@@ -41756,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):
@@ -41769,7 +38319,9 @@
SkillID:%d,
RelatedSkillID:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ HurtCountEx:%d,
+ HurtListEx:%s
'''\
%(
self.Head.OutputString(),
@@ -41781,6 +38333,8 @@
self.SkillID,
self.RelatedSkillID,
self.HurtCount,
+ "...",
+ self.HurtCountEx,
"..."
)
return DumpString
@@ -51283,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