Fundamentos: tu primer recurso en QBCore · Lección 5/5 · 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 'Player')

Un error típico

Se lee así: en server.lua, línea 14, intentaste acceder a algo (.PlayerData, .Functions...) de una variable Player que valía nil. Traducción: Player no existe. Causa habitual en QBCore: QBCore.Functions.GetPlayer(src) devolvió nil porque 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 (¿GetPlayer devolvió 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: tras GetPlayer comprueba SIEMPRE if not Player then return end. Programar a la defensiva evita el 80% de los crashes.

En la sección de Guías tienes soluciones a los errores más frecuentes de QBCore (incluido attempt to index a nil value). Úsala como diccionario cuando te atasques.

Practica lo aprendido

0/3
Test

Ves este error: «attempt to index a nil value (local 'Player')». ¿Qué significa?

Corrige el error

El error «attempt to call a nil value (field 'AddMoneyy')» viene de un typo. Corrige el nombre del método.

Este código tiene un fallo:

1Player.Functions.AddMoneyy('cash', 500)

Reescríbelo corregido:

Pista

Mira bien el nombre del método... tiene una letra de más. Debería ser AddMoney.

Rellena los huecos

Completa el patrón defensivo que evita el 80% de los crashes tras obtener al jugador.

1local Player = QBCore.Functions.GetPlayer(source)
2if not Player then end
Pista

Si el jugador no existe, corta la ejecución de la función antes de tocar sus datos.

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? Debería ser AddMoney.

Escribe aquí tu solución:

¿Qué tal esta lección?