From c32b4159c5f33b4badd3d5f2a2c06923dda55ec4 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 09 二月 2021 10:59:09 +0800 Subject: [PATCH] 8716 【主干】【后端】【BT2】H.活动-节日祈愿(节日登录优化已登录天不限制领取天); --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2413 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 2,389 insertions(+), 24 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 4b0337e..51c31cb 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -1402,7 +1402,7 @@ Time = 0 #(DWORD Time)//时间 PlayeJob = 0 #(BYTE PlayeJob)//玩家职业 MoneyType = 0 #(BYTE MoneyType)//金钱类型 - MoneyNum = 0 #(WORD MoneyNum)//金钱数量 + MoneyNum = 0 #(DWORD MoneyNum)//金钱数量 GetWay = 0 #(BYTE GetWay)//获得途径 PacketCnt = 0 #(BYTE PacketCnt)//可抢个数 State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完 @@ -1421,7 +1421,7 @@ self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos) @@ -1450,7 +1450,7 @@ length += 4 length += 1 length += 1 - length += 2 + length += 4 length += 1 length += 1 length += 1 @@ -1466,7 +1466,7 @@ data = CommFunc.WriteDWORD(data, self.Time) data = CommFunc.WriteBYTE(data, self.PlayeJob) data = CommFunc.WriteBYTE(data, self.MoneyType) - data = CommFunc.WriteWORD(data, self.MoneyNum) + data = CommFunc.WriteDWORD(data, self.MoneyNum) data = CommFunc.WriteBYTE(data, self.GetWay) data = CommFunc.WriteBYTE(data, self.PacketCnt) data = CommFunc.WriteBYTE(data, self.State) @@ -5067,6 +5067,70 @@ #------------------------------------------------------ +# AC 12 跨服运营活动结束 # tagGCCrossActEnd + +class tagGCCrossActEnd(Structure): + Head = tagHead() + ActNameLen = 0 #(BYTE ActNameLen) + ActName = "" #(String ActName) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAC + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ActName,_pos = CommFunc.ReadString(_lpData, _pos,self.ActNameLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAC + self.Head.SubCmd = 0x12 + self.ActNameLen = 0 + self.ActName = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.ActName) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNameLen) + data = CommFunc.WriteString(data, self.ActNameLen, self.ActName) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNameLen:%d, + ActName:%s + '''\ + %( + self.Head.OutputString(), + self.ActNameLen, + self.ActName + ) + return DumpString + + +m_NAtagGCCrossActEnd=tagGCCrossActEnd() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActEnd.Head.Cmd,m_NAtagGCCrossActEnd.Head.SubCmd))] = m_NAtagGCCrossActEnd + + +#------------------------------------------------------ # AC 09 仙界盛典活动信息 #tagGCFairyCeremonyInfo class tagGCFairyCeremonyInfo(Structure): @@ -8180,7 +8244,7 @@ ItemID = 0 #(DWORD ItemID) ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss - BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 @@ -8197,7 +8261,7 @@ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) @@ -8222,7 +8286,7 @@ length += 4 length += 2 length += 19 - length += 2 + length += 4 length += 19 length += 2 length += len(self.UserData) @@ -8236,7 +8300,7 @@ data = CommFunc.WriteDWORD(data, self.ItemID) data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) - data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteDWORD(data, self.BidderPrice) data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) @@ -8343,7 +8407,7 @@ ItemID = 0 #(DWORD ItemID) ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss - BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 @@ -8360,7 +8424,7 @@ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) @@ -8385,7 +8449,7 @@ length += 4 length += 2 length += 19 - length += 2 + length += 4 length += 19 length += 2 length += len(self.UserData) @@ -8399,7 +8463,7 @@ data = CommFunc.WriteDWORD(data, self.ItemID) data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) - data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteDWORD(data, self.BidderPrice) data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) @@ -8583,7 +8647,7 @@ ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID - BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 @@ -8601,7 +8665,7 @@ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) @@ -8628,7 +8692,7 @@ length += 2 length += 19 length += 4 - length += 2 + length += 4 length += 19 length += 2 length += len(self.UserData) @@ -8643,7 +8707,7 @@ data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) data = CommFunc.WriteDWORD(data, self.BidderID) - data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteDWORD(data, self.BidderPrice) data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) @@ -8927,7 +8991,7 @@ ItemID = 0 #(DWORD ItemID) ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss - BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 @@ -8947,7 +9011,7 @@ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) @@ -8978,7 +9042,7 @@ length += 4 length += 2 length += 19 - length += 2 + length += 4 length += 19 length += 2 length += len(self.UserData) @@ -8995,7 +9059,7 @@ data = CommFunc.WriteDWORD(data, self.ItemID) data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) - data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteDWORD(data, self.BidderPrice) data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) @@ -9111,7 +9175,7 @@ ItemID = 0 #(DWORD ItemID) ItemCount = 0 #(WORD ItemCount) AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss - BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + BidderPrice = 0 #(DWORD BidderPrice)//竞拍玩家出价 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss UserDataLen = 0 #(WORD UserDataLen) UserData = "" #(String UserData)//自定义数据 @@ -9128,7 +9192,7 @@ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19) self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) @@ -9153,7 +9217,7 @@ length += 4 length += 2 length += 19 - length += 2 + length += 4 length += 19 length += 2 length += len(self.UserData) @@ -9167,7 +9231,7 @@ data = CommFunc.WriteDWORD(data, self.ItemID) data = CommFunc.WriteWORD(data, self.ItemCount) data = CommFunc.WriteString(data, 19, self.AddTime) - data = CommFunc.WriteWORD(data, self.BidderPrice) + data = CommFunc.WriteDWORD(data, self.BidderPrice) data = CommFunc.WriteString(data, 19, self.BiddingTime) data = CommFunc.WriteWORD(data, self.UserDataLen) data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) @@ -11037,6 +11101,190 @@ m_NAtagGCTeamMemFuncDataList=tagGCTeamMemFuncDataList() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeamMemFuncDataList.Head.Cmd,m_NAtagGCTeamMemFuncDataList.Head.SubCmd))] = m_NAtagGCTeamMemFuncDataList + + +#------------------------------------------------------ +# C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo + +class tagGCCrossBillboardData(Structure): + ID = 0 #(DWORD ID) + Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 + Name2 = "" #(char Name2[33])//名字2 + Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 + Value1 = 0 #(DWORD Value1)//自定义值1 + Value2 = 0 #(DWORD Value2)//自定义值2 + CmpValue = 0 #(DWORD CmpValue)// 比较权值 + CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值 + CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.ID = 0 + self.Name1 = "" + self.Name2 = "" + self.Type2 = 0 + self.Value1 = 0 + self.Value2 = 0 + self.CmpValue = 0 + self.CmpValue2 = 0 + self.CmpValue3 = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 33 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.ID) + data = CommFunc.WriteString(data, 33, self.Name1) + data = CommFunc.WriteString(data, 33, self.Name2) + data = CommFunc.WriteBYTE(data, self.Type2) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.CmpValue) + data = CommFunc.WriteDWORD(data, self.CmpValue2) + data = CommFunc.WriteDWORD(data, self.CmpValue3) + return data + + def OutputString(self): + DumpString = ''' + ID:%d, + Name1:%s, + Name2:%s, + Type2:%d, + Value1:%d, + Value2:%d, + CmpValue:%d, + CmpValue2:%d, + CmpValue3:%d + '''\ + %( + self.ID, + self.Name1, + self.Name2, + self.Type2, + self.Value1, + self.Value2, + self.CmpValue, + self.CmpValue2, + self.CmpValue3 + ) + return DumpString + + +class tagGCCrossBillboardInfo(Structure): + Head = tagHead() + Type = 0 #(BYTE Type)//榜单类型 + GroupValue1 = 0 #(BYTE GroupValue1)// 分组值1 + GroupValue2 = 0 #(BYTE GroupValue2)// 分组值2,与分组值1组合归为同组榜单数据 + BillboardCount = 0 #(BYTE BillboardCount) + CrossBillboardDataList = list() #(vector<tagGCCrossBillboardData> CrossBillboardDataList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x07 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GroupValue2,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BillboardCount): + temCrossBillboardDataList = tagGCCrossBillboardData() + _pos = temCrossBillboardDataList.ReadData(_lpData, _pos) + self.CrossBillboardDataList.append(temCrossBillboardDataList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x07 + self.Type = 0 + self.GroupValue1 = 0 + self.GroupValue2 = 0 + self.BillboardCount = 0 + self.CrossBillboardDataList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 1 + length += 1 + for i in range(self.BillboardCount): + length += self.CrossBillboardDataList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Type) + data = CommFunc.WriteBYTE(data, self.GroupValue1) + data = CommFunc.WriteBYTE(data, self.GroupValue2) + data = CommFunc.WriteBYTE(data, self.BillboardCount) + for i in range(self.BillboardCount): + data = CommFunc.WriteString(data, self.CrossBillboardDataList[i].GetLength(), self.CrossBillboardDataList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Type:%d, + GroupValue1:%d, + GroupValue2:%d, + BillboardCount:%d, + CrossBillboardDataList:%s + '''\ + %( + self.Head.OutputString(), + self.Type, + self.GroupValue1, + self.GroupValue2, + self.BillboardCount, + "..." + ) + return DumpString + + +m_NAtagGCCrossBillboardInfo=tagGCCrossBillboardInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBillboardInfo.Head.Cmd,m_NAtagGCCrossBillboardInfo.Head.SubCmd))] = m_NAtagGCCrossBillboardInfo #------------------------------------------------------ @@ -13879,6 +14127,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("IsReset", c_ubyte), #是否是重置的 ("Score", c_int), #当前积分 ("BattleCountToday", c_ubyte), #今日已挑战次数 ("MatchRefreshCount", c_ubyte), #当前已刷新匹配列表次数,每次挑战后会重置 @@ -13899,6 +14148,7 @@ def Clear(self): self.Cmd = 0xA3 self.SubCmd = 0xC3 + self.IsReset = 0 self.Score = 0 self.BattleCountToday = 0 self.MatchRefreshCount = 0 @@ -13915,6 +14165,7 @@ DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo: Cmd:%s, SubCmd:%s, + IsReset:%d, Score:%d, BattleCountToday:%d, MatchRefreshCount:%d, @@ -13923,6 +14174,7 @@ %( self.Cmd, self.SubCmd, + self.IsReset, self.Score, self.BattleCountToday, self.MatchRefreshCount, @@ -23880,6 +24132,593 @@ #------------------------------------------------------ +# 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 31 成长必买活动信息 #tagMCActGrowupBuyInfo + +class tagMCActGrowupBuyCTGItem(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(tagMCActGrowupBuyCTGItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 31 成长必买活动信息 //tagMCActGrowupBuyInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActGrowupBuyCTGInfo(Structure): + CTGID = 0 #(BYTE CTGID)// 充值表ID + GainItemCount = 0 #(BYTE GainItemCount)// 获得物品数 + GainItemList = list() #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.CTGID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GainItemCount): + temGainItemList = tagMCActGrowupBuyCTGItem() + _pos = temGainItemList.ReadData(_lpData, _pos) + self.GainItemList.append(temGainItemList) + return _pos + + def Clear(self): + self.CTGID = 0 + self.GainItemCount = 0 + self.GainItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + for i in range(self.GainItemCount): + length += self.GainItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.CTGID) + data = CommFunc.WriteBYTE(data, self.GainItemCount) + for i in range(self.GainItemCount): + data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + CTGID:%d, + GainItemCount:%d, + GainItemList:%s + '''\ + %( + self.CTGID, + self.GainItemCount, + "..." + ) + return DumpString + + +class tagMCActGrowupBuyGroup(Structure): + BuyCount = 0 #(BYTE BuyCount)// 循环购买礼包数 + BuyCTGIDList = list() #(vector<tagMCActGrowupBuyCTGInfo> BuyCTGIDList)// 循环购买礼包充值ID信息列表 + PlayerBuyIndex = 0 #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BuyCount): + temBuyCTGIDList = tagMCActGrowupBuyCTGInfo() + _pos = temBuyCTGIDList.ReadData(_lpData, _pos) + self.BuyCTGIDList.append(temBuyCTGIDList) + self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.BuyCount = 0 + self.BuyCTGIDList = list() + self.PlayerBuyIndex = 0 + return + + def GetLength(self): + length = 0 + length += 1 + for i in range(self.BuyCount): + length += self.BuyCTGIDList[i].GetLength() + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.BuyCount) + for i in range(self.BuyCount): + data = CommFunc.WriteString(data, self.BuyCTGIDList[i].GetLength(), self.BuyCTGIDList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex) + return data + + def OutputString(self): + DumpString = ''' + BuyCount:%d, + BuyCTGIDList:%s, + PlayerBuyIndex:%d + '''\ + %( + self.BuyCount, + "...", + self.PlayerBuyIndex + ) + return DumpString + + +class tagMCActGrowupBuyInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + GroupCount = 0 #(BYTE GroupCount)// 循环购买礼包组数 + GroupList = list() #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x31 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GroupCount): + temGroupList = tagMCActGrowupBuyGroup() + _pos = temGroupList.ReadData(_lpData, _pos) + self.GroupList.append(temGroupList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x31 + self.StartDate = "" + self.EndtDate = "" + self.GroupCount = 0 + self.GroupList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + for i in range(self.GroupCount): + length += self.GroupList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.GroupCount) + for i in range(self.GroupCount): + data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + GroupCount:%d, + GroupList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.GroupCount, + "..." + ) + return DumpString + + +m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo + + +#------------------------------------------------------ # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo class tagMCActLoginAwardAction(Structure): @@ -24651,6 +25490,7 @@ class tagMCActTotalRechargeInfo(Structure): Head = tagHead() + ActNum = 0 #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2 StartDate = "" #(char StartDate[10])// 开始日期 y-m-d EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置 @@ -24668,6 +25508,7 @@ 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) @@ -24684,6 +25525,7 @@ self.Head.Clear() self.Head.Cmd = 0xAA self.Head.SubCmd = 0x1D + self.ActNum = 0 self.StartDate = "" self.EndtDate = "" self.IsDayReset = 0 @@ -24695,6 +25537,7 @@ def GetLength(self): length = 0 length += self.Head.GetLength() + length += 1 length += 10 length += 10 length += 1 @@ -24708,6 +25551,7 @@ 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) @@ -24720,6 +25564,7 @@ def OutputString(self): DumpString = ''' Head:%s, + ActNum:%d, StartDate:%s, EndtDate:%s, IsDayReset:%d, @@ -24729,6 +25574,7 @@ '''\ %( self.Head.OutputString(), + self.ActNum, self.StartDate, self.EndtDate, self.IsDayReset, @@ -25310,6 +26156,427 @@ m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo + + +#------------------------------------------------------ +# AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo + +class tagMCCACTGBillboardAwardItem(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(tagMCCACTGBillboardAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCCACTGBillboardDabiao(Structure): + AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31 + NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB + AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardItemCount): + temAwardItemList = tagMCCACTGBillboardAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.AwardIndex = 0 + self.NeedRMB = 0 + self.AwardItemCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 4 + length += 1 + for i in range(self.AwardItemCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.AwardIndex) + data = CommFunc.WriteDWORD(data, self.NeedRMB) + data = CommFunc.WriteBYTE(data, self.AwardItemCount) + for i in range(self.AwardItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + AwardIndex:%d, + NeedRMB:%d, + AwardItemCount:%d, + AwardItemList:%s + '''\ + %( + self.AwardIndex, + self.NeedRMB, + self.AwardItemCount, + "..." + ) + return DumpString + + +class tagMCCACTGBillboardOrder(Structure): + OrderA = 0 #(BYTE OrderA)// 名次A + OrderB = 0 #(BYTE OrderB)// 至名次B + NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延 + AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardItemCount): + temAwardItemList = tagMCCACTGBillboardAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.OrderA = 0 + self.OrderB = 0 + self.NeedRMB = 0 + self.AwardItemCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 4 + length += 1 + for i in range(self.AwardItemCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.OrderA) + data = CommFunc.WriteBYTE(data, self.OrderB) + data = CommFunc.WriteDWORD(data, self.NeedRMB) + data = CommFunc.WriteBYTE(data, self.AwardItemCount) + for i in range(self.AwardItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + OrderA:%d, + OrderB:%d, + NeedRMB:%d, + AwardItemCount:%d, + AwardItemList:%s + '''\ + %( + self.OrderA, + self.OrderB, + self.NeedRMB, + self.AwardItemCount, + "..." + ) + return DumpString + + +class tagMCCACTGBillboardTempInfo(Structure): + TemplateID = 0 #(BYTE TemplateID)// 活动模板ID + DabiaoAwardCount = 0 #(BYTE DabiaoAwardCount)// 达标奖励档数 + DabiaoAwardInfo = list() #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息 + OrderAwardCount = 0 #(BYTE OrderAwardCount)// 排行奖励档数 + OrderAwardInfo = list() #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.DabiaoAwardCount): + temDabiaoAwardInfo = tagMCCACTGBillboardDabiao() + _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos) + self.DabiaoAwardInfo.append(temDabiaoAwardInfo) + self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.OrderAwardCount): + temOrderAwardInfo = tagMCCACTGBillboardOrder() + _pos = temOrderAwardInfo.ReadData(_lpData, _pos) + self.OrderAwardInfo.append(temOrderAwardInfo) + return _pos + + def Clear(self): + self.TemplateID = 0 + self.DabiaoAwardCount = 0 + self.DabiaoAwardInfo = list() + self.OrderAwardCount = 0 + self.OrderAwardInfo = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + for i in range(self.DabiaoAwardCount): + length += self.DabiaoAwardInfo[i].GetLength() + length += 1 + for i in range(self.OrderAwardCount): + length += self.OrderAwardInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.TemplateID) + data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount) + for i in range(self.DabiaoAwardCount): + data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.OrderAwardCount) + for i in range(self.OrderAwardCount): + data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + TemplateID:%d, + DabiaoAwardCount:%d, + DabiaoAwardInfo:%s, + OrderAwardCount:%d, + OrderAwardInfo:%s + '''\ + %( + self.TemplateID, + self.DabiaoAwardCount, + "...", + self.OrderAwardCount, + "..." + ) + return DumpString + + +class tagMCCACTGBillboardInfo(Structure): + Head = tagHead() + ServerInfoLen = 0 #(BYTE ServerInfoLen) + ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服 + GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + TemplateID = 0 #(BYTE TemplateID)// 当前活动模板ID + TemplateCount = 0 #(BYTE TemplateCount) + TempInfo = list() #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x32 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen) + self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TemplateCount): + temTempInfo = tagMCCACTGBillboardTempInfo() + _pos = temTempInfo.ReadData(_lpData, _pos) + self.TempInfo.append(temTempInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x32 + self.ServerInfoLen = 0 + self.ServerIDRangeInfo = "" + self.GroupValue1 = 0 + self.StartDate = "" + self.EndtDate = "" + self.TemplateID = 0 + self.TemplateCount = 0 + self.TempInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.ServerIDRangeInfo) + length += 1 + length += 10 + length += 10 + length += 1 + length += 1 + for i in range(self.TemplateCount): + length += self.TempInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ServerInfoLen) + data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo) + data = CommFunc.WriteBYTE(data, self.GroupValue1) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.TemplateID) + data = CommFunc.WriteBYTE(data, self.TemplateCount) + for i in range(self.TemplateCount): + data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ServerInfoLen:%d, + ServerIDRangeInfo:%s, + GroupValue1:%d, + StartDate:%s, + EndtDate:%s, + TemplateID:%d, + TemplateCount:%d, + TempInfo:%s + '''\ + %( + self.Head.OutputString(), + self.ServerInfoLen, + self.ServerIDRangeInfo, + self.GroupValue1, + self.StartDate, + self.EndtDate, + self.TemplateID, + self.TemplateCount, + "..." + ) + return DumpString + + +m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo + + +#------------------------------------------------------ +# AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo + +class tagMCCACTGBillboardPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("CTGRMBTotal", c_int), # 活动已累计充值RMB + ("DabiaoAwardRecord", c_int), # 达标奖励记录,与达标奖励索引位或运算判断是否已领取 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x33 + 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 = 0x33 + self.CTGRMBTotal = 0 + self.DabiaoAwardRecord = 0 + return + + def GetLength(self): + return sizeof(tagMCCACTGBillboardPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo: + Cmd:%s, + SubCmd:%s, + CTGRMBTotal:%d, + DabiaoAwardRecord:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.CTGRMBTotal, + self.DabiaoAwardRecord + ) + return DumpString + + +m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo #------------------------------------------------------ @@ -25976,6 +27243,692 @@ #------------------------------------------------------ +# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo + +class tagMCFeastLoginDayAwardItem(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(tagMCFeastLoginDayAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCFeastLoginDayAward(Structure): + DayNum = 0 #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励 + AwardCount = 0 #(BYTE AwardCount) + AwardItemList = list() #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardCount): + temAwardItemList = tagMCFeastLoginDayAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.DayNum = 0 + self.AwardCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + for i in range(self.AwardCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.DayNum) + data = CommFunc.WriteBYTE(data, self.AwardCount) + for i in range(self.AwardCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + DayNum:%d, + AwardCount:%d, + AwardItemList:%s + '''\ + %( + self.DayNum, + self.AwardCount, + "..." + ) + return DumpString + + +class tagMCFeastLoginInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + DayCount = 0 #(BYTE DayCount)// 总共几天 + DayAwardList = list() #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x42 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.DayCount): + temDayAwardList = tagMCFeastLoginDayAward() + _pos = temDayAwardList.ReadData(_lpData, _pos) + self.DayAwardList.append(temDayAwardList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x42 + self.StartDate = "" + self.EndtDate = "" + self.DayCount = 0 + self.DayAwardList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + for i in range(self.DayCount): + length += self.DayAwardList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.DayCount) + for i in range(self.DayCount): + data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + DayCount:%d, + DayAwardList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.DayCount, + "..." + ) + return DumpString + + +m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo + + +#------------------------------------------------------ +# AA 39 节日登录奖励活动玩家信息 #tagMCFeastLoginPlayerInfo + +class tagMCFeastLoginPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LoginState", c_int), # 是否已登录,按天索引0代表第1天记录当天是否已登录 + ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x39 + 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 = 0x39 + self.LoginState = 0 + self.LoginAward = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastLoginPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 39 节日登录奖励活动玩家信息 //tagMCFeastLoginPlayerInfo: + Cmd:%s, + SubCmd:%s, + LoginState:%d, + LoginAward:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.LoginState, + self.LoginAward + ) + return DumpString + + +m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo + + +#------------------------------------------------------ +# AA 46 节日游历活动信息 #tagMCFeastTravelInfo + +class tagMCFeastTravelAwardItem(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(tagMCFeastTravelAwardItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCFeastTravelAward(Structure): + AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引 + NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值 + AwardCountMax = 0 #(BYTE AwardCountMax)//最大可领取次数,0代表不限 + AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数 + AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardItemCount): + temAwardItemList = tagMCFeastTravelAwardItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.AwardIndex = 0 + self.NeedTravelPoint = 0 + self.AwardCountMax = 0 + self.AwardItemCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 2 + length += 1 + length += 1 + for i in range(self.AwardItemCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.AwardIndex) + data = CommFunc.WriteWORD(data, self.NeedTravelPoint) + data = CommFunc.WriteBYTE(data, self.AwardCountMax) + data = CommFunc.WriteBYTE(data, self.AwardItemCount) + for i in range(self.AwardItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + AwardIndex:%d, + NeedTravelPoint:%d, + AwardCountMax:%d, + AwardItemCount:%d, + AwardItemList:%s + '''\ + %( + self.AwardIndex, + self.NeedTravelPoint, + self.AwardCountMax, + self.AwardItemCount, + "..." + ) + return DumpString + + +class tagMCFeastTravelTask(Structure): + _pack_ = 1 + _fields_ = [ + ("TravelTaskID", c_ubyte), #游历任务ID + ("FinishNeedValue", c_ushort), #单次完成所需进度 + ("FinishTimeMax", c_ubyte), #最大可完成次数,0代表不限 + ("AddTravelPoint", 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.TravelTaskID = 0 + self.FinishNeedValue = 0 + self.FinishTimeMax = 0 + self.AddTravelPoint = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastTravelTask) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo: + TravelTaskID:%d, + FinishNeedValue:%d, + FinishTimeMax:%d, + AddTravelPoint:%d + '''\ + %( + self.TravelTaskID, + self.FinishNeedValue, + self.FinishTimeMax, + self.AddTravelPoint + ) + return DumpString + + +class tagMCFeastTravelInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置 + TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数 + TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表 + TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数 + TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x46 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TravelTaskCount): + temTravelTaskList = tagMCFeastTravelTask() + _pos = temTravelTaskList.ReadData(_lpData, _pos) + self.TravelTaskList.append(temTravelTaskList) + self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TravelAwardCount): + temTravelAwardList = tagMCFeastTravelAward() + _pos = temTravelAwardList.ReadData(_lpData, _pos) + self.TravelAwardList.append(temTravelAwardList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x46 + self.StartDate = "" + self.EndtDate = "" + self.ResetType = 0 + self.TravelTaskCount = 0 + self.TravelTaskList = list() + self.TravelAwardCount = 0 + self.TravelAwardList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + length += 1 + for i in range(self.TravelTaskCount): + length += self.TravelTaskList[i].GetLength() + length += 1 + for i in range(self.TravelAwardCount): + length += self.TravelAwardList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteBYTE(data, self.TravelTaskCount) + for i in range(self.TravelTaskCount): + data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TravelAwardCount) + for i in range(self.TravelAwardCount): + data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + ResetType:%d, + TravelTaskCount:%d, + TravelTaskList:%s, + TravelAwardCount:%d, + TravelAwardList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.ResetType, + self.TravelTaskCount, + "...", + self.TravelAwardCount, + "..." + ) + return DumpString + + +m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo + + +#------------------------------------------------------ +# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo + +class tagMCFeastTravelPlayerAward(Structure): + _pack_ = 1 + _fields_ = [ + ("AwardIndex", c_ubyte), #游历奖励索引 + ("GetAwardCount", c_ubyte), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值 + ] + + 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.AwardIndex = 0 + self.GetAwardCount = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastTravelPlayerAward) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo: + AwardIndex:%d, + GetAwardCount:%d + '''\ + %( + self.AwardIndex, + self.GetAwardCount + ) + return DumpString + + +class tagMCFeastTravelPlayerTask(Structure): + _pack_ = 1 + _fields_ = [ + ("TravelTaskID", c_ubyte), #游历任务ID + ("TravelValue", c_int), #当前进度值,一直累加 + ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(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.TravelTaskID = 0 + self.TravelValue = 0 + self.FinishCount = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastTravelPlayerTask) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo: + TravelTaskID:%d, + TravelValue:%d, + FinishCount:%d + '''\ + %( + self.TravelTaskID, + self.TravelValue, + self.FinishCount + ) + return DumpString + + +class tagMCFeastTravelPlayerInfo(Structure): + Head = tagHead() + TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的 + TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可 + TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表 + TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可 + TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x47 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TravelPlayerTaskCount): + temTravelPlayerTaskList = tagMCFeastTravelPlayerTask() + _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos) + self.TravelPlayerTaskList.append(temTravelPlayerTaskList) + self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TravelPlayerAwardCount): + temTravelPlayerAwardList = tagMCFeastTravelPlayerAward() + _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos) + self.TravelPlayerAwardList.append(temTravelPlayerAwardList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x47 + self.TravelPoint = 0 + self.TravelPlayerTaskCount = 0 + self.TravelPlayerTaskList = list() + self.TravelPlayerAwardCount = 0 + self.TravelPlayerAwardList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.TravelPlayerTaskCount): + length += self.TravelPlayerTaskList[i].GetLength() + length += 1 + for i in range(self.TravelPlayerAwardCount): + length += self.TravelPlayerAwardList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.TravelPoint) + data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount) + for i in range(self.TravelPlayerTaskCount): + data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount) + for i in range(self.TravelPlayerAwardCount): + data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + TravelPoint:%d, + TravelPlayerTaskCount:%d, + TravelPlayerTaskList:%s, + TravelPlayerAwardCount:%d, + TravelPlayerAwardList:%s + '''\ + %( + self.Head.OutputString(), + self.TravelPoint, + self.TravelPlayerTaskCount, + "...", + self.TravelPlayerAwardCount, + "..." + ) + return DumpString + + +m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo + + +#------------------------------------------------------ # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo class tagMCFeastWeekPartyItem(Structure): @@ -26485,6 +28438,414 @@ m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo + + +#------------------------------------------------------ +# AA 43 节日祝福活动信息 #tagMCFeastWishInfo + +class tagMCFeastWishBottleItem(Structure): + _pack_ = 1 + _fields_ = [ + ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择 + ("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.RecordIndex = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastWishBottleItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo: + RecordIndex:%d, + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.RecordIndex, + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCFeastWishBottleInfo(Structure): + BottleNum = 0 #(BYTE BottleNum)//瓶子编号 + NeedWishValue = 0 #(WORD NeedWishValue)//单次领奖所需祝福值 + ChooseTimeMax = 0 #(BYTE ChooseTimeMax)//最大可领奖次数 + ChoosePrizeCount = 0 #(BYTE ChoosePrizeCount)//可选择奖励个数 + ChoosePrizeList = list() #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ChoosePrizeCount): + temChoosePrizeList = tagMCFeastWishBottleItem() + _pos = temChoosePrizeList.ReadData(_lpData, _pos) + self.ChoosePrizeList.append(temChoosePrizeList) + return _pos + + def Clear(self): + self.BottleNum = 0 + self.NeedWishValue = 0 + self.ChooseTimeMax = 0 + self.ChoosePrizeCount = 0 + self.ChoosePrizeList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 2 + length += 1 + length += 1 + for i in range(self.ChoosePrizeCount): + length += self.ChoosePrizeList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.BottleNum) + data = CommFunc.WriteWORD(data, self.NeedWishValue) + data = CommFunc.WriteBYTE(data, self.ChooseTimeMax) + data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount) + for i in range(self.ChoosePrizeCount): + data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + BottleNum:%d, + NeedWishValue:%d, + ChooseTimeMax:%d, + ChoosePrizeCount:%d, + ChoosePrizeList:%s + '''\ + %( + self.BottleNum, + self.NeedWishValue, + self.ChooseTimeMax, + self.ChoosePrizeCount, + "..." + ) + return DumpString + + +class tagMCFeastWishInfo(Structure): + Head = tagHead() + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置 + WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数 + WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表 + BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数 + BottleInfoList = list() #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x43 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.WishPoolShowCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.WishPoolShowItemList.append(value) + self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BottleCount): + temBottleInfoList = tagMCFeastWishBottleInfo() + _pos = temBottleInfoList.ReadData(_lpData, _pos) + self.BottleInfoList.append(temBottleInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x43 + self.StartDate = "" + self.EndtDate = "" + self.ResetType = 0 + self.WishPoolShowCount = 0 + self.WishPoolShowItemList = list() + self.BottleCount = 0 + self.BottleInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + length += 1 + length += 4 * self.WishPoolShowCount + length += 1 + for i in range(self.BottleCount): + length += self.BottleInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteBYTE(data, self.WishPoolShowCount) + for i in range(self.WishPoolShowCount): + data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i]) + data = CommFunc.WriteBYTE(data, self.BottleCount) + for i in range(self.BottleCount): + data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + ResetType:%d, + WishPoolShowCount:%d, + WishPoolShowItemList:%s, + BottleCount:%d, + BottleInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.ResetType, + self.WishPoolShowCount, + "...", + self.BottleCount, + "..." + ) + return DumpString + + +m_NAtagMCFeastWishInfo=tagMCFeastWishInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo + + +#------------------------------------------------------ +# AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo + +class tagMCFeastWishPlayerBottle(Structure): + _pack_ = 1 + _fields_ = [ + ("BottleNum", c_ubyte), #瓶子编号 + ("WishValue", c_ushort), #当前可用祝福值 + ("ChooseRecord", 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.BottleNum = 0 + self.WishValue = 0 + self.ChooseRecord = 0 + return + + def GetLength(self): + return sizeof(tagMCFeastWishPlayerBottle) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo: + BottleNum:%d, + WishValue:%d, + ChooseRecord:%d + '''\ + %( + self.BottleNum, + self.WishValue, + self.ChooseRecord + ) + return DumpString + + +class tagMCFeastWishPlayerInfo(Structure): + Head = tagHead() + BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数 + PlayerBottleInfo = list() #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x44 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BottleCount): + temPlayerBottleInfo = tagMCFeastWishPlayerBottle() + _pos = temPlayerBottleInfo.ReadData(_lpData, _pos) + self.PlayerBottleInfo.append(temPlayerBottleInfo) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x44 + self.BottleCount = 0 + self.PlayerBottleInfo = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.BottleCount): + length += self.PlayerBottleInfo[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.BottleCount) + for i in range(self.BottleCount): + data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + BottleCount:%d, + PlayerBottleInfo:%s + '''\ + %( + self.Head.OutputString(), + self.BottleCount, + "..." + ) + return DumpString + + +m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo + + +#------------------------------------------------------ +# AA 45 节日祝福祝福结果 #tagMCFeastWishResult + +class tagMCFeastWishResult(Structure): + Head = tagHead() + AddWishValue = 0 #(WORD AddWishValue)// 本次增加的祝福值 + WishResultLen = 0 #(WORD WishResultLen) + WishResult = "" #(String WishResult)// 获得物品结果[[物品ID,个数,是否绑定], ...] + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x45 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x45 + self.AddWishValue = 0 + self.WishResultLen = 0 + self.WishResult = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 2 + length += len(self.WishResult) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.AddWishValue) + data = CommFunc.WriteWORD(data, self.WishResultLen) + data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AddWishValue:%d, + WishResultLen:%d, + WishResult:%s + '''\ + %( + self.Head.OutputString(), + self.AddWishValue, + self.WishResultLen, + self.WishResult + ) + return DumpString + + +m_NAtagMCFeastWishResult=tagMCFeastWishResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult #------------------------------------------------------ @@ -28441,6 +30802,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2 ("GoldTotal", c_int), #本次活动已累计充值仙玉数 ("AwardRecord", c_int), #奖励领奖记录,按奖励索引二进制位存储是否已领取 ] @@ -28459,6 +30821,7 @@ def Clear(self): self.Cmd = 0xAA self.SubCmd = 0x1C + self.ActNum = 0 self.GoldTotal = 0 self.AwardRecord = 0 return @@ -28473,12 +30836,14 @@ DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo: Cmd:%s, SubCmd:%s, + ActNum:%d, GoldTotal:%d, AwardRecord:%d '''\ %( self.Cmd, self.SubCmd, + self.ActNum, self.GoldTotal, self.AwardRecord ) -- Gitblit v1.8.0