THE ORB
Démarrage du studio

L'objet ESX / QBCore / Core est nil

Un script n'a pas trouvé votre framework (ESX, QBCore, Qbox) : soit il ne tourne pas, soit il démarre après ce script.

groupsCe script ne fait rienpersonVous pouvez le corriger

Faites d'abord ceci

Dans server.cfg, assurez-vous que votre framework est listé AU-DESSUS du script qui a échoué.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

Le script a tenté d'utiliser l'objet partagé du framework avant d'en avoir un. L'erreur arrive en général sous la forme attempt to index a nil value (global 'ESX'), mais la cause est assez précise pour mériter sa propre réponse.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    L'ancien motif getSharedObject, toujours au niveau du fichier

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

    C'est asynchrone. Tout le code en dessous s'exécute avant le callback. ESX Legacy a supprimé l'événement, donc sur un serveur moderne il ne se déclenche jamais.

  2. 2

    Le framework n'est pas démarré, ou démarre après votre ressource

    ensure es_extended en dessous de ensure my-script dans server.cfg.

  3. 3

    Le mauvais accesseur pour la version installée

    ESX Legacy exporte getSharedObject ; QBCore exporte GetCoreObject ; Qbox préfère qu'on requière son module. Utiliser l'appel de l'autre framework donne nil.

  4. 4

    L'utiliser du mauvais côté

    Les objets client et serveur sont différents. Une méthode serveur appelée sur le client est nil même quand l'objet a chargé.

Comment savoir laquelle est la vôtre

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

Si l'état est started mais qu'ESX est nil, c'est l'accesseur ou le timing. Si l'état est autre chose, c'est server.cfg.

Où regarder

Le haut du fichier en échec, et l'ordre des ensure dans server.cfg.

Comment la corriger

ESX Legacy — direct, synchrone, sans callback :

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

QBCore :

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

Qbox :

local qbx = exports.qbx_core

Si vous devez gérer un vieil ESX, attendez-le au moins avant de l'utiliser :

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

Toujours bloqué sur votre propre code ?

Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.

bug_reportOuvrir le Server Fixer

Pour ce type d'erreur, le Convertisseur de scripts traduit une ressource entre ESX, QBCore et Qbox.

Les erreurs qui voyagent avec celle-ci