attempt to index a number / boolean / string value
Skrypt dostał inny rodzaj odpowiedzi, niż się spodziewał — często przez złe odczytanie wyniku z bazy.
Zrób najpierw to
Tu trzeba zajrzeć w kod — to błąd w skrypcie, a nie w twojej konfiguracji.
Co to znaczy
. albo [] zastosowano do wartości, która istnieje, ale nie jest tablicą. To co innego niż indeksowanie nila: coś TAM JEST, tylko złego typu. Zwykle znaczy to, że API zwróciło inny kształt, niż zakładał kod.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Funkcja natywna zwróciła uchwyt, a nie tablicę
local ped = GetPlayerPed(-1), a potemped.x. Uchwyt to liczba. - 2
Funkcja zwróciła flagę powodzenia
Wiele pomocników zwraca
success, data. Wzięcie tylko pierwszej wartości i zaindeksowanie jej daje dokładnie to. - 3
Wynik zapytania czytany o poziom za głęboko
queryw oxmysql zwraca TABLICĘ wierszy.result.identifierindeksuje tablicę;result[1].identifierto wiersz. - 4
Wartość konfiguracji jest liczbą tam, gdzie oczekiwano tablicy
Config.Jobs.police, gdzieConfig.Jobszapisano jako licznik zamiast jako tablicę. - 5
Metody na ciągach wołane po złej stronie
('x'):upper()jest w porządku;x:upper(), kiedy x jest liczbą, już nie.
Jak poznać, który jest twój
print(type(thing), json.encode(thing))
Typ z komunikatu i tak mówi ci, co to jest; wartość mówi, skąd przyszło.
Gdzie szukać
Ta linia i wywołanie, które wyprodukowało wartość linijkę czy dwie wyżej.
Jak to naprawić
-- oxmysql zwraca wiersze, nie wiersz
local rows = MySQL.query.await('SELECT * FROM users WHERE identifier = ?', { id })
local user = rows and rows[1]
if not user then return end
-- natywne zwracają uchwyty
local ped = PlayerPedId()
local coords = GetEntityCoords(ped) -- TO jest wektorWciąż 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.