Frameworks: ESX y QBCore · Lección 4/5 · 9 min
Trabajos (jobs) con ESX
Cada jugador tiene un trabajo y un rango. Aprende a leerlos y a darle un trabajo nuevo.
El trabajo del jugador vive en xPlayer.job. Es la base de casi cualquier sistema de roleplay: policía, EMS, mecánico, bandas…
local xPlayer = ESX.GetPlayerFromId(source)
local nombre = xPlayer.job.name -- 'police'
local etiqueta = xPlayer.job.label -- 'Policía'
local rango = xPlayer.job.grade -- 0, 1, 2…
local rangoNombre = xPlayer.job.grade_name -- 'cadete'Leer el trabajo
Dar un trabajo
-- setJob(nombre, rango)
xPlayer.setJob('police', 2) -- policía, rango 2Asignar trabajo y rango
Ejemplo: comando solo para policías
RegisterCommand('multar', function(source)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return end
if xPlayer.job.name ~= 'police' then
return TriggerClientEvent('chat:addMessage', source, { args = { 'Sistema', 'No eres policía.' } })
end
-- aquí la lógica de multar…
end, false)Restringir por trabajo
Los nombres de trabajo ('police', 'ambulance', 'mechanic') están en la tabla jobs de la base de datos. Comprueba SIEMPRE el trabajo en el servidor antes de dar acceso a algo.
Practica lo aprendido
0/3Completa para leer el nombre del trabajo del jugador.
local xPlayer = ESX.GetPlayerFromId(source)local nombre = xPlayer..namePista
El trabajo vive en xPlayer.job, con .name, .label, .grade y .grade_name.
¿Cómo le das a un jugador el trabajo de policía con rango 2?
Este comando debería ser solo para policías pero no comprueba el trabajo. Añade que solo continúe si xPlayer.job.name es 'police'.
Este código tiene un fallo:
RegisterCommand('multar', function(source) local xPlayer = ESX.GetPlayerFromId(source) -- aqui la logica de multarend, false)Reescríbelo corregido:
Pista
Compara xPlayer.job.name con 'police' y haz return si no coincide.
Reto: prográmalo tú
Haz un comando /cobrarsueldo que solo funcione si el jugador es 'mechanic' y le pague según su rango (grade × 100).
Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.
Ver pista
Lee xPlayer.job.grade y multiplícalo; valida xPlayer.job.name primero.
Escribe aquí tu solución:
