| | |
| | | import GameWorld
|
| | | import PlayerSocial
|
| | | import CrossBillboard
|
| | | import CrossFamilyGCZ
|
| | | import PlayerFamilyStore
|
| | | import PlayerCompensation
|
| | | import PlayerBourse
|
| | |
| | | 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 time
|
| | |
|
| | | def GetSavePyData():
|
| | | |
| | | #存储数据前,一些功能业务数据先转化为存档数据
|
| | | CrossFamilyGCZ.OnSavePyData()
|
| | | |
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | result = pyGameDataMgr.GetSaveData()
|
| | | GameWorld.Log("GetSavePyData!! id = %s-%s"%(id(pyGameDataMgr), len(result)))
|
| | |
| | | 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):
|
| | |
| | | self.playerAssistDict[PlayerID] = []
|
| | | playerAssistList = self.playerAssistDict[PlayerID]
|
| | | playerAssistList.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():
|
| | | if dbData.PlayerID < 10000:
|
| | | # 假人玩家不存储
|
| | | continue
|
| | | 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
|
| | |
|
| | | return pos
|
| | |
|
| | |
| | |
|
| | | 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.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()
|
| | |
| | |
|
| | | def GetSaveData(self):
|
| | | buff = ""
|
| | | buff += self.DBGameRecDataManager.GetSaveData()
|
| | | buff += self.DBPyFuncTeamManager.GetSaveData()
|
| | | buff += self.DBPyFuncTeamMemManager.GetSaveData()
|
| | | buff += self.DBPlayerRecDataManager.GetSaveData()
|
| | |
| | | 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))
|
| | |
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.familyStoreItemManager
|
| | |
|
| | | def GetDBGameRecDataManager():
|
| | | # 通用记录表新管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.DBGameRecDataManager
|
| | |
|
| | | def GetDBPlayerPackDataManager():
|
| | | # 玩家打包数据管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.DBPlayerPackDataManager
|
| | |
|
| | | def GetDBPyFuncTeamManager():
|
| | | # 功能队伍管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|