diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index d933a8cba..09d51c967 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -719,6 +719,6 @@ ESX.RegisterClientCallback("esx:GetVehicleType", function(cb, model) cb(ESX.GetVehicleType(model)) end) -AddStateBagChangeHandler("metadata", "player:" .. tostring(GetPlayerServerId(PlayerId())), function(_, key, val) - ESX.SetPlayerData(key, val) -end) +RegisterNetEvent('esx:updatePlayerData', function(key, val) + ESX.SetPlayerData(key, val) +end) \ No newline at end of file diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index b1c200385..a83c566a2 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -52,12 +52,11 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, _ExecuteCommand(("add_principal identifier.%s group.%s"):format(self.license, self.group)) local stateBag = Player(self.source).state - stateBag:set("identifier", self.identifier, true) - stateBag:set("license", self.license, true) + stateBag:set("identifier", self.identifier, false) + stateBag:set("license", self.license, false) stateBag:set("job", self.job, true) stateBag:set("group", self.group, true) stateBag:set("name", self.name, true) - stateBag:set("metadata", self.metadata, true) ---@param eventName string ---@param ... any @@ -77,7 +76,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end ---@param vector boolean - ---@param heading boolean + ---@param heading boolean ---@return vector3 | vector4 | table function self.getCoords(vector, heading) local ped = _GetPlayerPed(self.source) @@ -163,7 +162,6 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, ---@return void function self.set(k, v) self.variables[k] = v - Player(self.source).state:set(k, v, true) end ---@param k string @@ -831,8 +829,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.metadata[index] = type(self.metadata[index]) == "table" and self.metadata[index] or {} self.metadata[index][value] = subValue end - - Player(self.source).state:set("metadata", self.metadata, true) + self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata) end function self.clearMeta(index, subValues) @@ -876,8 +873,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, else return print(("[^1ERROR^7] xPlayer.clearMeta ^5subValues^7 should be ^5string^7 or ^5table^7, received ^5%s^7!"):format(type(subValues))) end - - Player(self.source).state:set("metadata", self.metadata, true) + self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata) end for fnName, fn in pairs(targetOverrides) do diff --git a/[core]/esx_identity/server/main.lua b/[core]/esx_identity/server/main.lua index e7d5ec88f..388be15b7 100644 --- a/[core]/esx_identity/server/main.lua +++ b/[core]/esx_identity/server/main.lua @@ -12,20 +12,34 @@ local function deleteIdentityFromDatabase(xPlayer) end end +function SetPlayerData(xPlayer, data) + local name = ("%s %s"):format(data.firstName, data.lastName) + xPlayer.setName(name) + xPlayer.set("firstName", data.firstName) + xPlayer.set("lastName", data.lastName) + xPlayer.set("dateofbirth", data.dateOfBirth) + xPlayer.set("sex", data.sex) + xPlayer.set("height", data.height) + + local state = Player(xPlayer.source).state + state:set("name", name, true) + state:set("firstName", data.firstName, true) + state:set("lastName", data.lastName, true) + state:set("dateofbirth", data.dateOfBirth, true) + state:set("sex", data.sex, true) + state:set("height", data.height, true) +end + local function deleteIdentity(xPlayer) if not alreadyRegistered[xPlayer.identifier] then return end - xPlayer.setName(("%s %s"):format(nil, nil)) - xPlayer.set("firstName", nil) - xPlayer.set("lastName", nil) - xPlayer.set("dateofbirth", nil) - xPlayer.set("sex", nil) - xPlayer.set("height", nil) + SetPlayerData(xPlayer, {firstName = nil, lastName = nil, dateOfBirth = nil, sex = nil, height = nil}) deleteIdentityFromDatabase(xPlayer) end + local function saveIdentityToDatabase(identifier, identity) MySQL.update.await("UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?", { identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier }) end @@ -222,12 +236,8 @@ if Config.UseDeferrals then end local currentIdentity = playerIdentity[xPlayer.identifier] - xPlayer.setName(("%s %s"):format(currentIdentity.firstName, currentIdentity.lastName)) - xPlayer.set("firstName", currentIdentity.firstName) - xPlayer.set("lastName", currentIdentity.lastName) - xPlayer.set("dateofbirth", currentIdentity.dateOfBirth) - xPlayer.set("sex", currentIdentity.sex) - xPlayer.set("height", currentIdentity.height) + SetPlayerData(xPlayer, currentIdentity) + if currentIdentity.saveToDatabase then saveIdentityToDatabase(xPlayer.identifier, currentIdentity) end @@ -243,13 +253,8 @@ else return end local currentIdentity = playerIdentity[xPlayer.identifier] + SetPlayerData(xPlayer, currentIdentity) - xPlayer.setName(("%s %s"):format(currentIdentity.firstName, currentIdentity.lastName)) - xPlayer.set("firstName", currentIdentity.firstName) - xPlayer.set("lastName", currentIdentity.lastName) - xPlayer.set("dateofbirth", currentIdentity.dateOfBirth) - xPlayer.set("sex", currentIdentity.sex) - xPlayer.set("height", currentIdentity.height) TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity) if currentIdentity.saveToDatabase then saveIdentityToDatabase(xPlayer.identifier, currentIdentity) @@ -340,12 +345,8 @@ else local currentIdentity = playerIdentity[xPlayer.identifier] if currentIdentity and alreadyRegistered[xPlayer.identifier] then - xPlayer.setName(("%s %s"):format(currentIdentity.firstName, currentIdentity.lastName)) - xPlayer.set("firstName", currentIdentity.firstName) - xPlayer.set("lastName", currentIdentity.lastName) - xPlayer.set("dateofbirth", currentIdentity.dateOfBirth) - xPlayer.set("sex", currentIdentity.sex) - xPlayer.set("height", currentIdentity.height) + SetPlayerData(xPlayer, currentIdentity) + TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity) if currentIdentity.saveToDatabase then saveIdentityToDatabase(xPlayer.identifier, currentIdentity) @@ -400,12 +401,8 @@ else local currentIdentity = playerIdentity[xPlayer.identifier] - xPlayer.setName(("%s %s"):format(currentIdentity.firstName, currentIdentity.lastName)) - xPlayer.set("firstName", currentIdentity.firstName) - xPlayer.set("lastName", currentIdentity.lastName) - xPlayer.set("dateofbirth", currentIdentity.dateOfBirth) - xPlayer.set("sex", currentIdentity.sex) - xPlayer.set("height", currentIdentity.height) + SetPlayerData(xPlayer, currentIdentity) + TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity) saveIdentityToDatabase(xPlayer.identifier, currentIdentity) alreadyRegistered[xPlayer.identifier] = true