From d0d6f28bee730ee64bf46adffa4f768d6af6ac0c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 19 九月 2024 10:56:34 +0800 Subject: [PATCH] 10267 【越南】【英文】【砍树】仙官新增膜拜 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py | 48 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 32 insertions(+), 16 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py index a471d0b..fbe659c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py @@ -32,11 +32,13 @@ if not dbRecData: dbRecData = PyGameDataStruct.tagDBPlayerRecData() self.dbRecData = dbRecData - self.evalUserData = None + self.__userDataDict = None + self.__userDataChange = False return def clear(self): self.dbRecData.clear() - self.evalUserData = None + self.__userDataDict = None + self.__userDataChange = False return def GetPlayerID(self): return self.dbRecData.PlayerID def SetPlayerID(self, playerID): self.dbRecData.PlayerID = playerID @@ -60,24 +62,39 @@ def SetValue7(self, value7): self.dbRecData.Value7 = value7 def GetValue8(self): return self.dbRecData.Value8 def SetValue8(self, value8): self.dbRecData.Value8 = value8 - def GetUserData(self): return self.dbRecData.UserData + def __GetUserDataDict(self): + if self.__userDataDict == None: + try: + self.__userDataDict = eval(self.dbRecData.UserData) + except: + self.__userDataDict = {} + return self.__userDataDict + def GetUserDataByKey(self, key, defaultValue=None): + userDataDict = self.__GetUserDataDict() + if key in userDataDict: + return userDataDict[key] + return defaultValue + def SetUserDataByKey(self, key, value): + userDataDict = self.__GetUserDataDict() + userDataDict[key] = value + self.__userDataChange = True + return + def GetUserData(self): + if self.__userDataChange: + self.SaveUserData() + return self.dbRecData.UserData def SetUserData(self, userData): + ## 支持直接保存任意格式数据,或者按字典方式读取kv值 if type(userData) != str: userData = str(userData) self.dbRecData.UserData = userData.replace(" ", "") self.dbRecData.UserDataLen = len(self.dbRecData.UserData) - if self.evalUserData != None: - self.evalUserData = None + self.__userDataDict = None + self.__userDataChange = False return - def GetEvalUserData(self, defValue={}): - if self.evalUserData == None: - try: - self.evalUserData = eval(self.dbRecData.UserData) - except: - self.evalUserData = defValue - return self.evalUserData - def SetEvalUserData(self, eValue): - self.evalUserData = eValue + def SaveUserData(self): + if self.__userDataChange: + self.SetUserData(self.__userDataDict) return def IsMatchValue(self, valueList): @@ -258,8 +275,7 @@ for recDataList in playerRecDataDict.values(): for recData in recDataList: cnt += 1 - if recData.evalUserData != None: - recData.SetUserData(recData.evalUserData) + recData.SaveUserData() savaData += recData.dbRecData.getBuffer() GameWorld.Log("Save DBPlayerRecData count :%s len=%s" % (cnt, len(savaData))) -- Gitblit v1.8.0