hxp
2025-02-06 5b0e1897a1c66774506b7e5c23d0c30373a88745
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)))