From dbeecfbe89ba5bc1751db899e0ca40a242d0b68f Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 14 三月 2025 17:48:10 +0800 Subject: [PATCH] 0312 新增家族接口 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 343 insertions(+), 7 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 975cb40..2163321 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -5887,6 +5887,54 @@ #------------------------------------------------------ +# A1 09 同步打包玩家数据 #tagCMSycnPlayerPackData + +class tagCMSycnPlayerPackData(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA1 + self.SubCmd = 0x09 + 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 = 0xA1 + self.SubCmd = 0x09 + return + + def GetLength(self): + return sizeof(tagCMSycnPlayerPackData) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A1 09 同步打包玩家数据 //tagCMSycnPlayerPackData: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMSycnPlayerPackData=tagCMSycnPlayerPackData() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSycnPlayerPackData.Cmd,m_NAtagCMSycnPlayerPackData.SubCmd))] = m_NAtagCMSycnPlayerPackData + + +#------------------------------------------------------ #A1 03 设置是否成年 #tagCMAdult class tagCMAdult(Structure): @@ -8138,6 +8186,62 @@ m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -15591,6 +15695,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): @@ -16604,6 +16760,70 @@ m_NAtagCMActGodGiftReset=tagCMActGodGiftReset() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -18268,6 +18488,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): @@ -18339,7 +18607,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("IsSuper", c_ubyte), # 是否超级刷新 + ("RefreshType", c_ubyte), # 刷新类型:0-自己物品普通刷新;1-自己物品超级刷新;2-周围福地玩家列表刷新 ] def __init__(self): @@ -18356,7 +18624,7 @@ def Clear(self): self.Cmd = 0xB0 self.SubCmd = 0x31 - self.IsSuper = 0 + self.RefreshType = 0 return def GetLength(self): @@ -18369,12 +18637,12 @@ DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh: Cmd:%s, SubCmd:%s, - IsSuper:%d + RefreshType:%d '''\ %( self.Cmd, self.SubCmd, - self.IsSuper + self.RefreshType ) return DumpString @@ -21018,6 +21286,70 @@ #------------------------------------------------------ +# B4 11 镜像战斗 #tagCMMirrorFight + +class tagCMMirrorFight(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), # 自定义地图ID,如竞技场等 + ("FuncLineID", c_ushort), + ("TagPlayeID", c_int), # 目标玩家ID,支持跨服玩家ID + ("CmdType", c_ubyte), # 命令类型: 0-创建战斗;1-开始战斗;2-战斗中跳过;3-不创建战斗直接得结果 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x11 + 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 = 0xB4 + self.SubCmd = 0x11 + self.MapID = 0 + self.FuncLineID = 0 + self.TagPlayeID = 0 + self.CmdType = 0 + return + + def GetLength(self): + return sizeof(tagCMMirrorFight) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 11 镜像战斗 //tagCMMirrorFight: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d, + TagPlayeID:%d, + CmdType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID, + self.TagPlayeID, + self.CmdType + ) + return DumpString + + +m_NAtagCMMirrorFight=tagCMMirrorFight() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMirrorFight.Cmd,m_NAtagCMMirrorFight.SubCmd))] = m_NAtagCMMirrorFight + + +#------------------------------------------------------ # B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile class tagCMRecyclePriWoodPile(Structure): @@ -23062,7 +23394,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Type", c_ubyte), # 0-取消匹配; 1-进行匹配 + ("Type", c_ubyte), # 0-查询匹配;1-刷新匹配 ] def __init__(self): @@ -23115,6 +23447,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("IsWin", c_ubyte), #是否获胜 + ("TagPlayerID", c_int), #目标玩家ID ] def __init__(self): @@ -23132,6 +23465,7 @@ self.Cmd = 0xC1 self.SubCmd = 0x08 self.IsWin = 0 + self.TagPlayerID = 0 return def GetLength(self): @@ -23144,12 +23478,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