From e41e926bbbd0255acde8b4b62d5558a025b83a02 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 11 六月 2025 17:18:27 +0800 Subject: [PATCH] 10263 【越南】【BT】增加后台执行命令清除本服榜单某个玩家ID数据: ClearBillboardData --- ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py | 129 ++++++++++++++++++++++++++++-------------- 1 files changed, 86 insertions(+), 43 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py index cb3a051..02b346f 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py @@ -15,6 +15,7 @@ import GameWorld import PlayerSocial import CrossBillboard +import CrossFamilyGCZ import PlayerFamilyStore import PlayerCompensation import PlayerBourse @@ -26,7 +27,13 @@ import CrossRealmPK import AuctionHouse import PlayerAssist +import GameRecData +import PlayerRecData +import PlayerViewCache +import GameWorldMineArea import PyGameDataStruct +import PlayerPackData +import PlayerFuncTeam import IpyGameDataPY import PlayerCharm import PlayerLove @@ -34,6 +41,10 @@ import time def GetSavePyData(): + + #存储数据前,一些功能业务数据先转化为存档数据 + CrossFamilyGCZ.OnSavePyData() + pyGameDataMgr = GetPyGameDataManager() result = pyGameDataMgr.GetSaveData() GameWorld.Log("GetSavePyData!! id = %s-%s"%(id(pyGameDataMgr), len(result))) @@ -47,7 +58,12 @@ def LoadPyGameData(gameBuffer, pos): pyGameDataMgr = GetPyGameDataManager() GameWorld.Log("LoadPyGameData!!id = %s %s"%(id(pyGameDataMgr), len(gameBuffer))) - return pyGameDataMgr.LoadGameData(gameBuffer, pos) + pos = pyGameDataMgr.LoadGameData(gameBuffer, pos) + + #加载数据后,一些功能转化为功能业务数据 + CrossFamilyGCZ.OnLoadPyData() + + return pos #协助感谢表 class PlayerAssistThanksPyManager(object): @@ -91,9 +107,8 @@ def __init__(self): self.allAssistDict = {} # 所有协助 {GUID:tagDBAssist, ...} - self.familyAssistDict = {} # 仙盟协助缓存 {familyID:[tagDBAssist, ...], ...} - self.playerNoSaveDBAssistDict = {} # 玩家发布的不存库协助 {playerID:[tagDBAssist, ...], ...} + self.playerAssistDict = {} # 玩家发布的协助 {playerID:[tagDBAssist, ...], ...} self.playerAssistingDict = {} # 玩家正在协助中的协助,只能存在一条 {playerID:tagDBAssist, ...} return @@ -125,45 +140,11 @@ PlayerAssist.OnInitAssistData(dbData, 1) self.allAssistDict[dbData.GUID] = dbData - familyID = dbData.FamilyID - if familyID not in self.familyAssistDict: - self.familyAssistDict[familyID] = [] - familyAssistList = self.familyAssistDict[familyID] - familyAssistList.append(dbData) - - return pos - -#玩家缓存管理,该类只做数据缓存存取,不写功能逻辑,防止重读脚本时功能逻辑脚本不生效 -class PlayerViewCachePyManager(object): - - def __init__(self): - self.playerViewCachePyDict = {} # 玩家缓存 {playerID:tagPlayerViewCachePy, ...} - return - - # 保存数据 存数据库和realtimebackup - def GetSaveData(self): - savaData = "" - cntData = "" - cnt = 0 - - for dbData in self.playerViewCachePyDict.values(): - cnt += 1 - savaData += dbData.getBuffer() - - GameWorld.Log("Save PlayerViewCachePy count :%s len=%s" % (cnt, len(savaData))) - return CommFunc.WriteDWORD(cntData, cnt) + savaData - - # 从数据库载入数据 - def LoadPyGameData(self, datas, pos, dataslen): - cnt, pos = CommFunc.ReadDWORD(datas, pos) - GameWorld.Log("Load PlayerViewCachePy count :%s" % cnt) - - for _ in xrange(cnt): - dbData = PyGameDataStruct.tagPlayerViewCachePy() - dbData.clear() - pos += dbData.readData(datas, pos, dataslen) - - self.playerViewCachePyDict[dbData.PlayerID] = dbData + PlayerID = dbData.PlayerID + if PlayerID not in self.playerAssistDict: + self.playerAssistDict[PlayerID] = [] + playerAssistList = self.playerAssistDict[PlayerID] + playerAssistList.append(dbData) return pos @@ -310,6 +291,14 @@ class PyGameDataManager(object): def __init__(self): + self.DBPlayerPackDataManager = PlayerPackData.DBPlayerPackDataManager() # 该表GameServer只做内存处理,不从db取,也不发db入库,由db自行处理 + self.DBGameRecDataManager = GameRecData.DBGameRecDataManager() + self.DBPyFuncTeamManager = PlayerFuncTeam.DBPyFuncTeamManager() + self.DBPyFuncTeamMemManager = PlayerFuncTeam.DBPyFuncTeamMemManager() + self.DBPlayerRecDataManager = PlayerRecData.DBPlayerRecDataManager() + self.DBPyMineAreaAwardManager = GameWorldMineArea.DBPyMineAreaAwardManager() + self.DBPyMineAreaRecordManager = GameWorldMineArea.DBPyMineAreaRecordManager() + self.DBPyMineAreaItemManager = GameWorldMineArea.DBPyMineAreaItemManager() self.DBPyCoupleManager = PlayerLove.DBPyCoupleManager() self.DBPyUnNotifyLoveGiftRecManager = PlayerLove.DBPyUnNotifyLoveGiftRecManager() self.DBPyCharmValueRecManager = PlayerCharm.DBPyCharmValueRecManager() @@ -318,7 +307,7 @@ self.CrossBillboardManager = CrossBillboard.CrossBillboardManager() self.PlayerAssistThanksPyManager = PlayerAssistThanksPyManager() self.PlayerAssistPyManager = PlayerAssistPyManager() - self.PlayerViewCachePyManager = PlayerViewCachePyManager() + self.PlayerViewCachePyManager = PlayerViewCache.PlayerViewCachePyManager() self.AuctionAttentionManager = AuctionAttentionManager() self.AuctionRecordManager = AuctionRecordManager() self.AuctionItemManager = AuctionItemManager() @@ -339,6 +328,13 @@ def GetSaveData(self): buff = "" + buff += self.DBGameRecDataManager.GetSaveData() + buff += self.DBPyFuncTeamManager.GetSaveData() + buff += self.DBPyFuncTeamMemManager.GetSaveData() + buff += self.DBPlayerRecDataManager.GetSaveData() + buff += self.DBPyMineAreaAwardManager.GetSaveData() + buff += self.DBPyMineAreaRecordManager.GetSaveData() + buff += self.DBPyMineAreaItemManager.GetSaveData() buff += self.DBPyCoupleManager.GetSaveData() buff += self.DBPyUnNotifyLoveGiftRecManager.GetSaveData() buff += self.DBPyCharmValueRecManager.GetSaveData() @@ -367,6 +363,13 @@ return buff def LoadGameData(self, gameBuffer, pos): + pos = self.DBGameRecDataManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPyFuncTeamManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPyFuncTeamMemManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPlayerRecDataManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPyMineAreaAwardManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPyMineAreaRecordManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) + pos = self.DBPyMineAreaItemManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.DBPyCoupleManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.DBPyUnNotifyLoveGiftRecManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) pos = self.DBPyCharmValueRecManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer)) @@ -482,6 +485,46 @@ pyGameDataMgr = GetPyGameDataManager() return pyGameDataMgr.familyStoreItemManager +def GetDBGameRecDataManager(): + # 通用记录表新管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBGameRecDataManager + +def GetDBPlayerPackDataManager(): + # 玩家打包数据管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPlayerPackDataManager + +def GetDBPyFuncTeamManager(): + # 功能队伍管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPyFuncTeamManager + +#def GetDBPyFuncTeamMemManager(): +# # 功能队伍成员管理 +# pyGameDataMgr = GetPyGameDataManager() +# return pyGameDataMgr.DBPyFuncTeamMemManager + +def GetDBPlayerRecDataManager(): + # 玩家记录管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPlayerRecDataManager + +def GetDBPyMineAreaAwardManager(): + # 福地奖励结算管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPyMineAreaAwardManager + +def GetDBPyMineAreaRecordManager(): + # 福地矿物记录管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPyMineAreaRecordManager + +def GetDBPyMineAreaItemManager(): + # 福地矿物管理 + pyGameDataMgr = GetPyGameDataManager() + return pyGameDataMgr.DBPyMineAreaItemManager + def GetDBPyCoupleManager(): # 伴侣管理 pyGameDataMgr = GetPyGameDataManager() -- Gitblit v1.8.0