From e5a52d63b822c0c8624ef45a05a3656fae22d303 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 08 十二月 2020 18:54:10 +0800 Subject: [PATCH] 8605 【港台】【BT】【长尾】【后端】新增限时集字活动 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 347 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index fdee8be..cdcc800 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -23884,6 +23884,353 @@ #------------------------------------------------------ +# AA 40 集字活动信息 #tagMCActCollectWordsInfo + +class tagMCActCollectWordsNeedItem(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(tagMCActCollectWordsNeedItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActCollectWordsExchangeItem(Structure): + ExchangeNum = 0 #(BYTE ExchangeNum)//兑换编号 + ExchangeCountMax = 0 #(BYTE ExchangeCountMax)//最大兑换次数,0不限制 + ItemID = 0 #(DWORD ItemID)//目标物品 + ItemCount = 0 #(WORD ItemCount) + IsBind = 0 #(BYTE IsBind) + NeedItemCount = 0 #(BYTE NeedItemCount) + NeedItemList = list() #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NeedItemCount): + temNeedItemList = tagMCActCollectWordsNeedItem() + _pos = temNeedItemList.ReadData(_lpData, _pos) + self.NeedItemList.append(temNeedItemList) + return _pos + + def Clear(self): + self.ExchangeNum = 0 + self.ExchangeCountMax = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + self.NeedItemCount = 0 + self.NeedItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 4 + length += 2 + length += 1 + length += 1 + for i in range(self.NeedItemCount): + length += self.NeedItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.ExchangeNum) + data = CommFunc.WriteBYTE(data, self.ExchangeCountMax) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteWORD(data, self.ItemCount) + data = CommFunc.WriteBYTE(data, self.IsBind) + data = CommFunc.WriteBYTE(data, self.NeedItemCount) + for i in range(self.NeedItemCount): + data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + ExchangeNum:%d, + ExchangeCountMax:%d, + ItemID:%d, + ItemCount:%d, + IsBind:%d, + NeedItemCount:%d, + NeedItemList:%s + '''\ + %( + self.ExchangeNum, + self.ExchangeCountMax, + self.ItemID, + self.ItemCount, + self.IsBind, + self.NeedItemCount, + "..." + ) + return DumpString + + +class tagMCActCollectWordsInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + LimitLV = 0 #(WORD LimitLV)// 限制等级 + LastDayOnlyExchange = 0 #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换 + ExchangeCount = 0 #(BYTE ExchangeCount) + ExchangeItemList = list() #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x40 + 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.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ExchangeCount): + temExchangeItemList = tagMCActCollectWordsExchangeItem() + _pos = temExchangeItemList.ReadData(_lpData, _pos) + self.ExchangeItemList.append(temExchangeItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x40 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.LimitLV = 0 + self.LastDayOnlyExchange = 0 + self.ExchangeCount = 0 + self.ExchangeItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 2 + length += 1 + length += 1 + for i in range(self.ExchangeCount): + length += self.ExchangeItemList[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.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.LastDayOnlyExchange) + data = CommFunc.WriteBYTE(data, self.ExchangeCount) + for i in range(self.ExchangeCount): + data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + LimitLV:%d, + LastDayOnlyExchange:%d, + ExchangeCount:%d, + ExchangeItemList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.LimitLV, + self.LastDayOnlyExchange, + self.ExchangeCount, + "..." + ) + return DumpString + + +m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo + + +#------------------------------------------------------ +# AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo + +class tagMCActCollectWordsExchangeInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("ExchangeNum", c_ubyte), #兑换编号 + ("ExchangeCount", c_ushort), #已兑换次数 + ] + + 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.ExchangeNum = 0 + self.ExchangeCount = 0 + return + + def GetLength(self): + return sizeof(tagMCActCollectWordsExchangeInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo: + ExchangeNum:%d, + ExchangeCount:%d + '''\ + %( + self.ExchangeNum, + self.ExchangeCount + ) + return DumpString + + +class tagMCActCollectWordsPlayerInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启 + ExchangeCount = 0 #(BYTE ExchangeCount) + ExchangeInfoList = list() #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x41 + 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.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ExchangeCount): + temExchangeInfoList = tagMCActCollectWordsExchangeInfo() + _pos = temExchangeInfoList.ReadData(_lpData, _pos) + self.ExchangeInfoList.append(temExchangeInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x41 + self.ActNum = 0 + self.ExchangeCount = 0 + self.ExchangeInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + for i in range(self.ExchangeCount): + length += self.ExchangeInfoList[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.ExchangeCount) + for i in range(self.ExchangeCount): + data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + ExchangeCount:%d, + ExchangeInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.ExchangeCount, + "..." + ) + return DumpString + + +m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo + + +#------------------------------------------------------ # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo class tagMCActLoginAwardAction(Structure): -- Gitblit v1.8.0