From 677b4321ccf67811bc89b446b6208c00fd6658ce Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 26 二月 2019 16:19:49 +0800 Subject: [PATCH] 6250 【后端】【2.0】拍卖行开发单(封包) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 180 +++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 147 insertions(+), 33 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 922c083..52173a7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -8191,15 +8191,78 @@ #------------------------------------------------------ -# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItem +# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo class tagGCRefreshAuctionItem(Structure): - Head = tagHead() ItemGUID = "" #(char ItemGUID[40]) AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品 AddTime = "" #(char AddTime[19])//上架时间 BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格 + 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.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) + self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.ItemGUID = "" + self.AuctionType = 0 + self.AddTime = "" + self.BidderID = 0 + self.BidderPrice = 0 + return + + def GetLength(self): + length = 0 + length += 40 + length += 1 + length += 19 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteBYTE(data, self.AuctionType) + data = CommFunc.WriteString(data, 19, self.AddTime) + data = CommFunc.WriteDWORD(data, self.BidderID) + data = CommFunc.WriteDWORD(data, self.BidderPrice) + return data + + def OutputString(self): + DumpString = ''' + ItemGUID:%s, + AuctionType:%d, + AddTime:%s, + BidderID:%d, + BidderPrice:%d + '''\ + %( + self.ItemGUID, + self.AuctionType, + self.AddTime, + self.BidderID, + self.BidderPrice + ) + return DumpString + + +class tagGCRefreshAuctionItemInfo(Structure): + Head = tagHead() + RefreshCount = 0 #(BYTE RefreshCount) + RefreshAuctionItemList = list() #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList) data = None def __init__(self): @@ -8211,11 +8274,11 @@ 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.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19) - self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RefreshCount): + temRefreshAuctionItemList = tagGCRefreshAuctionItem() + _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos) + self.RefreshAuctionItemList.append(temRefreshAuctionItemList) return _pos def Clear(self): @@ -8223,56 +8286,43 @@ self.Head.Clear() self.Head.Cmd = 0xB5 self.Head.SubCmd = 0x08 - self.ItemGUID = "" - self.AuctionType = 0 - self.AddTime = "" - self.BidderID = 0 - self.BidderPrice = 0 + self.RefreshCount = 0 + self.RefreshAuctionItemList = list() return def GetLength(self): length = 0 length += self.Head.GetLength() - length += 40 length += 1 - length += 19 - length += 4 - length += 4 + for i in range(self.RefreshCount): + length += self.RefreshAuctionItemList[i].GetLength() 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.WriteBYTE(data, self.AuctionType) - data = CommFunc.WriteString(data, 19, self.AddTime) - data = CommFunc.WriteDWORD(data, self.BidderID) - data = CommFunc.WriteDWORD(data, self.BidderPrice) + data = CommFunc.WriteBYTE(data, self.RefreshCount) + for i in range(self.RefreshCount): + data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer()) return data def OutputString(self): DumpString = ''' Head:%s, - ItemGUID:%s, - AuctionType:%d, - AddTime:%s, - BidderID:%d, - BidderPrice:%d + RefreshCount:%d, + RefreshAuctionItemList:%s '''\ %( self.Head.OutputString(), - self.ItemGUID, - self.AuctionType, - self.AddTime, - self.BidderID, - self.BidderPrice + self.RefreshCount, + "..." ) return DumpString -m_NAtagGCRefreshAuctionItem=tagGCRefreshAuctionItem() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItem.Head.Cmd,m_NAtagGCRefreshAuctionItem.Head.SubCmd))] = m_NAtagGCRefreshAuctionItem +m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo #------------------------------------------------------ @@ -30548,6 +30598,70 @@ #------------------------------------------------------ +#B4 14 根据类型来决定移动的方式 #tagMCMoveByType + +class tagMCMoveByType(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ID", c_int), #玩家ID + ("PosX", c_ushort), # 目标X + ("PosY", c_ushort), # 目标Y + ("MoveType", c_ubyte), #移动方式 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB4 + self.SubCmd = 0x14 + 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 = 0xB4 + self.SubCmd = 0x14 + self.ID = 0 + self.PosX = 0 + self.PosY = 0 + self.MoveType = 0 + return + + def GetLength(self): + return sizeof(tagMCMoveByType) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType: + Cmd:%s, + SubCmd:%s, + ID:%d, + PosX:%d, + PosY:%d, + MoveType:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ID, + self.PosX, + self.PosY, + self.MoveType + ) + return DumpString + + +m_NAtagMCMoveByType=tagMCMoveByType() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType + + +#------------------------------------------------------ #B4 07 被动技能页选择(功法) # tagMCPassivePage class tagMCPassivePage(Structure): -- Gitblit v1.8.0