From d5b67363261409849207d8516b29e34f4726300e Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 25 十月 2018 14:47:12 +0800
Subject: [PATCH] 2215 脱机挂在线时间异常
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 470 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 445 insertions(+), 25 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 9976369..ec7f539 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -4811,6 +4811,78 @@
#------------------------------------------------------
+# A2 29 设置小助手 #tagCMSetLittleHelper
+
+class tagCMSetLittleHelper(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SetNum", c_ubyte), # 托管功能设置编号1~20,每个编号对应的托管功能前端自定义
+ ("Value1", c_int), # 自定义值1
+ ("Value2", c_int), # 自定义值2
+ ("Value3", c_int), # 自定义值3
+ ("Value4", c_int), # 自定义值4
+ ("Value5", c_int), # 自定义值5
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x29
+ 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 = 0xA2
+ self.SubCmd = 0x29
+ self.SetNum = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ self.Value3 = 0
+ self.Value4 = 0
+ self.Value5 = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSetLittleHelper)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 29 设置小助手 //tagCMSetLittleHelper:
+ Cmd:%s,
+ SubCmd:%s,
+ SetNum:%d,
+ Value1:%d,
+ Value2:%d,
+ Value3:%d,
+ Value4:%d,
+ Value5:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SetNum,
+ self.Value1,
+ self.Value2,
+ self.Value3,
+ self.Value4,
+ self.Value5
+ )
+ return DumpString
+
+
+m_NAtagCMSetLittleHelper=tagCMSetLittleHelper()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetLittleHelper.Cmd,m_NAtagCMSetLittleHelper.SubCmd))] = m_NAtagCMSetLittleHelper
+
+
+#------------------------------------------------------
# A2 09 设置环任务星级#tagCMSetRunMissionStar
class tagCMSetRunMissionStar(Structure):
@@ -5889,6 +5961,58 @@
m_NAtagCMGuardPickupItem=tagCMGuardPickupItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGuardPickupItem.Head.Cmd,m_NAtagCMGuardPickupItem.Head.SubCmd))] = m_NAtagCMGuardPickupItem
+
+
+#------------------------------------------------------
+# A3 13 物品拆解 #tagCMItemDecompound
+
+class tagCMItemDecompound(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Index", c_ubyte), # 拆解物品所在背包索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x13
+ 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 = 0x13
+ self.Index = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMItemDecompound)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 13 物品拆解 //tagCMItemDecompound:
+ Cmd:%s,
+ SubCmd:%s,
+ Index:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Index
+ )
+ return DumpString
+
+
+m_NAtagCMItemDecompound=tagCMItemDecompound()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound
#------------------------------------------------------
@@ -8210,56 +8334,74 @@
# A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
class tagCMDogzEquipItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DogzID", c_ubyte), # 神兽ID
- ("EquipIndex", c_ubyte), #神兽装备所在神兽背包索引
- ]
+ Head = tagHead()
+ DogzID = 0 #(BYTE DogzID)// 神兽ID
+ EquipIndexCount = 0 #(BYTE EquipIndexCount)
+ EquipIndexList = list() #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0xC0
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC0
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.EquipIndexCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.EquipIndexList.append(value)
+ return _pos
def Clear(self):
- self.Cmd = 0xA5
- self.SubCmd = 0xC0
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC0
self.DogzID = 0
- self.EquipIndex = 0
+ self.EquipIndexCount = 0
+ self.EquipIndexList = list()
return
def GetLength(self):
- return sizeof(tagCMDogzEquipItem)
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1 * self.EquipIndexCount
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.DogzID)
+ data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
+ for i in range(self.EquipIndexCount):
+ data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
+ return data
def OutputString(self):
- DumpString = '''// A5 C0 神兽穿戴装备 //tagCMDogzEquipItem:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
DogzID:%d,
- EquipIndex:%d
+ EquipIndexCount:%d,
+ EquipIndexList:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.DogzID,
- self.EquipIndex
+ self.EquipIndexCount,
+ "..."
)
return DumpString
m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Cmd,m_NAtagCMDogzEquipItem.SubCmd))] = m_NAtagCMDogzEquipItem
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
#------------------------------------------------------
@@ -8270,6 +8412,7 @@
EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+ IndexUseCountList = list() #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
data = None
@@ -8287,6 +8430,9 @@
for i in range(self.IndexCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.IndexList.append(value)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.IndexUseCountList.append(value)
self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
@@ -8298,6 +8444,7 @@
self.EquipIndex = 0
self.IndexCount = 0
self.IndexList = list()
+ self.IndexUseCountList = list()
self.IsDouble = 0
return
@@ -8307,6 +8454,7 @@
length += 1
length += 1
length += 1 * self.IndexCount
+ length += 4 * self.IndexCount
length += 1
return length
@@ -8318,6 +8466,8 @@
data = CommFunc.WriteBYTE(data, self.IndexCount)
for i in range(self.IndexCount):
data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
data = CommFunc.WriteBYTE(data, self.IsDouble)
return data
@@ -8327,12 +8477,14 @@
EquipIndex:%d,
IndexCount:%d,
IndexList:%s,
+ IndexUseCountList:%s,
IsDouble:%d
'''\
%(
self.Head.OutputString(),
self.EquipIndex,
self.IndexCount,
+ "...",
"...",
self.IsDouble
)
@@ -9394,6 +9546,54 @@
#------------------------------------------------------
+# A5 14 祈福丹药 #tagCMPrayElixir
+
+class tagCMPrayElixir(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x14
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x14
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMPrayElixir)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 14 祈福丹药 //tagCMPrayElixir:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMPrayElixir=tagCMPrayElixir()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
+
+
+#------------------------------------------------------
#A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState
class tagCMQueryHighLadderState(Structure):
@@ -10196,6 +10396,54 @@
m_NAtagCMRuneUp=tagCMRuneUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneUp.Cmd,m_NAtagCMRuneUp.SubCmd))] = m_NAtagCMRuneUp
+
+
+#------------------------------------------------------
+# A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
+
+class tagCMStartBindJadeWheel(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x17
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x17
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMStartBindJadeWheel)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 17 绑玉转盘开始 //tagCMStartBindJadeWheel:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
#------------------------------------------------------
@@ -11204,6 +11452,178 @@
#------------------------------------------------------
+# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
+
+class tagCMActWishingRefresh(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsFree", c_ubyte), # 是否免费刷新
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x07
+ self.IsFree = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActWishingRefresh)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 07 许愿池活动刷新奖池 //tagCMActWishingRefresh:
+ Cmd:%s,
+ SubCmd:%s,
+ IsFree:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsFree
+ )
+ return DumpString
+
+
+m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
+
+
+#------------------------------------------------------
+# AA 06 许愿池活动许愿 #tagCMActWishing
+
+class tagCMActWishing(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SrcWellType", c_ubyte), # 来源库 0-可选库 1-结果库
+ ("SrcIndex", c_ubyte), # 来源索引
+ ("DesWellType", c_ubyte), # 目标库 0-可选库 1-结果库
+ ("DesIndex", c_ubyte), # 目标索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x06
+ self.SrcWellType = 0
+ self.SrcIndex = 0
+ self.DesWellType = 0
+ self.DesIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActWishing)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 06 许愿池活动许愿 //tagCMActWishing:
+ Cmd:%s,
+ SubCmd:%s,
+ SrcWellType:%d,
+ SrcIndex:%d,
+ DesWellType:%d,
+ DesIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SrcWellType,
+ self.SrcIndex,
+ self.DesWellType,
+ self.DesIndex
+ )
+ return DumpString
+
+
+m_NAtagCMActWishing=tagCMActWishing()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing
+
+
+#------------------------------------------------------
+# AA 05 限时抢购预约 #tagCMFlashSaleAppointment
+
+class tagCMFlashSaleAppointment(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GoodsID", c_int), # 抢购商品标识
+ ("State", c_ubyte), # 1-预约 0-取消
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x05
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x05
+ self.GoodsID = 0
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFlashSaleAppointment)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
+ Cmd:%s,
+ SubCmd:%s,
+ GoodsID:%d,
+ State:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GoodsID,
+ self.State
+ )
+ return DumpString
+
+
+m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
+
+
+#------------------------------------------------------
# AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
class tagCMGetClassUPDayAward(Structure):
--
Gitblit v1.8.0