From cc1dc60daab5a6a9c2f1aa23c10736af2227d521 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 04 三月 2021 14:05:52 +0800 Subject: [PATCH] 8650 【主干】【BT2】活动规则优化(多活动支持的改为单表模式,增加活动分组编号字段区分不同的活动编号;常规活动改为不受合服影响,合服活动独立出来;累计充值活动、集字活动适配为新模式); --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 2322 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 1,988 insertions(+), 334 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 5c15b7e..9fdde86 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -1248,6 +1248,110 @@ #------------------------------------------------------ +# 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 A8 查看竞技场对战记录 #tagCGQueryArenaBattleRecord + +class tagCGQueryArenaBattleRecord(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA9 + self.SubCmd = 0xA8 + 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 = 0xA8 + return + + def GetLength(self): + return sizeof(tagCGQueryArenaBattleRecord) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 A8 查看竞技场对战记录 //tagCGQueryArenaBattleRecord: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCGQueryArenaBattleRecord=tagCGQueryArenaBattleRecord() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryArenaBattleRecord.Cmd,m_NAtagCGQueryArenaBattleRecord.SubCmd))] = m_NAtagCGQueryArenaBattleRecord + + +#------------------------------------------------------ # A9 04 查询boss信息 #tagCGQueryBossInfo class tagCGQueryBossInfo(Structure): @@ -1360,6 +1464,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 #------------------------------------------------------ @@ -1847,6 +2008,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): @@ -1892,6 +2162,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 #------------------------------------------------------ @@ -3232,6 +3615,58 @@ #------------------------------------------------------ +# B9 11 请求加入队伍 #tagCGRequestJoinTeam + +class tagCGRequestJoinTeam(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TeamID", c_int), # 目标队伍ID + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + 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 = 0xB9 + self.SubCmd = 0x11 + self.TeamID = 0 + return + + def GetLength(self): + return sizeof(tagCGRequestJoinTeam) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 11 请求加入队伍 //tagCGRequestJoinTeam: + Cmd:%s, + SubCmd:%s, + TeamID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TeamID + ) + return DumpString + + +m_NAtagCGRequestJoinTeam=tagCGRequestJoinTeam() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGRequestJoinTeam.Cmd,m_NAtagCGRequestJoinTeam.SubCmd))] = m_NAtagCGRequestJoinTeam + + +#------------------------------------------------------ # B9 09 队员进入副本准备选择 #tagCGTeamMemberPrepare class tagCGTeamMemberPrepare(Structure): @@ -3332,6 +3767,66 @@ #------------------------------------------------------ +# C0 04 查看跨服排行榜 #tagCGViewCrossBillboard + +class tagCGViewCrossBillboard(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Type", c_ubyte), #榜单类型 + ("GroupValue1", c_ubyte), # 分组值1 + ("GroupValue2", c_ubyte), # 分组值2,与分组值1组合归为同组榜单数据 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x04 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xC0 + self.SubCmd = 0x04 + self.Type = 0 + self.GroupValue1 = 0 + self.GroupValue2 = 0 + return + + def GetLength(self): + return sizeof(tagCGViewCrossBillboard) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 04 查看跨服排行榜 //tagCGViewCrossBillboard: + Cmd:%s, + SubCmd:%s, + Type:%d, + GroupValue1:%d, + GroupValue2:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Type, + self.GroupValue1, + self.GroupValue2 + ) + return DumpString + + +m_NAtagCGViewCrossBillboard=tagCGViewCrossBillboard() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewCrossBillboard.Cmd,m_NAtagCGViewCrossBillboard.SubCmd))] = m_NAtagCGViewCrossBillboard + + +#------------------------------------------------------ # C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard class tagCGViewCrossPKBillboard(Structure): @@ -3396,6 +3891,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("PlayerID", c_int), # 跨服玩家ID + ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息 ] def __init__(self): @@ -3413,6 +3909,7 @@ self.Cmd = 0xC0 self.SubCmd = 0x02 self.PlayerID = 0 + self.EquipClassLV = 0 return def GetLength(self): @@ -3425,12 +3922,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 @@ -3557,6 +4056,58 @@ m_NAtagCMPCInfo=tagCMPCInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo + + +#------------------------------------------------------ +# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount + +class tagCMQueryCoinToGoldCount(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("RecordID", c_ubyte), #充值记录ID,也就是充值ID,发0则查全部 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA1 + self.SubCmd = 0x23 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA1 + self.SubCmd = 0x23 + self.RecordID = 0 + return + + def GetLength(self): + return sizeof(tagCMQueryCoinToGoldCount) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A1 23 查询充值次数 //tagCMQueryCoinToGoldCount: + Cmd:%s, + SubCmd:%s, + RecordID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.RecordID + ) + return DumpString + + +m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount #------------------------------------------------------ @@ -5598,6 +6149,58 @@ #------------------------------------------------------ +# 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 + + +#------------------------------------------------------ #A2 12 查看玩家详细信息#tagCMViewPlayerInfo class tagCMViewPlayerInfo(Structure): @@ -6150,6 +6753,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): @@ -6538,62 +7239,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): @@ -6722,6 +7367,7 @@ ("SubCmd", c_ubyte), ("PackType", c_ubyte), #背包类型 ("ItemIndex", c_ubyte), #物品在背包中索引 + ("IsAll", c_ubyte), #是否处理所有过期物品 ] def __init__(self): @@ -6740,6 +7386,7 @@ self.SubCmd = 0x08 self.PackType = 0 self.ItemIndex = 0 + self.IsAll = 0 return def GetLength(self): @@ -6753,19 +7400,73 @@ Cmd:%s, SubCmd:%s, PackType:%d, - ItemIndex:%d + ItemIndex:%d, + IsAll:%d '''\ %( self.Cmd, self.SubCmd, self.PackType, - self.ItemIndex + self.ItemIndex, + self.IsAll ) return DumpString 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 #------------------------------------------------------ @@ -7234,58 +7935,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): @@ -7465,90 +8114,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): @@ -7608,7 +8173,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("HorseID", c_int), #坐骑ID + ("HorseID", c_int), #坐骑幻化ID ] def __init__(self): @@ -7650,6 +8215,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 #------------------------------------------------------ @@ -9215,6 +9836,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): @@ -9234,6 +9856,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): @@ -9245,6 +9868,7 @@ self.CostEquipCnt = 0 self.CostEquipIndex = list() self.CostEquipID = list() + self.AutoBuy = 0 return def GetLength(self): @@ -9254,6 +9878,7 @@ length += 1 length += 2 * self.CostEquipCnt length += 4 * self.CostEquipCnt + length += 1 return length @@ -9266,6 +9891,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): @@ -9274,20 +9900,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 #------------------------------------------------------ @@ -9677,6 +10369,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("SuccID", c_int), #成就ID + ("IsPassport", c_ubyte), #是否通行证奖励 ] def __init__(self): @@ -9694,6 +10387,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x42 self.SuccID = 0 + self.IsPassport = 0 return def GetLength(self): @@ -9706,12 +10400,14 @@ DumpString = '''// A5 42 领取成就奖励 //tagMCGetSuccessAward: Cmd:%s, SubCmd:%s, - SuccID:%d + SuccID:%d, + IsPassport:%d '''\ %( self.Cmd, self.SubCmd, - self.SuccID + self.SuccID, + self.IsPassport ) return DumpString @@ -9893,6 +10589,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): @@ -9900,8 +10716,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("HorseID", c_int), #坐骑ID - ("UseItemCnt", c_ubyte), #消耗材料个数 + ("UseItemCnt", c_ushort), #消耗材料个数 ("IsAutoBuy", c_ubyte), #是否自动购买 ] @@ -9919,7 +10734,6 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x27 - self.HorseID = 0 self.UseItemCnt = 0 self.IsAutoBuy = 0 return @@ -9934,14 +10748,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 ) @@ -10112,7 +10924,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Index", c_int), #选择索引 + ("ChooseType", c_ubyte), # 1-按等阶,2-按幻化 + ("LVID", c_ubyte), # 阶等级或幻化ID ] def __init__(self): @@ -10129,7 +10942,8 @@ def Clear(self): self.Cmd = 0xA5 self.SubCmd = 0x02 - self.Index = 0 + self.ChooseType = 0 + self.LVID = 0 return def GetLength(self): @@ -10142,12 +10956,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 @@ -10243,6 +11059,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("AlchemyID", c_int), # 丹药ID + ("AlchemyTimes", c_ushort), # 丹药次数 ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹 ] @@ -10261,6 +11078,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x76 self.AlchemyID = 0 + self.AlchemyTimes = 0 self.DoType = 0 return @@ -10275,12 +11093,14 @@ Cmd:%s, SubCmd:%s, AlchemyID:%d, + AlchemyTimes:%d, DoType:%d '''\ %( self.Cmd, self.SubCmd, self.AlchemyID, + self.AlchemyTimes, self.DoType ) return DumpString @@ -11004,6 +11824,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("SkillTypeID", c_int), # 专精技能ID + ("DoType", c_ubyte), # 0-激活 1-使用 ] def __init__(self): @@ -11021,6 +11842,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x16 self.SkillTypeID = 0 + self.DoType = 0 return def GetLength(self): @@ -11033,12 +11855,14 @@ DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement: Cmd:%s, SubCmd:%s, - SkillTypeID:%d + SkillTypeID:%d, + DoType:%d '''\ %( self.Cmd, self.SubCmd, - self.SkillTypeID + self.SkillTypeID, + self.DoType ) return DumpString @@ -11588,6 +12412,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 #------------------------------------------------------ @@ -12357,6 +13258,62 @@ #------------------------------------------------------ +# AA 09 集字活动兑换 #tagCMActCollectWordsExchange + +class tagCMActCollectWordsExchange(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), #活动编号,1 或 2,相互独立的活动,可同时开启 + ("ExchangeNum", c_ubyte), #兑换编号 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x09 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xAA + self.SubCmd = 0x09 + self.ActNum = 0 + self.ExchangeNum = 0 + return + + def GetLength(self): + return sizeof(tagCMActCollectWordsExchange) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 09 集字活动兑换 //tagCMActCollectWordsExchange: + Cmd:%s, + SubCmd:%s, + ActNum:%d, + ExchangeNum:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActNum, + self.ExchangeNum + ) + return DumpString + + +m_NAtagCMActCollectWordsExchange=tagCMActCollectWordsExchange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActCollectWordsExchange.Cmd,m_NAtagCMActCollectWordsExchange.SubCmd))] = m_NAtagCMActCollectWordsExchange + + +#------------------------------------------------------ # AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh class tagCMActWishingRefresh(Structure): @@ -12470,6 +13427,114 @@ m_NAtagCMActWishing=tagCMActWishing() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing + + +#------------------------------------------------------ +# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem + +class tagCMFeastWishBottleChooseItem(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BottleNum", c_ubyte), #瓶子编号 + ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + 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 = 0xAA + self.SubCmd = 0x10 + self.BottleNum = 0 + self.RecordIndex = 0 + return + + def GetLength(self): + return sizeof(tagCMFeastWishBottleChooseItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem: + Cmd:%s, + SubCmd:%s, + BottleNum:%d, + RecordIndex:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BottleNum, + self.RecordIndex + ) + return DumpString + + +m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem + + +#------------------------------------------------------ +# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish + +class tagCMFeastWishPoolWish(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("WishCount", c_ubyte), #祝福次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + 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 = 0xAA + self.SubCmd = 0x11 + self.WishCount = 0 + return + + def GetLength(self): + return sizeof(tagCMFeastWishPoolWish) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish: + Cmd:%s, + SubCmd:%s, + WishCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.WishCount + ) + return DumpString + + +m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish #------------------------------------------------------ @@ -13377,6 +14442,154 @@ #------------------------------------------------------ +# B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery + +class tagCMActivityPlaceQuery(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB0 + 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 = 0xB0 + self.SubCmd = 0x29 + return + + def GetLength(self): + return sizeof(tagCMActivityPlaceQuery) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery + + +#------------------------------------------------------ +# 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): @@ -13530,6 +14743,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 #------------------------------------------------------ @@ -13773,62 +15098,6 @@ #------------------------------------------------------ -# B1 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize - -class tagCMGiveCustomFBPrize(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MapID", c_int), - ("FuncLineID", c_ushort), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB1 - self.SubCmd = 0x09 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xB1 - self.SubCmd = 0x09 - self.MapID = 0 - self.FuncLineID = 0 - return - - def GetLength(self): - return sizeof(tagCMGiveCustomFBPrize) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize: - Cmd:%s, - SubCmd:%s, - MapID:%d, - FuncLineID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.MapID, - self.FuncLineID - ) - return DumpString - - -m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize - - -#------------------------------------------------------ # B1 06 助战召唤 #tagCMHelpBattleCall class tagCMHelpBattleCall(Structure): @@ -14045,62 +15314,6 @@ #------------------------------------------------------ -# B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize - -class tagCMRefreshCustomFBPrize(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("MapID", c_int), - ("FuncLineID", c_ushort), - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB1 - self.SubCmd = 0x08 - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.Cmd = 0xB1 - self.SubCmd = 0x08 - self.MapID = 0 - self.FuncLineID = 0 - return - - def GetLength(self): - return sizeof(tagCMRefreshCustomFBPrize) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize: - Cmd:%s, - SubCmd:%s, - MapID:%d, - FuncLineID:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.MapID, - self.FuncLineID - ) - return DumpString - - -m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize - - -#------------------------------------------------------ # B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble class tagCMSetFMTDouble(Structure): @@ -14159,7 +15372,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): @@ -14176,7 +15389,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 @@ -14195,7 +15408,7 @@ length += self.Head.GetLength() length += 1 length += 1 * self.PointAttrIDCount - length += 2 * self.PointAttrIDCount + length += 4 * self.PointAttrIDCount return length @@ -14206,7 +15419,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): @@ -14227,6 +15440,162 @@ m_NAtagCMAddPoint=tagCMAddPoint() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint + + +#------------------------------------------------------ +# B2 10 竞技场挑战玩家 #tagCMArenaBattle + +class tagCMArenaBattle(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TagPlayerID", c_int), # 目标玩家ID或机器人ID + ("Result", c_ubyte), # 0-进入自定义场景发送通知后端;1-胜利(后端处理,暂时不需要发送此状态);2-失败(前端被对手击杀需要发送此状态) + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + 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 = 0xB2 + self.SubCmd = 0x10 + self.TagPlayerID = 0 + self.Result = 0 + return + + def GetLength(self): + return sizeof(tagCMArenaBattle) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 10 竞技场挑战玩家 //tagCMArenaBattle: + Cmd:%s, + SubCmd:%s, + TagPlayerID:%d, + Result:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TagPlayerID, + self.Result + ) + return DumpString + + +m_NAtagCMArenaBattle=tagCMArenaBattle() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaBattle.Cmd,m_NAtagCMArenaBattle.SubCmd))] = m_NAtagCMArenaBattle + + +#------------------------------------------------------ +# B2 09 竞技场匹配玩家 #tagCMArenaMatch + +class tagCMArenaMatch(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("IsRefresh", c_ubyte), # 0-打开界面无匹配数据时时查询,1-强制刷新匹配列表 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x09 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB2 + self.SubCmd = 0x09 + self.IsRefresh = 0 + return + + def GetLength(self): + return sizeof(tagCMArenaMatch) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 09 竞技场匹配玩家 //tagCMArenaMatch: + Cmd:%s, + SubCmd:%s, + IsRefresh:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.IsRefresh + ) + return DumpString + + +m_NAtagCMArenaMatch=tagCMArenaMatch() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMArenaMatch.Cmd,m_NAtagCMArenaMatch.SubCmd))] = m_NAtagCMArenaMatch + + +#------------------------------------------------------ +# 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 #------------------------------------------------------ @@ -14510,6 +15879,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 #------------------------------------------------------ @@ -15290,6 +16827,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): @@ -15362,7 +16955,7 @@ class tagCMBiddingAuctionItem(Structure): Head = tagHead() ItemGUID = "" #(char ItemGUID[40]) - BiddingPrice = 0 #(WORD BiddingPrice)//竞价价格 + BiddingPrice = 0 #(DWORD BiddingPrice)//竞价价格 data = None def __init__(self): @@ -15375,7 +16968,7 @@ self.Clear() _pos = self.Head.ReadData(_lpData, _pos) self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) - self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BiddingPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -15391,7 +16984,7 @@ length = 0 length += self.Head.GetLength() length += 40 - length += 2 + length += 4 return length @@ -15399,7 +16992,7 @@ data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteString(data, 40, self.ItemGUID) - data = CommFunc.WriteWORD(data, self.BiddingPrice) + data = CommFunc.WriteDWORD(data, self.BiddingPrice) return data def OutputString(self): @@ -15578,6 +17171,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("ItemIndex", c_ubyte), #物品在背包中索引 + ("SellCount", c_ushort), #上架个数,0代表全部上架 ] def __init__(self): @@ -15595,6 +17189,7 @@ self.Cmd = 0xB5 self.SubCmd = 0x13 self.ItemIndex = 0 + self.SellCount = 0 return def GetLength(self): @@ -15607,12 +17202,14 @@ DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem: Cmd:%s, SubCmd:%s, - ItemIndex:%d + ItemIndex:%d, + SellCount:%d '''\ %( self.Cmd, self.SubCmd, - self.ItemIndex + self.ItemIndex, + self.SellCount ) return DumpString @@ -15622,6 +17219,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