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.
Zrób najpierw to
Zwykle dzieje się to, kiedy ktoś jeszcze się łączy. Zanotuj, czy odpala się przy wejściu.
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
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
Zmienna pętli użyta poza końcem
Zapis pod
items[i], gdzieiwyszło poza listę. - 3
Pole, którego obiekt nie ma
byJob[player.job.name] = x, gdzie praca nie ma nazwy. - 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 FixerDla tego rodzaju błędu Script Optimizer czyta skrypt i naprawia kod stojący za tym.