THE ORB
Uruchamiam studio

table index is nil

Skrypt próbował odłożyć coś pod nazwą, która była pusta — zwykle pod id gracza, które jeszcze nie było gotowe.

groupsTa funkcja przestaje działaćcodePotrzebny programista

Zrób najpierw to

Zwykle dzieje się to, kiedy ktoś jeszcze się łączy. Zanotuj, czy odpala się przy wejściu.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Coś ZAPISANO do tablicy pod kluczem nil: t[k] = v, gdzie k jest nil. Odczyt z kluczem nil jest legalny i zwraca nil; zapis z takim kluczem to błąd.

Co to powoduje

Uszeregowane według tego, jak często są odpowiedzią.

  1. 1

    Klucz pochodzący z nieudanego odczytu

    cache[GetPlayerIdentifier(src)] = data, gdzie identyfikator jest nil, bo gracz nie jest jeszcze w pełni połączony.

  2. 2

    Zmienna pętli użyta poza końcem

    Zapis pod items[i], gdzie i wyszło poza listę.

  3. 3

    Pole, którego obiekt nie ma

    byJob[player.job.name] = x, gdzie praca nie ma nazwy.

  4. 4

    Klucz liczbowy, który stał się NaN

    Dzielenie przez zero albo tonumber() na czymś nieparsowalnym, a potem użycie tego jako indeksu. Daje to "table index is NaN".

Jak poznać, który jest twój

Wypisz klucz, nie tablicę:

print('key =', tostring(theKey))

Linia jest krótka, a klucz to zwykle jedno wyrażenie, więc wskazuje to go natychmiast.

Gdzie szukać

Przypisanie we wskazanej linii, a konkretnie część w nawiasach kwadratowych.

Jak to naprawić

Zabezpiecz klucz w miejscu, w którym powstaje:

local id = GetPlayerIdentifier(src, 0)
if not id then return end
cache[id] = data

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