From 968848d5a8b5e0308fedcd387a42fd45a886aec6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 26 九月 2019 16:07:51 +0800
Subject: [PATCH] 8281 【后端】【恺英】封魔坛每日刷新(新手封魔坛改为可重复进入,首次过关不扣次数)
---
ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 46 insertions(+), 1 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
index a5c8d44..1d073dc 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
@@ -42,6 +42,40 @@
GameWorld.Log("LoadPyGameData!!id = %s %s"%(id(pyGameDataMgr), len(gameBuffer)))
return pyGameDataMgr.LoadGameData(gameBuffer, 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" % cnt)
+ 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
+
+ return pos
+
#拍卖记录管理,该类只做数据缓存存取,不写功能逻辑,防止重读脚本时功能逻辑脚本不生效
class AuctionRecordManager(object):
@@ -117,7 +151,9 @@
def __InitAuctionAttentionAttrEx(self, attentionData):
## 初始化拍卖关注实例附加属性
- setattr(attentionData, "AttentionItemIDList", [] if not attentionData.AttentionInfo else eval(attentionData.AttentionInfo))
+ setattr(attentionData, "AttentionItemIDList", [])
+ if attentionData.AttentionInfo.startswith("[") and attentionData.AttentionInfo.endswith("]"):
+ attentionData.AttentionItemIDList = eval(attentionData.AttentionInfo)
return
#拍卖物品数据缓存,该类只做数据缓存存取,不写功能逻辑,防止重读脚本时功能逻辑脚本不生效
@@ -129,6 +165,7 @@
self.worldAuctionItemList = [] # 全服拍品列表缓存 [tagDBAuctionItem, ...]
self.worldAuctionItemQueryDict = {} # 全服拍品过滤查询缓存,添加拍品时重置 {(job, (itemType, ...), itemClassLV, (itemID, ...)):[tagDBAuctionItem, ...], ...}
self.familyAuctionItemDict = {} # 仙盟拍品列表缓存,包含转移到全服的仙盟拍品 {familyID:[tagDBAuctionItem, ...], ...}
+ self.sysBuyoutItemByTimeList = [] # 系统一口价拍品按时间排序缓存 [tagDBAuctionItem, ...]
self.nowBiddingAuctionItemDict = {} # 玩家当前是最高竞价的拍品,含所有拍品 {playerID:[tagDBAuctionItem, ...], ...}
self.hisBiddingAuctionItemDict = {} # 玩家曾经参与过竞价的拍品,含所有拍品 {playerID:[tagDBAuctionItem, ...], ...}
@@ -170,6 +207,7 @@
class PyGameDataManager(object):
def __init__(self):
+ self.PlayerViewCachePyManager = PlayerViewCachePyManager()
self.AuctionAttentionManager = AuctionAttentionManager()
self.AuctionRecordManager = AuctionRecordManager()
self.AuctionItemManager = AuctionItemManager()
@@ -190,6 +228,7 @@
def GetSaveData(self):
buff = ""
+ buff += self.PlayerViewCachePyManager.GetSaveData()
buff += self.AuctionAttentionManager.GetSaveData()
buff += self.AuctionRecordManager.GetSaveData()
buff += self.AuctionItemManager.GetSaveData()
@@ -209,6 +248,7 @@
return buff
def LoadGameData(self, gameBuffer, pos):
+ pos = self.PlayerViewCachePyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionAttentionManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionRecordManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionItemManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
@@ -235,6 +275,11 @@
PyGameData.g_pyGameDataManager = pyGameDataMgr
return pyGameDataMgr
+def GetPlayerViewCachePyManager():
+ # 拍卖记录表
+ pyGameDataMgr = GetPyGameDataManager()
+ return pyGameDataMgr.PlayerViewCachePyManager
+
def GetAuctionItemManager():
## 拍卖物品缓存数据管理
pyGameDataMgr = GetPyGameDataManager()
--
Gitblit v1.8.0