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.
Mach das zuerst
Gelegentlich ist das normal. Ständig heißt, das Script prüft nicht, ob der Spieler noch da ist.
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
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
Die source ist nicht die, die du denkst
In einem Callback oder einer verschachtelten Closure ist
sourcenicht das, was du denkst. Es muss oben im Handler festgehalten werden:local src = source
- 3
Der Spieler ist verbunden, aber nicht geladen
Während
playerConnectingund einen Moment nach dem Beitritt gibt es noch kein Spielerobjekt — der Charakter ist nicht gewählt. - 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
Die falsche Suchfunktion
GetPlayerFromId(Server-Id) undGetPlayerFromIdentifier(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 öffnenFür diese Art Fehler Skript-Konverter übersetzt eine Resource zwischen ESX, QBCore und Qbox.