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…

lua
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

lua
-- setJob(nombre, rango)
xPlayer.setJob('police', 2) -- policía, rango 2

Asignar trabajo y rango

Ejemplo: comando solo para policías

lua
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/3
Rellena los huecos

Completa para leer el nombre del trabajo del jugador.

1local xPlayer = ESX.GetPlayerFromId(source)
2local nombre = xPlayer..name
Pista

El trabajo vive en xPlayer.job, con .name, .label, .grade y .grade_name.

Test

¿Cómo le das a un jugador el trabajo de policía con rango 2?

Corrige el error

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:

1RegisterCommand('multar', function(source)
2 local xPlayer = ESX.GetPlayerFromId(source)
3 -- aqui la logica de multar
4end, 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:

¿Qué tal esta lección?