THE ORB
Iniciando o studio

tentativa de chamar um valor nil

Um script tentou usar uma função que não existe, normalmente porque foi escrito para outra versão do seu framework.

groupsAquela função para de funcionarcodePrecisa de um desenvolvedor

Faça isto primeiro

Confira se o script é para o seu framework e para a sua versão dele.

bug_reportMelhor colar o console inteiro

O que significa

O script tentou invocar algo que não é uma função. O nome entre parênteses diz o quê: (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').

Vale a pena ler method 'x' com atenção: significa que a chamada usou dois-pontos (obj:x()) e a tabela não tem nenhum x. Isso quase sempre é uma diferença de versão do framework, onde o método foi renomeado ou movido.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    Um nativo que não existe deste lado

    Nativos de cliente chamados no servidor, ou o contrário. Quase todos os nativos de desenho, de entrada e de câmera são só de cliente, então no servidor aquele global é simplesmente nil e chamar é chamar nil.

  2. 2

    Um método do framework renomeado entre versões

    xPlayer.getJob() contra xPlayer.job, QBCore.Functions.GetPlayerData contra PlayerData, ESX Legacy contra ESX 1.1. Os scripts escritos para uma versão chamam métodos que a outra não tem.

  3. 3

    Um export que resolveu para nil

    exports['res']:method() onde o resource está parado, com nome errado, ou não exporta aquele nome. O FiveM devolve nil em vez de lançar um erro, então a falha aterrissa aqui.

  4. 4

    A função está definida mais abaixo no arquivo

    O Lua atribui local function f quando aquela linha roda, não na análise. Chamar f() acima da definição dela é chamar nil.

  5. 5

    Um erro de digitação

    TriggerServerEvnet, ou GetPlayerPedId quando o nativo de verdade é PlayerPedId.

Como saber qual é o seu

print(type(aCoisa))

acima da chamada. nil para um nativo significa que você está do lado errado: veja a referência de nativos, que diz cliente ou servidor em cada entrada. table significa que você está chamando uma tabela, e isso normalmente significa que se usou . onde era preciso :.

Onde olhar

O arquivo e a linha que ele nomeia. Se o nome é um nativo global, procure na referência de nativos antes de supor que o seu código está errado.

Como consertar

-- exports: confira que o resource está no ar antes de confiar nele
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')

-- métodos do framework: leia a API daquela versão, não adivinhe
local job = xPlayer.job          -- ESX Legacy
-- local job = xPlayer.getJob()  -- ESX mais antigo

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Script Optimizer lê o script e conserta o código por trás disso.

Erros que andam junto com este