bad argument #N to '<funkcja>'
Skrypt przekazał grze zły rodzaj wartości, prawie zawsze dlatego, że coś, czego potrzebował (pojazd, model), nigdy się nie wczytało.
Zrób najpierw to
Sprawdź, czy model albo pojazd, którego próbuje użyć, naprawdę istnieje na twoim serwerze.
Co to znaczy
Natywna albo standardowa funkcja dostała zły typ w tym miejscu argumentu. Komunikat mówi, w którym i czego oczekiwała:
bad argument #1 to 'TaskGoToCoordAnyMeans' (number expected, got nil)
Numeracja argumentów zaczyna się od 1. Przy metodzie wołanej z dwukropkiem argument #1 to sam obiekt, więc #2 to pierwsza rzecz w nawiasach.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Uchwyt encji równy 0 albo nil
CreateVehiclezwróciło 0, bo model nigdy się nie wczytał, a uchwyt poszedł prosto do kolejnej funkcji natywnej. Zdecydowanie najczęstsza postać. - 2
Nazwa modelu, której nigdy nie zahashowano
Większość miejsc na model chce hasha, a nie ciągu znaków. Użyj
GetHashKey(name)albo literału w odwrotnych apostrofach. - 3
Wektor tam, gdzie chciane są trzy liczby, albo odwrotnie
SetEntityCoords(ped, coords)zawodzi tam, gdzie oczekiwane jestSetEntityCoords(ped, coords.x, coords.y, coords.z, ...). - 4
nil z konfiguracji albo z wiersza bazy
Odczyt brakującego klucza po cichu daje nil; błąd wychodzi linijkę później, tutaj.
- 5
Zła kolejność argumentów
Dwie zamienione liczby nie dadzą błędu. Liczba tam, gdzie należy się ciąg znaków, już tak.
Jak poznać, który jest twój
Wypisz każdy argument z jego typem w linii wyżej:
print(('ped=%s type=%s'):format(tostring(ped), type(ped)))Jeśli wartością jest 0, a nie nil, prawdziwy błąd jest wyżej: coś zwróciło nieudany uchwyt, a nikt tego nie sprawdził.
Gdzie szukać
Wskazana linia, a potem linia, która WYPRODUKOWAŁA zły argument.
Jak to naprawić
Wczytuj modele przed spawnem i sprawdzaj uchwyty przed użyciem:
local model = GetHashKey('adder')
RequestModel(model)
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do Wait(0) end
if not HasModelLoaded(model) then return end
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
if not DoesEntityExist(veh) then return end
SetModelAsNoLongerNeeded(model)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.