attempt to call a nil value
Skrypt próbował użyć funkcji, która nie istnieje — zwykle dlatego, że został napisany pod inną wersję twojego frameworka.
Zrób najpierw to
Sprawdź, czy skrypt powstał pod twój framework i pod twoją jego wersję.
Co to znaczy
Skrypt spróbował wywołać coś, co nie jest funkcją. Nazwa w nawiasie mówi co: (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').
method 'x' warto przeczytać uważnie: znaczy, że wywołanie użyło dwukropka (obj:x()), a tablica nie ma x. To prawie zawsze różnica wersji frameworka, w której metodę przemianowano albo przeniesiono.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Funkcja natywna, której po tej stronie nie ma
Natywne klienckie wołane na serwerze albo odwrotnie. Większość natywnych od rysowania, wejścia i kamery jest tylko po stronie klienta, więc na serwerze ta globalna jest po prostu nil, a wywołanie jej to wywołanie nila.
- 2
Metoda frameworka przemianowana między wersjami
xPlayer.getJob()axPlayer.job,QBCore.Functions.GetPlayerDataaPlayerData, ESX Legacy a ESX 1.1. Skrypty pisane pod jedną wersję wołają metody, których druga nie ma. - 3
Eksport, który rozwiązał się na nil
exports['res']:method(), gdzie zasób jest zatrzymany, źle nazwany albo nie eksportuje takiej nazwy. FiveM zwraca nil zamiast rzucać błąd, więc awaria ląduje tutaj. - 4
Funkcja jest zdefiniowana niżej w pliku
Lua przypisuje
local function f, kiedy ta linia się wykonuje, a nie przy parsowaniu. Wywołanief()powyżej jej definicji woła nila. - 5
Literówka
TriggerServerEvnetalboGetPlayerPedId, kiedy prawdziwa natywna toPlayerPedId.
Jak poznać, który jest twój
print(type(theThing))
nad wywołaniem. nil przy funkcji natywnej znaczy, że jesteś po złej stronie — sprawdź referencję natywnych, która dla każdego wpisu podaje klient/serwer. table znaczy, że wołasz tablicę, co zwykle znaczy, że użyto . tam, gdzie trzeba :.
Gdzie szukać
Wskazany plik i linia. Jeśli nazwa to globalna funkcja natywna, przeszukaj referencję natywnych, zanim założysz, że zły jest twój kod.
Jak to naprawić
-- eksporty: sprawdź, czy zasób stoi, zanim mu zaufasz
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')
-- metody frameworka: czytaj API tej wersji, nie zgaduj
local job = xPlayer.job -- ESX Legacy
-- local job = xPlayer.getJob() -- starsze ESXWciąż 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 Script Optimizer czyta skrypt i naprawia kod stojący za tym.