THE ORB
Iniciando o studio

O objeto ESX / QBCore / Core é nil

Um script não achou o seu framework (ESX, QBCore, Qbox): ou não está rodando, ou sobe depois deste script.

groupsAquele script não faz nadapersonVocê consegue consertar

Faça isto primeiro

No server.cfg, garanta que o seu framework esteja listado ACIMA do script que falhou.

bug_reportMelhor colar o console inteiro

O que significa

O script tentou usar o objeto compartilhado do framework antes de ter um. O erro costuma chegar como attempt to index a nil value (global 'ESX'), mas a causa é específica o bastante para merecer a própria resposta.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    O velho padrão do getSharedObject, ainda em nível de arquivo

    ESX = nil
    TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

    Isso é assíncrono. Todo o código abaixo roda antes do callback. O ESX Legacy removeu o evento por completo, então num servidor moderno ele nunca dispara.

  2. 2

    O framework não está iniciado, ou inicia depois do seu resource

    ensure es_extended abaixo de ensure my-script no server.cfg.

  3. 3

    O acessor errado para a versão instalada

    O ESX Legacy exporta getSharedObject; o QBCore exporta GetCoreObject; o Qbox prefere que se requira o módulo dele. Usar a chamada do outro framework devolve nil.

  4. 4

    Usar ele do lado errado

    Os objetos do cliente e do servidor são diferentes. Um método que só existe no servidor é nil no cliente mesmo com o objeto carregado.

Como saber qual é o seu

print(GetResourceState('es_extended'), ESX ~= nil)

Se o estado é started mas o ESX é nil, é o acessor ou o tempo. Se o estado é outra coisa, é o server.cfg.

Onde olhar

O topo do arquivo que falha, e a ordem dos ensure no server.cfg.

Como consertar

ESX Legacy: direto, síncrono, sem callback:

ESX = exports['es_extended']:getSharedObject()

QBCore:

local QBCore = exports['qb-core']:GetCoreObject()

Qbox:

local qbx = exports.qbx_core

Se você precisa dar suporte a um ESX antigo, pelo menos espere por ele antes de usar:

CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Wait(100)
    end
end)

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 Conversor de scripts traduz um resource entre ESX, QBCore e Qbox.

Erros que andam junto com este