From 09d233e9f8a9586d63df4562a4209a5d7c97355f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 14 五月 2019 21:08:27 +0800 Subject: [PATCH] 6788 【后端】【2.0】增加灵根丹 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2741 +++++++++++++++++++++++++++------------------------------- 1 files changed, 1,281 insertions(+), 1,460 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index e15e640..6181b13 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -104,60 +104,74 @@ # A0 04 查询副本功能线路人数 #tagCGGetFBLinePlayerCnt class tagCGGetFBLinePlayerCnt(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MapID", c_int), - ("FBLineID", c_ubyte), - ("IsAllLine", c_ubyte), - ] + Head = tagHead() + MapID = 0 #(DWORD MapID) + LineCount = 0 #(BYTE LineCount) + LineIDList = list() #(vector<BYTE> LineIDList)//个数为0时代表查全部 + data = None def __init__(self): self.Clear() - self.Cmd = 0xA0 - self.SubCmd = 0x04 + self.Head.Cmd = 0xA0 + self.Head.SubCmd = 0x04 return - def ReadData(self, stringData, _pos=0, _len=0): + def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() + _pos = self.Head.ReadData(_lpData, _pos) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.LineCount): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.LineIDList.append(value) + return _pos def Clear(self): - self.Cmd = 0xA0 - self.SubCmd = 0x04 + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA0 + self.Head.SubCmd = 0x04 self.MapID = 0 - self.FBLineID = 0 - self.IsAllLine = 0 + self.LineCount = 0 + self.LineIDList = list() return def GetLength(self): - return sizeof(tagCGGetFBLinePlayerCnt) + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 1 * self.LineCount + + return length def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteBYTE(data, self.LineCount) + for i in range(self.LineCount): + data = CommFunc.WriteBYTE(data, self.LineIDList[i]) + return data def OutputString(self): - DumpString = '''// A0 04 查询副本功能线路人数 //tagCGGetFBLinePlayerCnt: - Cmd:%s, - SubCmd:%s, + DumpString = ''' + Head:%s, MapID:%d, - FBLineID:%d, - IsAllLine:%d + LineCount:%d, + LineIDList:%s '''\ %( - self.Cmd, - self.SubCmd, + self.Head.OutputString(), self.MapID, - self.FBLineID, - self.IsAllLine + self.LineCount, + "..." ) return DumpString m_NAtagCGGetFBLinePlayerCnt=tagCGGetFBLinePlayerCnt() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Cmd,m_NAtagCGGetFBLinePlayerCnt.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Head.Cmd,m_NAtagCGGetFBLinePlayerCnt.Head.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt #------------------------------------------------------ @@ -1349,6 +1363,63 @@ #------------------------------------------------------ +# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo + +class tagCGQueryNotifyEquipDetailInfo(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + 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) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + self.ItemGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID + ) + return DumpString + + +m_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo + + +#------------------------------------------------------ # A9 A3 查看推荐好友 #tagCGQueryRecommendFriends class tagCGQueryRecommendFriends(Structure): @@ -1782,58 +1853,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 #------------------------------------------------------ @@ -2356,6 +2375,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): @@ -2485,7 +2560,8 @@ ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制 SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数 SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID - FromNum = 0 #(WORD FromNum)//查询起始数 (从1开始) + FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询 + QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查 QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部 data = None @@ -2508,7 +2584,8 @@ for i in range(self.SpecItemIDCount): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.SpecItemIDList.append(value) - self.FromNum,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos @@ -2523,7 +2600,8 @@ self.ClassLV = 0 self.SpecItemIDCount = 0 self.SpecItemIDList = list() - self.FromNum = 0 + self.FromItemGUID = "" + self.QueryDir = 0 self.QueryCount = 0 return @@ -2536,7 +2614,8 @@ length += 1 length += 1 length += 4 * self.SpecItemIDCount - length += 2 + length += 40 + length += 1 length += 1 return length @@ -2552,7 +2631,8 @@ data = CommFunc.WriteBYTE(data, self.SpecItemIDCount) for i in range(self.SpecItemIDCount): data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i]) - data = CommFunc.WriteWORD(data, self.FromNum) + data = CommFunc.WriteString(data, 40, self.FromItemGUID) + data = CommFunc.WriteBYTE(data, self.QueryDir) data = CommFunc.WriteBYTE(data, self.QueryCount) return data @@ -2565,7 +2645,8 @@ ClassLV:%d, SpecItemIDCount:%d, SpecItemIDList:%s, - FromNum:%d, + FromItemGUID:%s, + QueryDir:%d, QueryCount:%d '''\ %( @@ -2576,7 +2657,8 @@ self.ClassLV, self.SpecItemIDCount, "...", - self.FromNum, + self.FromItemGUID, + self.QueryDir, self.QueryCount ) return DumpString @@ -2594,6 +2676,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录 ] def __init__(self): @@ -2610,6 +2693,7 @@ def Clear(self): self.Cmd = 0xB5 self.SubCmd = 0x12 + self.RecordType = 0 return def GetLength(self): @@ -2621,113 +2705,19 @@ def OutputString(self): DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord: Cmd:%s, - SubCmd:%s + SubCmd:%s, + RecordType:%d '''\ %( self.Cmd, - self.SubCmd + self.SubCmd, + self.RecordType ) return DumpString m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord - - -#------------------------------------------------------ -# B5 15 拍卖行查询仙盟拍卖中的拍品 #tagCGQueryFamilyAuctionItem - -class tagCGQueryFamilyAuctionItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB5 - self.SubCmd = 0x15 - 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 = 0x15 - return - - def GetLength(self): - return sizeof(tagCGQueryFamilyAuctionItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// B5 15 拍卖行查询仙盟拍卖中的拍品 //tagCGQueryFamilyAuctionItem: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCGQueryFamilyAuctionItem=tagCGQueryFamilyAuctionItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryFamilyAuctionItem.Cmd,m_NAtagCGQueryFamilyAuctionItem.SubCmd))] = m_NAtagCGQueryFamilyAuctionItem - - -#------------------------------------------------------ -# B5 11 拍卖行查询个人拍卖中的物品 #tagCGQueryPlayerAuctionItem - -class tagCGQueryPlayerAuctionItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB5 - 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 = 0xB5 - self.SubCmd = 0x11 - return - - def GetLength(self): - return sizeof(tagCGQueryPlayerAuctionItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// B5 11 拍卖行查询个人拍卖中的物品 //tagCGQueryPlayerAuctionItem: - Cmd:%s, - SubCmd:%s - '''\ - %( - self.Cmd, - self.SubCmd - ) - return DumpString - - -m_NAtagCGQueryPlayerAuctionItem=tagCGQueryPlayerAuctionItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryPlayerAuctionItem.Cmd,m_NAtagCGQueryPlayerAuctionItem.SubCmd))] = m_NAtagCGQueryPlayerAuctionItem #------------------------------------------------------ @@ -3463,6 +3453,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("PlayerID", c_int), # 跨服玩家ID + ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息 ] def __init__(self): @@ -3480,6 +3471,7 @@ self.Cmd = 0xC0 self.SubCmd = 0x02 self.PlayerID = 0 + self.EquipClassLV = 0 return def GetLength(self): @@ -3492,12 +3484,14 @@ DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo: Cmd:%s, SubCmd:%s, - PlayerID:%d + PlayerID:%d, + EquipClassLV:%d '''\ %( self.Cmd, self.SubCmd, - self.PlayerID + self.PlayerID, + self.EquipClassLV ) return DumpString @@ -4028,66 +4022,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): @@ -4140,6 +4074,54 @@ #------------------------------------------------------ +# 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): @@ -4147,6 +4129,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), ] def __init__(self): @@ -4163,6 +4147,8 @@ def Clear(self): self.Cmd = 0xA2 self.SubCmd = 0x31 + self.MapID = 0 + self.FuncLineID = 0 return def GetLength(self): @@ -4174,11 +4160,15 @@ def OutputString(self): DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene: Cmd:%s, - SubCmd:%s + SubCmd:%s, + MapID:%d, + FuncLineID:%d '''\ %( self.Cmd, - self.SubCmd + self.SubCmd, + self.MapID, + self.FuncLineID ) return DumpString @@ -4237,6 +4227,58 @@ m_NAtagCMTouchNPC=tagCMTouchNPC() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC + + +#------------------------------------------------------ +# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward + +class tagCMGetCustomSceneCollectAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), #采集的NPCID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + 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 = 0xA2 + self.SubCmd = 0x34 + self.NPCID = 0 + return + + def GetLength(self): + return sizeof(tagCMGetCustomSceneCollectAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward: + Cmd:%s, + SubCmd:%s, + NPCID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID + ) + return DumpString + + +m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward #------------------------------------------------------ @@ -5070,58 +5112,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): @@ -5223,58 +5213,6 @@ m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop - - -#------------------------------------------------------ -# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem - -class tagCMRefreshShopItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ShopID", c_int), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA2 - self.SubCmd = 0x14 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA2 - self.SubCmd = 0x14 - self.ShopID = 0 - return - - def GetLength(self): - return sizeof(tagCMRefreshShopItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem: - Cmd:%s, - SubCmd:%s, - ShopID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ShopID - ) - return DumpString - - -m_NAtagCMRefreshShopItem=tagCMRefreshShopItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem #------------------------------------------------------ @@ -5729,6 +5667,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("PlayerID", c_int), + ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息 ] def __init__(self): @@ -5746,6 +5685,7 @@ self.Cmd = 0xA2 self.SubCmd = 0x12 self.PlayerID = 0 + self.EquipClassLV = 0 return def GetLength(self): @@ -5758,18 +5698,72 @@ DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo: Cmd:%s, SubCmd:%s, - PlayerID:%d + PlayerID:%d, + EquipClassLV:%d '''\ %( self.Cmd, self.SubCmd, - self.PlayerID + self.PlayerID, + self.EquipClassLV ) return DumpString 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 #------------------------------------------------------ @@ -6273,6 +6267,58 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ #A3 05 宝石摘取 #tagCMEquipStonePick class tagCMEquipStonePick(Structure): @@ -6728,6 +6774,62 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ #A3 02 丢弃背包物品 #tagPlayerDropItem class tagPlayerDropItem(Structure): @@ -7011,118 +7113,6 @@ #------------------------------------------------------ -#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 - - -#------------------------------------------------------ #A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack class tagCMMagicItemPutInItemPack(Structure): @@ -7250,70 +7240,6 @@ m_NAtagCMSellItem=tagCMSellItem() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellItem.Head.Cmd,m_NAtagCMSellItem.Head.SubCmd))] = m_NAtagCMSellItem - - -#------------------------------------------------------ -#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 #------------------------------------------------------ @@ -7736,66 +7662,6 @@ #------------------------------------------------------ -# 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 - - -#------------------------------------------------------ #A5 01 坐骑激活 #tagPlayerActivateHorse class tagPlayerActivateHorse(Structure): @@ -7901,58 +7767,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 #------------------------------------------------------ @@ -8423,6 +8237,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): @@ -8572,106 +8442,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 #------------------------------------------------------ @@ -9498,6 +9268,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): @@ -9551,62 +9405,6 @@ m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP - - -#------------------------------------------------------ -# A5 46 兑换灵力 #tagCMExchangeReiki - -class tagCMExchangeReiki(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买 - ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引) - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x46 - 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 = 0x46 - self.ExType = 0 - self.ExData = 0 - return - - def GetLength(self): - return sizeof(tagCMExchangeReiki) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki: - Cmd:%s, - SubCmd:%s, - ExType:%d, - ExData:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.ExType, - self.ExData - ) - return DumpString - - -m_NAtagCMExchangeReiki=tagCMExchangeReiki() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki #------------------------------------------------------ @@ -10156,54 +9954,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): @@ -10261,58 +10011,6 @@ m_NAtagCMHorseUp=tagCMHorseUp() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseUp.Cmd,m_NAtagCMHorseUp.SubCmd))] = m_NAtagCMHorseUp - - -#------------------------------------------------------ -# 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 #------------------------------------------------------ @@ -10605,8 +10303,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): @@ -10623,8 +10321,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): @@ -10637,14 +10335,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 @@ -10699,54 +10397,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 #------------------------------------------------------ @@ -10930,58 +10580,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): @@ -11079,54 +10677,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 #------------------------------------------------------ @@ -11507,6 +11057,58 @@ #------------------------------------------------------ +# A5 16 选择技能五行专精 #tagCMSelectSkillElement + +class tagCMSelectSkillElement(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("SkillTypeID", 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.SkillTypeID = 0 + return + + def GetLength(self): + return sizeof(tagCMSelectSkillElement) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement: + Cmd:%s, + SubCmd:%s, + SkillTypeID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.SkillTypeID + ) + return DumpString + + +m_NAtagCMSelectSkillElement=tagCMSelectSkillElement() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement + + +#------------------------------------------------------ # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel class tagCMStartBindJadeWheel(Structure): @@ -11552,6 +11154,106 @@ m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel + + +#------------------------------------------------------ +# 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 12 感应法宝 #tagCMThinkMagicWeapon + +class tagCMThinkMagicWeapon(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MWID", c_int), + ] + + 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.MWID = 0 + return + + def GetLength(self): + return sizeof(tagCMThinkMagicWeapon) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon: + Cmd:%s, + SubCmd:%s, + MWID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MWID + ) + return DumpString + + +m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon #------------------------------------------------------ @@ -11768,6 +11470,58 @@ 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 #------------------------------------------------------ @@ -12836,174 +12590,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): @@ -13313,240 +12899,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 #------------------------------------------------------ @@ -14426,6 +13778,118 @@ #------------------------------------------------------ +# B1 0A 副本购买buff #tagCMFBBuyBuff + +class tagCMFBBuyBuff(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("MoneyCnt", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + self.SubCmd = 0x0A + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB1 + self.SubCmd = 0x0A + self.MapID = 0 + self.MoneyCnt = 0 + return + + def GetLength(self): + return sizeof(tagCMFBBuyBuff) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff: + Cmd:%s, + SubCmd:%s, + MapID:%d, + MoneyCnt:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.MoneyCnt + ) + return DumpString + + +m_NAtagCMFBBuyBuff=tagCMFBBuyBuff() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff + + +#------------------------------------------------------ +# 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): @@ -14642,6 +14106,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): @@ -14691,6 +14211,131 @@ 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 + + +#------------------------------------------------------ +# B2 07 重置加点 #tagCMResetAttrPoint + +class tagCMResetAttrPoint(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + 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 = 0xB2 + self.SubCmd = 0x07 + return + + def GetLength(self): + return sizeof(tagCMResetAttrPoint) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMResetAttrPoint=tagCMResetAttrPoint() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint #------------------------------------------------------ @@ -14977,6 +14622,62 @@ #------------------------------------------------------ +# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile + +class tagCMSummonPriWoodPile(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), + ("Count", c_ubyte), #默认1个,最多5个 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + 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 = 0xB4 + self.SubCmd = 0x0C + self.NPCID = 0 + self.Count = 0 + return + + def GetLength(self): + return sizeof(tagCMSummonPriWoodPile) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile: + Cmd:%s, + SubCmd:%s, + NPCID:%d, + Count:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID, + self.Count + ) + return DumpString + + +m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile + + +#------------------------------------------------------ #B4 06 战斗移动 # tagCMFightMove class tagCMFightMove(Structure): @@ -15042,6 +14743,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 #------------------------------------------------------ @@ -15691,6 +15452,62 @@ m_NAtagCMUseSkillEx=tagCMUseSkillEx() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSkillEx.Cmd,m_NAtagCMUseSkillEx.SubCmd))] = m_NAtagCMUseSkillEx + + +#------------------------------------------------------ +# B4 0D 战斗印记 #tagCMYinji + +class tagCMYinji(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Count", c_ubyte), + ("Type", c_ubyte), # 0 加,1减 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + 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 = 0xB4 + self.SubCmd = 0x0D + self.Count = 0 + self.Type = 0 + return + + def GetLength(self): + return sizeof(tagCMYinji) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 0D 战斗印记 //tagCMYinji: + Cmd:%s, + SubCmd:%s, + Count:%d, + Type:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Count, + self.Type + ) + return DumpString + + +m_NAtagCMYinji=tagCMYinji() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji #------------------------------------------------------ @@ -16362,6 +16179,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("DataMapID", c_int), + ("LineID", c_ushort), ] def __init__(self): @@ -16379,6 +16197,7 @@ self.Cmd = 0xC1 self.SubCmd = 0x05 self.DataMapID = 0 + self.LineID = 0 return def GetLength(self): @@ -16391,12 +16210,14 @@ DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer: Cmd:%s, SubCmd:%s, - DataMapID:%d + DataMapID:%d, + LineID:%d '''\ %( self.Cmd, self.SubCmd, - self.DataMapID + self.DataMapID, + self.LineID ) return DumpString -- Gitblit v1.8.0