|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | # 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): | 
|---|