From bcdc9a6cf4da4c82e458b3c4232391a7a0ff9f90 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 11 十月 2018 11:56:51 +0800
Subject: [PATCH] 4142 【后端】仙魔之争增加一个超级机器人
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 1,252 insertions(+), 105 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index efe69f1..0fbe5fd 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -318,6 +318,14 @@
("Day", c_ushort), # 已开服天数,从0开始
("IsMixServer", c_ubyte), #是否是合服服务器
("MixDay", c_ushort), # 已合服天数,从0开始
+ ("OpenWeekday", c_ubyte), #开服是周几,1代表周一
+ ("NowYear", c_ushort), #服务器当前时间 - 年
+ ("NowMonth", c_ubyte),
+ ("NowDay", c_ubyte),
+ ("NowHour", c_ubyte),
+ ("NowMinute", c_ubyte),
+ ("NowSecond", c_ubyte),
+ ("NowMicSecond", c_int),
]
def __init__(self):
@@ -337,6 +345,14 @@
self.Day = 0
self.IsMixServer = 0
self.MixDay = 0
+ self.OpenWeekday = 0
+ self.NowYear = 0
+ self.NowMonth = 0
+ self.NowDay = 0
+ self.NowHour = 0
+ self.NowMinute = 0
+ self.NowSecond = 0
+ self.NowMicSecond = 0
return
def GetLength(self):
@@ -351,14 +367,30 @@
SubCmd:%s,
Day:%d,
IsMixServer:%d,
- MixDay:%d
+ MixDay:%d,
+ OpenWeekday:%d,
+ NowYear:%d,
+ NowMonth:%d,
+ NowDay:%d,
+ NowHour:%d,
+ NowMinute:%d,
+ NowSecond:%d,
+ NowMicSecond:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.Day,
self.IsMixServer,
- self.MixDay
+ self.MixDay,
+ self.OpenWeekday,
+ self.NowYear,
+ self.NowMonth,
+ self.NowDay,
+ self.NowHour,
+ self.NowMinute,
+ self.NowSecond,
+ self.NowMicSecond
)
return DumpString
@@ -2285,8 +2317,9 @@
class tagGCBossShuntLineState(Structure):
BossID = 0 #(DWORD BossID)// bossID
- DeadLineCount = 0 #(BYTE DeadLineCount)
- DeadLineList = list() #(vector<BYTE> DeadLineList)// 已死亡的线路列表
+ LineCount = 0 #(BYTE LineCount)
+ LineIDList = list() #(vector<BYTE> LineIDList)// 线路ID列表
+ StateList = list() #(vector<BYTE> StateList)// 对应状态列表, 0-被击杀,1-活着
data = None
def __init__(self):
@@ -2296,43 +2329,52 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.DeadLineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DeadLineCount):
+ self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.LineCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.DeadLineList.append(value)
+ self.LineIDList.append(value)
+ for i in range(self.LineCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.StateList.append(value)
return _pos
def Clear(self):
self.BossID = 0
- self.DeadLineCount = 0
- self.DeadLineList = list()
+ self.LineCount = 0
+ self.LineIDList = list()
+ self.StateList = list()
return
def GetLength(self):
length = 0
length += 4
length += 1
- length += 1 * self.DeadLineCount
+ length += 1 * self.LineCount
+ length += 1 * self.LineCount
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteDWORD(data, self.BossID)
- data = CommFunc.WriteBYTE(data, self.DeadLineCount)
- for i in range(self.DeadLineCount):
- data = CommFunc.WriteBYTE(data, self.DeadLineList[i])
+ data = CommFunc.WriteBYTE(data, self.LineCount)
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.LineIDList[i])
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.StateList[i])
return data
def OutputString(self):
DumpString = '''
BossID:%d,
- DeadLineCount:%d,
- DeadLineList:%s
+ LineCount:%d,
+ LineIDList:%s,
+ StateList:%s
'''\
%(
self.BossID,
- self.DeadLineCount,
+ self.LineCount,
+ "...",
"..."
)
return DumpString
@@ -2667,6 +2709,114 @@
#------------------------------------------------------
+# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
+
+class tagDogzTimeInfoObj(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int), # npcid
+ ("RefreshSecond", 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.NPCID = 0
+ self.RefreshSecond = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagDogzTimeInfoObj)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
+ NPCID:%d,
+ RefreshSecond:%d
+ '''\
+ %(
+ self.NPCID,
+ self.RefreshSecond
+ )
+ return DumpString
+
+
+class tagGCDogzNPCRefreshTime(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//信息个数
+ InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagDogzTimeInfoObj()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x04
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
+
+
+#------------------------------------------------------
# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
class tagGCFriendSendEnergyInfo(Structure):
@@ -2760,6 +2910,7 @@
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -2773,6 +2924,7 @@
self.RecordLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.KillRecord,_pos = CommFunc.ReadString(_lpData, _pos,self.RecordLen)
self.RefreshSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RefreshCD,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -2781,6 +2933,7 @@
self.RecordLen = 0
self.KillRecord = ""
self.RefreshSecond = 0
+ self.RefreshCD = 0
return
def GetLength(self):
@@ -2789,6 +2942,7 @@
length += 1
length += 2
length += len(self.KillRecord)
+ length += 4
length += 4
return length
@@ -2800,6 +2954,7 @@
data = CommFunc.WriteWORD(data, self.RecordLen)
data = CommFunc.WriteString(data, self.RecordLen, self.KillRecord)
data = CommFunc.WriteDWORD(data, self.RefreshSecond)
+ data = CommFunc.WriteDWORD(data, self.RefreshCD)
return data
def OutputString(self):
@@ -2808,14 +2963,16 @@
IsAlive:%d,
RecordLen:%d,
KillRecord:%s,
- RefreshSecond:%d
+ RefreshSecond:%d,
+ RefreshCD:%d
'''\
%(
self.BossID,
self.IsAlive,
self.RecordLen,
self.KillRecord,
- self.RefreshSecond
+ self.RefreshSecond,
+ self.RefreshCD
)
return DumpString
@@ -4129,81 +4286,159 @@
#------------------------------------------------------
-# AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
+# AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
-class tagGCBossRebornInfo(Structure):
+class tagGCFamilyBossHurtInfo(Structure):
+ NPCID = 0 #(DWORD NPCID)
+ CurHP = 0 #(DWORD CurHP)
+ CurHPEx = 0 #(DWORD CurHPEx)
+ MaxHP = 0 #(DWORD MaxHP)
+ MaxHPEx = 0 #(DWORD MaxHPEx)
+ FamilyID = 0 #(DWORD FamilyID)// 最大实时伤血仙盟
+ NameLen = 0 #(BYTE NameLen)
+ FamilyName = "" #(String FamilyName)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ return _pos
+
+ def Clear(self):
+ self.NPCID = 0
+ self.CurHP = 0
+ self.CurHPEx = 0
+ self.MaxHP = 0
+ self.MaxHPEx = 0
+ self.FamilyID = 0
+ self.NameLen = 0
+ self.FamilyName = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.FamilyName)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteDWORD(data, self.CurHP)
+ data = CommFunc.WriteDWORD(data, self.CurHPEx)
+ data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxHPEx)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.FamilyName)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NPCID:%d,
+ CurHP:%d,
+ CurHPEx:%d,
+ MaxHP:%d,
+ MaxHPEx:%d,
+ FamilyID:%d,
+ NameLen:%d,
+ FamilyName:%s
+ '''\
+ %(
+ self.NPCID,
+ self.CurHP,
+ self.CurHPEx,
+ self.MaxHP,
+ self.MaxHPEx,
+ self.FamilyID,
+ self.NameLen,
+ self.FamilyName
+ )
+ return DumpString
+
+
+class tagGCAllFamilyBossHurtInfoList(Structure):
Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- WorldLV = 0 #(WORD WorldLV)// 世界等级
- LimitLV = 0 #(WORD LimitLV)// 限制等级
+ NPCCount = 0 #(BYTE NPCCount)// 个数
+ NPCHurtInfo = list() #(vector<tagGCFamilyBossHurtInfo> NPCHurtInfo)// NPC伤血信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
+ self.Head.SubCmd = 0x10
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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.NPCCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NPCCount):
+ temNPCHurtInfo = tagGCFamilyBossHurtInfo()
+ _pos = temNPCHurtInfo.ReadData(_lpData, _pos)
+ self.NPCHurtInfo.append(temNPCHurtInfo)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x07
- self.StartDate = ""
- self.EndtDate = ""
- self.WorldLV = 0
- self.LimitLV = 0
+ self.Head.SubCmd = 0x10
+ self.NPCCount = 0
+ self.NPCHurtInfo = list()
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 2
+ length += 1
+ for i in range(self.NPCCount):
+ length += self.NPCHurtInfo[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.WorldLV)
- data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.NPCCount)
+ for i in range(self.NPCCount):
+ data = CommFunc.WriteString(data, self.NPCHurtInfo[i].GetLength(), self.NPCHurtInfo[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
- StartDate:%s,
- EndtDate:%s,
- WorldLV:%d,
- LimitLV:%d
+ NPCCount:%d,
+ NPCHurtInfo:%s
'''\
%(
self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.WorldLV,
- self.LimitLV
+ self.NPCCount,
+ "..."
)
return DumpString
-m_NAtagGCBossRebornInfo=tagGCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornInfo.Head.Cmd,m_NAtagGCBossRebornInfo.Head.SubCmd))] = m_NAtagGCBossRebornInfo
+m_NAtagGCAllFamilyBossHurtInfoList=tagGCAllFamilyBossHurtInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossHurtInfoList.Head.Cmd,m_NAtagGCAllFamilyBossHurtInfoList.Head.SubCmd))] = m_NAtagGCAllFamilyBossHurtInfoList
#------------------------------------------------------
@@ -4215,6 +4450,8 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
+ ("TotalPoint", c_int), # 复活总点数
+ ("RebornCnt", c_ushort), # 复活次数
]
def __init__(self):
@@ -4232,6 +4469,8 @@
self.Cmd = 0xAC
self.SubCmd = 0x08
self.Point = 0
+ self.TotalPoint = 0
+ self.RebornCnt = 0
return
def GetLength(self):
@@ -4244,12 +4483,16 @@
DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
Cmd:%s,
SubCmd:%s,
- Point:%d
+ Point:%d,
+ TotalPoint:%d,
+ RebornCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Point
+ self.Point,
+ self.TotalPoint,
+ self.RebornCnt
)
return DumpString
@@ -4267,6 +4510,7 @@
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
WorldLV = 0 #(WORD WorldLV)// 世界等级
LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
data = None
def __init__(self):
@@ -4282,6 +4526,7 @@
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -4293,6 +4538,7 @@
self.EndtDate = ""
self.WorldLV = 0
self.LimitLV = 0
+ self.ResetType = 0
return
def GetLength(self):
@@ -4302,6 +4548,7 @@
length += 10
length += 2
length += 2
+ length += 1
return length
@@ -4312,6 +4559,7 @@
data = CommFunc.WriteString(data, 10, self.EndtDate)
data = CommFunc.WriteWORD(data, self.WorldLV)
data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
return data
def OutputString(self):
@@ -4320,14 +4568,16 @@
StartDate:%s,
EndtDate:%s,
WorldLV:%d,
- LimitLV:%d
+ LimitLV:%d,
+ ResetType:%d
'''\
%(
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
self.WorldLV,
- self.LimitLV
+ self.LimitLV,
+ self.ResetType
)
return DumpString
@@ -10026,6 +10276,62 @@
#------------------------------------------------------
+# A3 24 通知绑玉转盘结果 #tagMCBindJadeWheelResult
+
+class tagMCBindJadeWheelResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Index", c_ubyte), # 格子
+ ("Cnt", c_ubyte), #今日已转次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x24
+ self.Index = 0
+ self.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBindJadeWheelResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 24 通知绑玉转盘结果 //tagMCBindJadeWheelResult:
+ Cmd:%s,
+ SubCmd:%s,
+ Index:%d,
+ Cnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Index,
+ self.Cnt
+ )
+ return DumpString
+
+
+m_NAtagMCBindJadeWheelResult=tagMCBindJadeWheelResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBindJadeWheelResult.Cmd,m_NAtagMCBindJadeWheelResult.SubCmd))] = m_NAtagMCBindJadeWheelResult
+
+
+#------------------------------------------------------
#A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt
class tagMCBossCntInfo(Structure):
@@ -10736,6 +11042,114 @@
#------------------------------------------------------
+# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
+
+class tagMCDogzHelpbattleState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DogzID", c_ubyte), # 神兽ID
+ ("BatteState", c_ubyte), #是否已助战, 0否1是
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0xC1
+ 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 = 0xC1
+ self.DogzID = 0
+ self.BatteState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDogzHelpbattleState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
+ Cmd:%s,
+ SubCmd:%s,
+ DogzID:%d,
+ BatteState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DogzID,
+ self.BatteState
+ )
+ return DumpString
+
+
+m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
+
+
+#------------------------------------------------------
+# A3 C0 神兽信息 #tagMCDogzInfo
+
+class tagMCDogzInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0xC0
+ 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 = 0xC0
+ self.BuyHelpbattleCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDogzInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BuyHelpbattleCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BuyHelpbattleCount
+ )
+ return DumpString
+
+
+m_NAtagMCDogzInfo=tagMCDogzInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
+
+
+#------------------------------------------------------
# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
class tagMCEquipDecomposeInfo(Structure):
@@ -11238,19 +11652,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
-class tagMCFBEncourageInfo(Structure):
+class tagMCFBEncourageCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Cnt1", c_ubyte), # 当前铜钱鼓舞次数
- ("Cnt2", c_ubyte), # 当前仙玉鼓舞次数
+ ("MoneyType", c_ubyte), # 金钱类型
+ ("EncourageCnt", c_ubyte), # 当前鼓舞次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11259,36 +11669,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
- self.Cnt1 = 0
- self.Cnt2 = 0
+ self.MoneyType = 0
+ self.EncourageCnt = 0
return
def GetLength(self):
- return sizeof(tagMCFBEncourageInfo)
+ return sizeof(tagMCFBEncourageCnt)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo:
- Cmd:%s,
- SubCmd:%s,
- Cnt1:%d,
- Cnt2:%d
+ MoneyType:%d,
+ EncourageCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Cnt1,
- self.Cnt2
+ self.MoneyType,
+ self.EncourageCnt
+ )
+ return DumpString
+
+
+class tagMCFBEncourageInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//
+ InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFBEncourageCnt()
+ _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 = 0x0A
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
)
return DumpString
m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo
#------------------------------------------------------
@@ -12703,6 +13169,7 @@
_pack_ = 1
_fields_ = [
("PriID", c_int), # 特权ID
+ ("State", c_ubyte), #激活状态
("CurValue", c_int), #当前总进度
("GotValue", c_int), #已领取进度
("ItemAwardState", c_ubyte), #物品奖励是否已领取
@@ -12719,6 +13186,7 @@
def Clear(self):
self.PriID = 0
+ self.State = 0
self.CurValue = 0
self.GotValue = 0
self.ItemAwardState = 0
@@ -12733,12 +13201,14 @@
def OutputString(self):
DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
PriID:%d,
+ State:%d,
CurValue:%d,
GotValue:%d,
ItemAwardState:%d
'''\
%(
self.PriID,
+ self.State,
self.CurValue,
self.GotValue,
self.ItemAwardState
@@ -12818,16 +13288,12 @@
class tagMCNPCIDCollectionCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("NPCID", c_int), #NPCID
("CollectionCnt", c_ubyte), #已采集次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x26
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -12836,8 +13302,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x26
self.NPCID = 0
self.CollectionCnt = 0
return
@@ -12850,14 +13314,10 @@
def OutputString(self):
DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo:
- Cmd:%s,
- SubCmd:%s,
NPCID:%d,
CollectionCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.NPCID,
self.CollectionCnt
)
@@ -13510,6 +13970,62 @@
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
+
+
+#------------------------------------------------------
+# A3 21 祈福丹药结果 #tagMCPrayElixirResult
+
+class tagMCPrayElixirResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), # 物品ID
+ ("PrayCnt", c_ubyte), # 今日祈福次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x21
+ self.ItemID = 0
+ self.PrayCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPrayElixirResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 21 祈福丹药结果 //tagMCPrayElixirResult:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ PrayCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.PrayCnt
+ )
+ return DumpString
+
+
+m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
#------------------------------------------------------
@@ -16213,6 +16729,183 @@
#------------------------------------------------------
+# A7 15 通知仙盟抢Boss伤血信息 #tagMCFamilyBossHurtList
+
+class tagMCFamilyBossHurt(Structure):
+ FamilyID = 0 #(DWORD FamilyID)// 所属仙盟ID
+ HurtID = 0 #(DWORD HurtID)// 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID
+ NameLen = 0 #(BYTE NameLen)
+ HurtName = "" #(String HurtName)
+ HurtValue = 0 #(DWORD HurtValue)// 累计伤血,求余1亿的值
+ HurtValueEx = 0 #(DWORD HurtValueEx)// 累计伤血,整除1亿的值
+ InitTick = 0 #(DWORD InitTick)// 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.InitTick,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.FamilyID = 0
+ self.HurtID = 0
+ self.NameLen = 0
+ self.HurtName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ self.InitTick = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.HurtName)
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.HurtID)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.HurtName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ data = CommFunc.WriteDWORD(data, self.InitTick)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ FamilyID:%d,
+ HurtID:%d,
+ NameLen:%d,
+ HurtName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d,
+ InitTick:%d
+ '''\
+ %(
+ self.FamilyID,
+ self.HurtID,
+ self.NameLen,
+ self.HurtName,
+ self.HurtValue,
+ self.HurtValueEx,
+ self.InitTick
+ )
+ return DumpString
+
+
+class tagMCFamilyBossHurtList(Structure):
+ Head = tagHead()
+ ObjID = 0 #(DWORD ObjID)
+ NPCID = 0 #(DWORD NPCID)
+ HurtType = 0 #(BYTE HurtType)// 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
+ IsSort = 0 #(BYTE IsSort)// 是否排序过的,一般boss被击杀后会统一同步一次排序过的最终结果,其他情况下客户端自己排序
+ HurtCount = 0 #(WORD HurtCount)// 伤血个数
+ HurtList = list() #(vector<tagMCFamilyBossHurt> HurtList)// 伤血列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.IsSort,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtList = tagMCFamilyBossHurt()
+ _pos = temHurtList.ReadData(_lpData, _pos)
+ self.HurtList.append(temHurtList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x15
+ self.ObjID = 0
+ self.NPCID = 0
+ self.HurtType = 0
+ self.IsSort = 0
+ self.HurtCount = 0
+ self.HurtList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ length += 1
+ length += 2
+ for i in range(self.HurtCount):
+ length += self.HurtList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ObjID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteBYTE(data, self.HurtType)
+ data = CommFunc.WriteBYTE(data, self.IsSort)
+ data = CommFunc.WriteWORD(data, self.HurtCount)
+ for i in range(self.HurtCount):
+ data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ObjID:%d,
+ NPCID:%d,
+ HurtType:%d,
+ IsSort:%d,
+ HurtCount:%d,
+ HurtList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ObjID,
+ self.NPCID,
+ self.HurtType,
+ self.IsSort,
+ self.HurtCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyBossHurtList=tagMCFamilyBossHurtList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBossHurtList.Head.Cmd,m_NAtagMCFamilyBossHurtList.Head.SubCmd))] = m_NAtagMCFamilyBossHurtList
+
+
+#------------------------------------------------------
# A7 03 通知进入副本时间 #tagMCFBEnterTickList
class tagMCFBEnterTick(Structure):
@@ -16388,6 +17081,121 @@
#------------------------------------------------------
+# A7 14 通知查询的NPC数量 #tagMCNPCCntList
+
+class tagMCNPCCntInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int),
+ ("Cnt", 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.NPCID = 0
+ self.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNPCCntInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList:
+ NPCID:%d,
+ Cnt:%d
+ '''\
+ %(
+ self.NPCID,
+ self.Cnt
+ )
+ return DumpString
+
+
+class tagMCNPCCntList(Structure):
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)
+ NPCInfoCnt = 0 #(BYTE NPCInfoCnt)
+ NPCInfoList = list() #(vector<tagMCNPCCntInfo> NPCInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x14
+ 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.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NPCInfoCnt):
+ temNPCInfoList = tagMCNPCCntInfo()
+ _pos = temNPCInfoList.ReadData(_lpData, _pos)
+ self.NPCInfoList.append(temNPCInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x14
+ self.MapID = 0
+ self.NPCInfoCnt = 0
+ self.NPCInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.NPCInfoCnt):
+ length += self.NPCInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteBYTE(data, self.NPCInfoCnt)
+ for i in range(self.NPCInfoCnt):
+ data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ MapID:%d,
+ NPCInfoCnt:%d,
+ NPCInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.MapID,
+ self.NPCInfoCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCNPCCntList=tagMCNPCCntList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList
+
+
+#------------------------------------------------------
#A7 01 通知选中对象 # tagMCNotifySelectObj
class tagMCNotifySelectObj(Structure):
@@ -16453,8 +17261,6 @@
class tagMCNPCInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("ObjID", c_int),
("NPCID", c_int),
("NPCHP", c_int),
@@ -16467,8 +17273,6 @@
def __init__(self):
self.Clear()
- self.Cmd = 0xA7
- self.SubCmd = 0x06
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -16477,8 +17281,6 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA7
- self.SubCmd = 0x06
self.ObjID = 0
self.NPCID = 0
self.NPCHP = 0
@@ -16497,8 +17299,6 @@
def OutputString(self):
DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList:
- Cmd:%s,
- SubCmd:%s,
ObjID:%d,
NPCID:%d,
NPCHP:%d,
@@ -16509,8 +17309,6 @@
RefreshSecond:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.ObjID,
self.NPCID,
self.NPCHP,
@@ -18814,6 +19612,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖
+ ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用
]
def __init__(self):
@@ -18831,6 +19630,7 @@
self.Cmd = 0xAA
self.SubCmd = 0x02
self.FirstGoldRewardState = 0
+ self.FirstGoldTry = 0
return
def GetLength(self):
@@ -18843,12 +19643,14 @@
DumpString = '''// AA 02 首充信息 //tagMCFirstGoldInfo:
Cmd:%s,
SubCmd:%s,
- FirstGoldRewardState:%d
+ FirstGoldRewardState:%d,
+ FirstGoldTry:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.FirstGoldRewardState
+ self.FirstGoldRewardState,
+ self.FirstGoldTry
)
return DumpString
@@ -18866,7 +19668,6 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("FirstGoldRemainTime", c_int), #首充提示剩余时间
- ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用
]
def __init__(self):
@@ -18884,7 +19685,6 @@
self.Cmd = 0xAA
self.SubCmd = 0x08
self.FirstGoldRemainTime = 0
- self.FirstGoldTry = 0
return
def GetLength(self):
@@ -18897,14 +19697,12 @@
DumpString = '''// AA 08 首充提示剩余时间 //tagMCFirstGoldTime:
Cmd:%s,
SubCmd:%s,
- FirstGoldRemainTime:%d,
- FirstGoldTry:%d
+ FirstGoldRemainTime:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.FirstGoldRemainTime,
- self.FirstGoldTry
+ self.FirstGoldRemainTime
)
return DumpString
@@ -19154,6 +19952,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -19173,6 +19972,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCFlashGiftbagTime()
@@ -19194,6 +19994,7 @@
self.Head.SubCmd = 0x12
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19207,6 +20008,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19223,6 +20025,7 @@
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.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19238,6 +20041,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19249,6 +20053,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -19797,6 +20602,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -19816,6 +20622,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCSpringSaleTime()
@@ -19837,6 +20644,7 @@
self.Head.SubCmd = 0x11
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19850,6 +20658,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19866,6 +20675,7 @@
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.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19881,6 +20691,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19892,6 +20703,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -19904,6 +20716,70 @@
m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
+
+
+#------------------------------------------------------
+# AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
+
+class tagMCSuperGiftInfo(Structure):
+ Head = tagHead()
+ GiftID = 0 #(DWORD GiftID)//商品ID
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x16
+ self.GiftID = 0
+ self.EndtDate = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 10
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.GiftID)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ GiftID:%d,
+ EndtDate:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.GiftID,
+ self.EndtDate
+ )
+ return DumpString
+
+
+m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Head.Cmd,m_NAtagMCSuperGiftInfo.Head.SubCmd))] = m_NAtagMCSuperGiftInfo
#------------------------------------------------------
@@ -20428,6 +21304,217 @@
m_NAtagMCManorWarResult=tagMCManorWarResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -21428,6 +22515,66 @@
#------------------------------------------------------
+# B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
+
+class tagMCNotifyPlayerMove(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PosX", c_int),
+ ("PosY", c_int),
+ ("NPCID", c_int), #目标点寻路NPCID, 可能为0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ 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 = 0xB1
+ self.SubCmd = 0x06
+ self.PosX = 0
+ self.PosY = 0
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNotifyPlayerMove)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 06 通知玩家向目标点移动 //tagMCNotifyPlayerMove:
+ Cmd:%s,
+ SubCmd:%s,
+ PosX:%d,
+ PosY:%d,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PosX,
+ self.PosY,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove
+
+
+#------------------------------------------------------
# B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime
class tagMCPlayerDeadTime(Structure):
--
Gitblit v1.8.0