THE ORB
Uruchamiam studio

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.

groupsTa funkcja przestaje działaćcodePotrzebny programista

Zrób najpierw to

Tu trzeba zajrzeć w kod — to błąd w skrypcie, a nie w twojej konfiguracji.

bug_reportWklej zamiast tego całą konsolę

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. 1

    Funkcja natywna zwróciła uchwyt, a nie tablicę

    local ped = GetPlayerPed(-1), a potem ped.x. Uchwyt to liczba.

  2. 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. 3

    Wynik zapytania czytany o poziom za głęboko

    query w oxmysql zwraca TABLICĘ wierszy. result.identifier indeksuje tablicę; result[1].identifier to wiersz.

  4. 4

    Wartość konfiguracji jest liczbą tam, gdzie oczekiwano tablicy

    Config.Jobs.police, gdzie Config.Jobs zapisano jako licznik zamiast jako tablicę.

  5. 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 wektor

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 Fixer

Dla tego rodzaju błędu Script Optimizer czyta skrypt i naprawia kod stojący za tym.

Błędy, które chodzą z tym w parze