From b0e88ac9edef42aa6fcc529bb31905ab76ff86a2 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 16 四月 2019 16:30:20 +0800 Subject: [PATCH] 6516 【后端】【2.0】战斗公式增加系数 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 4160 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 2,571 insertions(+), 1,589 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index dd5ec4c..e437179 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -1234,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): @@ -1715,58 +1782,6 @@ m_NAtagCGXMZZInfoQuery=tagCGXMZZInfoQuery() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGXMZZInfoQuery.Cmd,m_NAtagCGXMZZInfoQuery.SubCmd))] = m_NAtagCGXMZZInfoQuery - - -#------------------------------------------------------ -# AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo - -class tagCGQueryTeHuiActivetyInfo(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActivityType", c_ubyte), # 活动类型 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAD - 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 = 0xAD - self.SubCmd = 0x01 - self.ActivityType = 0 - return - - def GetLength(self): - return sizeof(tagCGQueryTeHuiActivetyInfo) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo: - Cmd:%s, - SubCmd:%s, - ActivityType:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActivityType - ) - return DumpString - - -m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo #------------------------------------------------------ @@ -2289,6 +2304,62 @@ #------------------------------------------------------ +# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange + +class tagCGAttentionAuctionItemChange(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), + ("IsAttention", c_ubyte), #是否关注,取消关注发0 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + 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 = 0xB5 + self.SubCmd = 0x18 + self.ItemID = 0 + self.IsAttention = 0 + return + + def GetLength(self): + return sizeof(tagCGAttentionAuctionItemChange) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange: + Cmd:%s, + SubCmd:%s, + ItemID:%d, + IsAttention:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID, + self.IsAttention + ) + return DumpString + + +m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange + + +#------------------------------------------------------ # B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale class tagCGPYQueryBourseItemOnSale(Structure): @@ -2357,6 +2428,289 @@ m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale + + +#------------------------------------------------------ +# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem + +class tagCGQueryAttentionAuctionItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + 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 = 0xB5 + self.SubCmd = 0x16 + return + + def GetLength(self): + return sizeof(tagCGQueryAttentionAuctionItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem + + +#------------------------------------------------------ +# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem + +class tagCGQueryAuctionItem(Structure): + Head = tagHead() + Job = 0 #(BYTE Job)//过滤职业,0为不限制 + ItemTypeCount = 0 #(BYTE ItemTypeCount) + ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型 + ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制 + SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数 + SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID + FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询 + QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查 + QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ItemTypeCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ItemTypeList.append(value) + self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SpecItemIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.SpecItemIDList.append(value) + self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x10 + self.Job = 0 + self.ItemTypeCount = 0 + self.ItemTypeList = list() + self.ClassLV = 0 + self.SpecItemIDCount = 0 + self.SpecItemIDList = list() + self.FromItemGUID = "" + self.QueryDir = 0 + self.QueryCount = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 4 * self.ItemTypeCount + length += 1 + length += 1 + length += 4 * self.SpecItemIDCount + length += 40 + 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.Job) + data = CommFunc.WriteBYTE(data, self.ItemTypeCount) + for i in range(self.ItemTypeCount): + data = CommFunc.WriteDWORD(data, self.ItemTypeList[i]) + data = CommFunc.WriteBYTE(data, self.ClassLV) + data = CommFunc.WriteBYTE(data, self.SpecItemIDCount) + for i in range(self.SpecItemIDCount): + data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i]) + data = CommFunc.WriteString(data, 40, self.FromItemGUID) + data = CommFunc.WriteBYTE(data, self.QueryDir) + data = CommFunc.WriteBYTE(data, self.QueryCount) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Job:%d, + ItemTypeCount:%d, + ItemTypeList:%s, + ClassLV:%d, + SpecItemIDCount:%d, + SpecItemIDList:%s, + FromItemGUID:%s, + QueryDir:%d, + QueryCount:%d + '''\ + %( + self.Head.OutputString(), + self.Job, + self.ItemTypeCount, + "...", + self.ClassLV, + self.SpecItemIDCount, + "...", + self.FromItemGUID, + self.QueryDir, + self.QueryCount + ) + return DumpString + + +m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem + + +#------------------------------------------------------ +# B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord + +class tagCGQueryAuctionRecord(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + 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 = 0xB5 + self.SubCmd = 0x12 + self.RecordType = 0 + return + + def GetLength(self): + return sizeof(tagCGQueryAuctionRecord) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord: + Cmd:%s, + SubCmd:%s, + RecordType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.RecordType + ) + return DumpString + + +m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord + + +#------------------------------------------------------ +# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem + +class tagCGQueryTagAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + ItemID = 0 #(DWORD ItemID) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x17 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x17 + self.ItemGUID = "" + self.ItemID = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + ItemID:%d + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.ItemID + ) + return DumpString + + +m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem #------------------------------------------------------ @@ -2916,113 +3270,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), @@ -3032,7 +3282,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC0 - self.SubCmd = 0x15 + self.SubCmd = 0x03 return def ReadData(self, stringData, _pos=0, _len=0): @@ -3042,17 +3292,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 '''\ @@ -3063,8 +3313,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 #------------------------------------------------------ @@ -3185,6 +3543,54 @@ m_NAtagCMPCInfo=tagCMPCInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo + + +#------------------------------------------------------ +# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole + +class tagCMRefreshMainServerRole(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA1 + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA1 + self.SubCmd = 0x08 + return + + def GetLength(self): + return sizeof(tagCMRefreshMainServerRole) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole #------------------------------------------------------ @@ -3541,66 +3947,6 @@ #------------------------------------------------------ -# A2 08 购买自定义商店物品 #tagCMBuyShopItem - -class tagCMBuyShopItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ShopID", c_int), - ("ItemShopIndex", c_ushort), - ("BuyCount", c_ushort), #购买数量 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA2 - self.SubCmd = 0x08 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA2 - self.SubCmd = 0x08 - self.ShopID = 0 - self.ItemShopIndex = 0 - self.BuyCount = 0 - return - - def GetLength(self): - return sizeof(tagCMBuyShopItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem: - Cmd:%s, - SubCmd:%s, - ShopID:%d, - ItemShopIndex:%d, - BuyCount:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ShopID, - self.ItemShopIndex, - self.BuyCount - ) - return DumpString - - -m_NAtagCMBuyShopItem=tagCMBuyShopItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem - - -#------------------------------------------------------ # A2 10 清除副本CD#tagCMClearFBCD class tagCMClearFBCD(Structure): @@ -3650,6 +3996,110 @@ m_NAtagCMClearFBCD=tagCMClearFBCD() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClearFBCD.Cmd,m_NAtagCMClearFBCD.SubCmd))] = m_NAtagCMClearFBCD + + +#------------------------------------------------------ +# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene + +class tagCMClientExitCustomScene(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + self.SubCmd = 0x33 + 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 = 0x33 + return + + def GetLength(self): + return sizeof(tagCMClientExitCustomScene) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene + + +#------------------------------------------------------ +# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene + +class tagCMClientStartCustomScene(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + self.SubCmd = 0x31 + 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 = 0x31 + self.MapID = 0 + self.FuncLineID = 0 + return + + def GetLength(self): + return sizeof(tagCMClientStartCustomScene) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID + ) + return DumpString + + +m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene #------------------------------------------------------ @@ -4535,58 +4985,6 @@ #------------------------------------------------------ -# A2 07 请求自定义商店物品信息 #tagCMQueryShopItem - -class tagCMQueryShopItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ShopID", c_int), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA2 - 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 = 0xA2 - self.SubCmd = 0x07 - self.ShopID = 0 - return - - def GetLength(self): - return sizeof(tagCMQueryShopItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem: - Cmd:%s, - SubCmd:%s, - ShopID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ShopID - ) - return DumpString - - -m_NAtagCMQueryShopItem=tagCMQueryShopItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem - - -#------------------------------------------------------ # A2 06 快速完成任务#tagCMQuickFinishMission class tagCMQuickFinishMission(Structure): @@ -4643,20 +5041,19 @@ #------------------------------------------------------ -# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem +# A2 32 神秘商店刷新 #tagCMRefreshMysticalShop -class tagCMRefreshShopItem(Structure): +class tagCMRefreshMysticalShop(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("ShopID", c_int), ] def __init__(self): self.Clear() self.Cmd = 0xA2 - self.SubCmd = 0x14 + self.SubCmd = 0x32 return def ReadData(self, stringData, _pos=0, _len=0): @@ -4666,32 +5063,29 @@ def Clear(self): self.Cmd = 0xA2 - self.SubCmd = 0x14 - self.ShopID = 0 + self.SubCmd = 0x32 return def GetLength(self): - return sizeof(tagCMRefreshShopItem) + return sizeof(tagCMRefreshMysticalShop) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem: + DumpString = '''// A2 32 神秘商店刷新 //tagCMRefreshMysticalShop: Cmd:%s, - SubCmd:%s, - ShopID:%d + SubCmd:%s '''\ %( self.Cmd, - self.SubCmd, - self.ShopID + self.SubCmd ) return DumpString -m_NAtagCMRefreshShopItem=tagCMRefreshShopItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem +m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop #------------------------------------------------------ @@ -4752,6 +5146,58 @@ m_NAtagCMSelectObj=tagCMSelectObj() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectObj.Cmd,m_NAtagCMSelectObj.SubCmd))] = m_NAtagCMSelectObj + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -4824,6 +5270,7 @@ ("Value3", c_int), # 自定义值3 ("Value4", c_int), # 自定义值4 ("Value5", c_int), # 自定义值5 + ("Value6", c_int), # 自定义值6 ] def __init__(self): @@ -4846,6 +5293,7 @@ self.Value3 = 0 self.Value4 = 0 self.Value5 = 0 + self.Value6 = 0 return def GetLength(self): @@ -4863,7 +5311,8 @@ Value2:%d, Value3:%d, Value4:%d, - Value5:%d + Value5:%d, + Value6:%d '''\ %( self.Cmd, @@ -4873,7 +5322,8 @@ self.Value2, self.Value3, self.Value4, - self.Value5 + self.Value5, + self.Value6 ) return DumpString @@ -5131,6 +5581,58 @@ m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo + + +#------------------------------------------------------ +# A3 17 增加果实使用上限 #tagCMAddFruitUseLimit + +class tagCMAddFruitUseLimit(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), #果实物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x17 + self.ItemID = 0 + return + + def GetLength(self): + return sizeof(tagCMAddFruitUseLimit) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit: + Cmd:%s, + SubCmd:%s, + ItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID + ) + return DumpString + + +m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit #------------------------------------------------------ @@ -5438,8 +5940,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): @@ -5451,10 +5955,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): @@ -5462,36 +5970,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 @@ -5614,6 +6133,58 @@ m_NAtagEquipPlus=tagEquipPlus() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagEquipPlus.Cmd,m_NAtagEquipPlus.SubCmd))] = m_NAtagEquipPlus + + +#------------------------------------------------------ +# A3 16 装备强化进化 #tagCMEquipPlusEvolve + +class tagCMEquipPlusEvolve(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemIndex", c_ushort), #装备在背包中索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x16 + self.ItemIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMEquipPlusEvolve) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve: + Cmd:%s, + SubCmd:%s, + ItemIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemIndex + ) + return DumpString + + +m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve #------------------------------------------------------ @@ -5897,6 +6468,62 @@ #------------------------------------------------------ +# A3 30 装备诛仙装备 #tagCMEquipZhuXianItem + +class tagCMEquipZhuXianItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引 + ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x30 + self.EquipIndex = 0 + self.ItemIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMEquipZhuXianItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem: + Cmd:%s, + SubCmd:%s, + EquipIndex:%d, + ItemIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.EquipIndex, + self.ItemIndex + ) + return DumpString + + +m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem + + +#------------------------------------------------------ # A3 12 守护拾取物品 #tagCMGuardPickupItem class tagCMGuardPickupItem(Structure): @@ -6013,6 +6640,62 @@ m_NAtagCMItemDecompound=tagCMItemDecompound() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound + + +#------------------------------------------------------ +# A3 08 物品过期 #tagCMItemTimeout + +class tagCMItemTimeout(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PackType", c_ubyte), #背包类型 + ("ItemIndex", c_ubyte), #物品在背包中索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA3 + self.SubCmd = 0x08 + self.PackType = 0 + self.ItemIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMItemTimeout) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 08 物品过期 //tagCMItemTimeout: + Cmd:%s, + SubCmd:%s, + PackType:%d, + ItemIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PackType, + self.ItemIndex + ) + return DumpString + + +m_NAtagCMItemTimeout=tagCMItemTimeout() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout #------------------------------------------------------ @@ -6170,6 +6853,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): @@ -6198,6 +6883,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): @@ -6214,6 +6903,8 @@ self.AddonsItemIndexCnt = 0 self.AddonsItemIndex = list() self.AddonsItemCount = list() + self.RateIncreaseItemIndexCnt = 0 + self.RateIncreaseItemIndex = list() return def GetLength(self): @@ -6228,6 +6919,8 @@ length += 1 length += 1 * self.AddonsItemIndexCnt length += 1 * self.AddonsItemIndexCnt + length += 1 + length += 1 * self.RateIncreaseItemIndexCnt return length @@ -6247,6 +6940,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): @@ -6260,7 +6956,9 @@ FixedItemIndex:%s, AddonsItemIndexCnt:%d, AddonsItemIndex:%s, - AddonsItemCount:%s + AddonsItemCount:%s, + RateIncreaseItemIndexCnt:%d, + RateIncreaseItemIndex:%s '''\ %( self.Head.OutputString(), @@ -6272,6 +6970,8 @@ "...", self.AddonsItemIndexCnt, "...", + "...", + self.RateIncreaseItemIndexCnt, "..." ) return DumpString @@ -6279,118 +6979,6 @@ m_NAtagCMItemCompound=tagCMItemCompound() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemCompound.Head.Cmd,m_NAtagCMItemCompound.Head.SubCmd))] = m_NAtagCMItemCompound - - -#------------------------------------------------------ -#A3 17 套装合成#tagCMSuitCompose - -class tagCMSuitCompose(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("SuiteType", c_ubyte), # 套装类型 1普通 2强化 - ("EquipPlace", c_ubyte), # 装备位置 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - 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 = 0xA3 - self.SubCmd = 0x17 - self.SuiteType = 0 - self.EquipPlace = 0 - return - - def GetLength(self): - return sizeof(tagCMSuitCompose) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A3 17 套装合成//tagCMSuitCompose: - Cmd:%s, - SubCmd:%s, - SuiteType:%d, - EquipPlace:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.SuiteType, - self.EquipPlace - ) - return DumpString - - -m_NAtagCMSuitCompose=tagCMSuitCompose() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose - - -#------------------------------------------------------ -# A3 08 套装拆解 #tagCMSuiteDecompose - -class tagCMSuiteDecompose(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("EquipPlace", c_ubyte), #部位索引 - ("SuiteType", c_ubyte), #套装类型 0代表全部类型 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x08 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x08 - self.EquipPlace = 0 - self.SuiteType = 0 - return - - def GetLength(self): - return sizeof(tagCMSuiteDecompose) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose: - Cmd:%s, - SubCmd:%s, - EquipPlace:%d, - SuiteType:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.EquipPlace, - self.SuiteType - ) - return DumpString - - -m_NAtagCMSuiteDecompose=tagCMSuiteDecompose() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose #------------------------------------------------------ @@ -6524,70 +7112,6 @@ #------------------------------------------------------ -#A3 21 使用特殊运营物品 #tagCMUseSpecialItem - -class tagCMUseSpecialItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("SpeicalItemType", c_ubyte), #特殊运营物品类型,0打折卡,1多选礼包 - ("ItemID", c_int), #物品ID - ("ItemIndex", c_ubyte), #物品在背包中的索引位置 - ("Select", c_ubyte), #选择,只对多选礼包有用 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - 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 = 0xA3 - self.SubCmd = 0x21 - self.SpeicalItemType = 0 - self.ItemID = 0 - self.ItemIndex = 0 - self.Select = 0 - return - - def GetLength(self): - return sizeof(tagCMUseSpecialItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem: - Cmd:%s, - SubCmd:%s, - SpeicalItemType:%d, - ItemID:%d, - ItemIndex:%d, - Select:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.SpeicalItemType, - self.ItemID, - self.ItemIndex, - self.Select - ) - return DumpString - - -m_NAtagCMUseSpecialItem=tagCMUseSpecialItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem - - -#------------------------------------------------------ # A3 2F 宗门试炼兑换 #tagCMTrialExchange class tagCMTrialExchange(Structure): @@ -6637,6 +7161,58 @@ m_NAtagCMTrialExchange=tagCMTrialExchange() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange + + +#------------------------------------------------------ +# A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem + +class tagCMUnEquipZhuXianItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0x31 + 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 = 0x31 + self.EquipIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMUnEquipZhuXianItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem: + Cmd:%s, + SubCmd:%s, + EquipIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.EquipIndex + ) + return DumpString + + +m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem #------------------------------------------------------ @@ -6819,6 +7395,90 @@ #------------------------------------------------------ +# A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose + +class tagCMZhuXianEquipDecompose(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)//材料所在背包索引的数量 + IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表 + ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表 + IsAuto = 0 #(BYTE IsAuto)//是否自动分解 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x32 + 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.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): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x32 + 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 += 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.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, + Count:%d, + IndexList:%s, + ItemIDList:%s, + IsAuto:%d + '''\ + %( + self.Head.OutputString(), + self.Count, + "...", + "...", + self.IsAuto + ) + return DumpString + + +m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose + + +#------------------------------------------------------ # A5 30 购买魔魂铜钱经验什么的 #tagCMBuySomething class tagCMBuySomething(Structure): @@ -6868,66 +7528,6 @@ m_NAtagCMBuySomething=tagCMBuySomething() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething - - -#------------------------------------------------------ -# A5 32 购买商城物品 #tagCMBuyStoreItem - -class tagCMBuyStoreItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Type", c_ubyte), #1钻石,2绑定钻石,3银子,4银票 - ("ItemID", c_int), #物品ID - ("BuyCount", c_ushort), #购买数量 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x32 - 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 = 0x32 - self.Type = 0 - self.ItemID = 0 - self.BuyCount = 0 - return - - def GetLength(self): - return sizeof(tagCMBuyStoreItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem: - Cmd:%s, - SubCmd:%s, - Type:%d, - ItemID:%d, - BuyCount:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Type, - self.ItemID, - self.BuyCount - ) - return DumpString - - -m_NAtagCMBuyStoreItem=tagCMBuyStoreItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem #------------------------------------------------------ @@ -7036,58 +7636,6 @@ m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr - - -#------------------------------------------------------ -# A5 12 激活法宝之魂 #tagCMActiveMWSoul - -class tagCMActiveMWSoul(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ID", c_ubyte), #编号 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - 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 = 0xA5 - self.SubCmd = 0x12 - self.ID = 0 - return - - def GetLength(self): - return sizeof(tagCMActiveMWSoul) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul: - Cmd:%s, - SubCmd:%s, - ID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ID - ) - return DumpString - - -m_NAtagCMActiveMWSoul=tagCMActiveMWSoul() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul #------------------------------------------------------ @@ -7558,6 +8106,62 @@ #------------------------------------------------------ +# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt + +class tagCMBuyDailyActionCnt(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActionID", c_int), # ID + ("AddType", c_ubyte), # 0-花仙玉 1-用物品 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + 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 = 0xA5 + self.SubCmd = 0x25 + self.ActionID = 0 + self.AddType = 0 + return + + def GetLength(self): + return sizeof(tagCMBuyDailyActionCnt) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt: + Cmd:%s, + SubCmd:%s, + ActionID:%d, + AddType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActionID, + self.AddType + ) + return DumpString + + +m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt + + +#------------------------------------------------------ #A5 75 购买副本进入次数#tagCMBuyEnterCount class tagCMBuyEnterCount(Structure): @@ -7707,106 +8311,6 @@ m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt - - -#------------------------------------------------------ -#A5 36 天梯清除挑战CD#tagCMHighLadderClearCD - -class tagCMHighLadderClearCD(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x36 - 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 = 0x36 - return - - def GetLength(self): - return sizeof(tagCMHighLadderClearCD) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A5 36 天梯清除挑战CD//tagCMHighLadderClearCD: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMHighLadderClearCD=tagCMHighLadderClearCD() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderClearCD.Cmd,m_NAtagCMHighLadderClearCD.SubCmd))] = m_NAtagCMHighLadderClearCD - - -#------------------------------------------------------ -#A5 35 查询天梯竞技场奖励#tagCMQueryHighLadderReward - -class tagCMQueryHighLadderReward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Type", c_ubyte), #0,查询 1,领取 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - 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 = 0xA5 - self.SubCmd = 0x35 - self.Type = 0 - return - - def GetLength(self): - return sizeof(tagCMQueryHighLadderReward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A5 35 查询天梯竞技场奖励//tagCMQueryHighLadderReward: - Cmd:%s, - SubCmd:%s, - Type:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Type - ) - return DumpString - - -m_NAtagCMQueryHighLadderReward=tagCMQueryHighLadderReward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderReward.Cmd,m_NAtagCMQueryHighLadderReward.SubCmd))] = m_NAtagCMQueryHighLadderReward #------------------------------------------------------ @@ -8015,6 +8519,83 @@ #------------------------------------------------------ +# A5 20 时装分解 #tagCMCoatDecompose + +class tagCMCoatDecompose(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)//材料所在背包索引的数量 + IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表 + ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x20 + 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.ReadWORD(_lpData,_pos) + self.IndexList.append(value) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ItemIDList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x20 + self.Count = 0 + self.IndexList = list() + self.ItemIDList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 * self.Count + 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.WriteWORD(data, self.IndexList[i]) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.ItemIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + IndexList:%s, + ItemIDList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "...", + "..." + ) + return DumpString + + +m_NAtagCMCoatDecompose=tagCMCoatDecompose() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCoatDecompose.Head.Cmd,m_NAtagCMCoatDecompose.Head.SubCmd))] = m_NAtagCMCoatDecompose + + +#------------------------------------------------------ # A5 0B 玩家时装升级 #tagCMCoatUp class tagCMCoatUp(Structure): @@ -8022,7 +8603,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("CoatIndex", c_ubyte), # 时装索引 + ("CoatIndex", c_int), # 时装索引 ] def __init__(self): @@ -8556,6 +9137,90 @@ #------------------------------------------------------ +# A5 C5 装备部位升星 #tagCMEquipPartStarUp + +class tagCMEquipPartStarUp(Structure): + Head = tagHead() + EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引 + CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数 + CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引 + CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0xC5 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CostEquipCnt): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.CostEquipIndex.append(value) + for i in range(self.CostEquipCnt): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.CostEquipID.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0xC5 + self.EquipPackIndex = 0 + self.CostEquipCnt = 0 + self.CostEquipIndex = list() + self.CostEquipID = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 1 + length += 2 * self.CostEquipCnt + length += 4 * self.CostEquipCnt + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.EquipPackIndex) + data = CommFunc.WriteBYTE(data, self.CostEquipCnt) + for i in range(self.CostEquipCnt): + data = CommFunc.WriteWORD(data, self.CostEquipIndex[i]) + for i in range(self.CostEquipCnt): + data = CommFunc.WriteDWORD(data, self.CostEquipID[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + EquipPackIndex:%d, + CostEquipCnt:%d, + CostEquipIndex:%s, + CostEquipID:%s + '''\ + %( + self.Head.OutputString(), + self.EquipPackIndex, + self.CostEquipCnt, + "...", + "..." + ) + return DumpString + + +m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp + + +#------------------------------------------------------ # A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP class tagCMExchangeMasterEXP(Structure): @@ -8612,21 +9277,179 @@ #------------------------------------------------------ -# A5 46 兑换灵力 #tagCMExchangeReiki +# A5 1C 聚魂合成 #tagCMGatherSoulCompound -class tagCMExchangeReiki(Structure): +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), - ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买 - ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引) + ("PlaceType", c_ubyte), # 位置类型;0-背包,1-孔 + ("PlaceIndex", c_ushort), # 位置索引 ] def __init__(self): self.Clear() self.Cmd = 0xA5 - self.SubCmd = 0x46 + self.SubCmd = 0x18 return def ReadData(self, stringData, _pos=0, _len=0): @@ -8636,35 +9459,35 @@ def Clear(self): self.Cmd = 0xA5 - self.SubCmd = 0x46 - self.ExType = 0 - self.ExData = 0 + self.SubCmd = 0x18 + self.PlaceType = 0 + self.PlaceIndex = 0 return def GetLength(self): - return sizeof(tagCMExchangeReiki) + return sizeof(tagCMGatherSoulUp) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki: + DumpString = '''// A5 18 聚魂升级 //tagCMGatherSoulUp: Cmd:%s, SubCmd:%s, - ExType:%d, - ExData:%d + PlaceType:%d, + PlaceIndex:%d '''\ %( self.Cmd, self.SubCmd, - self.ExType, - self.ExData + self.PlaceType, + self.PlaceIndex ) return DumpString -m_NAtagCMExchangeReiki=tagCMExchangeReiki() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki +m_NAtagCMGatherSoulUp=tagCMGatherSoulUp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGatherSoulUp.Cmd,m_NAtagCMGatherSoulUp.SubCmd))] = m_NAtagCMGatherSoulUp #------------------------------------------------------ @@ -8828,6 +9651,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): @@ -8837,6 +9712,8 @@ ("SubCmd", c_ubyte), ("WeaponType", c_int), # 神兵类型 ("ItemID", c_int), #消耗的物品ID + ("ItemCount", c_ubyte), #消耗个数,默认1 + ("IsAutoBuy", c_ubyte), #是否自动购买,默认0 ] def __init__(self): @@ -8855,6 +9732,8 @@ self.SubCmd = 0x55 self.WeaponType = 0 self.ItemID = 0 + self.ItemCount = 0 + self.IsAutoBuy = 0 return def GetLength(self): @@ -8868,13 +9747,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 @@ -8940,54 +9823,6 @@ #------------------------------------------------------ -#A5 37 天梯增加挑战次数#tagCMHighLadderAddCount - -class tagCMHighLadderAddCount(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x37 - 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 = 0x37 - return - - def GetLength(self): - return sizeof(tagCMHighLadderAddCount) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A5 37 天梯增加挑战次数//tagCMHighLadderAddCount: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMHighLadderAddCount=tagCMHighLadderAddCount() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderAddCount.Cmd,m_NAtagCMHighLadderAddCount.SubCmd))] = m_NAtagCMHighLadderAddCount - - -#------------------------------------------------------ # A5 27 坐骑提升 #tagCMHorseUp class tagCMHorseUp(Structure): @@ -9048,114 +9883,6 @@ #------------------------------------------------------ -# A5 0D 升级法宝技能 #tagCMMagicWeaponSkillUp - -class tagCMMagicWeaponSkillUp(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("SkillTypeID", c_ushort), - ("CostIndex", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x0D - 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 = 0x0D - self.SkillTypeID = 0 - self.CostIndex = 0 - return - - def GetLength(self): - return sizeof(tagCMMagicWeaponSkillUp) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 0D 升级法宝技能 //tagCMMagicWeaponSkillUp: - Cmd:%s, - SubCmd:%s, - SkillTypeID:%d, - CostIndex:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.SkillTypeID, - self.CostIndex - ) - return DumpString - - -m_NAtagCMMagicWeaponSkillUp=tagCMMagicWeaponSkillUp() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponSkillUp.Cmd,m_NAtagCMMagicWeaponSkillUp.SubCmd))] = m_NAtagCMMagicWeaponSkillUp - - -#------------------------------------------------------ -# A5 16 法宝状态记录 #tagCMMagicWeaponState - -class tagCMMagicWeaponState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MWID", c_int), #法宝ID - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - 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 = 0xA5 - self.SubCmd = 0x16 - self.MWID = 0 - return - - def GetLength(self): - return sizeof(tagCMMagicWeaponState) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState: - Cmd:%s, - SubCmd:%s, - MWID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.MWID - ) - return DumpString - - -m_NAtagCMMagicWeaponState=tagCMMagicWeaponState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState - - -#------------------------------------------------------ # A5 15 提升法宝等级 #tagCMMagicWeaponUp class tagCMMagicWeaponUp(Structure): @@ -9205,62 +9932,6 @@ m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp - - -#------------------------------------------------------ -# A5 77 玩家精炼法宝 #tagCMMWRefine - -class tagCMMWRefine(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MWID", c_int), # 法宝ID - ("MaterialID", c_int), #材料ID - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x77 - 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 = 0x77 - self.MWID = 0 - self.MaterialID = 0 - return - - def GetLength(self): - return sizeof(tagCMMWRefine) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 77 玩家精炼法宝 //tagCMMWRefine: - Cmd:%s, - SubCmd:%s, - MWID:%d, - MaterialID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.MWID, - self.MaterialID - ) - return DumpString - - -m_NAtagCMMWRefine=tagCMMWRefine() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMWRefine.Cmd,m_NAtagCMMWRefine.SubCmd))] = m_NAtagCMMWRefine #------------------------------------------------------ @@ -9501,8 +10172,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("RefineNum", c_ushort), # 配方编号 - ("UseRateItem", c_int), # 附加材料ID + ("AlchemyID", c_int), # 丹药ID + ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹 ] def __init__(self): @@ -9519,8 +10190,8 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x76 - self.RefineNum = 0 - self.UseRateItem = 0 + self.AlchemyID = 0 + self.DoType = 0 return def GetLength(self): @@ -9533,14 +10204,14 @@ DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine: Cmd:%s, SubCmd:%s, - RefineNum:%d, - UseRateItem:%d + AlchemyID:%d, + DoType:%d '''\ %( self.Cmd, self.SubCmd, - self.RefineNum, - self.UseRateItem + self.AlchemyID, + self.DoType ) return DumpString @@ -9595,54 +10266,6 @@ m_NAtagCMPrayElixir=tagCMPrayElixir() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir - - -#------------------------------------------------------ -#A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState - -class tagCMQueryHighLadderState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x34 - 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 = 0x34 - return - - def GetLength(self): - return sizeof(tagCMQueryHighLadderState) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A5 34 查询天梯竞技场状态//tagCMQueryHighLadderState: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMQueryHighLadderState=tagCMQueryHighLadderState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderState.Cmd,m_NAtagCMQueryHighLadderState.SubCmd))] = m_NAtagCMQueryHighLadderState #------------------------------------------------------ @@ -9826,58 +10449,6 @@ #------------------------------------------------------ -# A5 0C 使用道具减少渡劫打坐时间 #tagCMReduceSitTime - -class tagCMReduceSitTime(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ItemCnt", c_ushort), # 道具数量 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x0C - 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 = 0x0C - self.ItemCnt = 0 - return - - def GetLength(self): - return sizeof(tagCMReduceSitTime) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 0C 使用道具减少渡劫打坐时间 //tagCMReduceSitTime: - Cmd:%s, - SubCmd:%s, - ItemCnt:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ItemCnt - ) - return DumpString - - -m_NAtagCMReduceSitTime=tagCMReduceSitTime() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReduceSitTime.Cmd,m_NAtagCMReduceSitTime.SubCmd))] = m_NAtagCMReduceSitTime - - -#------------------------------------------------------ # A5 74 刷新悬赏任务 #tagCMRefreshArrestTask class tagCMRefreshArrestTask(Structure): @@ -9975,54 +10546,6 @@ m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt - - -#------------------------------------------------------ -# A5 47 玩家转生 #tagCMReincarnation - -class tagCMReincarnation(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x47 - 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 = 0x47 - return - - def GetLength(self): - return sizeof(tagCMReincarnation) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 47 玩家转生 //tagCMReincarnation: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMReincarnation=tagCMReincarnation() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation #------------------------------------------------------ @@ -10451,6 +10974,54 @@ #------------------------------------------------------ +# A5 21 境界修为池提取 #tagCMTakeOutRealmExp + +class tagCMTakeOutRealmExp(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + 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 = 0xA5 + self.SubCmd = 0x21 + return + + def GetLength(self): + return sizeof(tagCMTakeOutRealmExp) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 21 境界修为池提取 //tagCMTakeOutRealmExp: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp + + +#------------------------------------------------------ # A5 11 试用首充武器 #tagCMTryFirstGoldItem class tagCMTryFirstGoldItem(Structure): @@ -10664,6 +11235,114 @@ m_NAtagUseNewGuyCard=tagUseNewGuyCard() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard + + +#------------------------------------------------------ +# A5 26 寻访仙域 #tagCMVisitFairyDomain + +class tagCMVisitFairyDomain(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ubyte), #0-开始寻访 1-结束寻访 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x26 + 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 = 0x26 + self.Type = 0 + return + + def GetLength(self): + return sizeof(tagCMVisitFairyDomain) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain: + Cmd:%s, + SubCmd:%s, + Type:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type + ) + return DumpString + + +m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -11404,6 +12083,54 @@ #------------------------------------------------------ +# A8 06 查询充值结果 #tagCMQueryRecharge + +class tagCMQueryRecharge(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA8 + 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 = 0xA8 + self.SubCmd = 0x06 + return + + def GetLength(self): + return sizeof(tagCMQueryRecharge) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A8 06 查询充值结果 //tagCMQueryRecharge: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMQueryRecharge=tagCMQueryRecharge() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryRecharge.Cmd,m_NAtagCMQueryRecharge.SubCmd))] = m_NAtagCMQueryRecharge + + +#------------------------------------------------------ # A8 05 VIP杀怪等级信息同步开关 #tagCMVIPKillNPCLVInfoSwitch class tagCMVIPKillNPCLVInfoSwitch(Structure): @@ -11628,174 +12355,6 @@ #------------------------------------------------------ -# AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward - -class tagCMGetClassUPDayAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("DayType", c_ubyte), # 升阶日类型 - ("ClassLV", c_ubyte), # 阶级 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - self.SubCmd = 0x02 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xAA - self.SubCmd = 0x02 - self.DayType = 0 - self.ClassLV = 0 - return - - def GetLength(self): - return sizeof(tagCMGetClassUPDayAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward: - Cmd:%s, - SubCmd:%s, - DayType:%d, - ClassLV:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.DayType, - self.ClassLV - ) - return DumpString - - -m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward - - -#------------------------------------------------------ -# AA 04 领取消费奖励 #tagCMGetCostAward - -class tagCMGetCostAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionID", c_int), # 活动ID - ("Index", c_ubyte), # 索引 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - 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 = 0xAA - self.SubCmd = 0x04 - self.ActionID = 0 - self.Index = 0 - return - - def GetLength(self): - return sizeof(tagCMGetCostAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward: - Cmd:%s, - SubCmd:%s, - ActionID:%d, - Index:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionID, - self.Index - ) - return DumpString - - -m_NAtagCMGetCostAward=tagCMGetCostAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward - - -#------------------------------------------------------ -# AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward - -class tagCMGetRechargeTeHuiAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ActionID", c_int), # 活动ID - ("Index", c_ubyte), # 规则索引 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAA - 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 = 0xAA - self.SubCmd = 0x03 - self.ActionID = 0 - self.Index = 0 - return - - def GetLength(self): - return sizeof(tagCMGetRechargeTeHuiAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward: - Cmd:%s, - SubCmd:%s, - ActionID:%d, - Index:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ActionID, - self.Index - ) - return DumpString - - -m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward - - -#------------------------------------------------------ #AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward class tagCMGetTotalLoginDayAward(Structure): @@ -11845,6 +12404,54 @@ m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward + + +#------------------------------------------------------ +# AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure + +class tagCMStartLuckyTreasure(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xAA + self.SubCmd = 0x08 + return + + def GetLength(self): + return sizeof(tagCMStartLuckyTreasure) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure #------------------------------------------------------ @@ -11904,6 +12511,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("RedPaketID", c_int), # 红包ID + ("GetWay", c_ubyte), #获得途径 ] def __init__(self): @@ -11921,6 +12529,7 @@ self.Cmd = 0xAB self.SubCmd = 0x12 self.RedPaketID = 0 + self.GetWay = 0 return def GetLength(self): @@ -11933,12 +12542,14 @@ DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket: Cmd:%s, SubCmd:%s, - RedPaketID:%d + RedPaketID:%d, + GetWay:%d '''\ %( self.Cmd, self.SubCmd, - self.RedPaketID + self.RedPaketID, + self.GetWay ) return DumpString @@ -12053,240 +12664,6 @@ m_NAtagCMDiceTake=tagCMDiceTake() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceTake.Cmd,m_NAtagCMDiceTake.SubCmd))] = m_NAtagCMDiceTake - - -#------------------------------------------------------ -# AB 06 活动物品兑换 #tagCMExchangeActionItem - -class tagCMExchangeActionItem(Structure): - Head = tagHead() - ActionKeyLen = 0 #(BYTE ActionKeyLen) - ActionKey = "" #(String ActionKey) - ItemID = 0 #(DWORD ItemID)// 兑换的目标物品ID - ExcCnt = 0 #(WORD ExcCnt)// 兑换个数,默认1个 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x06 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen) - self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ExcCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x06 - self.ActionKeyLen = 0 - self.ActionKey = "" - self.ItemID = 0 - self.ExcCnt = 0 - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += len(self.ActionKey) - length += 4 - length += 2 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ActionKeyLen) - data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey) - data = CommFunc.WriteDWORD(data, self.ItemID) - data = CommFunc.WriteWORD(data, self.ExcCnt) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ActionKeyLen:%d, - ActionKey:%s, - ItemID:%d, - ExcCnt:%d - '''\ - %( - self.Head.OutputString(), - self.ActionKeyLen, - self.ActionKey, - self.ItemID, - self.ExcCnt - ) - return DumpString - - -m_NAtagCMExchangeActionItem=tagCMExchangeActionItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeActionItem.Head.Cmd,m_NAtagCMExchangeActionItem.Head.SubCmd))] = m_NAtagCMExchangeActionItem - - -#------------------------------------------------------ -# AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward - -class tagCMGetFestivalLoginAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("FestivalType", c_ubyte), # 节日类型 - ("DayIndex", c_ubyte), # 节日天 <从节日活动开始日0天开始> - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - 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 = 0xAB - self.SubCmd = 0x07 - self.FestivalType = 0 - self.DayIndex = 0 - return - - def GetLength(self): - return sizeof(tagCMGetFestivalLoginAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward: - Cmd:%s, - SubCmd:%s, - FestivalType:%d, - DayIndex:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.FestivalType, - self.DayIndex - ) - return DumpString - - -m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward - - -#------------------------------------------------------ -# AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward - -class tagCMGetManorWarDailyAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MapID", c_int), # 领地id - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - 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 = 0xAB - self.SubCmd = 0x02 - self.MapID = 0 - return - - def GetLength(self): - return sizeof(tagCMGetManorWarDailyAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward: - Cmd:%s, - SubCmd:%s, - MapID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.MapID - ) - return DumpString - - -m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward - - -#------------------------------------------------------ -# AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward - -class tagCMGetManorWarJoinAward(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xAB - 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 = 0xAB - self.SubCmd = 0x01 - return - - def GetLength(self): - return sizeof(tagCMGetManorWarJoinAward) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward #------------------------------------------------------ @@ -13166,6 +13543,218 @@ #------------------------------------------------------ +# B1 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize + +class tagCMGiveCustomFBPrize(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x09 + self.MapID = 0 + self.FuncLineID = 0 + return + + def GetLength(self): + return sizeof(tagCMGiveCustomFBPrize) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID + ) + return DumpString + + +m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize + + +#------------------------------------------------------ +# 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): @@ -13226,6 +13815,62 @@ #------------------------------------------------------ +# B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize + +class tagCMRefreshCustomFBPrize(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB1 + self.SubCmd = 0x08 + self.MapID = 0 + self.FuncLineID = 0 + return + + def GetLength(self): + return sizeof(tagCMRefreshCustomFBPrize) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID + ) + return DumpString + + +m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize + + +#------------------------------------------------------ # B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble class tagCMSetFMTDouble(Structure): @@ -13275,6 +13920,83 @@ m_NAtagCMSetFMTDouble=tagCMSetFMTDouble() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetFMTDouble.Cmd,m_NAtagCMSetFMTDouble.SubCmd))] = m_NAtagCMSetFMTDouble + + +#------------------------------------------------------ +# B2 06 玩家加点 #tagCMAddPoint + +class tagCMAddPoint(Structure): + Head = tagHead() + PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数 + PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表 + PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x06 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PointAttrIDCount): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.PointAttrIDList.append(value) + for i in range(self.PointAttrIDCount): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.PointValueList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x06 + self.PointAttrIDCount = 0 + self.PointAttrIDList = list() + self.PointValueList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 * self.PointAttrIDCount + length += 2 * self.PointAttrIDCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.PointAttrIDCount) + for i in range(self.PointAttrIDCount): + data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i]) + for i in range(self.PointAttrIDCount): + data = CommFunc.WriteWORD(data, self.PointValueList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PointAttrIDCount:%d, + PointAttrIDList:%s, + PointValueList:%s + '''\ + %( + self.Head.OutputString(), + self.PointAttrIDCount, + "...", + "..." + ) + return DumpString + + +m_NAtagCMAddPoint=tagCMAddPoint() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint #------------------------------------------------------ @@ -13626,6 +14348,66 @@ m_NAtagCMFightMove=tagCMFightMove() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFightMove.Cmd,m_NAtagCMFightMove.SubCmd))] = m_NAtagCMFightMove + + +#------------------------------------------------------ +#B4 0B 根据类型来决定移动的方式 #tagCMMoveByType + +class tagCMMoveByType(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PosX", c_ushort), # 目标X + ("PosY", c_ushort), # 目标Y + ("MoveType", c_ubyte), #移动方式 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x0B + 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 = 0x0B + self.PosX = 0 + self.PosY = 0 + self.MoveType = 0 + return + + def GetLength(self): + return sizeof(tagCMMoveByType) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''//B4 0B 根据类型来决定移动的方式 //tagCMMoveByType: + Cmd:%s, + SubCmd:%s, + PosX:%d, + PosY:%d, + MoveType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PosX, + self.PosY, + self.MoveType + ) + return DumpString + + +m_NAtagCMMoveByType=tagCMMoveByType() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoveByType.Cmd,m_NAtagCMMoveByType.SubCmd))] = m_NAtagCMMoveByType #------------------------------------------------------ @@ -14345,6 +15127,70 @@ #------------------------------------------------------ +# B5 14 拍卖行竞价物品 #tagCMBiddingAuctionItem + +class tagCMBiddingAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + BiddingPrice = 0 #(WORD BiddingPrice)//竞价价格 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x14 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x14 + self.ItemGUID = "" + self.BiddingPrice = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 2 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteWORD(data, self.BiddingPrice) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + BiddingPrice:%d + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.BiddingPrice + ) + return DumpString + + +m_NAtagCMBiddingAuctionItem=tagCMBiddingAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBiddingAuctionItem.Head.Cmd,m_NAtagCMBiddingAuctionItem.Head.SubCmd))] = m_NAtagCMBiddingAuctionItem + + +#------------------------------------------------------ # B5 02 交易所购买物品#tagCMPYBuyBourseItem class tagCMPYBuyBourseItem(Structure): @@ -14494,6 +15340,58 @@ #------------------------------------------------------ +# B5 13 拍卖行上架拍品 #tagCMSellAuctionItem + +class tagCMSellAuctionItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemIndex", c_ubyte), #物品在背包中索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB5 + 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 = 0xB5 + self.SubCmd = 0x13 + self.ItemIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMSellAuctionItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem: + Cmd:%s, + SubCmd:%s, + ItemIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemIndex + ) + return DumpString + + +m_NAtagCMSellAuctionItem=tagCMSellAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): @@ -14550,20 +15448,23 @@ #------------------------------------------------------ -#C1 03 领取奖励表奖励 #tagMSGetReward +# C1 06 跨服NPC对话 #tagCMCrossNPCTalk -class tagMSGetReward(Structure): +class tagCMCrossNPCTalk(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("RewardType", c_ubyte), #奖励表奖励类型 + ("ObjID", c_int), + ("NPCID", c_int), + ("PosX", c_ushort), + ("PosY", c_ushort), ] def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x03 + self.SubCmd = 0x06 return def ReadData(self, stringData, _pos=0, _len=0): @@ -14573,38 +15474,47 @@ def Clear(self): self.Cmd = 0xC1 - self.SubCmd = 0x03 - self.RewardType = 0 + self.SubCmd = 0x06 + self.ObjID = 0 + self.NPCID = 0 + self.PosX = 0 + self.PosY = 0 return def GetLength(self): - return sizeof(tagMSGetReward) + return sizeof(tagCMCrossNPCTalk) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''//C1 03 领取奖励表奖励 //tagMSGetReward: + DumpString = '''// C1 06 跨服NPC对话 //tagCMCrossNPCTalk: Cmd:%s, SubCmd:%s, - RewardType:%d + ObjID:%d, + NPCID:%d, + PosX:%d, + PosY:%d '''\ %( self.Cmd, self.SubCmd, - self.RewardType + self.ObjID, + self.NPCID, + self.PosX, + self.PosY ) return DumpString -m_NAtagMSGetReward=tagMSGetReward() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMSGetReward.Cmd,m_NAtagMSGetReward.SubCmd))] = m_NAtagMSGetReward +m_NAtagCMCrossNPCTalk=tagCMCrossNPCTalk() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossNPCTalk.Cmd,m_NAtagCMCrossNPCTalk.SubCmd))] = m_NAtagCMCrossNPCTalk #------------------------------------------------------ -#C1 08 玩家执行膜拜 #tagPlayerMergeWorship +# C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy -class tagPlayerMergeWorship(Structure): +class tagCMCrossRealmPKBuy(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), @@ -14614,7 +15524,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x08 + self.SubCmd = 0x02 return def ReadData(self, stringData, _pos=0, _len=0): @@ -14624,17 +15534,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 '''\ @@ -14645,106 +15555,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), @@ -14755,7 +15629,7 @@ def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x09 + self.SubCmd = 0x01 return def ReadData(self, stringData, _pos=0, _len=0): @@ -14765,18 +15639,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 @@ -14789,24 +15663,25 @@ 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 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver -class tagCMRecoverMergePKWin(Structure): +class tagCMCrossRealmPKRobotOver(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("IsWin", c_ubyte), #是否获胜 ] def __init__(self): self.Clear() self.Cmd = 0xC1 - self.SubCmd = 0x10 + self.SubCmd = 0x08 return def ReadData(self, stringData, _pos=0, _len=0): @@ -14816,17 +15691,124 @@ def Clear(self): self.Cmd = 0xC1 - self.SubCmd = 0x10 + self.SubCmd = 0x08 + self.IsWin = 0 return def GetLength(self): - return sizeof(tagCMRecoverMergePKWin) + return sizeof(tagCMCrossRealmPKRobotOver) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// C1 10 跨服PK恢复连胜次数 //tagCMRecoverMergePKWin: + DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver: + Cmd:%s, + SubCmd:%s, + IsWin:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsWin + ) + return DumpString + + +m_NAtagCMCrossRealmPKRobotOver=tagCMCrossRealmPKRobotOver() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKRobotOver.Cmd,m_NAtagCMCrossRealmPKRobotOver.SubCmd))] = m_NAtagCMCrossRealmPKRobotOver + + +#------------------------------------------------------ +# C1 05 进入跨服地图 #tagCMEnterCrossServer + +class tagCMEnterCrossServer(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DataMapID", c_int), + ("LineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + 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 = 0xC1 + self.SubCmd = 0x05 + self.DataMapID = 0 + self.LineID = 0 + return + + def GetLength(self): + return sizeof(tagCMEnterCrossServer) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer: + Cmd:%s, + SubCmd:%s, + DataMapID:%d, + LineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DataMapID, + self.LineID + ) + return DumpString + + +m_NAtagCMEnterCrossServer=tagCMEnterCrossServer() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEnterCrossServer.Cmd,m_NAtagCMEnterCrossServer.SubCmd))] = m_NAtagCMEnterCrossServer + + +#------------------------------------------------------ +# C1 04 主动退出跨服 #tagCMExitCrossRealm + +class tagCMExitCrossRealm(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + 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 = 0xC1 + self.SubCmd = 0x04 + return + + def GetLength(self): + return sizeof(tagCMExitCrossRealm) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 04 主动退出跨服 //tagCMExitCrossRealm: Cmd:%s, SubCmd:%s '''\ @@ -14837,5 +15819,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