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.
Faça isto primeiro
Confira se o script é para o seu framework e para a sua versão dele.
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
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
Um método do framework renomeado entre versões
xPlayer.getJob()contraxPlayer.job,QBCore.Functions.GetPlayerDatacontraPlayerData, ESX Legacy contra ESX 1.1. Os scripts escritos para uma versão chamam métodos que a outra não tem. - 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
A função está definida mais abaixo no arquivo
O Lua atribui
local function fquando aquela linha roda, não na análise. Chamarf()acima da definição dela é chamar nil. - 5
Um erro de digitação
TriggerServerEvnet, ouGetPlayerPedIdquando 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 antigoAinda 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 FixerPara 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
- tentativa de indexar um valor nil
- Não existe esse export
- O objeto do framework é nil (ESX / QBCore)
- não dá para retomar uma corrotina morta
- SCRIPT ERROR em citizen:/scripting/lua/scheduler.lua
- tentativa de indexar um número, booleano ou texto
- tentativa de yield através de um limite de chamada em C
- estouro de pilha
- o índice da tabela é nil