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