| | |
| | |
|
| | | import GameWorld
|
| | | import PlayerSocial
|
| | | import CrossBillboard
|
| | | import PlayerFamilyStore
|
| | | import PlayerCompensation
|
| | | import PlayerBourse
|
| | | import GameWorldBoss
|
| | | import PlayerSealDemon
|
| | |
| | | import CrossRealmPK
|
| | | import AuctionHouse
|
| | | import PlayerAssist
|
| | | import PlayerRecData
|
| | | import GameWorldMineArea
|
| | | import PyGameDataStruct
|
| | | import IpyGameDataPY
|
| | | import PlayerCharm
|
| | | import PlayerLove
|
| | | import CommFunc
|
| | | import time
|
| | |
|
| | | def GetSavePyData():
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | result = pyGameDataMgr.GetSaveData()
|
| | | GameWorld.DebugLog("GetSavePyData!! id = %s-%s"%(id(pyGameDataMgr), len(result)))
|
| | | GameWorld.Log("GetSavePyData!! id = %s-%s"%(id(pyGameDataMgr), len(result)))
|
| | | result = binascii.b2a_hex(result)
|
| | | #GameWorld.DebugLog("GetSavePyData!! result = %s-%s"%(result, len(result)))
|
| | | # 字节码在C++转化会发生错误must be string without null bytes, not str,但是可以正常保存,错误会在下次调用便宜接口才会触发
|
| | |
| | | class PlayerAssistThanksPyManager(object):
|
| | |
|
| | | def __init__(self):
|
| | | self.assistThanksDict = {} # 所有感谢 {GUID:tagDBAssistThanks, ...}
|
| | | self.allAssistThanksList = [] # 所有感谢 [tagDBAssistThanks, ...]
|
| | | self.playerThanksDict = {} # 玩家未感谢的 {playerID:[tagDBAssistThanks, ...], ...}
|
| | | self.assistPlayerThanksDict = {} # 协助玩家未接受感谢的协助 {assistPlayerID:[tagDBAssistThanks, ...], ...}
|
| | | return
|
| | |
|
| | | # 保存数据 存数据库和realtimebackup
|
| | | def GetSaveData(self):
|
| | | PlayerAssist.RemoveOutofdateAssistThanks()
|
| | | savaData = ""
|
| | | cntData = ""
|
| | | cnt = 0
|
| | |
|
| | | for dbData in self.assistThanksDict.values():
|
| | | for dbData in self.allAssistThanksList:
|
| | | cnt += 1
|
| | | PlayerAssist.OnSaveAssistThanksData(dbData)
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save DBAssistThanks count :%s" % cnt)
|
| | | GameWorld.Log("Save DBAssistThanks count :%s len=%s" % (cnt, len(savaData)))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | | dbData = PyGameDataStruct.tagDBAssistThanks()
|
| | | dbData.clear()
|
| | | pos += dbData.readData(datas, pos, dataslen)
|
| | | |
| | | self.assistThanksDict[dbData.GUID] = dbData
|
| | | playerID = dbData.PlayerID
|
| | | if playerID not in self.playerThanksDict:
|
| | | self.playerThanksDict[playerID] = []
|
| | | playerThanksList = self.playerThanksDict[playerID]
|
| | | playerThanksList.append(dbData)
|
| | | PlayerAssist.OnInitAssistThanksData(self, dbData)
|
| | |
|
| | | return pos
|
| | |
|
| | |
| | |
|
| | | def __init__(self):
|
| | | self.allAssistDict = {} # 所有协助 {GUID:tagDBAssist, ...}
|
| | | self.familyAssistDict = {} # 仙盟协助缓存 {familyID:[tagDBAssist, ...], ...}
|
| | |
|
| | | self.playerNoSaveDBAssistDict = {} # 玩家发布的不存库协助 {playerID:[tagDBAssist, ...], ...}
|
| | | self.playerAssistDict = {} # 玩家发布的协助 {playerID:[tagDBAssist, ...], ...}
|
| | | self.playerAssistingDict = {} # 玩家正在协助中的协助,只能存在一条 {playerID:tagDBAssist, ...}
|
| | | return
|
| | |
|
| | |
| | | cnt += 1
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save DBAssist count :%s" % cnt)
|
| | | GameWorld.Log("Save DBAssist count :%s len=%s" % (cnt, len(savaData)))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | | 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)
|
| | | PlayerID = dbData.PlayerID
|
| | | if PlayerID not in self.playerAssistDict:
|
| | | self.playerAssistDict[PlayerID] = []
|
| | | playerAssistList = self.playerAssistDict[PlayerID]
|
| | | playerAssistList.append(dbData)
|
| | |
|
| | | return pos
|
| | |
|
| | |
| | | cnt += 1
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save PlayerViewCachePy count :%s" % cnt)
|
| | | GameWorld.Log("Save PlayerViewCachePy count :%s len=%s" % (cnt, len(savaData)))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | | cntData = ""
|
| | | cnt = 0
|
| | |
|
| | | unSaveCnt = 0
|
| | | curTime = int(time.time())
|
| | | vaildSeconds = IpyGameDataPY.GetFuncCfg("AuctionHouse", 1) * 3600 * 24
|
| | | for recordDict in [self.myAuctionItemRecordDict, self.myBidItemRecordDict, self.familyAuctionItemRecordDict]:
|
| | | for recordList in recordDict.values():
|
| | | for dbData in recordList:
|
| | | if vaildSeconds:
|
| | | recordTime = GameWorld.ChangeTimeStrToNum(dbData.RecordTime)
|
| | | if curTime - recordTime > vaildSeconds:
|
| | | unSaveCnt += 1
|
| | | continue
|
| | | cnt += 1
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save AuctionRecord count :%s" % cnt)
|
| | | GameWorld.Log("Save AuctionRecord count :%s len=%s unSaveCnt=%s" % (cnt, len(savaData), unSaveCnt))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | | cnt += 1
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save AuctionAttention count :%s" % cnt)
|
| | | GameWorld.Log("Save AuctionAttention count :%s len=%s" % (cnt, len(savaData)))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | | cnt += 1
|
| | | savaData += dbData.getBuffer()
|
| | |
|
| | | GameWorld.Log("Save AuctionItem count :%s" % cnt)
|
| | | GameWorld.Log("Save AuctionItem count :%s len=%s" % (cnt, len(savaData)))
|
| | | return CommFunc.WriteDWORD(cntData, cnt) + savaData
|
| | |
|
| | | # 从数据库载入数据
|
| | |
| | |
|
| | | class PyGameDataManager(object):
|
| | | def __init__(self):
|
| | | 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()
|
| | | self.IntimacyManager = PlayerSocial.IntimacyManager()
|
| | | self.CrossPersonalCompensationManager = PlayerCompensation.CrossPersonalCompensationManager()
|
| | | self.CrossBillboardManager = CrossBillboard.CrossBillboardManager()
|
| | | self.PlayerAssistThanksPyManager = PlayerAssistThanksPyManager()
|
| | | self.PlayerAssistPyManager = PlayerAssistPyManager()
|
| | | self.PlayerViewCachePyManager = PlayerViewCachePyManager()
|
| | |
| | |
|
| | | def GetSaveData(self):
|
| | | buff = ""
|
| | | 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()
|
| | | buff += self.IntimacyManager.GetSaveData()
|
| | | buff += self.CrossPersonalCompensationManager.GetSaveData()
|
| | | buff += self.CrossBillboardManager.GetSaveData()
|
| | | buff += self.PlayerAssistThanksPyManager.GetSaveData()
|
| | | buff += self.PlayerAssistPyManager.GetSaveData()
|
| | | buff += self.PlayerViewCachePyManager.GetSaveData()
|
| | |
| | | return buff
|
| | |
|
| | | def LoadGameData(self, gameBuffer, pos):
|
| | | 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))
|
| | | pos = self.IntimacyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | | pos = self.CrossPersonalCompensationManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | | pos = self.CrossBillboardManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | | pos = self.PlayerAssistThanksPyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | | pos = self.PlayerAssistPyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | | pos = self.PlayerViewCachePyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
|
| | |
| | | pyGameDataMgr = PyGameDataManager()
|
| | | PyGameData.g_pyGameDataManager = pyGameDataMgr
|
| | | return pyGameDataMgr
|
| | |
|
| | | def GetCrossPersonalCompensationManager():
|
| | | # 跨服个人补偿邮件管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.CrossPersonalCompensationManager
|
| | |
|
| | | def GetCrossBillboardManager():
|
| | | # 跨服排行榜管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.CrossBillboardManager
|
| | |
|
| | | def GetPlayerAssistThanksPyManager():
|
| | | # 协助感谢表
|
| | |
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.familyStoreItemManager
|
| | |
|
| | | 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()
|
| | | return pyGameDataMgr.DBPyCoupleManager
|
| | |
|
| | | def GetDBPyUnNotifyLoveGiftRecManager():
|
| | | # 未通知的赠送礼物记录
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.DBPyUnNotifyLoveGiftRecManager
|
| | |
|
| | | def GetDBPyCharmValueRecManager():
|
| | | # 魅力管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.DBPyCharmValueRecManager
|
| | |
|
| | | def GetIntimacyManager():
|
| | | # 亲密管理
|
| | | pyGameDataMgr = GetPyGameDataManager()
|
| | | return pyGameDataMgr.IntimacyManager
|
| | |
|
| | | # 好友系统
|
| | | def GetFriendManager():
|
| | | pyGameDataMgr = GetPyGameDataManager()
|