From a90833bf05d8f4a338b0224a956a3794c106bb48 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 06 二月 2025 17:04:41 +0800 Subject: [PATCH] 10385 【越南】【英语】【BT】【砍树】福地新增鼠管及优化-服务端 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py index fbe659c..05dcaea 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py @@ -74,9 +74,17 @@ if key in userDataDict: return userDataDict[key] return defaultValue - def SetUserDataByKey(self, key, value): + def SetUserDataByKey(self, key, value, noneDelKey=False): + if not value and noneDelKey: + self.DelUserDataByKey(key) + return userDataDict = self.__GetUserDataDict() userDataDict[key] = value + self.__userDataChange = True + return + def DelUserDataByKey(self, key): + userDataDict = self.__GetUserDataDict() + userDataDict.pop(key, None) self.__userDataChange = True return def GetUserData(self): @@ -110,6 +118,12 @@ curValue = getattr(self, "GetValue%s" % i)() if curValue != value: return False + return True + + def IsEmpty(self): + if self.GetValue1() or self.GetValue2() or self.GetValue3() or self.GetUserData() not in ["", "{}"] or self.GetValue4() \ + or self.GetValue5() or self.GetValue6() or self.GetValue7() or self.GetValue8(): + return False return True def GetString(self): @@ -225,12 +239,14 @@ playerRecDataList.append(recData) return - def GetPlayerRecDataFirst(self, recType, playerID): + def GetPlayerRecDataFirst(self, recType, playerID, isAddNew): ## 获取玩家记录类型对应的第一条记录,适用于仅需一条的记录类型 + # @param isAddNew: 没有记录时是否添加一条新记录,一般获取后需要更新数据的可以设置为True,仅判断用的建议设置为False,减少产生多余空数据 + recData = None recDataList = self.GetPlayerRecDataList(recType, playerID) if recDataList: recData = recDataList[0] - else: + elif isAddNew: recData = self.AddPlayerRecData(recType, playerID) return recData @@ -274,8 +290,10 @@ for playerRecDataDict in self.recTypeDict.values(): for recDataList in playerRecDataDict.values(): for recData in recDataList: - cnt += 1 recData.SaveUserData() + if recData.IsEmpty(): + continue + cnt += 1 savaData += recData.dbRecData.getBuffer() GameWorld.Log("Save DBPlayerRecData count :%s len=%s" % (cnt, len(savaData))) -- Gitblit v1.8.0