es_extended
if not GetResourceState('es_extended') == 'started' then return end
Framework = {
---@param source number
---@return string|nil
getIdentifierBySource = function(source)
if not source or type(source) ~= 'number' or not GetPlayerName(source) then
prints.error('Invalid source provided')
return nil
end
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then
prints.error('Player not found for source: %s', source)
return nil
end
local identifier = xPlayer.getIdentifier()
if not identifier then
prints.error('Identifier not found for player: %s', source)
return nil
end
return identifier
end,
---@param stateid string
---@return string
getPlayerGender = function(stateid)
local result = MySQL.single.await(
[[
SELECT
sex
FROM
users
WHERE
identifier = ?
]], { stateid }
)
if not result or not result.sex then
prints.error('Gender not found for stateid: %s', stateid)
return 'Unknown'
end
local gender = result.sex
if gender == 'm' or gender == 'M' then
return 'Male'
elseif gender == 'f' or gender == 'F' then
return 'Female'
else
prints.error('Invalid gender value for stateid: %s', stateid)
return 'Unknown'
end
end,
---@param stateid string
---@return table A list of jobs with keys: label, value, coords<optional>
getPlayerEmployment = function(stateid)
local result = MySQL.single.await(
[[
SELECT
job,
job_grade
FROM
users
WHERE
identifier = ?
]], { stateid }
)
if not result or not result.job then
prints.error('Employment not found for stateid: %s', stateid)
return {}
end
local jobLabel = result.job
local jobGrade = result.job_grade
return {
{
label = jobLabel,
value = tostring(jobGrade)
}
}
end,
---@param author_stateid string
---@param stateid string
---@param amount number
---@return boolean
penalizePlayer = function(author_stateid, stateid, amount)
local xTarget = ESX.GetPlayerFromIdentifier(stateid)
if not xTarget then
prints.error("Player not found for identifier: %s", stateid)
return false
end
-- Example penalization logic
-- local fineAmount = math.floor(amount)
-- MySQL.insert('INSERT INTO billing (identifier, sender, target_type, target, label, amount) VALUES (?, ?, ?, ?, ?, ?)',
-- { xTarget.getIdentifier(), 'MDT', 'society', 'society_police', 'Issued fine', fineAmount }, function(insertId)
-- xTarget.triggerEvent('esx:showNotification', 'You have just ~r~received a fine')
-- end)
return true
end,
---@param author_stateid string
---@param stateid string
---@param jailTime number
---@return boolean
detainPlayer = function(author_stateid, stateid, jailTime)
if GetResourceState('esx_jail') ~= 'started' then
prints.error("esx_jail resource is not started")
return false
end
local xTarget = ESX.GetPlayerFromIdentifier(stateid)
if not xTarget then
prints.error("Player not found for identifier: %s", stateid)
return false
end
-- exports.esx_jail:sendToJail(xTarget.source, jailTime) -- Example detainment logic
return true
end
}
Last updated
Was this helpful?