From d2d06661b6e970f81a69d7a767a3df4ccdb99b27 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 18 二月 2025 11:54:15 +0800
Subject: [PATCH] 10261 【越南】【砍树】【英文】【BT】【GM】修复定制头像星级未同步bug;
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 308 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 298 insertions(+), 10 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 4351f9c..6a0e5ab 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -7601,7 +7601,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RealmDifficulty", c_ubyte), #境界难度 = 100 + 所选境界等级,如境界13,则发113
+ ("RealmDifficulty", c_ushort), #境界难度 = 1000 + 所选境界等级,如境界13,则发1013
]
def __init__(self):
@@ -7890,6 +7890,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("CountID", c_int), # 计数ID,客户端与策划约定,可以是NPCID或其他
+ ("Type", c_ubyte), # 1-杀怪
]
def __init__(self):
@@ -7907,6 +7908,7 @@
self.Cmd = 0xA2
self.SubCmd = 0x25
self.CountID = 0
+ self.Type = 0
return
def GetLength(self):
@@ -7919,12 +7921,14 @@
DumpString = '''//A2 25 客户端任务计数 // tagCMClientTaskCount:
Cmd:%s,
SubCmd:%s,
- CountID:%d
+ CountID:%d,
+ Type:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.CountID
+ self.CountID,
+ self.Type
)
return DumpString
@@ -15639,6 +15643,58 @@
#------------------------------------------------------
+# A6 16 珍宝阁操作 #tagCMZhenbaogeOP
+
+class tagCMZhenbaogeOP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("OpType", c_ubyte), # 操作:0-砍价;1-购买
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA6
+ self.SubCmd = 0x16
+ 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 = 0xA6
+ self.SubCmd = 0x16
+ self.OpType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMZhenbaogeOP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A6 16 珍宝阁操作 //tagCMZhenbaogeOP:
+ Cmd:%s,
+ SubCmd:%s,
+ OpType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.OpType
+ )
+ return DumpString
+
+
+m_NAtagCMZhenbaogeOP=tagCMZhenbaogeOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhenbaogeOP.Cmd,m_NAtagCMZhenbaogeOP.SubCmd))] = m_NAtagCMZhenbaogeOP
+
+
+#------------------------------------------------------
# A7 02 宠物激活 #tagCMActivatePet
class tagCMActivatePet(Structure):
@@ -16655,6 +16711,70 @@
#------------------------------------------------------
+# AA 25 炼器操作 #tagCMActLianqiOP
+
+class tagCMActLianqiOP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("OPType", c_ubyte), # 1-移动;2-使用道具;3-重新开始;4-领取等级奖励
+ ("OPValue", c_int), # 移动时-发1上2下3左4右;使用道具时-发使用个数*10+道具ID所在配置索引;等级奖励时-发领取的奖励等级
+ ("OPValue2", c_int), # 使用道具时-发选中格子A的行列值 行*10+列
+ ("OPValue3", c_int), # 使用道具时-发选中格子B的行列值 行*10+列
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x25
+ self.OPType = 0
+ self.OPValue = 0
+ self.OPValue2 = 0
+ self.OPValue3 = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActLianqiOP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 25 炼器操作 //tagCMActLianqiOP:
+ Cmd:%s,
+ SubCmd:%s,
+ OPType:%d,
+ OPValue:%d,
+ OPValue2:%d,
+ OPValue3:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.OPType,
+ self.OPValue,
+ self.OPValue2,
+ self.OPValue3
+ )
+ return DumpString
+
+
+m_NAtagCMActLianqiOP=tagCMActLianqiOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActLianqiOP.Cmd,m_NAtagCMActLianqiOP.SubCmd))] = m_NAtagCMActLianqiOP
+
+
+#------------------------------------------------------
# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
class tagCMActTurntableChooseItem(Structure):
@@ -17361,6 +17481,66 @@
m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
+
+
+#------------------------------------------------------
+# AA 02 推金币 #tagCMTuijinbi
+
+class tagCMTuijinbi(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("OpType", c_ubyte), # 操作类型: 0-抽奖;1-获得金币;2-激活至尊卡
+ ("Value1", c_int), # 类型1时为货币类型
+ ("Value2", c_int), # 类型1时为货币数值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x02
+ 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 = 0x02
+ self.OpType = 0
+ self.Value1 = 0
+ self.Value2 = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTuijinbi)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 02 推金币 //tagCMTuijinbi:
+ Cmd:%s,
+ SubCmd:%s,
+ OpType:%d,
+ Value1:%d,
+ Value2:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.OpType,
+ self.Value1,
+ self.Value2
+ )
+ return DumpString
+
+
+m_NAtagCMTuijinbi=tagCMTuijinbi()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTuijinbi.Cmd,m_NAtagCMTuijinbi.SubCmd))] = m_NAtagCMTuijinbi
#------------------------------------------------------
@@ -18316,6 +18496,54 @@
#------------------------------------------------------
+# B0 35 福地管家免费试用 #tagCMMineHouseKeeperFreeUse
+
+class tagCMMineHouseKeeperFreeUse(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x35
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x35
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMineHouseKeeperFreeUse)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 35 福地管家免费试用 //tagCMMineHouseKeeperFreeUse:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMMineHouseKeeperFreeUse=tagCMMineHouseKeeperFreeUse()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineHouseKeeperFreeUse.Cmd,m_NAtagCMMineHouseKeeperFreeUse.SubCmd))] = m_NAtagCMMineHouseKeeperFreeUse
+
+
+#------------------------------------------------------
# B0 30 福地物品拉 #tagCMMineItemPull
class tagCMMineItemPull(Structure):
@@ -18387,7 +18615,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("IsSuper", c_ubyte), # 是否超级刷新
+ ("RefreshType", c_ubyte), # 刷新类型:0-自己物品普通刷新;1-自己物品超级刷新;2-周围福地玩家列表刷新
]
def __init__(self):
@@ -18404,7 +18632,7 @@
def Clear(self):
self.Cmd = 0xB0
self.SubCmd = 0x31
- self.IsSuper = 0
+ self.RefreshType = 0
return
def GetLength(self):
@@ -18417,12 +18645,12 @@
DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh:
Cmd:%s,
SubCmd:%s,
- IsSuper:%d
+ RefreshType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsSuper
+ self.RefreshType
)
return DumpString
@@ -18929,6 +19157,62 @@
m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
+
+
+#------------------------------------------------------
+# B1 08 快速一键过关副本 #tagCMFBQuickPass
+
+class tagCMFBQuickPass(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("LineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x08
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB1
+ self.SubCmd = 0x08
+ self.MapID = 0
+ self.LineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFBQuickPass)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 08 快速一键过关副本 //tagCMFBQuickPass:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ LineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.LineID
+ )
+ return DumpString
+
+
+m_NAtagCMFBQuickPass=tagCMFBQuickPass()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass
#------------------------------------------------------
@@ -22933,7 +23217,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Type", c_ubyte), # 0-取消匹配; 1-进行匹配
+ ("Type", c_ubyte), # 0-查询匹配;1-刷新匹配
]
def __init__(self):
@@ -22986,6 +23270,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("IsWin", c_ubyte), #是否获胜
+ ("TagPlayerID", c_int), #目标玩家ID
]
def __init__(self):
@@ -23003,6 +23288,7 @@
self.Cmd = 0xC1
self.SubCmd = 0x08
self.IsWin = 0
+ self.TagPlayerID = 0
return
def GetLength(self):
@@ -23015,12 +23301,14 @@
DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver:
Cmd:%s,
SubCmd:%s,
- IsWin:%d
+ IsWin:%d,
+ TagPlayerID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsWin
+ self.IsWin,
+ self.TagPlayerID
)
return DumpString
--
Gitblit v1.8.0