From 07d1d607ef08d0e455064a0cb30f7c623cf32085 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 26 二月 2019 10:53:14 +0800 Subject: [PATCH] 6250 【后端】【2.0】拍卖行开发单(封包) --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 150 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 136 insertions(+), 14 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 5141fb0..b28d109 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,15 +15,78 @@ from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at) import CommFunc +# 拍卖关注表 #tagDBAuctionAttention +class tagDBAuctionAttention(Structure): + _pack_ = 1 + _fields_ = [ + ('PlayerID', ctypes.c_ulong), + ('AttentionLen', ctypes.c_ubyte), + ('AttentionInfo', ctypes.c_char_p), + ('ADOResult', ctypes.c_ulong), + ] + + def __init__(self): + Structure.__init__(self) + self.clear() + + def clear(self): + self.PlayerID = 0 + self.AttentionLen = 0 + self.AttentionInfo = '' + + 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.AttentionLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.AttentionLen) + self.AttentionInfo = ctypes.c_char_p(tmp) + return self.getLength() + + def getBuffer(self): + buf = '' + buf = CommFunc.WriteDWORD(buf, self.PlayerID) + buf = CommFunc.WriteBYTE(buf, self.AttentionLen) + buf = CommFunc.WriteString(buf, self.AttentionLen, self.AttentionInfo) + return buf + + def getLength(self): + length = 0 + length += sizeof(ctypes.c_ulong) + length += sizeof(ctypes.c_ubyte) + length += self.AttentionLen + return length + + def outputString(self): + output = '''// 拍卖关注表 #tagDBAuctionAttention: + PlayerID = %s, + AttentionLen = %s, + AttentionInfo = %s, + ADOResult = %s, + '''%( + self.PlayerID, + self.AttentionLen, + self.AttentionInfo, + self.ADOResult, + ) + return output + + # 拍卖记录表 #tagDBAuctionRecord class tagDBAuctionRecord(Structure): _pack_ = 1 _fields_ = [ + ('ItemGUID', ctypes.c_char * 40), ('PlayerID', ctypes.c_ulong), ('FamilyID', ctypes.c_ulong), ('RecordType', ctypes.c_ubyte), + ('RecordResult', ctypes.c_ubyte), ('RecordTime', ctypes.c_char * 19), - ('RecordPrice', ctypes.c_ulong), + ('BidderPrice', ctypes.c_ulong), + ('BidderName', ctypes.c_char * 33), ('ItemID', ctypes.c_ulong), ('Count', ctypes.c_ushort), ('UserDataLen', ctypes.c_ushort), @@ -36,11 +99,14 @@ self.clear() def clear(self): + self.ItemGUID = '' self.PlayerID = 0 self.FamilyID = 0 self.RecordType = 0 + self.RecordResult = 0 self.RecordTime = '' - self.RecordPrice = 0 + self.BidderPrice = 0 + self.BidderName = '' self.ItemID = 0 self.Count = 0 self.UserDataLen = 0 @@ -52,11 +118,14 @@ 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.RecordType, pos = CommFunc.ReadBYTE(buf, pos) + self.RecordResult, pos = CommFunc.ReadBYTE(buf, pos) self.RecordTime, pos = CommFunc.ReadString(buf, pos, 19) - self.RecordPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.BidderPrice, pos = CommFunc.ReadDWORD(buf, pos) + self.BidderName, pos = CommFunc.ReadString(buf, pos, 33) self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) self.Count, pos = CommFunc.ReadWORD(buf, pos) self.UserDataLen, pos = CommFunc.ReadWORD(buf, pos) @@ -66,11 +135,14 @@ 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.WriteBYTE(buf, self.RecordType) + buf = CommFunc.WriteBYTE(buf, self.RecordResult) buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 19, self.RecordTime) - buf = CommFunc.WriteDWORD(buf, self.RecordPrice) + buf = CommFunc.WriteDWORD(buf, self.BidderPrice) + buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.BidderName) buf = CommFunc.WriteDWORD(buf, self.ItemID) buf = CommFunc.WriteWORD(buf, self.Count) buf = CommFunc.WriteWORD(buf, self.UserDataLen) @@ -79,11 +151,14 @@ 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_ubyte) + length += sizeof(ctypes.c_ubyte) 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_ushort) length += sizeof(ctypes.c_ushort) @@ -92,22 +167,28 @@ def outputString(self): output = '''// 拍卖记录表 #tagDBAuctionRecord: + ItemGUID = %s, PlayerID = %s, FamilyID = %s, RecordType = %s, + RecordResult = %s, RecordTime = %s, - RecordPrice = %s, + BidderPrice = %s, + BidderName = %s, ItemID = %s, Count = %s, UserDataLen = %s, UserData = %s, ADOResult = %s, '''%( + self.ItemGUID, self.PlayerID, self.FamilyID, self.RecordType, + self.RecordResult, self.RecordTime, - self.RecordPrice, + self.BidderPrice, + self.BidderName, self.ItemID, self.Count, self.UserDataLen, @@ -117,11 +198,23 @@ return output #Char数组类型Set接口,使用该接口对此类型数据赋值,防止赋值的数据过长报错 + def SetItemGUID(self,Str): + if len(Str)<=40: + self.ItemGUID = Str + else: + self.ItemGUID = Str[:40] + def SetRecordTime(self,Str): if len(Str)<=19: self.RecordTime = Str else: self.RecordTime = Str[:19] + + def SetBidderName(self,Str): + if len(Str)<=33: + self.BidderName = Str + else: + self.BidderName = Str[:33] # 拍卖物品表 #tagDBAuctionItem @@ -133,17 +226,21 @@ ('FamilyID', ctypes.c_ulong), ('ItemID', ctypes.c_ulong), ('Count', ctypes.c_ushort), + ('AuctionType', ctypes.c_ubyte), ('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), + ('ItemType', ctypes.c_ubyte), + ('ItemJobLimit', ctypes.c_ubyte), + ('ItemClassLV', ctypes.c_ubyte), ('UserDataLen', ctypes.c_ushort), ('UserData', ctypes.c_char_p), ('FamilyPlayerIDLen', ctypes.c_ushort), ('FamilyPlayerIDInfo', ctypes.c_char_p), + ('BidderIDLen', ctypes.c_ubyte), + ('BidderIDInfo', ctypes.c_char_p), ('ADOResult', ctypes.c_ulong), ] @@ -157,6 +254,7 @@ self.FamilyID = 0 self.ItemID = 0 self.Count = 0 + self.AuctionType = 0 self.AddTime = '' self.BiddingTime = '' self.BidderID = 0 @@ -164,10 +262,13 @@ self.BidderPrice = 0 self.ItemType = 0 self.ItemJobLimit = 0 + self.ItemClassLV = 0 self.UserDataLen = 0 self.UserData = '' self.FamilyPlayerIDLen = 0 self.FamilyPlayerIDInfo = '' + self.BidderIDLen = 0 + self.BidderIDInfo = '' def readData(self, buf, pos = 0, length = 0): if not pos <= length: @@ -180,19 +281,24 @@ self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos) self.ItemID, pos = CommFunc.ReadDWORD(buf, pos) self.Count, pos = CommFunc.ReadWORD(buf, pos) + self.AuctionType, pos = CommFunc.ReadBYTE(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.ItemType, pos = CommFunc.ReadBYTE(buf, pos) + self.ItemJobLimit, pos = CommFunc.ReadBYTE(buf, pos) + self.ItemClassLV, pos = CommFunc.ReadBYTE(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) + self.BidderIDLen, pos = CommFunc.ReadBYTE(buf, pos) + tmp, pos = CommFunc.ReadString(buf, pos, self.BidderIDLen) + self.BidderIDInfo = ctypes.c_char_p(tmp) return self.getLength() def getBuffer(self): @@ -202,17 +308,21 @@ buf = CommFunc.WriteDWORD(buf, self.FamilyID) buf = CommFunc.WriteDWORD(buf, self.ItemID) buf = CommFunc.WriteWORD(buf, self.Count) + buf = CommFunc.WriteBYTE(buf, self.AuctionType) 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.WriteBYTE(buf, self.ItemType) + buf = CommFunc.WriteBYTE(buf, self.ItemJobLimit) + buf = CommFunc.WriteBYTE(buf, self.ItemClassLV) 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) + buf = CommFunc.WriteBYTE(buf, self.BidderIDLen) + buf = CommFunc.WriteString(buf, self.BidderIDLen, self.BidderIDInfo) return buf def getLength(self): @@ -222,17 +332,21 @@ length += sizeof(ctypes.c_ulong) length += sizeof(ctypes.c_ulong) length += sizeof(ctypes.c_ushort) + length += sizeof(ctypes.c_ubyte) 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_ubyte) + length += sizeof(ctypes.c_ubyte) + length += sizeof(ctypes.c_ubyte) length += sizeof(ctypes.c_ushort) length += self.UserDataLen length += sizeof(ctypes.c_ushort) length += self.FamilyPlayerIDLen + length += sizeof(ctypes.c_ubyte) + length += self.BidderIDLen return length def outputString(self): @@ -242,6 +356,7 @@ FamilyID = %s, ItemID = %s, Count = %s, + AuctionType = %s, AddTime = %s, BiddingTime = %s, BidderID = %s, @@ -249,10 +364,13 @@ BidderPrice = %s, ItemType = %s, ItemJobLimit = %s, + ItemClassLV = %s, UserDataLen = %s, UserData = %s, FamilyPlayerIDLen = %s, FamilyPlayerIDInfo = %s, + BidderIDLen = %s, + BidderIDInfo = %s, ADOResult = %s, '''%( self.ItemGUID, @@ -260,6 +378,7 @@ self.FamilyID, self.ItemID, self.Count, + self.AuctionType, self.AddTime, self.BiddingTime, self.BidderID, @@ -267,10 +386,13 @@ self.BidderPrice, self.ItemType, self.ItemJobLimit, + self.ItemClassLV, self.UserDataLen, self.UserData, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo, + self.BidderIDLen, + self.BidderIDInfo, self.ADOResult, ) return output -- Gitblit v1.8.0