From 1ea73e1885835466265ce788d93556b7030ee0e8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 30 十二月 2018 18:42:00 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(GM工具增加子服服务器维护,文字翻译版) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2021 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 1,721 insertions(+), 300 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index c69e43d..fe24eb8 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -808,6 +808,91 @@ #------------------------------------------------------ +# A4 12 搜索家族 #tagCGPySearchFamily + +class tagCGPySearchFamily(Structure): + Head = tagHead() + MsgLen = 0 #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件 + Msg = "" #(String Msg)//size = MsgLen + LV = 0 #(BYTE LV)//最低家族等级,如果为0,则不限制该条件 + MaxCount = 0 #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条 + IsSearching = 0 #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen) + self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x12 + self.MsgLen = 0 + self.Msg = "" + self.LV = 0 + self.MaxCount = 0 + self.IsSearching = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.Msg) + length += 1 + length += 1 + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.MsgLen) + data = CommFunc.WriteString(data, self.MsgLen, self.Msg) + data = CommFunc.WriteBYTE(data, self.LV) + data = CommFunc.WriteBYTE(data, self.MaxCount) + data = CommFunc.WriteBYTE(data, self.IsSearching) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MsgLen:%d, + Msg:%s, + LV:%d, + MaxCount:%d, + IsSearching:%d + '''\ + %( + self.Head.OutputString(), + self.MsgLen, + self.Msg, + self.LV, + self.MaxCount, + self.IsSearching + ) + return DumpString + + +m_NAtagCGPySearchFamily=tagCGPySearchFamily() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily + + +#------------------------------------------------------ #A4 01 查看家族第N页#tagCGViewFamilyPage class tagCGViewFamilyPage(Structure): @@ -1149,6 +1234,73 @@ #------------------------------------------------------ +# A9 04 查询boss信息 #tagCGQueryBossInfo + +class tagCGQueryBossInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)//数量 + BossIDList = list() #(vector<DWORD> BossIDList)//boosid + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.BossIDList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + self.Count = 0 + self.BossIDList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.BossIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + BossIDList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagCGQueryBossInfo=tagCGQueryBossInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryBossInfo.Head.Cmd,m_NAtagCGQueryBossInfo.Head.SubCmd))] = m_NAtagCGQueryBossInfo + + +#------------------------------------------------------ #A9 A1 查询玩家补偿#tagCGQueryCompensation class tagCGQueryCompensation(Structure): @@ -1359,6 +1511,58 @@ #------------------------------------------------------ +# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss + +class tagCGCallupFamilyMemberToBoss(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAC + 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 = 0xAC + self.SubCmd = 0x05 + self.NPCID = 0 + return + + def GetLength(self): + return sizeof(tagCGCallupFamilyMemberToBoss) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss: + Cmd:%s, + SubCmd:%s, + NPCID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID + ) + return DumpString + + +m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss + + +#------------------------------------------------------ # AC 02 仙魔之争战斗结束 #tagCGXMZZOver class tagCGXMZZOver(Structure): @@ -1482,6 +1686,54 @@ m_NAtagCGJoinXMZZ=tagCGJoinXMZZ() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGJoinXMZZ.Cmd,m_NAtagCGJoinXMZZ.SubCmd))] = m_NAtagCGJoinXMZZ + + +#------------------------------------------------------ +# AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt + +class tagCGQueryAllFamilyBossHurt(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAC + 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 = 0xAC + self.SubCmd = 0x04 + return + + def GetLength(self): + return sizeof(tagCGQueryAllFamilyBossHurt) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AC 04 查询仙盟抢Boss所有Boss当前进度 //tagCGQueryAllFamilyBossHurt: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCGQueryAllFamilyBossHurt=tagCGQueryAllFamilyBossHurt() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAllFamilyBossHurt.Cmd,m_NAtagCGQueryAllFamilyBossHurt.SubCmd))] = m_NAtagCGQueryAllFamilyBossHurt #------------------------------------------------------ @@ -2459,6 +2711,62 @@ #------------------------------------------------------ +# B9 0A 按条件邀请玩家加入队伍 #tagCGInvitePlayerJoinTeamByLV + +class tagCGInvitePlayerJoinTeamByLV(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LVLimit", c_ushort), # 目标玩家大于等于此等级 + ("InviteCnt", c_ubyte), # 邀请玩家个数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + 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 = 0xB9 + self.SubCmd = 0x0A + self.LVLimit = 0 + self.InviteCnt = 0 + return + + def GetLength(self): + return sizeof(tagCGInvitePlayerJoinTeamByLV) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 0A 按条件邀请玩家加入队伍 //tagCGInvitePlayerJoinTeamByLV: + Cmd:%s, + SubCmd:%s, + LVLimit:%d, + InviteCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.LVLimit, + self.InviteCnt + ) + return DumpString + + +m_NAtagCGInvitePlayerJoinTeamByLV=tagCGInvitePlayerJoinTeamByLV() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGInvitePlayerJoinTeamByLV.Cmd,m_NAtagCGInvitePlayerJoinTeamByLV.SubCmd))] = m_NAtagCGInvitePlayerJoinTeamByLV + + +#------------------------------------------------------ # B9 05 查询推荐组队的附近玩家 #tagCGQueryRecommendNearbyPlayer class tagCGQueryRecommendNearbyPlayer(Structure): @@ -2675,113 +2983,9 @@ #------------------------------------------------------ -#C0 11 上传数据的活动类型 #tagActionMergeRegister +# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState -class tagActionMergeRegister(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionType", c_ubyte), #活动类型 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xC0 - 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 = 0xC0 - self.SubCmd = 0x11 - self.ActionType = 0 - return - - def GetLength(self): - return sizeof(tagActionMergeRegister) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//C0 11 上传数据的活动类型 //tagActionMergeRegister: - Cmd:%s, - SubCmd:%s, - ActionType:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionType - ) - return DumpString - - -m_NAtagActionMergeRegister=tagActionMergeRegister() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagActionMergeRegister.Cmd,m_NAtagActionMergeRegister.SubCmd))] = m_NAtagActionMergeRegister - - -#------------------------------------------------------ -#C0 12 跨服上传数据账号查询 #tagMergeRegisterAccQuery - -class tagMergeRegisterAccQuery(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionType", c_ubyte), #活动类型 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xC0 - self.SubCmd = 0x12 - 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 = 0xC0 - self.SubCmd = 0x12 - self.ActionType = 0 - return - - def GetLength(self): - return sizeof(tagMergeRegisterAccQuery) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//C0 12 跨服上传数据账号查询 //tagMergeRegisterAccQuery: - Cmd:%s, - SubCmd:%s, - ActionType:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionType - ) - return DumpString - - -m_NAtagMergeRegisterAccQuery=tagMergeRegisterAccQuery() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMergeRegisterAccQuery.Cmd,m_NAtagMergeRegisterAccQuery.SubCmd))] = m_NAtagMergeRegisterAccQuery - - -#------------------------------------------------------ -# C0 15 通知即将登录跳转到跨服服务器 #tagCGGotoMergeServer - -class tagCGGotoMergeServer(Structure): +class tagCGForceQuitCrossState(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), @@ -2791,7 +2995,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC0 - self.SubCmd = 0x15 + self.SubCmd = 0x03 return def ReadData(self, stringData, _pos=0, _len=0): @@ -2801,17 +3005,17 @@ def Clear(self): self.Cmd = 0xC0 - self.SubCmd = 0x15 + self.SubCmd = 0x03 return def GetLength(self): - return sizeof(tagCGGotoMergeServer) + return sizeof(tagCGForceQuitCrossState) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// C0 15 通知即将登录跳转到跨服服务器 //tagCGGotoMergeServer: + DumpString = '''// C0 03 强制退出跨服状态 //tagCGForceQuitCrossState: Cmd:%s, SubCmd:%s '''\ @@ -2822,8 +3026,116 @@ return DumpString -m_NAtagCGGotoMergeServer=tagCGGotoMergeServer() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGotoMergeServer.Cmd,m_NAtagCGGotoMergeServer.SubCmd))] = m_NAtagCGGotoMergeServer +m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState + + +#------------------------------------------------------ +# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard + +class tagCGViewCrossPKBillboard(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ZoneID", c_ubyte), # 赛区ID + ("SeasonID", c_ubyte), # 赛季ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x01 + self.ZoneID = 0 + self.SeasonID = 0 + return + + def GetLength(self): + return sizeof(tagCGViewCrossPKBillboard) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 01 查看跨服竞技场赛季排行榜 //tagCGViewCrossPKBillboard: + Cmd:%s, + SubCmd:%s, + ZoneID:%d, + SeasonID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ZoneID, + self.SeasonID + ) + return DumpString + + +m_NAtagCGViewCrossPKBillboard=tagCGViewCrossPKBillboard() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPKBillboard.Cmd,m_NAtagCGViewCrossPKBillboard.SubCmd))] = m_NAtagCGViewCrossPKBillboard + + +#------------------------------------------------------ +# C0 02 查看跨服玩家信息 #tagCGViewCrossPlayerInfo + +class tagCGViewCrossPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerID", c_int), # 跨服玩家ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + 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 = 0xC0 + self.SubCmd = 0x02 + self.PlayerID = 0 + return + + def GetLength(self): + return sizeof(tagCGViewCrossPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo: + Cmd:%s, + SubCmd:%s, + PlayerID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerID + ) + return DumpString + + +m_NAtagCGViewCrossPlayerInfo=tagCGViewCrossPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossPlayerInfo.Cmd,m_NAtagCGViewCrossPlayerInfo.SubCmd))] = m_NAtagCGViewCrossPlayerInfo #------------------------------------------------------ @@ -4012,6 +4324,151 @@ #------------------------------------------------------ +# A2 28 查询仙盟抢Boss伤血列表 #tagCMQueryFamilyBossHurt + +class tagCMQueryFamilyBossHurt(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ObjID", c_int), + ("NPCID", c_int), + ("QueryType", c_ubyte), # 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + self.SubCmd = 0x28 + 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 = 0x28 + self.ObjID = 0 + self.NPCID = 0 + self.QueryType = 0 + return + + def GetLength(self): + return sizeof(tagCMQueryFamilyBossHurt) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 28 查询仙盟抢Boss伤血列表 //tagCMQueryFamilyBossHurt: + Cmd:%s, + SubCmd:%s, + ObjID:%d, + NPCID:%d, + QueryType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ObjID, + self.NPCID, + self.QueryType + ) + return DumpString + + +m_NAtagCMQueryFamilyBossHurt=tagCMQueryFamilyBossHurt() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryFamilyBossHurt.Cmd,m_NAtagCMQueryFamilyBossHurt.SubCmd))] = m_NAtagCMQueryFamilyBossHurt + + +#------------------------------------------------------ +# A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo + +class tagCMQueryNPCCntInfo(Structure): + Head = tagHead() + MapID = 0 #(DWORD MapID)// 目标地图ID + LineID = 0 #(WORD LineID)// 线路ID + IsNoTimeLimit = 0 #(BYTE IsNoTimeLimit)//是否没有查询时间限制,默认有限制 + NPCIDListLen = 0 #(BYTE NPCIDListLen) + NPCIDList = "" #(String NPCIDList)// 需要查询的NPCID列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA2 + self.Head.SubCmd = 0x27 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.IsNoTimeLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NPCIDListLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NPCIDList,_pos = CommFunc.ReadString(_lpData, _pos,self.NPCIDListLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA2 + self.Head.SubCmd = 0x27 + self.MapID = 0 + self.LineID = 0 + self.IsNoTimeLimit = 0 + self.NPCIDListLen = 0 + self.NPCIDList = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 2 + length += 1 + length += 1 + length += len(self.NPCIDList) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteWORD(data, self.LineID) + data = CommFunc.WriteBYTE(data, self.IsNoTimeLimit) + data = CommFunc.WriteBYTE(data, self.NPCIDListLen) + data = CommFunc.WriteString(data, self.NPCIDListLen, self.NPCIDList) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MapID:%d, + LineID:%d, + IsNoTimeLimit:%d, + NPCIDListLen:%d, + NPCIDList:%s + '''\ + %( + self.Head.OutputString(), + self.MapID, + self.LineID, + self.IsNoTimeLimit, + self.NPCIDListLen, + self.NPCIDList + ) + return DumpString + + +m_NAtagCMQueryNPCCntInfo=tagCMQueryNPCCntInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryNPCCntInfo.Head.Cmd,m_NAtagCMQueryNPCCntInfo.Head.SubCmd))] = m_NAtagCMQueryNPCCntInfo + + +#------------------------------------------------------ # A2 13 查询地图NPC信息 #tagCMQueryNPCInfo class tagCMQueryNPCInfo(Structure): @@ -4369,6 +4826,58 @@ #------------------------------------------------------ +# A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox + +class tagCMSetChatBubbleBox(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BubbleBoxType", c_ubyte), #气泡框类型 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + self.SubCmd = 0x30 + 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 = 0x30 + self.BubbleBoxType = 0 + return + + def GetLength(self): + return sizeof(tagCMSetChatBubbleBox) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 30 设置聊天气泡框 //tagCMSetChatBubbleBox: + Cmd:%s, + SubCmd:%s, + BubbleBoxType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BubbleBoxType + ) + return DumpString + + +m_NAtagCMSetChatBubbleBox=tagCMSetChatBubbleBox() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetChatBubbleBox.Cmd,m_NAtagCMSetChatBubbleBox.SubCmd))] = m_NAtagCMSetChatBubbleBox + + +#------------------------------------------------------ # A2 22 设置引导成功 #tagCMSetGuideOK class tagCMSetGuideOK(Structure): @@ -4422,6 +4931,82 @@ m_NAtagCMSetGuideOK=tagCMSetGuideOK() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetGuideOK.Cmd,m_NAtagCMSetGuideOK.SubCmd))] = m_NAtagCMSetGuideOK + + +#------------------------------------------------------ +# 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 + ("Value6", c_int), # 自定义值6 + ] + + 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 + self.Value6 = 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, + Value6:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.SetNum, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6 + ) + return DumpString + + +m_NAtagCMSetLittleHelper=tagCMSetLittleHelper() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetLittleHelper.Cmd,m_NAtagCMSetLittleHelper.SubCmd))] = m_NAtagCMSetLittleHelper #------------------------------------------------------ @@ -4980,8 +5565,10 @@ class tagCMEquipDecompose(Structure): Head = tagHead() - IndexCount = 0 #(BYTE IndexCount)//材料所在背包索引的数量 - IndexList = list() #(vector<BYTE> IndexList)//材料所在背包索引列表 + Count = 0 #(BYTE Count)//材料所在背包索引的数量 + IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表 + ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表 + IsAuto = 0 #(BYTE IsAuto)//是否自动分解 data = None def __init__(self): @@ -4993,10 +5580,14 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() _pos = self.Head.ReadData(_lpData, _pos) - self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.IndexCount): - value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) self.IndexList.append(value) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ItemIDList.append(value) + self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -5004,36 +5595,47 @@ self.Head.Clear() self.Head.Cmd = 0xA3 self.Head.SubCmd = 0x2C - self.IndexCount = 0 + self.Count = 0 self.IndexList = list() + self.ItemIDList = list() + self.IsAuto = 0 return def GetLength(self): length = 0 length += self.Head.GetLength() length += 1 - length += 1 * self.IndexCount + length += 2 * self.Count + length += 4 * self.Count + length += 1 return length def GetBuffer(self): data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.IndexCount) - for i in range(self.IndexCount): - data = CommFunc.WriteBYTE(data, self.IndexList[i]) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteWORD(data, self.IndexList[i]) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.ItemIDList[i]) + data = CommFunc.WriteBYTE(data, self.IsAuto) return data def OutputString(self): DumpString = ''' Head:%s, - IndexCount:%d, - IndexList:%s + Count:%d, + IndexList:%s, + ItemIDList:%s, + IsAuto:%d '''\ %( self.Head.OutputString(), - self.IndexCount, - "..." + self.Count, + "...", + "...", + self.IsAuto ) return DumpString @@ -5506,6 +6108,58 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ #A3 02 丢弃背包物品 #tagPlayerDropItem class tagPlayerDropItem(Structure): @@ -5660,6 +6314,8 @@ AddonsItemIndexCnt = 0 #(BYTE AddonsItemIndexCnt)// 附加物品在背包中索引个数 AddonsItemIndex = list() #(vector<BYTE> AddonsItemIndex)// 附加物品在背包的索引列表 AddonsItemCount = list() #(vector<BYTE> AddonsItemCount)// 附加物品在背包的索引对应扣除数量列表 + RateIncreaseItemIndexCnt = 0 #(BYTE RateIncreaseItemIndexCnt)// 提升概率物品在背包中索引个数 + RateIncreaseItemIndex = list() #(vector<BYTE> RateIncreaseItemIndex)// 提升概率物品在背包的索引列表 data = None def __init__(self): @@ -5688,6 +6344,10 @@ for i in range(self.AddonsItemIndexCnt): value,_pos=CommFunc.ReadBYTE(_lpData,_pos) self.AddonsItemCount.append(value) + self.RateIncreaseItemIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RateIncreaseItemIndexCnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.RateIncreaseItemIndex.append(value) return _pos def Clear(self): @@ -5704,6 +6364,8 @@ self.AddonsItemIndexCnt = 0 self.AddonsItemIndex = list() self.AddonsItemCount = list() + self.RateIncreaseItemIndexCnt = 0 + self.RateIncreaseItemIndex = list() return def GetLength(self): @@ -5718,6 +6380,8 @@ length += 1 length += 1 * self.AddonsItemIndexCnt length += 1 * self.AddonsItemIndexCnt + length += 1 + length += 1 * self.RateIncreaseItemIndexCnt return length @@ -5737,6 +6401,9 @@ data = CommFunc.WriteBYTE(data, self.AddonsItemIndex[i]) for i in range(self.AddonsItemIndexCnt): data = CommFunc.WriteBYTE(data, self.AddonsItemCount[i]) + data = CommFunc.WriteBYTE(data, self.RateIncreaseItemIndexCnt) + for i in range(self.RateIncreaseItemIndexCnt): + data = CommFunc.WriteBYTE(data, self.RateIncreaseItemIndex[i]) return data def OutputString(self): @@ -5750,7 +6417,9 @@ FixedItemIndex:%s, AddonsItemIndexCnt:%d, AddonsItemIndex:%s, - AddonsItemCount:%s + AddonsItemCount:%s, + RateIncreaseItemIndexCnt:%d, + RateIncreaseItemIndex:%s '''\ %( self.Head.OutputString(), @@ -5762,6 +6431,8 @@ "...", self.AddonsItemIndexCnt, "...", + "...", + self.RateIncreaseItemIndexCnt, "..." ) return DumpString @@ -6709,8 +7380,9 @@ ("MapID", c_int), ("LineID", c_ushort), ("Cnt", c_ubyte), # 扫荡次数 - ("IsFinish", c_ubyte), # 是否立即完成 + ("IsFinish", c_ubyte), # 是否立即完成; 0-否;1-花钱立即完成;2-客户端自行倒计时间到后发送2代表领取扫荡完成奖励 ("DataEx", c_int), #附带信息 + ("IsLittleHelper", c_ubyte), # 是否小助手扫荡 ] def __init__(self): @@ -6732,6 +7404,7 @@ self.Cnt = 0 self.IsFinish = 0 self.DataEx = 0 + self.IsLittleHelper = 0 return def GetLength(self): @@ -6748,7 +7421,8 @@ LineID:%d, Cnt:%d, IsFinish:%d, - DataEx:%d + DataEx:%d, + IsLittleHelper:%d '''\ %( self.Cmd, @@ -6757,7 +7431,8 @@ self.LineID, self.Cnt, self.IsFinish, - self.DataEx + self.DataEx, + self.IsLittleHelper ) return DumpString @@ -7824,56 +8499,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 #------------------------------------------------------ @@ -7884,6 +8577,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 @@ -7901,6 +8595,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 @@ -7912,6 +8609,7 @@ self.EquipIndex = 0 self.IndexCount = 0 self.IndexList = list() + self.IndexUseCountList = list() self.IsDouble = 0 return @@ -7921,6 +8619,7 @@ length += 1 length += 1 length += 1 * self.IndexCount + length += 4 * self.IndexCount length += 1 return length @@ -7932,6 +8631,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 @@ -7941,12 +8642,14 @@ EquipIndex:%d, IndexCount:%d, IndexList:%s, + IndexUseCountList:%s, IsDouble:%d '''\ %( self.Head.OutputString(), self.EquipIndex, self.IndexCount, + "...", "...", self.IsDouble ) @@ -8126,6 +8829,220 @@ #------------------------------------------------------ +# A5 1C 聚魂合成 #tagCMGatherSoulCompound + +class tagCMGatherSoulCompound(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt) + PackList = list() #(vector<BYTE> PackList)//所在位置 0-背包 1-孔 + IndexList = list() #(vector<WORD> IndexList)//物品索引 + TagItemID = 0 #(DWORD TagItemID)//合成目标物品ID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x1C + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.PackList.append(value) + for i in range(self.Cnt): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.IndexList.append(value) + self.TagItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x1C + self.Cnt = 0 + self.PackList = list() + self.IndexList = list() + self.TagItemID = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 * self.Cnt + length += 2 * self.Cnt + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteBYTE(data, self.PackList[i]) + for i in range(self.Cnt): + data = CommFunc.WriteWORD(data, self.IndexList[i]) + data = CommFunc.WriteDWORD(data, self.TagItemID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + PackList:%s, + IndexList:%s, + TagItemID:%d + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "...", + "...", + self.TagItemID + ) + return DumpString + + +m_NAtagCMGatherSoulCompound=tagCMGatherSoulCompound() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGatherSoulCompound.Head.Cmd,m_NAtagCMGatherSoulCompound.Head.SubCmd))] = m_NAtagCMGatherSoulCompound + + +#------------------------------------------------------ +# A5 19 聚魂分解 #tagCMGatherSoulDecompose + +class tagCMGatherSoulDecompose(Structure): + Head = tagHead() + IsAuto = 0 #(BYTE IsAuto)// 是否自动分解 + Count = 0 #(BYTE Count)// 指定批量分解数,最大不超过50个 + PlaceIndexList = list() #(vector<WORD> PlaceIndexList)// 批量分解位置索引列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x19 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.PlaceIndexList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x19 + self.IsAuto = 0 + self.Count = 0 + self.PlaceIndexList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 2 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.IsAuto) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteWORD(data, self.PlaceIndexList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + IsAuto:%d, + Count:%d, + PlaceIndexList:%s + '''\ + %( + self.Head.OutputString(), + self.IsAuto, + self.Count, + "..." + ) + return DumpString + + +m_NAtagCMGatherSoulDecompose=tagCMGatherSoulDecompose() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGatherSoulDecompose.Head.Cmd,m_NAtagCMGatherSoulDecompose.Head.SubCmd))] = m_NAtagCMGatherSoulDecompose + + +#------------------------------------------------------ +# A5 18 聚魂升级 #tagCMGatherSoulUp + +class tagCMGatherSoulUp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlaceType", c_ubyte), # 位置类型;0-背包,1-孔 + ("PlaceIndex", c_ushort), # 位置索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x18 + 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 = 0x18 + self.PlaceType = 0 + self.PlaceIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMGatherSoulUp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 18 聚魂升级 //tagCMGatherSoulUp: + Cmd:%s, + SubCmd:%s, + PlaceType:%d, + PlaceIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlaceType, + self.PlaceIndex + ) + return DumpString + + +m_NAtagCMGatherSoulUp=tagCMGatherSoulUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGatherSoulUp.Cmd,m_NAtagCMGatherSoulUp.SubCmd))] = m_NAtagCMGatherSoulUp + + +#------------------------------------------------------ # A5 41 领取投资理财回报 #tagCMGetInvestReward class tagCMGetInvestReward(Structure): @@ -8286,6 +9203,58 @@ #------------------------------------------------------ +# A5 56 神兵激活 #tagCMGodWeaponActivate + +class tagCMGodWeaponActivate(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("WeaponType", c_int), # 神兵类型 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x56 + 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 = 0x56 + self.WeaponType = 0 + return + + def GetLength(self): + return sizeof(tagCMGodWeaponActivate) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 56 神兵激活 //tagCMGodWeaponActivate: + Cmd:%s, + SubCmd:%s, + WeaponType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.WeaponType + ) + return DumpString + + +m_NAtagCMGodWeaponActivate=tagCMGodWeaponActivate() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGodWeaponActivate.Cmd,m_NAtagCMGodWeaponActivate.SubCmd))] = m_NAtagCMGodWeaponActivate + + +#------------------------------------------------------ # A5 55 神兵升级 #tagCMGodWeaponPlus class tagCMGodWeaponPlus(Structure): @@ -8295,6 +9264,8 @@ ("SubCmd", c_ubyte), ("WeaponType", c_int), # 神兵类型 ("ItemID", c_int), #消耗的物品ID + ("ItemCount", c_ubyte), #消耗个数,默认1 + ("IsAutoBuy", c_ubyte), #是否自动购买,默认0 ] def __init__(self): @@ -8313,6 +9284,8 @@ self.SubCmd = 0x55 self.WeaponType = 0 self.ItemID = 0 + self.ItemCount = 0 + self.IsAutoBuy = 0 return def GetLength(self): @@ -8326,13 +9299,17 @@ Cmd:%s, SubCmd:%s, WeaponType:%d, - ItemID:%d + ItemID:%d, + ItemCount:%d, + IsAutoBuy:%d '''\ %( self.Cmd, self.SubCmd, self.WeaponType, - self.ItemID + self.ItemID, + self.ItemCount, + self.IsAutoBuy ) return DumpString @@ -9005,6 +9982,54 @@ m_NAtagCMPlayerRefine=tagCMPlayerRefine() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPlayerRefine.Cmd,m_NAtagCMPlayerRefine.SubCmd))] = m_NAtagCMPlayerRefine + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -9813,6 +10838,54 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ # A5 11 试用首充武器 #tagCMTryFirstGoldItem class tagCMTryFirstGoldItem(Structure): @@ -9913,6 +10986,58 @@ #------------------------------------------------------ +# A5 13 解锁符印孔 #tagCMUnlockRuneHole + +class tagCMUnlockRuneHole(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("HoleIndex", c_ubyte), # 孔索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + 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 = 0xA5 + self.SubCmd = 0x13 + self.HoleIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMUnlockRuneHole) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 13 解锁符印孔 //tagCMUnlockRuneHole: + Cmd:%s, + SubCmd:%s, + HoleIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.HoleIndex + ) + return DumpString + + +m_NAtagCMUnlockRuneHole=tagCMUnlockRuneHole() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnlockRuneHole.Cmd,m_NAtagCMUnlockRuneHole.SubCmd))] = m_NAtagCMUnlockRuneHole + + +#------------------------------------------------------ #A5 10 使用新手卡 #tagUseNewGuyCard class tagUseNewGuyCard(Structure): @@ -9974,6 +11099,62 @@ m_NAtagUseNewGuyCard=tagUseNewGuyCard() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard + + +#------------------------------------------------------ +# A5 1D 法宝佩戴 #tagCMWearMagicWeapon + +class tagCMWearMagicWeapon(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MWID", c_int), #法宝ID + ("State", c_ubyte), #0-卸下 1-佩戴 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x1D + 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 = 0x1D + self.MWID = 0 + self.State = 0 + return + + def GetLength(self): + return sizeof(tagCMWearMagicWeapon) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 1D 法宝佩戴 //tagCMWearMagicWeapon: + Cmd:%s, + SubCmd:%s, + MWID:%d, + State:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MWID, + self.State + ) + return DumpString + + +m_NAtagCMWearMagicWeapon=tagCMWearMagicWeapon() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWearMagicWeapon.Cmd,m_NAtagCMWearMagicWeapon.SubCmd))] = m_NAtagCMWearMagicWeapon #------------------------------------------------------ @@ -10763,6 +11944,178 @@ m_NAtagCMVIPKillNPCLVInfoSwitch=tagCMVIPKillNPCLVInfoSwitch() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVIPKillNPCLVInfoSwitch.Cmd,m_NAtagCMVIPKillNPCLVInfoSwitch.SubCmd))] = m_NAtagCMVIPKillNPCLVInfoSwitch + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -12304,6 +13657,162 @@ #------------------------------------------------------ +# B1 06 助战召唤 #tagCMHelpBattleCall + +class tagCMHelpBattleCall(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsOneKeyCall", c_ubyte), # 是否一键召唤 + ("PlayerID", c_int), # 召唤的玩家ID,大于1小于100代表机器人 + ("IsGoldCall", c_ubyte), # 是否仙玉召唤 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x06 + self.IsOneKeyCall = 0 + self.PlayerID = 0 + self.IsGoldCall = 0 + return + + def GetLength(self): + return sizeof(tagCMHelpBattleCall) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 06 助战召唤 //tagCMHelpBattleCall: + Cmd:%s, + SubCmd:%s, + IsOneKeyCall:%d, + PlayerID:%d, + IsGoldCall:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsOneKeyCall, + self.PlayerID, + self.IsGoldCall + ) + return DumpString + + +m_NAtagCMHelpBattleCall=tagCMHelpBattleCall() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleCall.Cmd,m_NAtagCMHelpBattleCall.SubCmd))] = m_NAtagCMHelpBattleCall + + +#------------------------------------------------------ +# B1 05 助战登记 #tagCMHelpBattleCheckIn + +class tagCMHelpBattleCheckIn(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x05 + return + + def GetLength(self): + return sizeof(tagCMHelpBattleCheckIn) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 05 助战登记 //tagCMHelpBattleCheckIn: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMHelpBattleCheckIn=tagCMHelpBattleCheckIn() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleCheckIn.Cmd,m_NAtagCMHelpBattleCheckIn.SubCmd))] = m_NAtagCMHelpBattleCheckIn + + +#------------------------------------------------------ +# B1 07 助战刷新 #tagCMHelpBattleRefresh + +class tagCMHelpBattleRefresh(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x07 + return + + def GetLength(self): + return sizeof(tagCMHelpBattleRefresh) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 07 助战刷新 //tagCMHelpBattleRefresh: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMHelpBattleRefresh=tagCMHelpBattleRefresh() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHelpBattleRefresh.Cmd,m_NAtagCMHelpBattleRefresh.SubCmd))] = m_NAtagCMHelpBattleRefresh + + +#------------------------------------------------------ # B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize class tagCMGetMultiFBPrize(Structure): @@ -13688,61 +15197,9 @@ #------------------------------------------------------ -#C1 03 领取奖励表奖励 #tagMSGetReward +# C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy -class tagMSGetReward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("RewardType", c_ubyte), #奖励表奖励类型 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xC1 - 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 = 0xC1 - self.SubCmd = 0x03 - self.RewardType = 0 - return - - def GetLength(self): - return sizeof(tagMSGetReward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward: - Cmd:%s, - SubCmd:%s, - RewardType:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.RewardType - ) - return DumpString - - -m_NAtagMSGetReward=tagMSGetReward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward - - -#------------------------------------------------------ -#C1 08 玩家执行膜拜 #tagPlayerMergeWorship - -class tagPlayerMergeWorship(Structure): +class tagCMCrossRealmPKBuy(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), @@ -13752,7 +15209,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x08 + self.SubCmd = 0x02 return def ReadData(self, stringData, _pos=0, _len=0): @@ -13762,17 +15219,17 @@ def Clear(self): self.Cmd = 0xC1 - self.SubCmd = 0x08 + self.SubCmd = 0x02 return def GetLength(self): - return sizeof(tagPlayerMergeWorship) + return sizeof(tagCMCrossRealmPKBuy) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''//C1 08 玩家执行膜拜 //tagPlayerMergeWorship: + DumpString = '''// C1 02 跨服PK购买次数 //tagCMCrossRealmPKBuy: Cmd:%s, SubCmd:%s '''\ @@ -13783,106 +15240,70 @@ return DumpString -m_NAtagPlayerMergeWorship=tagPlayerMergeWorship() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerMergeWorship.Cmd,m_NAtagPlayerMergeWorship.SubCmd))] = m_NAtagPlayerMergeWorship +m_NAtagCMCrossRealmPKBuy=tagCMCrossRealmPKBuy() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKBuy.Cmd,m_NAtagCMCrossRealmPKBuy.SubCmd))] = m_NAtagCMCrossRealmPKBuy #------------------------------------------------------ -# C1 11 跨服王者争霸押注 #tagCMMergeKingSupport +# C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward -class tagCMMergeKingSupport(Structure): - Head = tagHead() - SupportType = 0 #(BYTE SupportType)// 0-押注; 1-贿赂 - GroupType = 0 #(BYTE GroupType)// 组类型;如32强、16强等 - BattleIndex = 0 #(BYTE BattleIndex)// 对战组索引,每种组类型的索引从1开始 - MoneyType = 0 #(BYTE MoneyType)// 押注的货币类型 - AccIDLen = 0 #(BYTE AccIDLen) - TagAccID = "" #(String TagAccID)// 支持的目标账号 - data = None +class tagCMCrossRealmPKGetAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("AwardType", c_ubyte), # 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励 + ("AwardData", c_ubyte), # 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位 + ] def __init__(self): self.Clear() - self.Head.Cmd = 0xC1 - self.Head.SubCmd = 0x11 + self.Cmd = 0xC1 + self.SubCmd = 0x03 return - def ReadData(self, _lpData, _pos=0, _Len=0): + def ReadData(self, stringData, _pos=0, _len=0): self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.SupportType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.GroupType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.BattleIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.AccIDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.TagAccID,_pos = CommFunc.ReadString(_lpData, _pos,self.AccIDLen) - return _pos + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xC1 - self.Head.SubCmd = 0x11 - self.SupportType = 0 - self.GroupType = 0 - self.BattleIndex = 0 - self.MoneyType = 0 - self.AccIDLen = 0 - self.TagAccID = "" + self.Cmd = 0xC1 + self.SubCmd = 0x03 + self.AwardType = 0 + self.AwardData = 0 return def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - length += 1 - length += 1 - length += 1 - length += len(self.TagAccID) - - return length + return sizeof(tagCMCrossRealmPKGetAward) def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.SupportType) - data = CommFunc.WriteBYTE(data, self.GroupType) - data = CommFunc.WriteBYTE(data, self.BattleIndex) - data = CommFunc.WriteBYTE(data, self.MoneyType) - data = CommFunc.WriteBYTE(data, self.AccIDLen) - data = CommFunc.WriteString(data, self.AccIDLen, self.TagAccID) - return data + return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = ''' - Head:%s, - SupportType:%d, - GroupType:%d, - BattleIndex:%d, - MoneyType:%d, - AccIDLen:%d, - TagAccID:%s + DumpString = '''// C1 03 跨服PK领取奖励 //tagCMCrossRealmPKGetAward: + Cmd:%s, + SubCmd:%s, + AwardType:%d, + AwardData:%d '''\ %( - self.Head.OutputString(), - self.SupportType, - self.GroupType, - self.BattleIndex, - self.MoneyType, - self.AccIDLen, - self.TagAccID + self.Cmd, + self.SubCmd, + self.AwardType, + self.AwardData ) return DumpString -m_NAtagCMMergeKingSupport=tagCMMergeKingSupport() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMergeKingSupport.Head.Cmd,m_NAtagCMMergeKingSupport.Head.SubCmd))] = m_NAtagCMMergeKingSupport +m_NAtagCMCrossRealmPKGetAward=tagCMCrossRealmPKGetAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKGetAward.Cmd,m_NAtagCMCrossRealmPKGetAward.SubCmd))] = m_NAtagCMCrossRealmPKGetAward #------------------------------------------------------ -# C1 09 跨服PK匹配 #tagCMMergePKMatch +# C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch -class tagCMMergePKMatch(Structure): +class tagCMCrossRealmPKMatch(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), @@ -13893,7 +15314,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x09 + self.SubCmd = 0x01 return def ReadData(self, stringData, _pos=0, _len=0): @@ -13903,18 +15324,18 @@ def Clear(self): self.Cmd = 0xC1 - self.SubCmd = 0x09 + self.SubCmd = 0x01 self.Type = 0 return def GetLength(self): - return sizeof(tagCMMergePKMatch) + return sizeof(tagCMCrossRealmPKMatch) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// C1 09 跨服PK匹配 //tagCMMergePKMatch: + DumpString = '''// C1 01 跨服PK匹配 //tagCMCrossRealmPKMatch: Cmd:%s, SubCmd:%s, Type:%d @@ -13927,14 +15348,14 @@ return DumpString -m_NAtagCMMergePKMatch=tagCMMergePKMatch() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMergePKMatch.Cmd,m_NAtagCMMergePKMatch.SubCmd))] = m_NAtagCMMergePKMatch +m_NAtagCMCrossRealmPKMatch=tagCMCrossRealmPKMatch() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKMatch.Cmd,m_NAtagCMCrossRealmPKMatch.SubCmd))] = m_NAtagCMCrossRealmPKMatch #------------------------------------------------------ -# C1 10 跨服PK恢复连胜次数 #tagCMRecoverMergePKWin +# C1 04 主动退出跨服 #tagCMExitCrossRealm -class tagCMRecoverMergePKWin(Structure): +class tagCMExitCrossRealm(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), @@ -13944,7 +15365,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x10 + self.SubCmd = 0x04 return def ReadData(self, stringData, _pos=0, _len=0): @@ -13954,17 +15375,17 @@ def Clear(self): self.Cmd = 0xC1 - self.SubCmd = 0x10 + self.SubCmd = 0x04 return def GetLength(self): - return sizeof(tagCMRecoverMergePKWin) + return sizeof(tagCMExitCrossRealm) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// C1 10 跨服PK恢复连胜次数 //tagCMRecoverMergePKWin: + DumpString = '''// C1 04 主动退出跨服 //tagCMExitCrossRealm: Cmd:%s, SubCmd:%s '''\ @@ -13975,5 +15396,5 @@ return DumpString -m_NAtagCMRecoverMergePKWin=tagCMRecoverMergePKWin() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecoverMergePKWin.Cmd,m_NAtagCMRecoverMergePKWin.SubCmd))] = m_NAtagCMRecoverMergePKWin \ No newline at end of file +m_NAtagCMExitCrossRealm=tagCMExitCrossRealm() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm \ No newline at end of file -- Gitblit v1.8.0