THE ORB
Studio wird gestartet

bad argument #N to '<funktion>'

Ein Script hat dem Spiel einen Wert der falschen Art übergeben — fast immer, weil etwas Benötigtes (ein Fahrzeug, ein Modell) nie geladen hat.

groupsEtwas spawnt niecodeBraucht einen Entwickler

Mach das zuerst

Finde heraus, ob das Modell oder Fahrzeug, das es nutzen will, auf deinem Server überhaupt existiert.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Eine Native oder Standardfunktion hat an dieser Position den falschen Typ bekommen. Die Meldung sagt, welche und was erwartet wurde:

bad argument #1 to 'TaskGoToCoordAnyMeans' (number expected, got nil)

Die Argumentzählung beginnt bei 1. Bei einer mit Doppelpunkt aufgerufenen Methode ist Argument #1 das Objekt selbst — #2 ist also das Erste in den Klammern.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Ein Entity-Handle, das 0 oder nil ist

    CreateVehicle gab 0 zurück, weil das Modell nie lud, und das Handle ging direkt in eine andere Native. Mit Abstand die häufigste Form.

  2. 2

    Ein Modellname, der nie gehasht wurde

    Die meisten Modell-Slots wollen einen Hash, keine Zeichenkette. Nimm GetHashKey(name) oder das Backtick-Literal.

  3. 3

    Ein Vektor, wo drei Zahlen erwartet werden, oder umgekehrt

    SetEntityCoords(ped, coords) scheitert dort, wo SetEntityCoords(ped, coords.x, coords.y, coords.z, ...) erwartet wird.

  4. 4

    Ein nil aus einer Konfiguration oder einer Datenbankzeile

    Einen fehlenden Schlüssel zu lesen ergibt stillschweigend nil; der Fehler zeigt sich eine Zeile später, hier.

  5. 5

    Falsche Argumentreihenfolge

    Zwei vertauschte Zahlen geben keinen Fehler. Eine Zahl, wo eine Zeichenkette hingehört, schon.

Wie du erkennst, welcher deiner ist

Gib jedes Argument mit seinem Typ in der Zeile darüber aus:

print(('ped=%s type=%s'):format(tostring(ped), type(ped)))

Ist der Wert 0 statt nil, sitzt der echte Fehler weiter oben: Etwas hat ein gescheitertes Handle zurückgegeben, und niemand hat geprüft.

Wo du nachsehen musst

Die genannte Zeile, dann die Zeile, die das schlechte Argument ERZEUGT hat.

Wie du es behebst

Lad Modelle vor dem Spawnen und prüf Handles vor der Nutzung:

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)

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 öffnen

Für diese Art Fehler Script Optimizer liest das Script und repariert den Code dahinter.

Fehler, die mit diesem zusammen auftreten