Merge pull request #1407 from Sub-Zero-Interactive/main

!Refactor(core): Statebag removal and changes
This commit is contained in:
Gellipapa
2024-10-10 18:08:57 +02:00
committed by GitHub
3 changed files with 35 additions and 42 deletions
+3 -3
View File
@@ -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)
+5 -9
View File
@@ -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 <const> = _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
+27 -30
View File
@@ -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