From 93cdb5aeb0e9741388dd15dbe0ef280e046160aa Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 21 二月 2019 19:14:23 +0800 Subject: [PATCH] 6250 【后端】【2.0】拍卖行开发单(拍卖关注表) --- ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 75 +++++++++++++++++++++++++++++++++++++ ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py | 7 +++ ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py | 25 ++++++++++++ 3 files changed, 107 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py index bcc347c..16d3b83 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py @@ -18,6 +18,31 @@ import GameWorld +#拍卖关注管理,注意该类只处理数据逻辑,功能相关逻辑不要写在该类,不然重读脚本不会生效 +class AuctionAttentionManager(object): + + def __init__(self): + return + + ## =========================================================================================== + + # 保存数据 存数据库和realtimebackup + def GetSaveData(self): + savaData = "" + cntData = "" + cnt = 0 + + GameWorld.Log("Save AuctionAttention count :%s" % cnt) + return CommFunc.WriteDWORD(cntData, cnt) + savaData + + # 从数据库载入数据 + def LoadPyGameData(self, datas, pos, dataslen): + cnt, pos = CommFunc.ReadDWORD(datas, pos) + GameWorld.Log("Load AuctionAttention count :%s" % cnt) + + return pos + + #拍卖记录管理,注意该类只处理数据逻辑,功能相关逻辑不要写在该类,不然重读脚本不会生效 class AuctionRecordManager(object): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py index 3ce1150..a576b7c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py @@ -45,6 +45,7 @@ class PyGameDataManager(object): def __init__(self): + self.AuctionAttention = AuctionHouse.AuctionAttentionManager() self.AuctionRecord = AuctionHouse.AuctionRecordManager() self.AuctionItem = AuctionHouse.AuctionItemManager() self.crossPKUnNotifyOverInfo = CrossRealmPK.CrossPKUnNotifyOverInfoManager() @@ -64,6 +65,7 @@ def GetSaveData(self): buff = "" + buff += self.AuctionAttention.GetSaveData() buff += self.AuctionRecord.GetSaveData() buff += self.AuctionItem.GetSaveData() buff += self.crossPKUnNotifyOverInfo.GetSaveData() @@ -82,6 +84,7 @@ return buff def LoadGameData(self, gameBuffer, pos): + pos = self.AuctionAttention.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.AuctionRecord.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.AuctionItem.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.crossPKUnNotifyOverInfo.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) @@ -100,6 +103,10 @@ return pos # 拍卖记录表 +def GetAuctionAttentionManager(): + return PyGameData.g_pyGameDataManager.AuctionAttention + +# 拍卖记录表 def GetAuctionRecordManager(): return PyGameData.g_pyGameDataManager.AuctionRecord diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py index 7f461cc..1330232 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py @@ -15,6 +15,66 @@ 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 @@ -145,6 +205,8 @@ ('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), ] @@ -170,6 +232,8 @@ self.UserData = '' self.FamilyPlayerIDLen = 0 self.FamilyPlayerIDInfo = '' + self.BidderIDLen = 0 + self.BidderIDInfo = '' def readData(self, buf, pos = 0, length = 0): if not pos <= length: @@ -196,6 +260,9 @@ 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): @@ -217,6 +284,8 @@ 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): @@ -238,6 +307,8 @@ length += self.UserDataLen length += sizeof(ctypes.c_ushort) length += self.FamilyPlayerIDLen + length += sizeof(ctypes.c_ubyte) + length += self.BidderIDLen return length def outputString(self): @@ -259,6 +330,8 @@ UserData = %s, FamilyPlayerIDLen = %s, FamilyPlayerIDInfo = %s, + BidderIDLen = %s, + BidderIDInfo = %s, ADOResult = %s, '''%( self.ItemGUID, @@ -278,6 +351,8 @@ self.UserData, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo, + self.BidderIDLen, + self.BidderIDInfo, self.ADOResult, ) return output -- Gitblit v1.8.0