Versuch, zwei unvereinbare Werte zu vergleichen
Ein Script wollte zwei Dinge vergleichen, die sich nicht vergleichen lassen — meist eine Zahl gegen etwas Fehlendes oder Text.
Mach das zuerst
Wenn es nach einem Befehl passiert ist, sind die eingetippten Werte die wahrscheinliche Ursache.
Was es bedeutet
<, >, <= oder >= wurde zwischen Werten benutzt, die Lua nicht ordnen kann: attempt to compare nil with number, attempt to compare string with number, attempt to compare two table values.
== erzeugt das nie. Nur die vier Ordnungsoperatoren tun das — das grenzt die Suche in der gemeldeten Zeile sofort ein.
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
Ein nil auf einer Seite
if playerMoney > price, wenn die Suche nichts ergab. Dasselbe Grundproblem wie ein index-nil, eine Zeile später. - 2
Eine Zahl, die als Zeichenkette ankam
Konfigurationswerte als
"100"geschrieben, JSON-Nutzlasten und Befehlsargumente. FiveM-Befehlsargumente sind IMMER Zeichenketten, auch bei/givemoney 1 5000. - 3
Einen Vektor mit einer Zahl vergleichen
#(a - b) > 5.0ist richtig.(a - b) > 5.0vergleicht Vektoren. - 4
Eine direkt durchgereichte Datenbankspalte
oxmysql gibt zurück, was MySQL liefert, und DECIMAL-Spalten können als Zeichenketten ankommen.
Wie du erkennst, welcher deiner ist
print(type(links), type(rechts))
Die Meldung nennt beide Typen schon — du bestätigst vor allem, welche Variable welchen hält.
Wo du nachsehen musst
Die genannte Zeile. Kam der Wert aus einem Befehl, schau dir das Parsen der Argumente an; kam er aus der Datenbank, den Spaltentyp.
Wie du es behebst
Konvertier einmal, an der Grenze:
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
-- ab hier sicher
end)Und für Entfernungen nimm den Längenoperator:
if #(GetEntityCoords(ped) - target) > 5.0 then return end
Hängst du immer noch an deinem eigenen Code?
Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.
bug_reportServer Fixer öffnenFür diese Art Fehler Script Optimizer liest das Script und repariert den Code dahinter.
Fehler, die mit diesem zusammen auftreten
- Versuch, mit einem nil-Wert zu rechnen
- Versuch, einen nil-Wert zu indizieren
- Tote Coroutine kann nicht fortgesetzt werden
- SCRIPT ERROR in citizen:/scripting/lua/scheduler.lua
- Versuch, eine Zahl, einen Boolean oder Text zu indizieren
- Versuch, über eine C-Aufrufgrenze zu yielden
- Stack-Überlauf
- Tabellenindex ist nil