From a42f5ee6615a14ff1f2291952ca14fd4e293f72e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 28 四月 2025 14:58:14 +0800
Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(FamilyGCZ命令支持技能攻击)
---
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