From ca26f61b7f300022a8520e15e08c7d828324bfc6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 18 三月 2025 15:12:11 +0800 Subject: [PATCH] 10263 【英文】【BT】【GM】后端支持NPC仿真实玩家战斗和快速战斗(镜像AI单次攻击触发被动死循环防范,暂时限制单次攻击累计触发50次不再触发并发送后台邮件警告;) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 108 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index c8eb3c2..ec0e7d4 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -8193,6 +8193,62 @@ #------------------------------------------------------ +# A3 10 购买商城物品 #tagCMBuyItem + +class tagCMBuyItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyItemIndex", c_ushort), #购买的物品索引 + ("BuyCount", c_int), #购买数量 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x10 + 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 = 0x10 + self.BuyItemIndex = 0 + self.BuyCount = 0 + return + + def GetLength(self): + return sizeof(tagCMBuyItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 10 购买商城物品 //tagCMBuyItem: + Cmd:%s, + SubCmd:%s, + BuyItemIndex:%d, + BuyCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyItemIndex, + self.BuyCount + ) + return DumpString + + +m_NAtagCMBuyItem=tagCMBuyItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItem.Cmd,m_NAtagCMBuyItem.SubCmd))] = m_NAtagCMBuyItem + + +#------------------------------------------------------ # A3 07 过期物品续费 #tagCMItemRenew class tagCMItemRenew(Structure): @@ -18496,6 +18552,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): @@ -18567,7 +18671,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("IsSuper", c_ubyte), # 是否超级刷新 + ("RefreshType", c_ubyte), # 刷新类型:0-自己物品普通刷新;1-自己物品超级刷新;2-周围福地玩家列表刷新 ] def __init__(self): @@ -18584,7 +18688,7 @@ def Clear(self): self.Cmd = 0xB0 self.SubCmd = 0x31 - self.IsSuper = 0 + self.RefreshType = 0 return def GetLength(self): @@ -18597,12 +18701,12 @@ DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh: Cmd:%s, SubCmd:%s, - IsSuper:%d + RefreshType:%d '''\ %( self.Cmd, self.SubCmd, - self.IsSuper + self.RefreshType ) return DumpString -- Gitblit v1.8.0