From 655b974b55976ccec7b616993584b6c672ddc986 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 11 一月 2020 18:33:40 +0800 Subject: [PATCH] 8364 【恺英】【后端】缥缈随机任务(缥缈寻访消耗改为扣日常次数) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 1419 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 1,202 insertions(+), 217 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index e56f530..4ffc655 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -1248,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): @@ -1904,6 +1960,115 @@ #------------------------------------------------------ +# B0 13 取消协助Boss #tagCGCancelAssistBoss + +class tagCGCancelAssistBoss(Structure): + Head = tagHead() + AssistGUID = "" #(char AssistGUID[40])//协助GUID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x13 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x13 + self.AssistGUID = "" + 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.AssistGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AssistGUID:%s + '''\ + %( + self.Head.OutputString(), + self.AssistGUID + ) + return DumpString + + +m_NAtagCGCancelAssistBoss=tagCGCancelAssistBoss() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelAssistBoss.Head.Cmd,m_NAtagCGCancelAssistBoss.Head.SubCmd))] = m_NAtagCGCancelAssistBoss + + +#------------------------------------------------------ +# B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift + +class tagCGGetAssistThanksGift(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsPreview", c_ubyte), #是否预览,非预览即确认领取,无额外奖励确认时也需要回复领取包代表已读 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x15 + self.IsPreview = 0 + return + + def GetLength(self): + return sizeof(tagCGGetAssistThanksGift) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 15 接收协助感谢礼物 //tagCGGetAssistThanksGift: + Cmd:%s, + SubCmd:%s, + IsPreview:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsPreview + ) + return DumpString + + +m_NAtagCGGetAssistThanksGift=tagCGGetAssistThanksGift() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetAssistThanksGift.Cmd,m_NAtagCGGetAssistThanksGift.SubCmd))] = m_NAtagCGGetAssistThanksGift + + +#------------------------------------------------------ #B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState class tagQueryFamilyArrestOverState(Structure): @@ -1949,6 +2114,119 @@ m_NAtagQueryFamilyArrestOverState=tagQueryFamilyArrestOverState() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestOverState.Cmd,m_NAtagQueryFamilyArrestOverState.SubCmd))] = m_NAtagQueryFamilyArrestOverState + + +#------------------------------------------------------ +# B0 12 开始协助Boss #tagCGStartAssistBoss + +class tagCGStartAssistBoss(Structure): + Head = tagHead() + AssistGUID = "" #(char AssistGUID[40])//协助GUID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB0 + self.Head.SubCmd = 0x12 + self.AssistGUID = "" + 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.AssistGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AssistGUID:%s + '''\ + %( + self.Head.OutputString(), + self.AssistGUID + ) + return DumpString + + +m_NAtagCGStartAssistBoss=tagCGStartAssistBoss() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGStartAssistBoss.Head.Cmd,m_NAtagCGStartAssistBoss.Head.SubCmd))] = m_NAtagCGStartAssistBoss + + +#------------------------------------------------------ +# B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift + +class tagCGUseAssistThanksGift(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ItemID", c_int), + ("IsPreview", c_ubyte), #是否预览,非预览即确认使用 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x14 + self.ItemID = 0 + self.IsPreview = 0 + return + + def GetLength(self): + return sizeof(tagCGUseAssistThanksGift) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 14 使用协助感谢礼盒 //tagCGUseAssistThanksGift: + Cmd:%s, + SubCmd:%s, + ItemID:%d, + IsPreview:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ItemID, + self.IsPreview + ) + return DumpString + + +m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift #------------------------------------------------------ @@ -5216,6 +5494,54 @@ #------------------------------------------------------ +# A2 08 刷新缥缈任务 #tagCMRefreshPiaomiaoTask + +class tagCMRefreshPiaomiaoTask(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + 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 + return + + def GetLength(self): + return sizeof(tagCMRefreshPiaomiaoTask) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 08 刷新缥缈任务 //tagCMRefreshPiaomiaoTask: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMRefreshPiaomiaoTask=tagCMRefreshPiaomiaoTask() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshPiaomiaoTask.Cmd,m_NAtagCMRefreshPiaomiaoTask.SubCmd))] = m_NAtagCMRefreshPiaomiaoTask + + +#------------------------------------------------------ #A2 02通知选中对象 # tagCMSelectObj class tagCMSelectObj(Structure): @@ -5656,6 +5982,58 @@ m_NAtagCMVoiceChat=tagCMVoiceChat() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVoiceChat.Head.Cmd,m_NAtagCMVoiceChat.Head.SubCmd))] = m_NAtagCMVoiceChat + + +#------------------------------------------------------ +# A2 07 接受任务 #tagCMTakeTask + +class tagCMTakeTask(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TaskID", 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.TaskID = 0 + return + + def GetLength(self): + return sizeof(tagCMTakeTask) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A2 07 接受任务 //tagCMTakeTask: + Cmd:%s, + SubCmd:%s, + TaskID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TaskID + ) + return DumpString + + +m_NAtagCMTakeTask=tagCMTakeTask() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeTask.Cmd,m_NAtagCMTakeTask.SubCmd))] = m_NAtagCMTakeTask #------------------------------------------------------ @@ -6211,6 +6589,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): @@ -6599,62 +7075,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): @@ -6827,6 +7247,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 #------------------------------------------------------ @@ -7295,58 +7767,6 @@ #------------------------------------------------------ -# 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 - - -#------------------------------------------------------ # A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit class tagCMUseAllAttrFruit(Structure): @@ -7526,90 +7946,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): @@ -7669,7 +8005,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("HorseID", c_int), #坐骑ID + ("HorseID", c_int), #坐骑幻化ID ] def __init__(self): @@ -7711,6 +8047,62 @@ m_NAtagPlayerActivateHorse=tagPlayerActivateHorse() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerActivateHorse.Cmd,m_NAtagPlayerActivateHorse.SubCmd))] = m_NAtagPlayerActivateHorse + + +#------------------------------------------------------ +# A5 C7 激活大师强化等级 #tagCMActivateMasterPlusLV + +class tagCMActivateMasterPlusLV(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ClassLV", c_ubyte), # 所属装备阶 + ("MasterPlusLV", c_ushort), # 大师强化等级 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0xC7 + 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 = 0xC7 + self.ClassLV = 0 + self.MasterPlusLV = 0 + return + + def GetLength(self): + return sizeof(tagCMActivateMasterPlusLV) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 C7 激活大师强化等级 //tagCMActivateMasterPlusLV: + Cmd:%s, + SubCmd:%s, + ClassLV:%d, + MasterPlusLV:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ClassLV, + self.MasterPlusLV + ) + return DumpString + + +m_NAtagCMActivateMasterPlusLV=tagCMActivateMasterPlusLV() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateMasterPlusLV.Cmd,m_NAtagCMActivateMasterPlusLV.SubCmd))] = m_NAtagCMActivateMasterPlusLV #------------------------------------------------------ @@ -9276,6 +9668,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): @@ -9295,6 +9688,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): @@ -9306,6 +9700,7 @@ self.CostEquipCnt = 0 self.CostEquipIndex = list() self.CostEquipID = list() + self.AutoBuy = 0 return def GetLength(self): @@ -9315,6 +9710,7 @@ length += 1 length += 2 * self.CostEquipCnt length += 4 * self.CostEquipCnt + length += 1 return length @@ -9327,6 +9723,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): @@ -9335,20 +9732,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 #------------------------------------------------------ @@ -9954,6 +10417,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): @@ -9961,7 +10544,6 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("HorseID", c_int), #坐骑ID ("UseItemCnt", c_ubyte), #消耗材料个数 ("IsAutoBuy", c_ubyte), #是否自动购买 ] @@ -9980,7 +10562,6 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x27 - self.HorseID = 0 self.UseItemCnt = 0 self.IsAutoBuy = 0 return @@ -9995,14 +10576,12 @@ DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp: Cmd:%s, SubCmd:%s, - HorseID:%d, UseItemCnt:%d, IsAutoBuy:%d '''\ %( self.Cmd, self.SubCmd, - self.HorseID, self.UseItemCnt, self.IsAutoBuy ) @@ -10173,7 +10752,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Index", c_int), #选择索引 + ("ChooseType", c_ubyte), # 1-按等阶,2-按幻化 + ("LVID", c_ubyte), # 阶等级或幻化ID ] def __init__(self): @@ -10190,7 +10770,8 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x02 - self.Index = 0 + self.ChooseType = 0 + self.LVID = 0 return def GetLength(self): @@ -10203,12 +10784,14 @@ DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse: Cmd:%s, SubCmd:%s, - Index:%d + ChooseType:%d, + LVID:%d '''\ %( self.Cmd, self.SubCmd, - self.Index + self.ChooseType, + self.LVID ) return DumpString @@ -10304,6 +10887,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("AlchemyID", c_int), # 丹药ID + ("AlchemyTimes", c_ushort), # 丹药次数 ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹 ] @@ -10322,6 +10906,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x76 self.AlchemyID = 0 + self.AlchemyTimes = 0 self.DoType = 0 return @@ -10336,12 +10921,14 @@ Cmd:%s, SubCmd:%s, AlchemyID:%d, + AlchemyTimes:%d, DoType:%d '''\ %( self.Cmd, self.SubCmd, self.AlchemyID, + self.AlchemyTimes, self.DoType ) return DumpString @@ -11653,6 +12240,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 #------------------------------------------------------ @@ -13442,6 +14106,106 @@ #------------------------------------------------------ +# B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish + +class tagCMActivityPlaceQuickFinish(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FinishCount", c_ubyte), #完成次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x28 + self.FinishCount = 0 + return + + def GetLength(self): + return sizeof(tagCMActivityPlaceQuickFinish) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish: + Cmd:%s, + SubCmd:%s, + FinishCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FinishCount + ) + return DumpString + + +m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish + + +#------------------------------------------------------ +# B0 27 活跃放置启动 #tagCMActivityPlaceStart + +class tagCMActivityPlaceStart(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x27 + return + + def GetLength(self): + return sizeof(tagCMActivityPlaceStart) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart + + +#------------------------------------------------------ # B0 50 钓鱼收杆 #tagCMDoFish class tagCMDoFish(Structure): @@ -13595,6 +14359,118 @@ m_NAtagReceiveFamilyArrestAward=tagReceiveFamilyArrestAward() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagReceiveFamilyArrestAward.Cmd,m_NAtagReceiveFamilyArrestAward.SubCmd))] = m_NAtagReceiveFamilyArrestAward + + +#------------------------------------------------------ +# B0 10 请求协助Boss #tagCMRequestAssistBoss + +class tagCMRequestAssistBoss(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ObjID", c_int), + ("NPCID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + self.SubCmd = 0x10 + 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 = 0xB0 + self.SubCmd = 0x10 + self.ObjID = 0 + self.NPCID = 0 + return + + def GetLength(self): + return sizeof(tagCMRequestAssistBoss) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 10 请求协助Boss //tagCMRequestAssistBoss: + Cmd:%s, + SubCmd:%s, + ObjID:%d, + NPCID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ObjID, + self.NPCID + ) + return DumpString + + +m_NAtagCMRequestAssistBoss=tagCMRequestAssistBoss() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistBoss.Cmd,m_NAtagCMRequestAssistBoss.SubCmd))] = m_NAtagCMRequestAssistBoss + + +#------------------------------------------------------ +# B0 11 请求协助组队副本 #tagCMRequestAssistTeamFB + +class tagCMRequestAssistTeamFB(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_ushort), + ("LineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x11 + self.MapID = 0 + self.LineID = 0 + return + + def GetLength(self): + return sizeof(tagCMRequestAssistTeamFB) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 11 请求协助组队副本 //tagCMRequestAssistTeamFB: + Cmd:%s, + SubCmd:%s, + MapID:%d, + LineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.LineID + ) + return DumpString + + +m_NAtagCMRequestAssistTeamFB=tagCMRequestAssistTeamFB() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistTeamFB.Cmd,m_NAtagCMRequestAssistTeamFB.SubCmd))] = m_NAtagCMRequestAssistTeamFB #------------------------------------------------------ @@ -14112,7 +14988,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): @@ -14129,7 +15005,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 @@ -14148,7 +15024,7 @@ length += self.Head.GetLength() length += 1 length += 1 * self.PointAttrIDCount - length += 2 * self.PointAttrIDCount + length += 4 * self.PointAttrIDCount return length @@ -14159,7 +15035,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): @@ -14514,14 +15390,66 @@ #------------------------------------------------------ -# B4 0E 设置玩家自身血量 #tagCMSetRoleHP +# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile -class tagCMSetRoleHP(Structure): +class tagCMRecyclePriWoodPile(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("HP", c_int), + ("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): @@ -14538,31 +15466,31 @@ def Clear(self): self.Cmd = 0xB4 self.SubCmd = 0x0E - self.HP = 0 + self.LostHP = 0 return def GetLength(self): - return sizeof(tagCMSetRoleHP) + return sizeof(tagCMRoleLostHP) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): - DumpString = '''// B4 0E 设置玩家自身血量 //tagCMSetRoleHP: + DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP: Cmd:%s, SubCmd:%s, - HP:%d + LostHP:%d '''\ %( self.Cmd, self.SubCmd, - self.HP + self.LostHP ) return DumpString -m_NAtagCMSetRoleHP=tagCMSetRoleHP() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetRoleHP.Cmd,m_NAtagCMSetRoleHP.SubCmd))] = m_NAtagCMSetRoleHP +m_NAtagCMRoleLostHP=tagCMRoleLostHP() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP #------------------------------------------------------ @@ -15795,6 +16723,63 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): -- Gitblit v1.8.0