From b64a09543ef7543d307d851a3c1fdeebefff38e4 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 11 十二月 2024 14:09:09 +0800 Subject: [PATCH] 10318 【英文】【越南】【BT】【砍树】统一增加奖励获得封包(商店事件DataEx增加同步商店类型) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 766 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 741 insertions(+), 25 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 416480f..36f3b38 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -379,6 +379,58 @@ #------------------------------------------------------ +# A4 13 修改家族徽章 #tagCGChangeFamilyEmblem + +class tagCGChangeFamilyEmblem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EmblemID", c_ubyte), # 更换的徽章ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA4 + 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 = 0xA4 + self.SubCmd = 0x13 + self.EmblemID = 0 + return + + def GetLength(self): + return sizeof(tagCGChangeFamilyEmblem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A4 13 修改家族徽章 //tagCGChangeFamilyEmblem: + Cmd:%s, + SubCmd:%s, + EmblemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.EmblemID + ) + return DumpString + + +m_NAtagCGChangeFamilyEmblem=tagCGChangeFamilyEmblem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGChangeFamilyEmblem.Cmd,m_NAtagCGChangeFamilyEmblem.SubCmd))] = m_NAtagCGChangeFamilyEmblem + + +#------------------------------------------------------ # A4 08 查询家族行为信息 #tagCGQueryFamilyAction class tagCGQueryFamilyAction(Structure): @@ -712,6 +764,7 @@ Head = tagHead() Name = "" #(char Name[33]) FakeID = 0 #(WORD FakeID)//假仙盟编号 + EmblemID = 0 #(BYTE EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID data = None def __init__(self): @@ -725,6 +778,7 @@ _pos = self.Head.ReadData(_lpData, _pos) self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33) self.FakeID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -734,6 +788,7 @@ self.Head.SubCmd = 0x04 self.Name = "" self.FakeID = 0 + self.EmblemID = 0 return def GetLength(self): @@ -741,6 +796,7 @@ length += self.Head.GetLength() length += 33 length += 2 + length += 1 return length @@ -749,18 +805,21 @@ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteString(data, 33, self.Name) data = CommFunc.WriteWORD(data, self.FakeID) + data = CommFunc.WriteBYTE(data, self.EmblemID) return data def OutputString(self): DumpString = ''' Head:%s, Name:%s, - FakeID:%d + FakeID:%d, + EmblemID:%d '''\ %( self.Head.OutputString(), self.Name, - self.FakeID + self.FakeID, + self.EmblemID ) return DumpString @@ -1252,6 +1311,58 @@ #------------------------------------------------------ +# A9 07 点赞仙宫 #tagCGLikeXiangong + +class tagCGLikeXiangong(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("XiangongID", c_ushort), # 仙宫ID,为0时代表每日的仙宫点赞 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + 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 = 0xA9 + self.SubCmd = 0x07 + self.XiangongID = 0 + return + + def GetLength(self): + return sizeof(tagCGLikeXiangong) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong: + Cmd:%s, + SubCmd:%s, + XiangongID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.XiangongID + ) + return DumpString + + +m_NAtagCGLikeXiangong=tagCGLikeXiangong() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong + + +#------------------------------------------------------ # A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer class tagCGQueryArenaBattlePlayer(Structure): @@ -1569,6 +1680,58 @@ m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends + + +#------------------------------------------------------ +# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers + +class tagCGQueryXiangongRecPlayers(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("XiangongID", c_ushort), # 仙宫ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + 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 = 0xA9 + self.SubCmd = 0x06 + self.XiangongID = 0 + return + + def GetLength(self): + return sizeof(tagCGQueryXiangongRecPlayers) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers: + Cmd:%s, + SubCmd:%s, + XiangongID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.XiangongID + ) + return DumpString + + +m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers #------------------------------------------------------ @@ -5724,6 +5887,54 @@ #------------------------------------------------------ +# A1 09 同步打包玩家数据 #tagCMSycnPlayerPackData + +class tagCMSycnPlayerPackData(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA1 + self.SubCmd = 0x09 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA1 + self.SubCmd = 0x09 + return + + def GetLength(self): + return sizeof(tagCMSycnPlayerPackData) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A1 09 同步打包玩家数据 //tagCMSycnPlayerPackData: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMSycnPlayerPackData=tagCMSycnPlayerPackData() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSycnPlayerPackData.Cmd,m_NAtagCMSycnPlayerPackData.SubCmd))] = m_NAtagCMSycnPlayerPackData + + +#------------------------------------------------------ #A1 03 设置是否成年 #tagCMAdult class tagCMAdult(Structure): @@ -6074,6 +6285,58 @@ m_NAtagCMBuyItemBack=tagCMBuyItemBack() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItemBack.Cmd,m_NAtagCMBuyItemBack.SubCmd))] = m_NAtagCMBuyItemBack + + +#------------------------------------------------------ +# A2 36 聊天气泡框升星 #tagCMChatBubbleBoxStarUP + +class tagCMChatBubbleBoxStarUP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BoxID", c_ubyte), #气泡ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA2 + 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 = 0xA2 + self.SubCmd = 0x36 + self.BoxID = 0 + return + + def GetLength(self): + return sizeof(tagCMChatBubbleBoxStarUP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 36 聊天气泡框升星 //tagCMChatBubbleBoxStarUP: + Cmd:%s, + SubCmd:%s, + BoxID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BoxID + ) + return DumpString + + +m_NAtagCMChatBubbleBoxStarUP=tagCMChatBubbleBoxStarUP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChatBubbleBoxStarUP.Cmd,m_NAtagCMChatBubbleBoxStarUP.SubCmd))] = m_NAtagCMChatBubbleBoxStarUP #------------------------------------------------------ @@ -9687,20 +9950,15 @@ #------------------------------------------------------ # A3 23 使用物品 #tagCMUseItems -class tagCMUseItems(Structure): +class tagCMUseItemsSelect(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ItemIndex", c_ubyte), #物品在背包中索引 - ("UseCnt", c_ushort), #使用个数,0表示全部使用 - ("ExData", c_int), #使用扩展值, 默认0, 选择物品宝箱时发送选择的物品ID + ("SelectID", c_int), #选择项ID + ("SelectCnt", c_ushort), #选择数 ] def __init__(self): self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x23 return def ReadData(self, stringData, _pos=0, _len=0): @@ -9709,39 +9967,113 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x23 - self.ItemIndex = 0 - self.UseCnt = 0 - self.ExData = 0 + self.SelectID = 0 + self.SelectCnt = 0 return def GetLength(self): - return sizeof(tagCMUseItems) + return sizeof(tagCMUseItemsSelect) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''// A3 23 使用物品 //tagCMUseItems: - Cmd:%s, - SubCmd:%s, - ItemIndex:%d, - UseCnt:%d, - ExData:%d + SelectID:%d, + SelectCnt:%d '''\ %( - self.Cmd, - self.SubCmd, + self.SelectID, + self.SelectCnt + ) + return DumpString + + +class tagCMUseItems(Structure): + Head = tagHead() + ItemIndex = 0 #(BYTE ItemIndex)//物品在背包中索引 + UseCnt = 0 #(WORD UseCnt)//使用个数,0表示全部使用 + ExData = 0 #(DWORD ExData)//使用扩展值, 默认0, 选择物品宝箱时发送选择的物品ID + SelectCount = 0 #(BYTE SelectCount)//指定选择项,当批量使用单个箱子需要同时选中多种选项时使用该值 + SelectList = list() #(vector<tagCMUseItemsSelect> SelectList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x23 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.UseCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ExData,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.SelectCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SelectCount): + temSelectList = tagCMUseItemsSelect() + _pos = temSelectList.ReadData(_lpData, _pos) + self.SelectList.append(temSelectList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x23 + self.ItemIndex = 0 + self.UseCnt = 0 + self.ExData = 0 + self.SelectCount = 0 + self.SelectList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 + length += 4 + length += 1 + for i in range(self.SelectCount): + length += self.SelectList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ItemIndex) + data = CommFunc.WriteWORD(data, self.UseCnt) + data = CommFunc.WriteDWORD(data, self.ExData) + data = CommFunc.WriteBYTE(data, self.SelectCount) + for i in range(self.SelectCount): + data = CommFunc.WriteString(data, self.SelectList[i].GetLength(), self.SelectList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemIndex:%d, + UseCnt:%d, + ExData:%d, + SelectCount:%d, + SelectList:%s + '''\ + %( + self.Head.OutputString(), self.ItemIndex, self.UseCnt, - self.ExData + self.ExData, + self.SelectCount, + "..." ) return DumpString m_NAtagCMUseItems=tagCMUseItems() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseItems.Cmd,m_NAtagCMUseItems.SubCmd))] = m_NAtagCMUseItems +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseItems.Head.Cmd,m_NAtagCMUseItems.Head.SubCmd))] = m_NAtagCMUseItems #------------------------------------------------------ @@ -15307,6 +15639,58 @@ #------------------------------------------------------ +# A6 16 珍宝阁操作 #tagCMZhenbaogeOP + +class tagCMZhenbaogeOP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("OpType", c_ubyte), # 操作:0-砍价;1-购买 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA6 + self.SubCmd = 0x16 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA6 + self.SubCmd = 0x16 + self.OpType = 0 + return + + def GetLength(self): + return sizeof(tagCMZhenbaogeOP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A6 16 珍宝阁操作 //tagCMZhenbaogeOP: + Cmd:%s, + SubCmd:%s, + OpType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.OpType + ) + return DumpString + + +m_NAtagCMZhenbaogeOP=tagCMZhenbaogeOP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhenbaogeOP.Cmd,m_NAtagCMZhenbaogeOP.SubCmd))] = m_NAtagCMZhenbaogeOP + + +#------------------------------------------------------ # A7 02 宠物激活 #tagCMActivatePet class tagCMActivatePet(Structure): @@ -17029,6 +17413,66 @@ m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure + + +#------------------------------------------------------ +# AA 02 推金币 #tagCMTuijinbi + +class tagCMTuijinbi(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("OpType", c_ubyte), # 操作类型: 0-抽奖;1-获得金币;2-激活至尊卡 + ("Value1", c_int), # 类型1时为货币类型 + ("Value2", c_int), # 类型1时为货币数值 + ] + + 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.OpType = 0 + self.Value1 = 0 + self.Value2 = 0 + return + + def GetLength(self): + return sizeof(tagCMTuijinbi) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 02 推金币 //tagCMTuijinbi: + Cmd:%s, + SubCmd:%s, + OpType:%d, + Value1:%d, + Value2:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.OpType, + self.Value1, + self.Value2 + ) + return DumpString + + +m_NAtagCMTuijinbi=tagCMTuijinbi() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTuijinbi.Cmd,m_NAtagCMTuijinbi.SubCmd))] = m_NAtagCMTuijinbi #------------------------------------------------------ @@ -19120,6 +19564,214 @@ #------------------------------------------------------ +# B2 26 头像幻化 #tagCMFaceChange + +class tagCMFaceChange(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FaceID", c_int), # 幻化的ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + 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 = 0xB2 + self.SubCmd = 0x26 + self.FaceID = 0 + return + + def GetLength(self): + return sizeof(tagCMFaceChange) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 26 头像幻化 //tagCMFaceChange: + Cmd:%s, + SubCmd:%s, + FaceID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FaceID + ) + return DumpString + + +m_NAtagCMFaceChange=tagCMFaceChange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceChange.Cmd,m_NAtagCMFaceChange.SubCmd))] = m_NAtagCMFaceChange + + +#------------------------------------------------------ +# B2 28 头像框幻化 #tagCMFacePicChange + +class tagCMFacePicChange(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FacePicID", c_int), # 幻化的ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x28 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB2 + self.SubCmd = 0x28 + self.FacePicID = 0 + return + + def GetLength(self): + return sizeof(tagCMFacePicChange) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 28 头像框幻化 //tagCMFacePicChange: + Cmd:%s, + SubCmd:%s, + FacePicID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FacePicID + ) + return DumpString + + +m_NAtagCMFacePicChange=tagCMFacePicChange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicChange.Cmd,m_NAtagCMFacePicChange.SubCmd))] = m_NAtagCMFacePicChange + + +#------------------------------------------------------ +# B2 29 头像框升星 #tagCMFacePicStarUP + +class tagCMFacePicStarUP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FacePicID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x29 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB2 + self.SubCmd = 0x29 + self.FacePicID = 0 + return + + def GetLength(self): + return sizeof(tagCMFacePicStarUP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 29 头像框升星 //tagCMFacePicStarUP: + Cmd:%s, + SubCmd:%s, + FacePicID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FacePicID + ) + return DumpString + + +m_NAtagCMFacePicStarUP=tagCMFacePicStarUP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFacePicStarUP.Cmd,m_NAtagCMFacePicStarUP.SubCmd))] = m_NAtagCMFacePicStarUP + + +#------------------------------------------------------ +# B2 27 头像升星 #tagCMFaceStarUP + +class tagCMFaceStarUP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FaceID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x27 + 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 = 0x27 + self.FaceID = 0 + return + + def GetLength(self): + return sizeof(tagCMFaceStarUP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 27 头像升星 //tagCMFaceStarUP: + Cmd:%s, + SubCmd:%s, + FaceID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FaceID + ) + return DumpString + + +m_NAtagCMFaceStarUP=tagCMFaceStarUP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaceStarUP.Cmd,m_NAtagCMFaceStarUP.SubCmd))] = m_NAtagCMFaceStarUP + + +#------------------------------------------------------ # B2 25 新聚魂操作 #tagCMGatherTheSoulOP class tagCMGatherTheSoulOP(Structure): @@ -20285,6 +20937,70 @@ #------------------------------------------------------ +# B4 11 镜像战斗 #tagCMMirrorFight + +class tagCMMirrorFight(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), # 自定义地图ID,如竞技场等 + ("FuncLineID", c_ushort), + ("TagPlayeID", c_int), # 目标玩家ID,支持跨服玩家ID + ("CmdType", c_ubyte), # 命令类型: 0-创建战斗;1-开始战斗;2-战斗中跳过;3-不创建战斗直接得结果 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x11 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB4 + self.SubCmd = 0x11 + self.MapID = 0 + self.FuncLineID = 0 + self.TagPlayeID = 0 + self.CmdType = 0 + return + + def GetLength(self): + return sizeof(tagCMMirrorFight) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 11 镜像战斗 //tagCMMirrorFight: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d, + TagPlayeID:%d, + CmdType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID, + self.TagPlayeID, + self.CmdType + ) + return DumpString + + +m_NAtagCMMirrorFight=tagCMMirrorFight() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMirrorFight.Cmd,m_NAtagCMMirrorFight.SubCmd))] = m_NAtagCMMirrorFight + + +#------------------------------------------------------ # B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile class tagCMRecyclePriWoodPile(Structure): -- Gitblit v1.8.0