attempt to compare
Skrypt próbował porównać dwie rzeczy, których nie da się porównać — zwykle liczbę z czymś, czego brakuje albo co jest tekstem.
Zrób najpierw to
Jeśli stało się to po komendzie, prawdopodobną przyczyną są wartości wpisane do tej komendy.
Co to znaczy
<, >, <= albo >= użyto między wartościami, których Lua nie umie uporządkować: attempt to compare nil with number, attempt to compare string with number, attempt to compare two table values.
== nigdy tego nie produkuje. Robią to tylko te cztery operatory porządkujące, co od razu zawęża szukanie we wskazanej linii.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
nil po jednej stronie
if playerMoney > price, gdzie odczyt nic nie zwrócił. Ten sam problem u podstaw co przy indeksowaniu nila, tylko linijkę później. - 2
Liczba, która przyszła jako ciąg znaków
Wartości konfiguracji zapisane jako
"100", dane JSON i argumenty komend. Argumenty komend FiveM są ZAWSZE ciągami znaków, również w/givemoney 1 5000. - 3
Porównywanie wektora z liczbą
#(a - b) > 5.0jest poprawne.(a - b) > 5.0porównuje wektory. - 4
Kolumna z bazy czytana wprost
oxmysql zwraca to, co daje mu MySQL, a kolumny DECIMAL potrafią przyjść jako ciągi znaków.
Jak poznać, który jest twój
print(type(left), type(right))
Komunikat i tak nazywa oba typy, więc w zasadzie tylko potwierdzasz, która zmienna trzyma który.
Gdzie szukać
Wskazana linia. Jeśli wartość przyszła z komendy, popatrz na parsowanie argumentów; jeśli z bazy, popatrz na typ kolumny.
Jak to naprawić
Konwertuj raz, na granicy:
RegisterCommand('givemoney', function(source, args)
local target = tonumber(args[1])
local amount = tonumber(args[2])
if not target or not amount or amount <= 0 then return end
-- od tego miejsca bezpiecznie
end)Dla odległości używaj operatora długości:
if #(GetEntityCoords(ped) - target) > 5.0 then return end
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.