From 73dfbfa4721b3d21b687d6e68905f4236ed24d4f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 25 二月 2019 14:10:15 +0800 Subject: [PATCH] 6250 【后端】【2.0】拍卖行开发单(封包) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2132 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 1,814 insertions(+), 318 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 2c0e374..d789483 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -4719,7 +4719,7 @@ class tagGCFeastRedPacketDay(Structure): RedPacketCount = 0 #(BYTE RedPacketCount) - RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包ID列表 + RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表 data = None def __init__(self): @@ -6846,6 +6846,1412 @@ m_NAtagGCVoiceChat=tagGCVoiceChat() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat + + +#------------------------------------------------------ +# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo + +class tagGCAddAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + ItemID = 0 #(DWORD ItemID) + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.ItemID = 0 + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + ItemID:%d + '''\ + %( + self.ItemGUID, + self.ItemID + ) + return DumpString + + +class tagGCAddAuctionItemInfo(Structure): + Head = tagHead() + AddCount = 0 #(BYTE AddCount) + AddAuctionItemList = list() #(vector<tagGCAddAuctionItem> AddAuctionItemList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x04 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AddCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AddCount): + temAddAuctionItemList = tagGCAddAuctionItem() + _pos = temAddAuctionItemList.ReadData(_lpData, _pos) + self.AddAuctionItemList.append(temAddAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x04 + self.AddCount = 0 + self.AddAuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.AddCount): + length += self.AddAuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AddCount) + for i in range(self.AddCount): + data = CommFunc.WriteString(data, self.AddAuctionItemList[i].GetLength(), self.AddAuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AddCount:%d, + AddAuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.AddCount, + "..." + ) + return DumpString + + +m_NAtagGCAddAuctionItemInfo=tagGCAddAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItemInfo.Head.Cmd,m_NAtagGCAddAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAddAuctionItemInfo + + +#------------------------------------------------------ +# B5 07 拍卖行关注的物品ID #tagGCAttentionAuctionItemID + +class tagGCAttentionAuctionItemID(Structure): + Head = tagHead() + AttentionCount = 0 #(BYTE AttentionCount) + AttentionItemIDList = list() #(vector<DWORD> AttentionItemIDList)// 关注的物品ID列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x07 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AttentionCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AttentionCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.AttentionItemIDList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x07 + self.AttentionCount = 0 + self.AttentionItemIDList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 * self.AttentionCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AttentionCount) + for i in range(self.AttentionCount): + data = CommFunc.WriteDWORD(data, self.AttentionItemIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AttentionCount:%d, + AttentionItemIDList:%s + '''\ + %( + self.Head.OutputString(), + self.AttentionCount, + "..." + ) + return DumpString + + +m_NAtagGCAttentionAuctionItemID=tagGCAttentionAuctionItemID() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemID.Head.Cmd,m_NAtagGCAttentionAuctionItemID.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemID + + +#------------------------------------------------------ +# B5 06 拍卖行关注中的拍品信息 #tagGCAttentionAuctionItemInfo + +class tagGCAttentionAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagGCAttentionAuctionItemInfo(Structure): + Head = tagHead() + AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量 + AuctionItemList = list() #(vector<tagGCAttentionAuctionItem> AuctionItemList)//拍品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x06 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AuctionItemCount): + temAuctionItemList = tagGCAttentionAuctionItem() + _pos = temAuctionItemList.ReadData(_lpData, _pos) + self.AuctionItemList.append(temAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x06 + self.AuctionItemCount = 0 + self.AuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.AuctionItemCount): + length += self.AuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AuctionItemCount) + for i in range(self.AuctionItemCount): + data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AuctionItemCount:%d, + AuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.AuctionItemCount, + "..." + ) + return DumpString + + +m_NAtagGCAttentionAuctionItemInfo=tagGCAttentionAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemInfo.Head.Cmd,m_NAtagGCAttentionAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemInfo + + +#------------------------------------------------------ +# B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo + +class tagGCAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagGCAuctionItemInfo(Structure): + Head = tagHead() + Job = 0 #(BYTE Job)//过滤职业,0为不限制 + ItemTypeCount = 0 #(BYTE ItemTypeCount) + ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型 + ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制 + SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数 + SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID + FromNum = 0 #(WORD FromNum)//查询起始数 (从1开始) + QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部 + QueryTotalCount = 0 #(WORD QueryTotalCount)//查询条件实际总个数 + AuctionItemCount = 0 #(BYTE AuctionItemCount)//返回拍品数量 + AuctionItemList = list() #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x01 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ItemTypeCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ItemTypeList.append(value) + self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SpecItemIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.SpecItemIDList.append(value) + self.FromNum,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.QueryTotalCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AuctionItemCount): + temAuctionItemList = tagGCAuctionItem() + _pos = temAuctionItemList.ReadData(_lpData, _pos) + self.AuctionItemList.append(temAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x01 + self.Job = 0 + self.ItemTypeCount = 0 + self.ItemTypeList = list() + self.ClassLV = 0 + self.SpecItemIDCount = 0 + self.SpecItemIDList = list() + self.FromNum = 0 + self.QueryCount = 0 + self.QueryTotalCount = 0 + self.AuctionItemCount = 0 + self.AuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 4 * self.ItemTypeCount + length += 1 + length += 1 + length += 4 * self.SpecItemIDCount + length += 2 + length += 1 + length += 2 + length += 1 + for i in range(self.AuctionItemCount): + length += self.AuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteBYTE(data, self.ItemTypeCount) + for i in range(self.ItemTypeCount): + data = CommFunc.WriteDWORD(data, self.ItemTypeList[i]) + data = CommFunc.WriteBYTE(data, self.ClassLV) + data = CommFunc.WriteBYTE(data, self.SpecItemIDCount) + for i in range(self.SpecItemIDCount): + data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i]) + data = CommFunc.WriteWORD(data, self.FromNum) + data = CommFunc.WriteBYTE(data, self.QueryCount) + data = CommFunc.WriteWORD(data, self.QueryTotalCount) + data = CommFunc.WriteBYTE(data, self.AuctionItemCount) + for i in range(self.AuctionItemCount): + data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Job:%d, + ItemTypeCount:%d, + ItemTypeList:%s, + ClassLV:%d, + SpecItemIDCount:%d, + SpecItemIDList:%s, + FromNum:%d, + QueryCount:%d, + QueryTotalCount:%d, + AuctionItemCount:%d, + AuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.Job, + self.ItemTypeCount, + "...", + self.ClassLV, + self.SpecItemIDCount, + "...", + self.FromNum, + self.QueryCount, + self.QueryTotalCount, + self.AuctionItemCount, + "..." + ) + return DumpString + + +m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo + + +#------------------------------------------------------ +# B5 10 拍卖行玩家竞价中的物品信息 #tagGCBiddingItemInfo + +class tagGCBiddingItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagGCBiddingItemInfo(Structure): + Head = tagHead() + AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量 + AuctionItemList = list() #(vector<tagGCBiddingItem> AuctionItemList)//拍品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AuctionItemCount): + temAuctionItemList = tagGCBiddingItem() + _pos = temAuctionItemList.ReadData(_lpData, _pos) + self.AuctionItemList.append(temAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x10 + self.AuctionItemCount = 0 + self.AuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.AuctionItemCount): + length += self.AuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AuctionItemCount) + for i in range(self.AuctionItemCount): + data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AuctionItemCount:%d, + AuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.AuctionItemCount, + "..." + ) + return DumpString + + +m_NAtagGCBiddingItemInfo=tagGCBiddingItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBiddingItemInfo.Head.Cmd,m_NAtagGCBiddingItemInfo.Head.SubCmd))] = m_NAtagGCBiddingItemInfo + + +#------------------------------------------------------ +# B5 09 拍卖行清除拍品 #tagGCClearAuctionItemInfo + +class tagGCClearAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.ItemGUID = "" + return + + def GetLength(self): + length = 0 + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s + '''\ + %( + self.ItemGUID + ) + return DumpString + + +class tagGCClearAuctionItemInfo(Structure): + Head = tagHead() + ClearCount = 0 #(BYTE ClearCount) + ClearAuctionItemList = list() #(vector<tagGCClearAuctionItem> ClearAuctionItemList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x09 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ClearCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ClearCount): + temClearAuctionItemList = tagGCClearAuctionItem() + _pos = temClearAuctionItemList.ReadData(_lpData, _pos) + self.ClearAuctionItemList.append(temClearAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x09 + self.ClearCount = 0 + self.ClearAuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.ClearCount): + length += self.ClearAuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ClearCount) + for i in range(self.ClearCount): + data = CommFunc.WriteString(data, self.ClearAuctionItemList[i].GetLength(), self.ClearAuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ClearCount:%d, + ClearAuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.ClearCount, + "..." + ) + return DumpString + + +m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo + + +#------------------------------------------------------ +# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo + +class tagGCFamilyAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + CanGetMoney = 0 #(BYTE CanGetMoney)//可否获得收益 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + self.CanGetMoney,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + self.CanGetMoney = 0 + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + data = CommFunc.WriteBYTE(data, self.CanGetMoney) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s, + CanGetMoney:%d + '''\ + %( + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData, + self.CanGetMoney + ) + return DumpString + + +class tagGCFamilyAuctionItemInfo(Structure): + Head = tagHead() + AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量 + AuctionItemList = list() #(vector<tagGCFamilyAuctionItem> AuctionItemList)//拍品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x05 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AuctionItemCount): + temAuctionItemList = tagGCFamilyAuctionItem() + _pos = temAuctionItemList.ReadData(_lpData, _pos) + self.AuctionItemList.append(temAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x05 + self.AuctionItemCount = 0 + self.AuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.AuctionItemCount): + length += self.AuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AuctionItemCount) + for i in range(self.AuctionItemCount): + data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AuctionItemCount:%d, + AuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.AuctionItemCount, + "..." + ) + return DumpString + + +m_NAtagGCFamilyAuctionItemInfo=tagGCFamilyAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyAuctionItemInfo.Head.Cmd,m_NAtagGCFamilyAuctionItemInfo.Head.SubCmd))] = m_NAtagGCFamilyAuctionItemInfo + + +#------------------------------------------------------ +# B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo + +class tagGCPlayerAuctionItem(Structure): + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagGCPlayerAuctionItemInfo(Structure): + Head = tagHead() + AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量 + AuctionItemList = list() #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x02 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AuctionItemCount): + temAuctionItemList = tagGCPlayerAuctionItem() + _pos = temAuctionItemList.ReadData(_lpData, _pos) + self.AuctionItemList.append(temAuctionItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x02 + self.AuctionItemCount = 0 + self.AuctionItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.AuctionItemCount): + length += self.AuctionItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.AuctionItemCount) + for i in range(self.AuctionItemCount): + data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + AuctionItemCount:%d, + AuctionItemList:%s + '''\ + %( + self.Head.OutputString(), + self.AuctionItemCount, + "..." + ) + return DumpString + + +m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo + + +#------------------------------------------------------ +# B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo + +class tagGCPlayerAuctionRecord(Structure): + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + RecordType = 0 #(BYTE RecordType)//记录类型 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败 + RecordTime = "" #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss + RecordPrice = 0 #(WORD RecordPrice)//记录价格 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19) + self.RecordPrice,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.FamilyID = 0 + self.RecordType = 0 + self.RecordTime = "" + self.RecordPrice = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 19 + length += 2 + length += 4 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteBYTE(data, self.RecordType) + data = CommFunc.WriteString(data, 19, self.RecordTime) + data = CommFunc.WriteWORD(data, self.RecordPrice) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteWORD(data, self.ItemCount) + data = CommFunc.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + FamilyID:%d, + RecordType:%d, + RecordTime:%s, + RecordPrice:%d, + ItemID:%d, + ItemCount:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.FamilyID, + self.RecordType, + self.RecordTime, + self.RecordPrice, + self.ItemID, + self.ItemCount, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagGCPlayerAuctionRecordInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + AuctionRecordList = list() #(vector<tagGCPlayerAuctionRecordInfo> AuctionRecordList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x03 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAuctionRecordList = tagGCPlayerAuctionRecordInfo() + _pos = temAuctionRecordList.ReadData(_lpData, _pos) + self.AuctionRecordList.append(temAuctionRecordList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x03 + self.Count = 0 + self.AuctionRecordList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.AuctionRecordList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + AuctionRecordList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo + + +#------------------------------------------------------ +# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItem + +class tagGCRefreshAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品 + ItemID = 0 #(DWORD ItemID) + ItemCount = 0 #(WORD ItemCount) + AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss + BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x08 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + 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.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x08 + self.ItemGUID = "" + self.FamilyID = 0 + self.ItemID = 0 + self.ItemCount = 0 + self.AddTime = "" + self.BidderPrice = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 4 + length += 4 + length += 2 + length += 19 + length += 2 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.FamilyID) + 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.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + FamilyID:%d, + ItemID:%d, + ItemCount:%d, + AddTime:%s, + BidderPrice:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.FamilyID, + self.ItemID, + self.ItemCount, + self.AddTime, + self.BidderPrice, + self.UserDataLen, + self.UserData + ) + return DumpString + + +m_NAtagGCRefreshAuctionItem=tagGCRefreshAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItem.Head.Cmd,m_NAtagGCRefreshAuctionItem.Head.SubCmd))] = m_NAtagGCRefreshAuctionItem #------------------------------------------------------ @@ -8983,64 +10389,92 @@ # C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState class tagGCCrossRealmPKSeasonState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ZoneID", c_ubyte), # 所属赛区ID - ("SeasonID", c_ushort), # 当前赛季ID - ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束 - ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中 - ] + Head = tagHead() + ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID + SeasonID = 0 #(WORD SeasonID)// 当前赛季ID + SeasonState = 0 #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束 + MatchState = 0 #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中 + CrossZoneNameLen = 0 #(BYTE CrossZoneNameLen) + CrossZoneName = "" #(String CrossZoneName)// 跨服分区名 + data = None def __init__(self): self.Clear() - self.Cmd = 0xC0 - self.SubCmd = 0x06 + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x06 return - def ReadData(self, stringData, _pos=0, _len=0): + def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() + _pos = self.Head.ReadData(_lpData, _pos) + self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen) + return _pos def Clear(self): - self.Cmd = 0xC0 - self.SubCmd = 0x06 + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x06 self.ZoneID = 0 self.SeasonID = 0 self.SeasonState = 0 self.MatchState = 0 + self.CrossZoneNameLen = 0 + self.CrossZoneName = "" return def GetLength(self): - return sizeof(tagGCCrossRealmPKSeasonState) + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 + length += 1 + length += 1 + length += 1 + length += len(self.CrossZoneName) + + return length def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ZoneID) + data = CommFunc.WriteWORD(data, self.SeasonID) + data = CommFunc.WriteBYTE(data, self.SeasonState) + data = CommFunc.WriteBYTE(data, self.MatchState) + data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen) + data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName) + return data def OutputString(self): - DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState: - Cmd:%s, - SubCmd:%s, + DumpString = ''' + Head:%s, ZoneID:%d, SeasonID:%d, SeasonState:%d, - MatchState:%d + MatchState:%d, + CrossZoneNameLen:%d, + CrossZoneName:%s '''\ %( - self.Cmd, - self.SubCmd, + self.Head.OutputString(), self.ZoneID, self.SeasonID, self.SeasonState, - self.MatchState + self.MatchState, + self.CrossZoneNameLen, + self.CrossZoneName ) return DumpString m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState #------------------------------------------------------ @@ -13744,114 +15178,6 @@ m_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo - - -#------------------------------------------------------ -# A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg - -class tagMCMagicWeaponLV(Structure): - _pack_ = 1 - _fields_ = [ - ("MWID", c_int), # 法宝ID - ("MWLV", 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.MWID = 0 - self.MWLV = 0 - return - - def GetLength(self): - return sizeof(tagMCMagicWeaponLV) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg: - MWID:%d, - MWLV:%d - '''\ - %( - self.MWID, - self.MWLV - ) - return DumpString - - -class tagMCMagicWeaponMsg(Structure): - Head = tagHead() - Count = 0 #(BYTE Count)// 法宝个数 - MWInfo = list() #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0xBE - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Count): - temMWInfo = tagMCMagicWeaponLV() - _pos = temMWInfo.ReadData(_lpData, _pos) - self.MWInfo.append(temMWInfo) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA3 - self.Head.SubCmd = 0xBE - self.Count = 0 - self.MWInfo = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - for i in range(self.Count): - length += self.MWInfo[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.Count) - for i in range(self.Count): - data = CommFunc.WriteString(data, self.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Count:%d, - MWInfo:%s - '''\ - %( - self.Head.OutputString(), - self.Count, - "..." - ) - return DumpString - - -m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg #------------------------------------------------------ @@ -19587,6 +20913,117 @@ #------------------------------------------------------ +# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo + +class tagMCMysticalShopGoods(Structure): + _pack_ = 1 + _fields_ = [ + ("GoodsID", c_int), # 商品ID + ] + + 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.GoodsID = 0 + return + + def GetLength(self): + return sizeof(tagMCMysticalShopGoods) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo: + GoodsID:%d + '''\ + %( + self.GoodsID + ) + return DumpString + + +class tagMCMysticalShopInfo(Structure): + Head = tagHead() + RefreshCnt = 0 #(WORD RefreshCnt)// 刷新次数 + Count = 0 #(BYTE Count)// 商品数 + GoodsList = list() #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA8 + self.Head.SubCmd = 0x16 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temGoodsList = tagMCMysticalShopGoods() + _pos = temGoodsList.ReadData(_lpData, _pos) + self.GoodsList.append(temGoodsList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA8 + self.Head.SubCmd = 0x16 + self.RefreshCnt = 0 + self.Count = 0 + self.GoodsList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 1 + for i in range(self.Count): + length += self.GoodsList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.RefreshCnt) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RefreshCnt:%d, + Count:%d, + GoodsList:%s + '''\ + %( + self.Head.OutputString(), + self.RefreshCnt, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo + + +#------------------------------------------------------ # A8 06 通知神秘限购商品时间 #tagMCMysticalShopTimeInfo class tagMCMysticalShopTime(Structure): @@ -20451,56 +21888,13 @@ #------------------------------------------------------ # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo -class tagMCActLoginAwardItem(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemID", c_int), # 物品ID - ("ItemCnt", 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.ItemCnt = 0 - self.IsBind = 0 - return - - def GetLength(self): - return sizeof(tagMCActLoginAwardItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 0C 登录奖励活动信息 //tagMCActLoginAwardInfo: - ItemID:%d, - ItemCnt:%d, - IsBind:%d - '''\ - %( - self.ItemID, - self.ItemCnt, - self.IsBind - ) - return DumpString - - class tagMCActLoginAwardAction(Structure): TemplateID = 0 #(DWORD TemplateID)// 模板ID ActionType = 0 #(WORD ActionType)// 活动类别 TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数 SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数 - Count = 0 #(BYTE Count)// 物品数 - ItemInfo = list() #(vector<tagMCActLoginAwardItem> ItemInfo)// 物品信息 + Count = 0 #(WORD Count)// 物品配置长度 + ItemInfo = "" #(String ItemInfo)// 物品信息 data = None def __init__(self): @@ -20513,11 +21907,8 @@ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos) self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Count): - temItemInfo = tagMCActLoginAwardItem() - _pos = temItemInfo.ReadData(_lpData, _pos) - self.ItemInfo.append(temItemInfo) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count) return _pos def Clear(self): @@ -20526,7 +21917,7 @@ self.TotalTimes = 0 self.SingleTimes = 0 self.Count = 0 - self.ItemInfo = list() + self.ItemInfo = "" return def GetLength(self): @@ -20535,9 +21926,8 @@ length += 2 length += 4 length += 4 - length += 1 - for i in range(self.Count): - length += self.ItemInfo[i].GetLength() + length += 2 + length += len(self.ItemInfo) return length @@ -20547,9 +21937,8 @@ data = CommFunc.WriteWORD(data, self.ActionType) data = CommFunc.WriteDWORD(data, self.TotalTimes) data = CommFunc.WriteDWORD(data, self.SingleTimes) - data = CommFunc.WriteBYTE(data, self.Count) - for i in range(self.Count): - data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.Count) + data = CommFunc.WriteString(data, self.Count, self.ItemInfo) return data def OutputString(self): @@ -20567,7 +21956,7 @@ self.TotalTimes, self.SingleTimes, self.Count, - "..." + self.ItemInfo ) return DumpString @@ -20575,6 +21964,7 @@ class tagMCActLoginAwardDayInfo(Structure): ActCnt = 0 #(BYTE ActCnt)// 数量 TemplateList = list() #(vector<WORD> TemplateList)// 模板列表 + WorldLV = 0 #(WORD WorldLV)// 世界等级 data = None def __init__(self): @@ -20587,17 +21977,20 @@ for i in range(self.ActCnt): value,_pos=CommFunc.ReadWORD(_lpData,_pos) self.TemplateList.append(value) + self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos) return _pos def Clear(self): self.ActCnt = 0 self.TemplateList = list() + self.WorldLV = 0 return def GetLength(self): length = 0 length += 1 length += 2 * self.ActCnt + length += 2 return length @@ -20606,16 +21999,19 @@ data = CommFunc.WriteBYTE(data, self.ActCnt) for i in range(self.ActCnt): data = CommFunc.WriteWORD(data, self.TemplateList[i]) + data = CommFunc.WriteWORD(data, self.WorldLV) return data def OutputString(self): DumpString = ''' ActCnt:%d, - TemplateList:%s + TemplateList:%s, + WorldLV:%d '''\ %( self.ActCnt, - "..." + "...", + self.WorldLV ) return DumpString @@ -22732,7 +24128,7 @@ class tagMCFeastWeekPartyPlayerInfo(Structure): Head = tagHead() Count = 0 #(BYTE Count) - DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息 + DayInfoList = list() #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息 data = None def __init__(self): @@ -22746,7 +24142,7 @@ _pos = self.Head.ReadData(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): - temDayInfoList = tagMCWeekPartyDayPlayerInfo() + temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo() _pos = temDayInfoList.ReadData(_lpData, _pos) self.DayInfoList.append(temDayInfoList) return _pos @@ -23780,6 +25176,221 @@ m_NAtagMCFlashSaleInfo=tagMCFlashSaleInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleInfo.Head.Cmd,m_NAtagMCFlashSaleInfo.Head.SubCmd))] = m_NAtagMCFlashSaleInfo + + +#------------------------------------------------------ +# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo + +class tagMCLuckyTreasureItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), # 物品ID + ("ItemCnt", 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.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCLuckyTreasureItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo: + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +class tagMCLuckyTreasureInfo(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点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + LuckyPoint = 0 #(WORD LuckyPoint)// 总幸运值 + Count = 0 #(WORD Count)// 物品数 + ItemList = list() #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x1F + 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temItemList = tagMCLuckyTreasureItem() + _pos = temItemList.ReadData(_lpData, _pos) + self.ItemList.append(temItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x1F + self.StartDate = "" + self.EndtDate = "" + self.ResetType = 0 + self.LimitLV = 0 + self.LuckyPoint = 0 + self.Count = 0 + self.ItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + length += 2 + length += 2 + length += 2 + for i in range(self.Count): + length += self.ItemList[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.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteWORD(data, self.LuckyPoint) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + ResetType:%d, + LimitLV:%d, + LuckyPoint:%d, + Count:%d, + ItemList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.ResetType, + self.LimitLV, + self.LuckyPoint, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo + + +#------------------------------------------------------ +# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo + +class tagMCLuckyTreasureResultInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LuckyPoint", c_ushort), # 当前幸运点 + ("HasFree", c_ubyte), # 是否免费过 + ("ItemID", c_int), # 物品ID + ("ItemCnt", c_ushort), #物品数量 + ("IsBind", c_ubyte), # 是否绑定 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x1E + 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 = 0x1E + self.LuckyPoint = 0 + self.HasFree = 0 + self.ItemID = 0 + self.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCLuckyTreasureResultInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo: + Cmd:%s, + SubCmd:%s, + LuckyPoint:%d, + HasFree:%d, + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.LuckyPoint, + self.HasFree, + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo #------------------------------------------------------ @@ -25468,125 +27079,6 @@ m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord - - -#------------------------------------------------------ -# AB 26 节日红包任务进度信息 #tagMCFeastRedPackTaskInfo - -class tagMCFeastRedPackTaskProgress(Structure): - _pack_ = 1 - _fields_ = [ - ("TaskType", c_ubyte), #任务类型 - ("TaskData", c_int), #任务数据 - ("CurTimes", 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.TaskType = 0 - self.TaskData = 0 - self.CurTimes = 0 - return - - def GetLength(self): - return sizeof(tagMCFeastRedPackTaskProgress) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 26 节日红包任务进度信息 //tagMCFeastRedPackTaskInfo: - TaskType:%d, - TaskData:%d, - CurTimes:%d - '''\ - %( - self.TaskType, - self.TaskData, - self.CurTimes - ) - return DumpString - - -class tagMCFeastRedPackTaskInfo(Structure): - Head = tagHead() - FeastDay = 0 #(BYTE FeastDay)//节日第几天 - TaskCount = 0 #(BYTE TaskCount)//今日任务数 - TaskProgressList = list() #(vector<tagMCFeastRedPackTaskProgress> TaskProgressList)// 任务进度信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x26 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.FeastDay,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.TaskCount): - temTaskProgressList = tagMCFeastRedPackTaskProgress() - _pos = temTaskProgressList.ReadData(_lpData, _pos) - self.TaskProgressList.append(temTaskProgressList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x26 - self.FeastDay = 0 - self.TaskCount = 0 - self.TaskProgressList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - for i in range(self.TaskCount): - length += self.TaskProgressList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.FeastDay) - data = CommFunc.WriteBYTE(data, self.TaskCount) - for i in range(self.TaskCount): - data = CommFunc.WriteString(data, self.TaskProgressList[i].GetLength(), self.TaskProgressList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - FeastDay:%d, - TaskCount:%d, - TaskProgressList:%s - '''\ - %( - self.Head.OutputString(), - self.FeastDay, - self.TaskCount, - "..." - ) - return DumpString - - -m_NAtagMCFeastRedPackTaskInfo=tagMCFeastRedPackTaskInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackTaskInfo.Head.Cmd,m_NAtagMCFeastRedPackTaskInfo.Head.SubCmd))] = m_NAtagMCFeastRedPackTaskInfo #------------------------------------------------------ @@ -28624,6 +30116,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Floor", c_int), # 已通关层 + ("LastFloor", c_int), # 上次挑战层 ] def __init__(self): @@ -28641,6 +30134,7 @@ self.Cmd = 0xB2 self.SubCmd = 0x13 self.Floor = 0 + self.LastFloor = 0 return def GetLength(self): @@ -28653,12 +30147,14 @@ DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo: Cmd:%s, SubCmd:%s, - Floor:%d + Floor:%d, + LastFloor:%d '''\ %( self.Cmd, self.SubCmd, - self.Floor + self.Floor, + self.LastFloor ) return DumpString -- Gitblit v1.8.0