hxp
2024-09-18 458f8ad37f944f5a4334dc9e522e6640e4aa2def
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerRecData.py
@@ -32,11 +32,13 @@
        if not dbRecData:
            dbRecData = PyGameDataStruct.tagDBPlayerRecData()
        self.dbRecData = dbRecData
        self.evalUserData = None
        self.__userDataDict = None
        self.__userDataChange = False
        return
    def clear(self):
        self.dbRecData.clear()
        self.evalUserData = None
        self.__userDataDict = None
        self.__userDataChange = False
        return
    def GetPlayerID(self): return self.dbRecData.PlayerID
    def SetPlayerID(self, playerID): self.dbRecData.PlayerID = playerID
@@ -60,24 +62,39 @@
    def SetValue7(self, value7): self.dbRecData.Value7 = value7
    def GetValue8(self): return self.dbRecData.Value8
    def SetValue8(self, value8): self.dbRecData.Value8 = value8
    def GetUserData(self): return self.dbRecData.UserData
    def __GetUserDataDict(self):
        if self.__userDataDict == None:
            try:
                self.__userDataDict = eval(self.dbRecData.UserData)
            except:
                self.__userDataDict = {}
        return self.__userDataDict
    def GetUserDataByKey(self, key, defaultValue=None):
        userDataDict = self.__GetUserDataDict()
        if key in userDataDict:
            return userDataDict[key]
        return defaultValue
    def SetUserDataByKey(self, key, value):
        userDataDict = self.__GetUserDataDict()
        userDataDict[key] = value
        self.__userDataChange = True
        return
    def GetUserData(self):
        if self.__userDataChange:
            self.SaveUserData()
        return self.dbRecData.UserData
    def SetUserData(self, userData):
        ## 支持直接保存任意格式数据,或者按字典方式读取kv值
        if type(userData) != str:
            userData = str(userData)
        self.dbRecData.UserData = userData.replace(" ", "")
        self.dbRecData.UserDataLen = len(self.dbRecData.UserData)
        if self.evalUserData != None:
            self.evalUserData = None
        self.__userDataDict = None
        self.__userDataChange = False
        return
    def GetEvalUserData(self, defValue={}):
        if self.evalUserData == None:
            try:
                self.evalUserData = eval(self.dbRecData.UserData)
            except:
                self.evalUserData = defValue
        return self.evalUserData
    def SetEvalUserData(self, eValue):
        self.evalUserData = eValue
    def SaveUserData(self):
        if self.__userDataChange:
            self.SetUserData(self.__userDataDict)
        return
    
    def IsMatchValue(self, valueList):
@@ -258,8 +275,7 @@
            for recDataList in playerRecDataDict.values():
                for recData in recDataList:
                    cnt += 1
                    if recData.evalUserData != None:
                        recData.SetUserData(recData.evalUserData)
                    recData.SaveUserData()
                    savaData += recData.dbRecData.getBuffer()
                    
        GameWorld.Log("Save DBPlayerRecData count :%s len=%s" % (cnt, len(savaData)))