From 34fec42a90f2b3f726afa3e104e3e3112d9dc819 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 26 五月 2021 11:41:12 +0800 Subject: [PATCH] 8921 【主干】【BT2】【后端】H.活动-节日活动-垃圾分类(1.删除引导任务;2.环保抽奖改为独立的活动仙匣秘境;3.活动结束销毁剩余垃圾物品、重置祝福值;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 535 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 288 insertions(+), 247 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 219c323..ea699ce 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -24638,203 +24638,7 @@ #------------------------------------------------------ -# AA 57 垃圾收集活动玩家信息 #tagMCActGarbagePlayerInfo - -class tagMCActGarbageAwardItemResult(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库 - ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同 - ("ItemCount", c_ushort), - ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中; - ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0 - ] - - 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.ItemLibType = 0 - self.ItemID = 0 - self.ItemCount = 0 - self.PosNum = 0 - self.TotalTimesNow = 0 - return - - def GetLength(self): - return sizeof(tagMCActGarbageAwardItemResult) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 57 垃圾收集活动玩家信息 //tagMCActGarbagePlayerInfo: - ItemLibType:%d, - ItemID:%d, - ItemCount:%d, - PosNum:%d, - TotalTimesNow:%d - '''\ - %( - self.ItemLibType, - self.ItemID, - self.ItemCount, - self.PosNum, - self.TotalTimesNow - ) - return DumpString - - -class tagMCActGarbagePlayerInfo(Structure): - Head = tagHead() - ActNum = 0 #(BYTE ActNum)//活动编号 - GuideTaskFinish = 0 #(BYTE GuideTaskFinish)//引导任务是否已完成,有需要NPC对话引导任务时,则需要先完成才显示活动界面 - EnvironmentValue = 0 #(DWORD EnvironmentValue)//当前可用环保值 - EnvironmentValueHis = 0 #(DWORD EnvironmentValueHis)//历史环保值 - AwardItemResult=tagMCActGarbageAwardItemResult() #(tagMCActGarbageAwardItemResult AwardItemResult)//本次抽奖结果物品信息,可能为空 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x57 - 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.GuideTaskFinish,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.EnvironmentValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.EnvironmentValueHis,_pos = CommFunc.ReadDWORD(_lpData, _pos) - _pos = self.AwardItemResult.ReadData(_lpData,_pos) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAA - self.Head.SubCmd = 0x57 - self.ActNum = 0 - self.GuideTaskFinish = 0 - self.EnvironmentValue = 0 - self.EnvironmentValueHis = 0 - self.AwardItemResult=tagMCActGarbageAwardItemResult() - self.AwardItemResult.Clear() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - length += 4 - length += 4 - length += self.AwardItemResult.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.GuideTaskFinish) - data = CommFunc.WriteDWORD(data, self.EnvironmentValue) - data = CommFunc.WriteDWORD(data, self.EnvironmentValueHis) - data = CommFunc.WriteString(data,self.AwardItemResult.GetLength(),self.AwardItemResult.GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ActNum:%d, - GuideTaskFinish:%d, - EnvironmentValue:%d, - EnvironmentValueHis:%d, - AwardItemResult:%s - '''\ - %( - self.Head.OutputString(), - self.ActNum, - self.GuideTaskFinish, - self.EnvironmentValue, - self.EnvironmentValueHis, - self.AwardItemResult.OutputString() - ) - return DumpString - - -m_NAtagMCActGarbagePlayerInfo=tagMCActGarbagePlayerInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbagePlayerInfo.Head.Cmd,m_NAtagMCActGarbagePlayerInfo.Head.SubCmd))] = m_NAtagMCActGarbagePlayerInfo - - -#------------------------------------------------------ # AA 55 垃圾收集活动信息 #tagMCActGarbageSortingInfo - -class tagMCActGarbageAwardItem(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库 - ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同 - ("ItemCount", c_ushort), - ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中; - ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0 - ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限 - ("LayerLimit", c_ubyte), #大于等于X层后可产出,0不限 - ] - - 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.ItemLibType = 0 - self.ItemID = 0 - self.ItemCount = 0 - self.PosNum = 0 - self.TotalTimesNow = 0 - self.TotalTimesMax = 0 - self.LayerLimit = 0 - return - - def GetLength(self): - return sizeof(tagMCActGarbageAwardItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 55 垃圾收集活动信息 //tagMCActGarbageSortingInfo: - ItemLibType:%d, - ItemID:%d, - ItemCount:%d, - PosNum:%d, - TotalTimesNow:%d, - TotalTimesMax:%d, - LayerLimit:%d - '''\ - %( - self.ItemLibType, - self.ItemID, - self.ItemCount, - self.PosNum, - self.TotalTimesNow, - self.TotalTimesMax, - self.LayerLimit - ) - return DumpString - class tagMCActGarbageSortingInfo(Structure): Head = tagHead() @@ -24842,12 +24646,7 @@ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d LimitLV = 0 #(WORD LimitLV)// 限制等级 - LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层 - AwardItemCount = 0 #(BYTE AwardItemCount) - AwardItemList = list() #(vector<tagMCActGarbageAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品 - SuperItemCount = 0 #(BYTE SuperItemCount) - SuperItemList = list() #(vector<tagMCActGarbageAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品; - SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置 data = None def __init__(self): @@ -24863,18 +24662,7 @@ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.AwardItemCount): - temAwardItemList = tagMCActGarbageAwardItem() - _pos = temAwardItemList.ReadData(_lpData, _pos) - self.AwardItemList.append(temAwardItemList) - self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.SuperItemCount): - temSuperItemList = tagMCActGarbageAwardItem() - _pos = temSuperItemList.ReadData(_lpData, _pos) - self.SuperItemList.append(temSuperItemList) - self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -24886,12 +24674,7 @@ self.StartDate = "" self.EndtDate = "" self.LimitLV = 0 - self.LayerNum = 0 - self.AwardItemCount = 0 - self.AwardItemList = list() - self.SuperItemCount = 0 - self.SuperItemList = list() - self.SuperItemCanChooseCount = 0 + self.ResetType = 0 return def GetLength(self): @@ -24901,13 +24684,6 @@ length += 10 length += 10 length += 2 - length += 1 - length += 1 - for i in range(self.AwardItemCount): - length += self.AwardItemList[i].GetLength() - length += 1 - for i in range(self.SuperItemCount): - length += self.SuperItemList[i].GetLength() length += 1 return length @@ -24919,14 +24695,7 @@ data = CommFunc.WriteString(data, 10, self.StartDate) data = CommFunc.WriteString(data, 10, self.EndtDate) data = CommFunc.WriteWORD(data, self.LimitLV) - data = CommFunc.WriteBYTE(data, self.LayerNum) - data = CommFunc.WriteBYTE(data, self.AwardItemCount) - for i in range(self.AwardItemCount): - data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) - data = CommFunc.WriteBYTE(data, self.SuperItemCount) - for i in range(self.SuperItemCount): - data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer()) - data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount) + data = CommFunc.WriteBYTE(data, self.ResetType) return data def OutputString(self): @@ -24936,12 +24705,7 @@ StartDate:%s, EndtDate:%s, LimitLV:%d, - LayerNum:%d, - AwardItemCount:%d, - AwardItemList:%s, - SuperItemCount:%d, - SuperItemList:%s, - SuperItemCanChooseCount:%d + ResetType:%d '''\ %( self.Head.OutputString(), @@ -24949,12 +24713,7 @@ self.StartDate, self.EndtDate, self.LimitLV, - self.LayerNum, - self.AwardItemCount, - "...", - self.SuperItemCount, - "...", - self.SuperItemCanChooseCount + self.ResetType ) return DumpString @@ -27934,6 +27693,288 @@ #------------------------------------------------------ +# AA 59 仙匣秘境抽奖结果 #tagMCActXianXiaMJAwardItemResult + +class tagMCActXianXiaMJAwardItemResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), # 活动编号 + ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库 + ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同 + ("ItemCount", c_ushort), + ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中; + ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x59 + 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 = 0x59 + self.ActNum = 0 + self.ItemLibType = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.PosNum = 0 + self.TotalTimesNow = 0 + return + + def GetLength(self): + return sizeof(tagMCActXianXiaMJAwardItemResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 59 仙匣秘境抽奖结果 //tagMCActXianXiaMJAwardItemResult: + Cmd:%s, + SubCmd:%s, + ActNum:%d, + ItemLibType:%d, + ItemID:%d, + ItemCount:%d, + PosNum:%d, + TotalTimesNow:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActNum, + self.ItemLibType, + self.ItemID, + self.ItemCount, + self.PosNum, + self.TotalTimesNow + ) + return DumpString + + +m_NAtagMCActXianXiaMJAwardItemResult=tagMCActXianXiaMJAwardItemResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJAwardItemResult.Cmd,m_NAtagMCActXianXiaMJAwardItemResult.SubCmd))] = m_NAtagMCActXianXiaMJAwardItemResult + + +#------------------------------------------------------ +# AA 58 仙匣秘境活动信息 #tagMCActXianXiaMJInfo + +class tagMCActXianXiaMJAwardItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemLibType", c_ubyte), #物品库类型;9-固定为大奖库,非9-策划自定义库 + ("ItemID", c_int), # 注意: 不同库物品ID可能相同,但个数不同 + ("ItemCount", c_ushort), + ("PosNum", c_ubyte), # 被抽中时的位置编号,1~99,前端自定义展示位置编号,0代表未被抽中; + ("TotalTimesNow", c_ubyte), #当前已产出次数,不限制次数时不记录,即同样为0 + ("TotalTimesMax", c_ubyte), #最大可产出次数,0不限 + ("LayerLimit", c_ubyte), #大于等于X层后可产出,0不限 + ] + + 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.ItemLibType = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.PosNum = 0 + self.TotalTimesNow = 0 + self.TotalTimesMax = 0 + self.LayerLimit = 0 + return + + def GetLength(self): + return sizeof(tagMCActXianXiaMJAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 58 仙匣秘境活动信息 //tagMCActXianXiaMJInfo: + ItemLibType:%d, + ItemID:%d, + ItemCount:%d, + PosNum:%d, + TotalTimesNow:%d, + TotalTimesMax:%d, + LayerLimit:%d + '''\ + %( + self.ItemLibType, + self.ItemID, + self.ItemCount, + self.PosNum, + self.TotalTimesNow, + self.TotalTimesMax, + self.LayerLimit + ) + return DumpString + + +class tagMCActXianXiaMJInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + LimitLV = 0 #(WORD LimitLV)// 限制等级 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置 + MoneyType = 0 #(BYTE MoneyType)//消耗货币类型 + MoneyValue = 0 #(WORD MoneyValue)//消耗货币值 + LayerNum = 0 #(BYTE LayerNum)//当前奖池第几层 + AwardItemCount = 0 #(BYTE AwardItemCount) + AwardItemList = list() #(vector<tagMCActXianXiaMJAwardItem> AwardItemList)// 奖池物品列表,已生成的,包含已选择的大奖物品 + SuperItemCount = 0 #(BYTE SuperItemCount) + SuperItemList = list() #(vector<tagMCActXianXiaMJAwardItem> SuperItemList)// 大奖物品待选择库,由玩家从库中选择放入奖池的物品; + SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 大奖物品可选择个数 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x58 + 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.LayerNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardItemCount): + temAwardItemList = tagMCActXianXiaMJAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SuperItemCount): + temSuperItemList = tagMCActXianXiaMJAwardItem() + _pos = temSuperItemList.ReadData(_lpData, _pos) + self.SuperItemList.append(temSuperItemList) + self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x58 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.LimitLV = 0 + self.ResetType = 0 + self.MoneyType = 0 + self.MoneyValue = 0 + self.LayerNum = 0 + self.AwardItemCount = 0 + self.AwardItemList = list() + self.SuperItemCount = 0 + self.SuperItemList = list() + self.SuperItemCanChooseCount = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 2 + length += 1 + length += 1 + length += 2 + length += 1 + length += 1 + for i in range(self.AwardItemCount): + length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.SuperItemCount): + length += self.SuperItemList[i].GetLength() + length += 1 + + 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.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteBYTE(data, self.MoneyType) + data = CommFunc.WriteWORD(data, self.MoneyValue) + data = CommFunc.WriteBYTE(data, self.LayerNum) + data = CommFunc.WriteBYTE(data, self.AwardItemCount) + for i in range(self.AwardItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.SuperItemCount) + for i in range(self.SuperItemCount): + data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + LimitLV:%d, + ResetType:%d, + MoneyType:%d, + MoneyValue:%d, + LayerNum:%d, + AwardItemCount:%d, + AwardItemList:%s, + SuperItemCount:%d, + SuperItemList:%s, + SuperItemCanChooseCount:%d + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.LimitLV, + self.ResetType, + self.MoneyType, + self.MoneyValue, + self.LayerNum, + self.AwardItemCount, + "...", + self.SuperItemCount, + "...", + self.SuperItemCanChooseCount + ) + return DumpString + + +m_NAtagMCActXianXiaMJInfo=tagMCActXianXiaMJInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJInfo.Head.Cmd,m_NAtagMCActXianXiaMJInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJInfo + + +#------------------------------------------------------ # AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo class tagMCAllPeoplePartyCount(Structure): -- Gitblit v1.8.0