THE ORB
Studio wird gestartet

Versuch, einen nil-Wert aufzurufen

Ein Script wollte eine Funktion nutzen, die es nicht gibt — meist, weil es für eine andere Version deines Frameworks geschrieben wurde.

groupsDiese Funktion hört auf zu funktionierencodeBraucht einen Entwickler

Mach das zuerst

Prüf, ob das Script für dein Framework und für deine Version davon gemacht ist.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Das Script wollte etwas aufrufen, das keine Funktion ist. Der Name in Klammern sagt was: (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').

method 'x' lohnt genaues Lesen: Der Aufruf nutzte einen Doppelpunkt (obj:x()), und die Tabelle hat kein x. Das ist fast immer ein Framework-Versionsunterschied, bei dem die Methode umbenannt oder verschoben wurde.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Eine Native, die es auf dieser Seite nicht gibt

    Client-Natives auf dem Server aufgerufen oder umgekehrt. Fast alle Zeichen-, Eingabe- und Kamera-Natives sind nur client-seitig — auf dem Server ist dieses Global schlicht nil, und es aufzurufen heißt, nil aufzurufen.

  2. 2

    Eine zwischen Versionen umbenannte Framework-Methode

    xPlayer.getJob() gegen xPlayer.job, QBCore.Functions.GetPlayerData gegen PlayerData, ESX Legacy gegen ESX 1.1. Für eine Version geschriebene Scripts rufen Methoden auf, die die andere nicht hat.

  3. 3

    Ein Export, der zu nil auflöste

    exports['res']:method(), wobei die Resource gestoppt, falsch benannt ist oder diesen Namen nicht exportiert. FiveM gibt nil zurück, statt zu werfen — der Fehlschlag landet hier.

  4. 4

    Die Funktion ist weiter unten in der Datei definiert

    Lua weist local function f zu, wenn diese Zeile läuft, nicht beim Parsen. f() über seiner Definition aufzurufen heißt, nil aufzurufen.

  5. 5

    Ein Tippfehler

    TriggerServerEvnet oder GetPlayerPedId, obwohl die echte Native PlayerPedId heißt.

Wie du erkennst, welcher deiner ist

print(type(dasDing))

über dem Aufruf. nil bei einer Native heißt, du bist auf der falschen Seite — sieh in die Native-Referenz, die für jeden Eintrag Client oder Server nennt. table heißt, du rufst eine Tabelle auf, was meist bedeutet, dass . statt : verwendet wurde.

Wo du nachsehen musst

Die genannte Datei und Zeile. Ist der Name eine globale Native, such in der Native-Referenz, bevor du annimmst, dein Code sei falsch.

Wie du es behebst

-- Exports: prüf, ob die Resource läuft, bevor du ihr vertraust
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')

-- Framework-Methoden: lies die API dieser Version, rate nicht
local job = xPlayer.job          -- ESX Legacy
-- local job = xPlayer.getJob()  -- älteres ESX

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