From a296ea45548bf475b113842b60d604762a8af266 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 26 二月 2025 17:56:07 +0800 Subject: [PATCH] 10385 【越南】【英语】【BT】【GM】【砍树】福地新增鼠管及优化-服务端(优化结算奖励逻辑;) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py | 28 ++++++++++++++++++++++++---- 1 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py index fbe659c..66bfeaf 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))) @@ -317,6 +335,8 @@ @param userData: 自定义字符信息 @param notifyType: 0-不通知; 1-通知单条; 2-通知全部 ''' + if not curPlayer: + return playerID = curPlayer.GetPlayerID() if recType not in ShareDefine.Def_PlayerRecTypeList: GameWorld.ErrLog("玩家记录类型错误: recType=%s" % recType, playerID) -- Gitblit v1.8.0