Fundamentos: tu primer recurso · Lección 5/6 · 8 min

Leer errores como un pro

Los errores de Lua tienen un patrón. Aprende a leer el stack trace y a localizar la causa en segundos.

Programar es, en gran parte, leer errores. La consola de FiveM (F8 en cliente, la consola del servidor / txAdmin en servidor) te dice exactamente qué archivo y qué línea fallaron.

El error más común: index a nil

text
SCRIPT ERROR: @taxi_job/server.lua:14: attempt to index a nil value (local 'xPlayer')

Un error típico

Se lee así: en server.lua, línea 14, intentaste acceder a algo (.dinero, .addMoney...) de una variable xPlayer que valía nil. Traducción: xPlayer no existe. Causa habitual: el jugador no está cargado todavía, o el ID es incorrecto.

  • attempt to index a nil value → usaste algo.campo pero «algo» es nil.
  • attempt to call a nil value → llamaste a una función que no existe (¿typo? ¿export mal escrito?).
  • attempt to perform arithmetic on a nil value → sumaste/operaste con un nil.
  • attempt to concatenate a nil value → uniste un texto con un nil (..).

Truco: antes de usar una variable que puede ser nil, comprueba if xPlayer then ... end. Programar a la defensiva evita el 80% de los crashes.

En la sección de Guías tienes soluciones detalladas a los errores más frecuentes de ESX. Úsala como diccionario cuando te atasques.

Practica lo aprendido

0/3
Test

'attempt to index a nil value (local xPlayer)'. ¿Qué ocurrió?

Pista

'index a nil' = usar .campo de una variable que vale nil.

Corrige el error

Este código falla con 'attempt to call a nil value (field addMoneyy)'. Corrígelo.

Este código tiene un fallo:

1local xPlayer = ESX.GetPlayerFromId(source)
2xPlayer.addMoneyy(500)

Reescríbelo corregido:

Pista

Mira con lupa el nombre del método: hay una letra de más.

Test

¿Dónde ves los errores de un script de SERVIDOR?

Pista

F8 es para el cliente.

Reto: prográmalo tú

Te dan este error: attempt to call a nil value (field 'addMoneyy'). ¿Cuál es la causa más probable y cómo lo arreglarías?

Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.

Ver pista

Mira bien el nombre del método... ¿está bien escrito?

Escribe aquí tu solución:

¿Qué tal esta lección?