From 4522a07fe53f63a2ff97701ee6a166e80e329181 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 19 二月 2019 12:01:09 +0800 Subject: [PATCH] 6249 【后端】【2.0】拍卖行(拍卖物品表、拍卖记录表定义) --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 286 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index a5a2017..5141fb0 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,6 +15,292 @@ from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at) import CommFunc +# 拍卖记录表 #tagDBAuctionRecord +class tagDBAuctionRecord(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('FamilyID', ctypes.c_ulong), + ('RecordType', ctypes.c_ubyte), + ('RecordTime', ctypes.c_char * 19), + ('RecordPrice', ctypes.c_ulong), + ('ItemID', ctypes.c_ulong), + ('Count', ctypes.c_ushort), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.FamilyID = 0 + self.RecordType = 0 + self.RecordTime = '' + self.RecordPrice = 0 + self.ItemID = 0 + self.Count = 0 + self.UserDataLen = 0 + self.UserData = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) + self.RecordType, pos = CommFunc.ReadBYTE(buf, pos) + self.RecordTime, pos = CommFunc.ReadString(buf, pos, 19) + self.RecordPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) + self.Count, pos = CommFunc.ReadWORD(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.FamilyID) + buf = CommFunc.WriteBYTE(buf, self.RecordType) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.RecordTime) + buf = CommFunc.WriteDWORD(buf, self.RecordPrice) + buf = CommFunc.WriteDWORD(buf, self.ItemID) + buf = CommFunc.WriteWORD(buf, self.Count) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + return length + + def outputString(self): + output = '''// 拍卖记录表 #tagDBAuctionRecord: + PlayerID = %s, + FamilyID = %s, + RecordType = %s, + RecordTime = %s, + RecordPrice = %s, + ItemID = %s, + Count = %s, + UserDataLen = %s, + UserData = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.FamilyID, + self.RecordType, + self.RecordTime, + self.RecordPrice, + self.ItemID, + self.Count, + self.UserDataLen, + self.UserData, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetRecordTime(self,Str): + if len(Str)<=19: + self.RecordTime = Str + else: + self.RecordTime = Str[:19] + + +# 拍卖物品表 #tagDBAuctionItem +class tagDBAuctionItem(Structure): + _pack_ = 1 + _fields_ = [ + ('ItemGUID', ctypes.c_char * 40), + ('PlayerID', ctypes.c_ulong), + ('FamilyID', ctypes.c_ulong), + ('ItemID', ctypes.c_ulong), + ('Count', ctypes.c_ushort), + ('AddTime', ctypes.c_char * 19), + ('BiddingTime', ctypes.c_char * 19), + ('BidderID', ctypes.c_ulong), + ('BidderName', ctypes.c_char * 33), + ('BidderPrice', ctypes.c_ulong), + ('ItemType', ctypes.c_ulong), + ('ItemJobLimit', ctypes.c_ulong), + ('UserDataLen', ctypes.c_ushort), + ('UserData', ctypes.c_char_p), + ('FamilyPlayerIDLen', ctypes.c_ushort), + ('FamilyPlayerIDInfo', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.ItemGUID = '' + self.PlayerID = 0 + self.FamilyID = 0 + self.ItemID = 0 + self.Count = 0 + self.AddTime = '' + self.BiddingTime = '' + self.BidderID = 0 + self.BidderName = '' + self.BidderPrice = 0 + self.ItemType = 0 + self.ItemJobLimit = 0 + self.UserDataLen = 0 + self.UserData = '' + self.FamilyPlayerIDLen = 0 + self.FamilyPlayerIDInfo = '' + + def readData(self, buf, pos = 0, length = 0): + if not pos <= length: + return -1 + if len(buf) < pos + self.getLength(): + return -1 + self.clear() + self.ItemGUID, pos = CommFunc.ReadString(buf, pos, 40) + self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos) + self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) + self.Count, pos = CommFunc.ReadWORD(buf, pos) + self.AddTime, pos = CommFunc.ReadString(buf, pos, 19) + self.BiddingTime, pos = CommFunc.ReadString(buf, pos, 19) + self.BidderID, pos = CommFunc.ReadDWORD(buf, pos) + self.BidderName, pos = CommFunc.ReadString(buf, pos, 33) + self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemType, pos = CommFunc.ReadDWORD(buf, pos) + self.ItemJobLimit, pos = CommFunc.ReadDWORD(buf, pos) + self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.UserDataLen) + self.UserData = ctypes.c_char_p(tmp) + self.FamilyPlayerIDLen, pos = CommFunc.ReadWORD(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.FamilyPlayerIDLen) + self.FamilyPlayerIDInfo = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 40, self.ItemGUID) + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteDWORD(buf, self.FamilyID) + buf = CommFunc.WriteDWORD(buf, self.ItemID) + buf = CommFunc.WriteWORD(buf, self.Count) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.AddTime) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.BiddingTime) + buf = CommFunc.WriteDWORD(buf, self.BidderID) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName) + buf = CommFunc.WriteDWORD(buf, self.BidderPrice) + buf = CommFunc.WriteDWORD(buf, self.ItemType) + buf = CommFunc.WriteDWORD(buf, self.ItemJobLimit) + buf = CommFunc.WriteWORD(buf, self.UserDataLen) + buf = CommFunc.WriteString(buf, self.UserDataLen, self.UserData) + buf = CommFunc.WriteWORD(buf, self.FamilyPlayerIDLen) + buf = CommFunc.WriteString(buf, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_char) * 40 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_char) * 19 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_char) * 33 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ushort) + length += self.UserDataLen + length += sizeof(ctypes.c_ushort) + length += self.FamilyPlayerIDLen + return length + + def outputString(self): + output = '''// 拍卖物品表 #tagDBAuctionItem: + ItemGUID = %s, + PlayerID = %s, + FamilyID = %s, + ItemID = %s, + Count = %s, + AddTime = %s, + BiddingTime = %s, + BidderID = %s, + BidderName = %s, + BidderPrice = %s, + ItemType = %s, + ItemJobLimit = %s, + UserDataLen = %s, + UserData = %s, + FamilyPlayerIDLen = %s, + FamilyPlayerIDInfo = %s, + ADOResult = %s, + '''%( + self.ItemGUID, + self.PlayerID, + self.FamilyID, + self.ItemID, + self.Count, + self.AddTime, + self.BiddingTime, + self.BidderID, + self.BidderName, + self.BidderPrice, + self.ItemType, + self.ItemJobLimit, + self.UserDataLen, + self.UserData, + self.FamilyPlayerIDLen, + self.FamilyPlayerIDInfo, + self.ADOResult, + ) + return output + + #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetItemGUID(self,Str): + if len(Str)<=40: + self.ItemGUID = Str + else: + self.ItemGUID = Str[:40] + + def SetAddTime(self,Str): + if len(Str)<=19: + self.AddTime = Str + else: + self.AddTime = Str[:19] + + def SetBiddingTime(self,Str): + if len(Str)<=19: + self.BiddingTime = Str + else: + self.BiddingTime = Str[:19] + + def SetBidderName(self,Str): + if len(Str)<=33: + self.BidderName = Str + else: + self.BidderName = Str[:33] + + # 跨服竞技场未通知玩家的比赛结果表 #tagDBCrossPKUnNotifyOverInfo class tagDBCrossPKUnNotifyOverInfo(Structure): _pack_ = 1 -- Gitblit v1.8.0