Obiekt ESX / QBCore / Core jest nil
Skrypt nie znalazł twojego frameworka (ESX, QBCore, Qbox) — albo nie działa, albo startuje po tym skrypcie.
Zrób najpierw to
W server.cfg upewnij się, że twój framework jest wymieniony POWYŻEJ skryptu, który się wysypał.
Co to znaczy
Skrypt spróbował użyć współdzielonego obiektu frameworka, zanim go miał. Sam błąd zwykle przychodzi jako attempt to index a nil value (global 'ESX'), ale przyczyna jest na tyle konkretna, że zasługuje na własną odpowiedź.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Stary wzorzec getSharedObject, wciąż w zasięgu pliku
ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)To jest asynchroniczne. Każdy kod poniżej wykonuje się przed callbackiem. ESX Legacy usunął to zdarzenie w całości, więc na nowoczesnym serwerze nie odpala się wcale.
- 2
Framework nie jest uruchomiony albo startuje po twoim zasobie
ensure es_extendedponiżejensure moj-skryptw server.cfg. - 3
Zły akcesor dla zainstalowanej wersji
ESX Legacy eksportuje
getSharedObject; QBCore eksportujeGetCoreObject; Qbox woli, żeby wymagać jego modułu. Użycie wywołania z innego frameworka daje nil. - 4
Użycie po niewłaściwej stronie
Obiekt kliencki i serwerowy to co innego. Metoda tylko serwerowa wywołana na kliencie jest nil, nawet kiedy obiekt się wczytał.
Jak poznać, który jest twój
print(GetResourceState('es_extended'), ESX ~= nil)Jeśli stan to started, a ESX jest nil, chodzi o akcesor albo o moment. Jeśli stan jest jakikolwiek inny, chodzi o server.cfg.
Gdzie szukać
Początek wadliwego pliku i kolejność ensure w server.cfg.
Jak to naprawić
ESX Legacy — bezpośrednio, synchronicznie, bez callbacku:
ESX = exports['es_extended']:getSharedObject()
QBCore:
local QBCore = exports['qb-core']:GetCoreObject()
Qbox:
local qbx = exports.qbx_core
Jeśli musisz wspierać stare ESX, przynajmniej zaczekaj na nie, zanim go użyjesz:
CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Wait(100)
end
end)Wciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Konwerter skryptów przenosi zasób między ESX, QBCore i Qbox.