THE ORB
Arrancando el studio

intento de llamar a un valor nil

Un script intentó usar una función que no existe, normalmente porque fue escrito para otra versión de tu framework.

groupsEsa función deja de andarcodeNecesita un desarrollador

Haz esto primero

Comprueba que el script sea para tu framework y para tu versión de él.

bug_reportMejor pega tu consola entera

Qué significa

El script intentó invocar algo que no es una función. El nombre entre paréntesis dice qué: (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').

method 'x' vale la pena leerlo con atención: significa que la llamada usó dos puntos (obj:x()) y la tabla no tiene ningún x. Eso casi siempre es una diferencia de versión del framework, donde el método se renombró o se movió.

Qué lo provoca

Ordenado por la frecuencia con la que es la respuesta.

  1. 1

    Un nativo que no existe de este lado

    Nativos de cliente llamados en el servidor, o al revés. Casi todos los nativos de dibujo, de entrada y de cámara son sólo de cliente, así que en el servidor ese global es sencillamente nil y llamarlo es llamar a nil.

  2. 2

    Un método del framework renombrado entre versiones

    xPlayer.getJob() contra xPlayer.job, QBCore.Functions.GetPlayerData contra PlayerData, ESX Legacy contra ESX 1.1. Los scripts escritos para una versión llaman a métodos que la otra no tiene.

  3. 3

    Un export que resolvió a nil

    exports['res']:method() donde el recurso está detenido, mal nombrado, o no exporta ese nombre. FiveM devuelve nil en vez de lanzar un error, así que el fallo aterriza acá.

  4. 4

    La función está definida más abajo en el archivo

    Lua asigna local function f cuando esa línea se ejecuta, no al analizar. Llamar a f() por encima de su definición es llamar a nil.

  5. 5

    Una errata

    TriggerServerEvnet, o GetPlayerPedId cuando el nativo de verdad es PlayerPedId.

Cómo saber cuál es el tuyo

print(type(laCosa))

encima de la llamada. nil para un nativo significa que estás del lado equivocado: mirá la referencia de nativos, que dice cliente o servidor en cada entrada. table significa que estás llamando a una tabla, y eso normalmente significa que se usó . donde hacía falta :.

Dónde mirar

El archivo y la línea que nombra. Si el nombre es un nativo global, buscá en la referencia de nativos antes de dar por sentado que tu código está mal.

Cómo arreglarlo

-- exports: comprobá que el recurso esté arriba antes de confiar en él
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')

-- métodos del framework: leé la API de esa versión, no adivines
local job = xPlayer.job          -- ESX Legacy
-- local job = xPlayer.getJob()  -- ESX más viejo

¿Sigues atascado en tu propio código?

Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.

bug_reportAbrir el Server Fixer

Para este tipo de error, el Script Optimizer lee el script y repara el código que hay detrás.

Errores que viajan con este