THE ORB
Studio wird gestartet

GetPlayer(source) gab auf dem Server nil zurück

Der Server hat einen Spieler gesucht und nicht gefunden — meist hat er sich mitten in der Aktion getrennt.

groupsGelegentlich eine fehlgeschlagene AktioncodeBraucht einen Entwickler

Mach das zuerst

Gelegentlich ist das normal. Ständig heißt, das Script prüft nicht, ob der Spieler noch da ist.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Ein Server-Handler hat das Framework nach einem Spielerobjekt gefragt und nichts bekommen. Jeder Feldzugriff danach scheitert.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Der Spieler hat sich mitten in der Operation getrennt

    Zwischen dem Auslösen des Events und dem Lauf des Handlers ist er gegangen. Häufig bei jeder verzögerten oder abgewarteten Operation.

  2. 2

    Die source ist nicht die, die du denkst

    In einem Callback oder einer verschachtelten Closure ist source nicht das, was du denkst. Es muss oben im Handler festgehalten werden:

    local src = source
  3. 3

    Der Spieler ist verbunden, aber nicht geladen

    Während playerConnecting und einen Moment nach dem Beitritt gibt es noch kein Spielerobjekt — der Charakter ist nicht gewählt.

  4. 4

    Die source kam vom Client

    Ein Client, der seine eigene Id schickt, kann jede schicken. Das ist neben einem nil auch eine Sicherheitslücke.

  5. 5

    Die falsche Suchfunktion

    GetPlayerFromId (Server-Id) und GetPlayerFromIdentifier (Lizenz), versehentlich vertauscht.

Wie du erkennst, welcher deiner ist

local src = source
print('src', src, GetPlayerName(src))

Ist GetPlayerName ebenfalls nil, ist er weg oder nie ganz beigetreten. Löst der Name auf, das Framework-Objekt aber nicht, ist er verbunden, aber nicht geladen.

Wo du nachsehen musst

Der Kopf des Event-Handlers und jede Stelle, an der source nach einem Warten gelesen wird.

Wie du es behebst

RegisterNetEvent('shop:buy', function(item, count)
    local src = source                       -- zuerst festhalten, immer
    local xPlayer = ESX.GetPlayerFromId(src)
    if not xPlayer then return end           -- er ist weg oder nie geladen
    -- trau nie einer vom Client geschickten Id: src ist maßgeblich
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 öffnen

Für diese Art Fehler Skript-Konverter übersetzt eine Resource zwischen ESX, QBCore und Qbox.

Fehler, die mit diesem zusammen auftreten