From 2b3d5e31bafd7a9cd4b4738e38186ffed4cee5f6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 12 十一月 2019 16:58:20 +0800 Subject: [PATCH] 1111 装备评分公式增加参数(FinalHurt、FinalHurtReduce) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2000 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 1,373 insertions(+), 627 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 770691f..baaae1b 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 #------------------------------------------------------ @@ -1234,6 +1248,62 @@ #------------------------------------------------------ +# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward + +class tagCGGetBossFirstKillAward(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), + ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + 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 = 0xA9 + self.SubCmd = 0x01 + self.NPCID = 0 + self.AwardType = 0 + return + + def GetLength(self): + return sizeof(tagCGGetBossFirstKillAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward: + Cmd:%s, + SubCmd:%s, + NPCID:%d, + AwardType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID, + self.AwardType + ) + return DumpString + + +m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward + + +#------------------------------------------------------ # A9 04 查询boss信息 #tagCGQueryBossInfo class tagCGQueryBossInfo(Structure): @@ -1346,6 +1416,63 @@ m_NAtagCGQueryCompensation=tagCGQueryCompensation() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryCompensation.Cmd,m_NAtagCGQueryCompensation.SubCmd))] = m_NAtagCGQueryCompensation + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -3382,6 +3509,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("PlayerID", c_int), # 跨服玩家ID + ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息 ] def __init__(self): @@ -3399,6 +3527,7 @@ self.Cmd = 0xC0 self.SubCmd = 0x02 self.PlayerID = 0 + self.EquipClassLV = 0 return def GetLength(self): @@ -3411,12 +3540,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 @@ -3999,6 +4130,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): @@ -4006,6 +4185,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), ] def __init__(self): @@ -4022,6 +4203,8 @@ def Clear(self): self.Cmd = 0xA2 self.SubCmd = 0x31 + self.MapID = 0 + self.FuncLineID = 0 return def GetLength(self): @@ -4033,11 +4216,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 @@ -4096,6 +4283,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 #------------------------------------------------------ @@ -5484,6 +5723,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("PlayerID", c_int), + ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息 ] def __init__(self): @@ -5501,6 +5741,7 @@ self.Cmd = 0xA2 self.SubCmd = 0x12 self.PlayerID = 0 + self.EquipClassLV = 0 return def GetLength(self): @@ -5513,18 +5754,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 #------------------------------------------------------ @@ -5972,6 +6267,104 @@ #------------------------------------------------------ +# A3 30 装备神装进阶 #tagCMEquipEvolve + +class tagCMEquipEvolve(Structure): + Head = tagHead() + EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引 + NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引 + NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数 + NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表 + NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数 + NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x30 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedItemIDIndexCnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.NeedItemIDIndex.append(value) + self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedSuitIndexCnt): + value,_pos=CommFunc.ReadBYTE(_lpData,_pos) + self.NeedSuitIndex.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x30 + self.EquipIndex = 0 + self.NeedEquipIDIndex = 0 + self.NeedItemIDIndexCnt = 0 + self.NeedItemIDIndex = list() + self.NeedSuitIndexCnt = 0 + self.NeedSuitIndex = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 1 + length += 1 * self.NeedItemIDIndexCnt + length += 1 + length += 1 * self.NeedSuitIndexCnt + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.EquipIndex) + data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex) + data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt) + for i in range(self.NeedItemIDIndexCnt): + data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i]) + data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt) + for i in range(self.NeedSuitIndexCnt): + data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + EquipIndex:%d, + NeedEquipIDIndex:%d, + NeedItemIDIndexCnt:%d, + NeedItemIDIndex:%s, + NeedSuitIndexCnt:%d, + NeedSuitIndex:%s + '''\ + %( + self.Head.OutputString(), + self.EquipIndex, + self.NeedEquipIDIndex, + self.NeedItemIDIndexCnt, + "...", + self.NeedSuitIndexCnt, + "..." + ) + return DumpString + + +m_NAtagCMEquipEvolve=tagCMEquipEvolve() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve + + +#------------------------------------------------------ #A3 01 装备强化 #tagEquipPlus class tagEquipPlus(Structure): @@ -6360,62 +6753,6 @@ #------------------------------------------------------ -# A3 30 装备诛仙装备 #tagCMEquipZhuXianItem - -class tagCMEquipZhuXianItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引 - ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x30 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x30 - self.EquipIndex = 0 - self.ItemIndex = 0 - return - - def GetLength(self): - return sizeof(tagCMEquipZhuXianItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem: - Cmd:%s, - SubCmd:%s, - EquipIndex:%d, - ItemIndex:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.EquipIndex, - self.ItemIndex - ) - return DumpString - - -m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem - - -#------------------------------------------------------ # A3 12 守护拾取物品 #tagCMGuardPickupItem class tagCMGuardPickupItem(Structure): @@ -6588,6 +6925,58 @@ m_NAtagCMItemTimeout=tagCMItemTimeout() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout + + +#------------------------------------------------------ +# A3 18 灵器突破 #tagCMLingQiEquipBreak + +class tagCMLingQiEquipBreak(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), #突破的物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + 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 = 0xA3 + self.SubCmd = 0x18 + self.ItemID = 0 + return + + def GetLength(self): + return sizeof(tagCMLingQiEquipBreak) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 18 灵器突破 //tagCMLingQiEquipBreak: + Cmd:%s, + SubCmd:%s, + ItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID + ) + return DumpString + + +m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak #------------------------------------------------------ @@ -7004,70 +7393,6 @@ #------------------------------------------------------ -#A3 21 使用特殊运营物品 #tagCMUseSpecialItem - -class tagCMUseSpecialItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("SpeicalItemType", c_ubyte), #特殊运营物品类型,0打折卡,1多选礼包 - ("ItemID", c_int), #物品ID - ("ItemIndex", c_ubyte), #物品在背包中的索引位置 - ("Select", c_ubyte), #选择,只对多选礼包有用 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x21 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x21 - self.SpeicalItemType = 0 - self.ItemID = 0 - self.ItemIndex = 0 - self.Select = 0 - return - - def GetLength(self): - return sizeof(tagCMUseSpecialItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem: - Cmd:%s, - SubCmd:%s, - SpeicalItemType:%d, - ItemID:%d, - ItemIndex:%d, - Select:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.SpeicalItemType, - self.ItemID, - self.ItemIndex, - self.Select - ) - return DumpString - - -m_NAtagCMUseSpecialItem=tagCMUseSpecialItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem - - -#------------------------------------------------------ # A3 2F 宗门试炼兑换 #tagCMTrialExchange class tagCMTrialExchange(Structure): @@ -7117,58 +7442,6 @@ m_NAtagCMTrialExchange=tagCMTrialExchange() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange - - -#------------------------------------------------------ -# A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem - -class tagCMUnEquipZhuXianItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x31 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x31 - self.EquipIndex = 0 - return - - def GetLength(self): - return sizeof(tagCMUnEquipZhuXianItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem: - Cmd:%s, - SubCmd:%s, - EquipIndex:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.EquipIndex - ) - return DumpString - - -m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem #------------------------------------------------------ @@ -7351,90 +7624,6 @@ #------------------------------------------------------ -# A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose - -class tagCMZhuXianEquipDecompose(Structure): - Head = tagHead() - Count = 0 #(BYTE Count)//材料所在背包索引的数量 - IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表 - ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表 - IsAuto = 0 #(BYTE IsAuto)//是否自动分解 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x32 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Count): - value,_pos=CommFunc.ReadWORD(_lpData,_pos) - self.IndexList.append(value) - for i in range(self.Count): - value,_pos=CommFunc.ReadDWORD(_lpData,_pos) - self.ItemIDList.append(value) - self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0x32 - self.Count = 0 - self.IndexList = list() - self.ItemIDList = list() - self.IsAuto = 0 - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 2 * self.Count - length += 4 * self.Count - length += 1 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.Count) - for i in range(self.Count): - data = CommFunc.WriteWORD(data, self.IndexList[i]) - for i in range(self.Count): - data = CommFunc.WriteDWORD(data, self.ItemIDList[i]) - data = CommFunc.WriteBYTE(data, self.IsAuto) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Count:%d, - IndexList:%s, - ItemIDList:%s, - IsAuto:%d - '''\ - %( - self.Head.OutputString(), - self.Count, - "...", - "...", - self.IsAuto - ) - return DumpString - - -m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose - - -#------------------------------------------------------ # A5 30 购买魔魂铜钱经验什么的 #tagCMBuySomething class tagCMBuySomething(Structure): @@ -7484,66 +7673,6 @@ m_NAtagCMBuySomething=tagCMBuySomething() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething - - -#------------------------------------------------------ -# A5 32 购买商城物品 #tagCMBuyStoreItem - -class tagCMBuyStoreItem(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Type", c_ubyte), #1钻石,2绑定钻石,3银子,4银票 - ("ItemID", c_int), #物品ID - ("BuyCount", c_ushort), #购买数量 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xA5 - self.SubCmd = 0x32 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xA5 - self.SubCmd = 0x32 - self.Type = 0 - self.ItemID = 0 - self.BuyCount = 0 - return - - def GetLength(self): - return sizeof(tagCMBuyStoreItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem: - Cmd:%s, - SubCmd:%s, - Type:%d, - ItemID:%d, - BuyCount:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Type, - self.ItemID, - self.BuyCount - ) - return DumpString - - -m_NAtagCMBuyStoreItem=tagCMBuyStoreItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem #------------------------------------------------------ @@ -8119,6 +8248,62 @@ m_NAtagCMBuyCollectionCnt=tagCMBuyCollectionCnt() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyCollectionCnt.Cmd,m_NAtagCMBuyCollectionCnt.SubCmd))] = m_NAtagCMBuyCollectionCnt + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -9105,6 +9290,7 @@ CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数 CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引 CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID + AutoBuy = 0 #(BYTE AutoBuy)// 自动购买 0-不自动购买,1-自动购买并升星,2-自动购买预览(未满概率时预览消耗时使用) data = None def __init__(self): @@ -9124,6 +9310,7 @@ for i in range(self.CostEquipCnt): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.CostEquipID.append(value) + self.AutoBuy,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -9135,6 +9322,7 @@ self.CostEquipCnt = 0 self.CostEquipIndex = list() self.CostEquipID = list() + self.AutoBuy = 0 return def GetLength(self): @@ -9144,6 +9332,7 @@ length += 1 length += 2 * self.CostEquipCnt length += 4 * self.CostEquipCnt + length += 1 return length @@ -9156,6 +9345,7 @@ data = CommFunc.WriteWORD(data, self.CostEquipIndex[i]) for i in range(self.CostEquipCnt): data = CommFunc.WriteDWORD(data, self.CostEquipID[i]) + data = CommFunc.WriteBYTE(data, self.AutoBuy) return data def OutputString(self): @@ -9164,20 +9354,86 @@ EquipPackIndex:%d, CostEquipCnt:%d, CostEquipIndex:%s, - CostEquipID:%s + CostEquipID:%s, + AutoBuy:%d '''\ %( self.Head.OutputString(), self.EquipPackIndex, self.CostEquipCnt, "...", - "..." + "...", + self.AutoBuy ) return DumpString m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp + + +#------------------------------------------------------ +# A5 C6 装备部位星级套装激活 #tagCMEquipPartSuiteActivate + +class tagCMEquipPartSuiteActivate(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ClassLV", c_ubyte), # 所属装备阶 + ("SuiteID", c_ushort), # 套装ID + ("SuiteCount", c_ubyte), # 件数 + ("Star", c_ubyte), # 星数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0xC6 + 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 = 0xC6 + self.ClassLV = 0 + self.SuiteID = 0 + self.SuiteCount = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagCMEquipPartSuiteActivate) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 C6 装备部位星级套装激活 //tagCMEquipPartSuiteActivate: + Cmd:%s, + SubCmd:%s, + ClassLV:%d, + SuiteID:%d, + SuiteCount:%d, + Star:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ClassLV, + self.SuiteID, + self.SuiteCount, + self.Star + ) + return DumpString + + +m_NAtagCMEquipPartSuiteActivate=tagCMEquipPartSuiteActivate() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartSuiteActivate.Cmd,m_NAtagCMEquipPartSuiteActivate.SubCmd))] = m_NAtagCMEquipPartSuiteActivate #------------------------------------------------------ @@ -9234,62 +9490,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 #------------------------------------------------------ @@ -9839,6 +10039,126 @@ #------------------------------------------------------ +# A5 29 骑宠觉醒 #tagCMHorsePetAwake + +class tagCMHorsePetAwake(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ushort), # 1-坐骑 2-灵宠 + ("ID", c_int), # 对应坐骑表灵宠表ID + ("EatItemID", c_int), # 吞噬的物品ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + 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 = 0xA5 + self.SubCmd = 0x29 + self.Type = 0 + self.ID = 0 + self.EatItemID = 0 + return + + def GetLength(self): + return sizeof(tagCMHorsePetAwake) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake: + Cmd:%s, + SubCmd:%s, + Type:%d, + ID:%d, + EatItemID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type, + self.ID, + self.EatItemID + ) + return DumpString + + +m_NAtagCMHorsePetAwake=tagCMHorsePetAwake() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake + + +#------------------------------------------------------ +# A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect + +class tagCMHorsePetSkinSelect(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ushort), # 1-坐骑 2-灵宠 + ("ID", c_int), # 对应坐骑表灵宠表ID + ("SkinIndex", c_ubyte), # 外观索引 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x30 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA5 + self.SubCmd = 0x30 + self.Type = 0 + self.ID = 0 + self.SkinIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMHorsePetSkinSelect) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect: + Cmd:%s, + SubCmd:%s, + Type:%d, + ID:%d, + SkinIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type, + self.ID, + self.SkinIndex + ) + return DumpString + + +m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect + + +#------------------------------------------------------ # A5 27 坐骑提升 #tagCMHorseUp class tagCMHorseUp(Structure): @@ -10188,8 +10508,9 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("RefineNum", c_ushort), # 配方编号 - ("UseRateItem", c_int), # 附加材料ID + ("AlchemyID", c_int), # 丹药ID + ("AlchemyTimes", c_ushort), # 丹药次数 + ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹 ] def __init__(self): @@ -10206,8 +10527,9 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x76 - self.RefineNum = 0 - self.UseRateItem = 0 + self.AlchemyID = 0 + self.AlchemyTimes = 0 + self.DoType = 0 return def GetLength(self): @@ -10220,14 +10542,16 @@ DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine: Cmd:%s, SubCmd:%s, - RefineNum:%d, - UseRateItem:%d + AlchemyID:%d, + AlchemyTimes:%d, + DoType:%d '''\ %( self.Cmd, self.SubCmd, - self.RefineNum, - self.UseRateItem + self.AlchemyID, + self.AlchemyTimes, + self.DoType ) return DumpString @@ -10562,54 +10886,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 #------------------------------------------------------ @@ -10990,6 +11266,62 @@ #------------------------------------------------------ +# A5 16 选择技能五行专精 #tagCMSelectSkillElement + +class tagCMSelectSkillElement(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("SkillTypeID", c_int), # 专精技能ID + ("DoType", c_ubyte), # 0-激活 1-使用 + ] + + 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 + self.DoType = 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, + DoType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.SkillTypeID, + self.DoType + ) + return DumpString + + +m_NAtagCMSelectSkillElement=tagCMSelectSkillElement() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement + + +#------------------------------------------------------ # A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel class tagCMStartBindJadeWheel(Structure): @@ -11083,6 +11415,58 @@ 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 #------------------------------------------------------ @@ -11302,6 +11686,58 @@ #------------------------------------------------------ +# A5 26 寻访仙域 #tagCMVisitFairyDomain + +class tagCMVisitFairyDomain(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ubyte), #0-开始寻访 1-结束寻访 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x26 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA5 + self.SubCmd = 0x26 + self.Type = 0 + return + + def GetLength(self): + return sizeof(tagCMVisitFairyDomain) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain: + Cmd:%s, + SubCmd:%s, + Type:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type + ) + return DumpString + + +m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain + + +#------------------------------------------------------ # A5 1D 法宝佩戴 #tagCMWearMagicWeapon class tagCMWearMagicWeapon(Structure): @@ -11426,6 +11862,83 @@ m_NAtagCMRenameFamily=tagCMRenameFamily() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRenameFamily.Head.Cmd,m_NAtagCMRenameFamily.Head.SubCmd))] = m_NAtagCMRenameFamily + + +#------------------------------------------------------ +# A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange + +class tagCMFamilyActivityExchange(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)//材料所在背包索引的数量 + IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表 + ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA6 + self.Head.SubCmd = 0x06 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.IndexList.append(value) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ItemIDList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA6 + self.Head.SubCmd = 0x06 + self.Count = 0 + self.IndexList = list() + self.ItemIDList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 * self.Count + length += 4 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteWORD(data, self.IndexList[i]) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.ItemIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + IndexList:%s, + ItemIDList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "...", + "..." + ) + return DumpString + + +m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange #------------------------------------------------------ @@ -12679,162 +13192,6 @@ #------------------------------------------------------ -# 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 - - -#------------------------------------------------------ # AB 11 开服活动奖励 #tagCMOpenServerCampaignAward class tagCMOpenServerCampaignAward(Structure): @@ -13711,6 +14068,62 @@ #------------------------------------------------------ +# 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 06 助战召唤 #tagCMHelpBattleCall class tagCMHelpBattleCall(Structure): @@ -13985,7 +14398,7 @@ Head = tagHead() PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数 PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表 - PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表 + PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表 data = None def __init__(self): @@ -14002,7 +14415,7 @@ value,_pos=CommFunc.ReadBYTE(_lpData,_pos) self.PointAttrIDList.append(value) for i in range(self.PointAttrIDCount): - value,_pos=CommFunc.ReadWORD(_lpData,_pos) + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.PointValueList.append(value) return _pos @@ -14021,7 +14434,7 @@ length += self.Head.GetLength() length += 1 length += 1 * self.PointAttrIDCount - length += 2 * self.PointAttrIDCount + length += 4 * self.PointAttrIDCount return length @@ -14032,7 +14445,7 @@ 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]) + data = CommFunc.WriteDWORD(data, self.PointValueList[i]) return data def OutputString(self): @@ -14053,6 +14466,54 @@ 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 #------------------------------------------------------ @@ -14336,6 +14797,174 @@ m_NAtagCMTJGnpc=tagCMTJGnpc() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTJGnpc.Cmd,m_NAtagCMTJGnpc.SubCmd))] = m_NAtagCMTJGnpc + + +#------------------------------------------------------ +# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile + +class tagCMRecyclePriWoodPile(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ObjID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x0F + 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 = 0x0F + self.ObjID = 0 + return + + def GetLength(self): + return sizeof(tagCMRecyclePriWoodPile) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile: + Cmd:%s, + SubCmd:%s, + ObjID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ObjID + ) + return DumpString + + +m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile + + +#------------------------------------------------------ +# B4 0E 玩家掉血 #tagCMRoleLostHP + +class tagCMRoleLostHP(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LostHP", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x0E + 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 = 0x0E + self.LostHP = 0 + return + + def GetLength(self): + return sizeof(tagCMRoleLostHP) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP: + Cmd:%s, + SubCmd:%s, + LostHP:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.LostHP + ) + return DumpString + + +m_NAtagCMRoleLostHP=tagCMRoleLostHP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP + + +#------------------------------------------------------ +# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile + +class tagCMSummonPriWoodPile(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("NPCID", c_int), + ("Count", c_ubyte), #默认1个,最多5个 + ("HP", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量 + ("HPEx", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量 + ] + + 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 + self.HP = 0 + self.HPEx = 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, + HP:%d, + HPEx:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.NPCID, + self.Count, + self.HP, + self.HPEx + ) + return DumpString + + +m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile #------------------------------------------------------ @@ -15116,6 +15745,62 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ #B4 03 吸引NPC仇恨 #tagNPCAttention class tagNPCAttention(Structure): @@ -15445,6 +16130,63 @@ m_NAtagCMSellAuctionItem=tagCMSellAuctionItem() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem + + +#------------------------------------------------------ +# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem + +class tagCMUnsellAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + 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 = 0xB5 + self.Head.SubCmd = 0x15 + 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_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem #------------------------------------------------------ @@ -15784,6 +16526,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("DataMapID", c_int), + ("LineID", c_ushort), ] def __init__(self): @@ -15801,6 +16544,7 @@ self.Cmd = 0xC1 self.SubCmd = 0x05 self.DataMapID = 0 + self.LineID = 0 return def GetLength(self): @@ -15813,12 +16557,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