local function applyDefaults(playerData, defaults)
for key, value in pairs(defaults) do
if type(value) == 'function' then
playerData[key] = playerData[key] or value()
elseif type(value) == 'table' then
playerData[key] = playerData[key] or {}
applyDefaults(playerData[key], value)
else
playerData[key] = playerData[key] or value
end
end
end
`The above is the original applyDefaults.
If the SQL player's playermetadata data is a Boolean value,
The old code will treat the Boolean value as nil, causing a server restart to reload the original player data to the default values.
qb-core/config.lua - QBConfig.Player.PlayerDefaults`
Here is my repaired version
local function applyDefaults(playerData, defaults)
for key, value in pairs(defaults) do
if playerData[key] == nil then
if type(value) == 'function' then
playerData[key] = value()
elseif type(value) == 'table' then
playerData[key] = {}
applyDefaults(playerData[key], value)
else
playerData[key] = value
end
elseif type(value) == 'table' and type(playerData[key]) == 'table' then
applyDefaults(playerData[key], value)
end
end
end