From a6fe9b060edf315f6abde7443e48db5dea439f47 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 28 五月 2025 09:59:08 +0800 Subject: [PATCH] 16 卡牌服务端(功能队伍数据基础;不含功能逻辑;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 798 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 467 insertions(+), 331 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py index 09a8e73..6cefeb0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py @@ -15849,6 +15849,62 @@ #------------------------------------------------------ +# A6 17 查询家族行为信息 #tagCMQueryFamilyAction + +class tagCMQueryFamilyAction(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActionType", c_ubyte), # 行为类型 + ("FamilyID", c_int), # 家族ID,发0默认自己家族 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA6 + 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 = 0xA6 + self.SubCmd = 0x17 + self.ActionType = 0 + self.FamilyID = 0 + return + + def GetLength(self): + return sizeof(tagCMQueryFamilyAction) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A6 17 查询家族行为信息 //tagCMQueryFamilyAction: + Cmd:%s, + SubCmd:%s, + ActionType:%d, + FamilyID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActionType, + self.FamilyID + ) + return DumpString + + +m_NAtagCMQueryFamilyAction=tagCMQueryFamilyAction() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryFamilyAction.Cmd,m_NAtagCMQueryFamilyAction.SubCmd))] = m_NAtagCMQueryFamilyAction + + +#------------------------------------------------------ # A6 02 申请加入家族#tagCMRequesJoinFamily class tagCMRequesJoinFamily(Structure): @@ -20911,289 +20967,6 @@ #------------------------------------------------------ -#B2 01 脱机挂状态 # tagCMLoginState - -class tagCMLoginState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("State", c_ubyte), # 0正常登录,1脱机登录,2脱机登录死亡 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB2 - self.SubCmd = 0x01 - 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 = 0xB2 - self.SubCmd = 0x01 - self.State = 0 - return - - def GetLength(self): - return sizeof(tagCMLoginState) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B2 01 脱机挂状态 // tagCMLoginState: - Cmd:%s, - SubCmd:%s, - State:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.State - ) - return DumpString - - -m_NAtagCMLoginState=tagCMLoginState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoginState.Cmd,m_NAtagCMLoginState.SubCmd))] = m_NAtagCMLoginState - - -#------------------------------------------------------ -#B2 05 推送提醒设置 #tagCMPushNotificationsSetting - -class tagCMPushNotificationsSetting(Structure): - Head = tagHead() - OnoffBit = 0 #(DWORD OnoffBit)// 按位约定开关 - TimeLen = 0 #(BYTE TimeLen) - TimeStr = "" #(String TimeStr)// 时间字符串 01:02-05:00 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB2 - self.Head.SubCmd = 0x05 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.OnoffBit,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.TimeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,self.TimeLen) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB2 - self.Head.SubCmd = 0x05 - self.OnoffBit = 0 - self.TimeLen = 0 - self.TimeStr = "" - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 4 - length += 1 - length += len(self.TimeStr) - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.OnoffBit) - data = CommFunc.WriteBYTE(data, self.TimeLen) - data = CommFunc.WriteString(data, self.TimeLen, self.TimeStr) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - OnoffBit:%d, - TimeLen:%d, - TimeStr:%s - '''\ - %( - self.Head.OutputString(), - self.OnoffBit, - self.TimeLen, - self.TimeStr - ) - return DumpString - - -m_NAtagCMPushNotificationsSetting=tagCMPushNotificationsSetting() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPushNotificationsSetting.Head.Cmd,m_NAtagCMPushNotificationsSetting.Head.SubCmd))] = m_NAtagCMPushNotificationsSetting - - -#------------------------------------------------------ -#B2 02 视野缩放 #tagCMSightZoom - -class tagCMSightZoom(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Sight", c_ubyte), # 视野缩放,用于脱机挂不超过最大视野,空闲状态为0,被玩家攻击恢复视野 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB2 - 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 = 0xB2 - self.SubCmd = 0x02 - self.Sight = 0 - return - - def GetLength(self): - return sizeof(tagCMSightZoom) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B2 02 视野缩放 //tagCMSightZoom: - Cmd:%s, - SubCmd:%s, - Sight:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Sight - ) - return DumpString - - -m_NAtagCMSightZoom=tagCMSightZoom() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSightZoom.Cmd,m_NAtagCMSightZoom.SubCmd))] = m_NAtagCMSightZoom - - -#------------------------------------------------------ -#B2 04 系统设置 #tagCMSystem - -class tagCMSystem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("AutoEat", c_ubyte), # 自动吞噬 - ("AutoReborn", c_ubyte), #自动买活 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB2 - self.SubCmd = 0x04 - 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 = 0xB2 - self.SubCmd = 0x04 - self.AutoEat = 0 - self.AutoReborn = 0 - return - - def GetLength(self): - return sizeof(tagCMSystem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B2 04 系统设置 //tagCMSystem: - Cmd:%s, - SubCmd:%s, - AutoEat:%d, - AutoReborn:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.AutoEat, - self.AutoReborn - ) - return DumpString - - -m_NAtagCMSystem=tagCMSystem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSystem.Cmd,m_NAtagCMSystem.SubCmd))] = m_NAtagCMSystem - - -#------------------------------------------------------ -#B2 03 设置脱机挂NPC # tagCMTJGnpc - -class tagCMTJGnpc(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("NPCID", c_int), # 脱机挂点 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB2 - self.SubCmd = 0x03 - 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 = 0xB2 - self.SubCmd = 0x03 - self.NPCID = 0 - return - - def GetLength(self): - return sizeof(tagCMTJGnpc) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B2 03 设置脱机挂NPC // tagCMTJGnpc: - Cmd:%s, - SubCmd:%s, - NPCID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.NPCID - ) - return DumpString - - -m_NAtagCMTJGnpc=tagCMTJGnpc() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc - - -#------------------------------------------------------ # B3 17 情戒解锁 #tagCMLoveRingUnlock class tagCMLoveRingUnlock(Structure): @@ -22539,54 +22312,6 @@ #------------------------------------------------------ -#B4 0A 脱机挂死亡 # tagCMTJGDead - -class tagCMTJGDead(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB4 - self.SubCmd = 0x0A - 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 = 0x0A - return - - def GetLength(self): - return sizeof(tagCMTJGDead) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B4 0A 脱机挂死亡 // tagCMTJGDead: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMTJGDead=tagCMTJGDead() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGDead.Cmd,m_NAtagCMTJGDead.SubCmd))] = m_NAtagCMTJGDead - - -#------------------------------------------------------ #B4 01 带有对象队列和坐标的技能 #tagCMUseSkillEx class tagCMUseSkillEx(Structure): @@ -23207,6 +22932,82 @@ #------------------------------------------------------ +# B9 21 修改功能队伍 #tagCMChangeFuncTeam + +class tagCMChangeFuncTeam(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TeamID", c_int), + ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID + ("MinLV", c_ushort), #最低等级限制 + ("MinFightPower", c_int), #最低战力限制,求余亿 + ("MinFightPowerEx", c_int), #最低战力限制,整除亿 + ("ServerOnly", c_ubyte), #是否仅本服玩家可加入,0-否,1-是 + ("NeedCheck", c_ubyte), #是否需要审核 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + 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 = 0xB9 + self.SubCmd = 0x21 + self.TeamID = 0 + self.FuncMapID = 0 + self.MinLV = 0 + self.MinFightPower = 0 + self.MinFightPowerEx = 0 + self.ServerOnly = 0 + self.NeedCheck = 0 + return + + def GetLength(self): + return sizeof(tagCMChangeFuncTeam) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 21 修改功能队伍 //tagCMChangeFuncTeam: + Cmd:%s, + SubCmd:%s, + TeamID:%d, + FuncMapID:%d, + MinLV:%d, + MinFightPower:%d, + MinFightPowerEx:%d, + ServerOnly:%d, + NeedCheck:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TeamID, + self.FuncMapID, + self.MinLV, + self.MinFightPower, + self.MinFightPowerEx, + self.ServerOnly, + self.NeedCheck + ) + return DumpString + + +m_NAtagCMChangeFuncTeam=tagCMChangeFuncTeam() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeFuncTeam.Cmd,m_NAtagCMChangeFuncTeam.SubCmd))] = m_NAtagCMChangeFuncTeam + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): @@ -23263,6 +23064,341 @@ #------------------------------------------------------ +# B9 20 创建功能队伍 #tagCMCreateFuncTeam + +class tagCMCreateFuncTeam(Structure): + Head = tagHead() + FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID + FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级 + NameLen = 0 #(BYTE NameLen) + TeamName = "" #(String TeamName)// 队伍名称,可为空 + MinLV = 0 #(WORD MinLV)//最低等级限制 + MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿 + MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿 + ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是 + NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x20 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x20 + self.FuncMapID = 0 + self.FuncMapEx = 0 + self.NameLen = 0 + self.TeamName = "" + self.MinLV = 0 + self.MinFightPower = 0 + self.MinFightPowerEx = 0 + self.ServerOnly = 0 + self.NeedCheck = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 1 + length += len(self.TeamName) + length += 2 + length += 4 + length += 4 + length += 1 + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FuncMapID) + data = CommFunc.WriteDWORD(data, self.FuncMapEx) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.TeamName) + data = CommFunc.WriteWORD(data, self.MinLV) + data = CommFunc.WriteDWORD(data, self.MinFightPower) + data = CommFunc.WriteDWORD(data, self.MinFightPowerEx) + data = CommFunc.WriteBYTE(data, self.ServerOnly) + data = CommFunc.WriteBYTE(data, self.NeedCheck) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FuncMapID:%d, + FuncMapEx:%d, + NameLen:%d, + TeamName:%s, + MinLV:%d, + MinFightPower:%d, + MinFightPowerEx:%d, + ServerOnly:%d, + NeedCheck:%d + '''\ + %( + self.Head.OutputString(), + self.FuncMapID, + self.FuncMapEx, + self.NameLen, + self.TeamName, + self.MinLV, + self.MinFightPower, + self.MinFightPowerEx, + self.ServerOnly, + self.NeedCheck + ) + return DumpString + + +m_NAtagCMCreateFuncTeam=tagCMCreateFuncTeam() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCreateFuncTeam.Head.Cmd,m_NAtagCMCreateFuncTeam.Head.SubCmd))] = m_NAtagCMCreateFuncTeam + + +#------------------------------------------------------ +# B9 22 功能队伍成员操作 #tagCMFuncTeamMemOP + +class tagCMFuncTeamMemOP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TeamID", c_int), + ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID + ("OPType", c_ubyte), # 1-申请加入;2-申请取消;3-同意入队;4-拒绝入队;5-退出队伍;6-踢出队伍;7-转让队长;8-解散队伍; + ("OPData", c_int), # 可选 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + self.SubCmd = 0x22 + 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 = 0xB9 + self.SubCmd = 0x22 + self.TeamID = 0 + self.FuncMapID = 0 + self.OPType = 0 + self.OPData = 0 + return + + def GetLength(self): + return sizeof(tagCMFuncTeamMemOP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 22 功能队伍成员操作 //tagCMFuncTeamMemOP: + Cmd:%s, + SubCmd:%s, + TeamID:%d, + FuncMapID:%d, + OPType:%d, + OPData:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TeamID, + self.FuncMapID, + self.OPType, + self.OPData + ) + return DumpString + + +m_NAtagCMFuncTeamMemOP=tagCMFuncTeamMemOP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFuncTeamMemOP.Cmd,m_NAtagCMFuncTeamMemOP.SubCmd))] = m_NAtagCMFuncTeamMemOP + + +#------------------------------------------------------ +# B9 23 查找功能队伍列表 #tagCMQueryFuncTeam + +class tagCMQueryFuncTeam(Structure): + Head = tagHead() + FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID + FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有 + StartIndex = 0 #(DWORD StartIndex)// 查看的起始索引, 默认0 + QueryCnt = 0 #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100 + HaveSpace = 0 #(BYTE HaveSpace)// 是否只查看有空位置的队伍 + IDLimitType = 0 #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长 + SearchLen = 0 #(BYTE SearchLen) + SearchMsg = "" #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x23 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x23 + self.FuncMapID = 0 + self.FuncMapEx = 0 + self.StartIndex = 0 + self.QueryCnt = 0 + self.HaveSpace = 0 + self.IDLimitType = 0 + self.SearchLen = 0 + self.SearchMsg = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 4 + length += 1 + length += 1 + length += 1 + length += 1 + length += len(self.SearchMsg) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FuncMapID) + data = CommFunc.WriteDWORD(data, self.FuncMapEx) + data = CommFunc.WriteDWORD(data, self.StartIndex) + data = CommFunc.WriteBYTE(data, self.QueryCnt) + data = CommFunc.WriteBYTE(data, self.HaveSpace) + data = CommFunc.WriteBYTE(data, self.IDLimitType) + data = CommFunc.WriteBYTE(data, self.SearchLen) + data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FuncMapID:%d, + FuncMapEx:%d, + StartIndex:%d, + QueryCnt:%d, + HaveSpace:%d, + IDLimitType:%d, + SearchLen:%d, + SearchMsg:%s + '''\ + %( + self.Head.OutputString(), + self.FuncMapID, + self.FuncMapEx, + self.StartIndex, + self.QueryCnt, + self.HaveSpace, + self.IDLimitType, + self.SearchLen, + self.SearchMsg + ) + return DumpString + + +m_NAtagCMQueryFuncTeam=tagCMQueryFuncTeam() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryFuncTeam.Head.Cmd,m_NAtagCMQueryFuncTeam.Head.SubCmd))] = m_NAtagCMQueryFuncTeam + + +#------------------------------------------------------ +# B9 24 查找玩家功能队伍 #tagCMQueryPlayerFuncTeam + +class tagCMQueryPlayerFuncTeam(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + 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 = 0xB9 + self.SubCmd = 0x24 + self.FuncMapID = 0 + return + + def GetLength(self): + return sizeof(tagCMQueryPlayerFuncTeam) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 24 查找玩家功能队伍 //tagCMQueryPlayerFuncTeam: + Cmd:%s, + SubCmd:%s, + FuncMapID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FuncMapID + ) + return DumpString + + +m_NAtagCMQueryPlayerFuncTeam=tagCMQueryPlayerFuncTeam() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryPlayerFuncTeam.Cmd,m_NAtagCMQueryPlayerFuncTeam.SubCmd))] = m_NAtagCMQueryPlayerFuncTeam + + +#------------------------------------------------------ # C1 22 跨服排位竞猜 #tagCMChampionshipGuess class tagCMChampionshipGuess(Structure): -- Gitblit v1.8.0