From 1a9aa08e61a036b6c051cb072f7b4c8c746662b3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 03 十二月 2025 19:55:26 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(优化战斗与结算逻辑分离;优化战斗结果同步及战报;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 2767 +++++++++++++---------------------------------------------
1 files changed, 619 insertions(+), 2,148 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c2c0878..e027efd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5637,7 +5637,7 @@
class tagSCHorseSkin(Structure):
_pack_ = 1
_fields_ = [
- ("HorseSkinID", c_ubyte), #坐骑外观ID
+ ("HorseSkinID", c_ushort), #坐骑外观ID
("State", c_ubyte), #是否已激活
("EndTime", c_int), #到期时间戳,0为永久
("Star", c_ubyte), #星级
@@ -7441,185 +7441,6 @@
#------------------------------------------------------
-# 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
-
-
-#------------------------------------------------------
# A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
class tagMCSingleGoldGift(Structure):
@@ -9140,114 +8961,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
#------------------------------------------------------
@@ -15182,6 +14895,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Score", c_int), #当前积分
+ ("WinCnt", c_int), #累计胜利次数
]
def __init__(self):
@@ -15199,6 +14913,7 @@
self.Cmd = 0xA9
self.SubCmd = 0x23
self.Score = 0
+ self.WinCnt = 0
return
def GetLength(self):
@@ -15211,12 +14926,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
@@ -25350,58 +25067,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):
@@ -25645,460 +25310,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
#------------------------------------------------------
@@ -28434,58 +27645,6 @@
m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
-
-
-#------------------------------------------------------
-# 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
#------------------------------------------------------
@@ -30930,896 +30089,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):
@@ -32042,21 +30311,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):
@@ -32065,434 +30333,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
#------------------------------------------------------
@@ -34818,8 +33010,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):
@@ -34839,8 +33031,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):
@@ -34856,8 +33048,8 @@
TreeLV:%d,
LVUPState:%d,
LVUPRemainTime:%d,
- FreeTimeCnt:%d,
- FreeTimeLast:%d
+ Energy:%d,
+ EnergyTimeLast:%d
'''\
%(
self.Cmd,
@@ -34865,8 +33057,8 @@
self.TreeLV,
self.LVUPState,
self.LVUPRemainTime,
- self.FreeTimeCnt,
- self.FreeTimeLast
+ self.Energy,
+ self.EnergyTimeLast
)
return DumpString
@@ -37321,6 +35513,7 @@
RealmLV = 0 #(BYTE RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
FacePic = 0 #(DWORD FacePic)//头像框
+ TitleID = 0 #(DWORD TitleID)//佩戴的称号
ServerID = 0 #(DWORD ServerID)//所属区服ID
data = None
@@ -37345,6 +35538,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
@@ -37365,6 +35559,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
return
@@ -37381,6 +35576,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -37402,6 +35598,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
@@ -37420,6 +35617,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d
'''\
%(
@@ -37436,6 +35634,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID
)
return DumpString
@@ -37460,6 +35659,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
@@ -37481,6 +35681,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
@@ -37497,6 +35698,7 @@
self.RealmLV = 0
self.Face = 0
self.FacePic = 0
+ self.TitleID = 0
self.ServerID = 0
self.TalkTime = 0
return
@@ -37512,6 +35714,7 @@
length += 2
length += 1
length += 1
+ length += 4
length += 4
length += 4
length += 4
@@ -37532,6 +35735,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
@@ -37549,6 +35753,7 @@
RealmLV:%d,
Face:%d,
FacePic:%d,
+ TitleID:%d,
ServerID:%d,
TalkTime:%d
'''\
@@ -37564,6 +35769,7 @@
self.RealmLV,
self.Face,
self.FacePic,
+ self.TitleID,
self.ServerID,
self.TalkTime
)
@@ -39869,6 +38075,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):
@@ -40034,17 +38384,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):
@@ -40064,11 +38413,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())
@@ -40081,8 +38429,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,
@@ -40092,7 +38542,9 @@
self.CurHP,
self.CurHPEx,
self.SuckHP,
- self.BounceHP
+ self.BounceHP,
+ self.HurtCountEx,
+ "..."
)
return DumpString
@@ -40101,13 +38553,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):
@@ -40131,6 +38585,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):
@@ -40147,6 +38606,8 @@
self.RelatedSkillID = 0
self.HurtCount = 0
self.HurtList = list()
+ self.HurtCountEx = 0
+ self.HurtListEx = list()
return
def GetLength(self):
@@ -40162,6 +38623,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
@@ -40178,6 +38642,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):
@@ -40191,7 +38658,9 @@
SkillID:%d,
RelatedSkillID:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ HurtCountEx:%d,
+ HurtListEx:%s
'''\
%(
self.Head.OutputString(),
@@ -40203,6 +38672,8 @@
self.SkillID,
self.RelatedSkillID,
self.HurtCount,
+ "...",
+ self.HurtCountEx,
"..."
)
return DumpString
--
Gitblit v1.8.0