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
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'attempt to index a nil value (local xPlayer)'. ¿Qué ocurrió?
Pista
'index a nil' = usar .campo de una variable que vale nil.
Este código falla con 'attempt to call a nil value (field addMoneyy)'. Corrígelo.
Este código tiene un fallo:
local xPlayer = ESX.GetPlayerFromId(source)xPlayer.addMoneyy(500)Reescríbelo corregido:
Pista
Mira con lupa el nombre del método: hay una letra de más.
¿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:
