From a3fbff8a36974ed768a55eadd353f3d3752f5699 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 04 六月 2024 17:54:28 +0800 Subject: [PATCH] 10173 【主干】【香港】【越南】BOSS凭证(新增任务活动) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 418 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 75209c9..446c1d7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -33422,6 +33422,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), # 活动编号 ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取 ] @@ -33439,6 +33440,7 @@ def Clear(self): self.Cmd = 0xAA self.SubCmd = 0x70 + self.ActNum = 0 self.LoginAward = 0 return @@ -33452,11 +33454,13 @@ DumpString = '''// AA 70 登录活动玩家信息新 //tagMCActLoginPlayerInfoNew: Cmd:%s, SubCmd:%s, + ActNum:%d, LoginAward:%d '''\ %( self.Cmd, self.SubCmd, + self.ActNum, self.LoginAward ) return DumpString @@ -34792,6 +34796,420 @@ #------------------------------------------------------ +# AA 71 任务活动信息 #tagMCActTaskInfo + +class tagMCActTaskItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), + ] + + def __init__(self): + self.Clear() + 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.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCActTaskItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 71 任务活动信息 //tagMCActTaskInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActTask(Structure): + TaskID = 0 #(DWORD TaskID)// 任务ID,1~n + TaskType = 0 #(BYTE TaskType)// 任务类型 + NeedValue = 0 #(DWORD NeedValue)// 完成任务所需值 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActTaskItem> AwardItemList)// 奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.TaskID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TaskType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCActTaskItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.TaskID = 0 + self.TaskType = 0 + self.NeedValue = 0 + self.Count = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.TaskID) + data = CommFunc.WriteBYTE(data, self.TaskType) + data = CommFunc.WriteDWORD(data, self.NeedValue) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + TaskID:%d, + TaskType:%d, + NeedValue:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.TaskID, + self.TaskType, + self.NeedValue, + self.Count, + "..." + ) + return DumpString + + +class tagMCActTaskInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + TaskCount = 0 #(BYTE TaskCount) + TaskList = list() #(vector<tagMCActTask> TaskList)// 任务列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x71 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TaskCount): + temTaskList = tagMCActTask() + _pos = temTaskList.ReadData(_lpData, _pos) + self.TaskList.append(temTaskList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x71 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.IsDayReset = 0 + self.ResetType = 0 + self.LimitLV = 0 + self.TaskCount = 0 + self.TaskList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 1 + length += 1 + length += 2 + length += 1 + for i in range(self.TaskCount): + length += self.TaskList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.IsDayReset) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.TaskCount) + for i in range(self.TaskCount): + data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + IsDayReset:%d, + ResetType:%d, + LimitLV:%d, + TaskCount:%d, + TaskList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.IsDayReset, + self.ResetType, + self.LimitLV, + self.TaskCount, + "..." + ) + return DumpString + + +m_NAtagMCActTaskInfo=tagMCActTaskInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskInfo.Head.Cmd,m_NAtagMCActTaskInfo.Head.SubCmd))] = m_NAtagMCActTaskInfo + + +#------------------------------------------------------ +# AA 73 任务活动玩家信息 #tagMCActTaskPlayerInfo + +class tagMCActTaskPlayerInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + AwardCount = 0 #(BYTE AwardCount) + AwardRecordList = list() #(vector<DWORD> AwardRecordList)// 任务ID领奖记录值列表,根据任务ID位判断是否已领取,一个记录值存31位 [记录值0, 记录值1, ...] + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x73 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.AwardRecordList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x73 + self.ActNum = 0 + self.AwardCount = 0 + self.AwardRecordList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 4 * self.AwardCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteBYTE(data, self.AwardCount) + for i in range(self.AwardCount): + data = CommFunc.WriteDWORD(data, self.AwardRecordList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + AwardCount:%d, + AwardRecordList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.AwardCount, + "..." + ) + return DumpString + + +m_NAtagMCActTaskPlayerInfo=tagMCActTaskPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskPlayerInfo.Head.Cmd,m_NAtagMCActTaskPlayerInfo.Head.SubCmd))] = m_NAtagMCActTaskPlayerInfo + + +#------------------------------------------------------ +# AA 72 任务活动玩家任务值 #tagMCActTaskPlayerValueInfo + +class tagMCActTaskPlayerValue(Structure): + _pack_ = 1 + _fields_ = [ + ("TaskType", c_ubyte), # 任务类型 + ("TaskValue", c_int), # 当前任务值,所有相同任务类型共享该进度值 + ] + + def __init__(self): + self.Clear() + 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.TaskType = 0 + self.TaskValue = 0 + return + + def GetLength(self): + return sizeof(tagMCActTaskPlayerValue) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 72 任务活动玩家任务值 //tagMCActTaskPlayerValueInfo: + TaskType:%d, + TaskValue:%d + '''\ + %( + self.TaskType, + self.TaskValue + ) + return DumpString + + +class tagMCActTaskPlayerValueInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + TaskCount = 0 #(BYTE TaskCount) + TaskValueList = list() #(vector<tagMCActTaskPlayerValue> TaskValueList)// 有同步的任务类型直接覆盖即可 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x72 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TaskCount): + temTaskValueList = tagMCActTaskPlayerValue() + _pos = temTaskValueList.ReadData(_lpData, _pos) + self.TaskValueList.append(temTaskValueList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x72 + self.ActNum = 0 + self.TaskCount = 0 + self.TaskValueList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + for i in range(self.TaskCount): + length += self.TaskValueList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + data = CommFunc.WriteBYTE(data, self.TaskCount) + for i in range(self.TaskCount): + data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + TaskCount:%d, + TaskValueList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.TaskCount, + "..." + ) + return DumpString + + +m_NAtagMCActTaskPlayerValueInfo=tagMCActTaskPlayerValueInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTaskPlayerValueInfo.Head.Cmd,m_NAtagMCActTaskPlayerValueInfo.Head.SubCmd))] = m_NAtagMCActTaskPlayerValueInfo + + +#------------------------------------------------------ # AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo class tagMCTotalRechargeAwardItem(Structure): -- Gitblit v1.8.0