THE ORB
Studio wird gestartet

NetworkGetEntityFromNetworkId gab 0 zurück

Dem Spiel eines Spielers wurde etwas mitgeteilt, bevor es tatsächlich auf seinem Bildschirm ankam.

groupsGelegentliche GrafikfehlercodeBraucht einen Entwickler

Mach das zuerst

Gelegentlich ist das normal. Ständig heißt, das Script wartet nicht richtig.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Eine Netz-Id wurde in ein lokales Entity-Handle umgewandelt, und auf diesem Client gibt es noch keine solche Entity. Die Native gibt 0 zurück, statt zu scheitern — der Fehler zeigt sich später als ungültiges Argument oder index-nil.

Meist ist das ein WETTLAUF und kein Fehler der Id: Der Server hat die Entity erzeugt, und dieser Client hat sie noch nicht bekommen.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Der Client wurde informiert, bevor die Entity synchronisiert war

    Der Server erzeugt ein Fahrzeug und löst sofort ein Client-Event mit der Netz-Id aus. Das Event kommt vor der Entity an.

  2. 2

    Die Entity ist außer Reichweite

    OneSync synchronisiert nur Entities in Spielernähe. Eine Netz-Id für etwas am anderen Ende der Karte löst auf diesem Client zu nichts auf.

  3. 3

    Sie liegt in einem anderen Routing-Bucket

    Dasselbe wie außer Reichweite, nur absichtlich.

  4. 4

    Die Entity wurde zwischen Senden und Empfangen gelöscht

    Ein Fahrzeug, entfernt während die Nachricht unterwegs war.

  5. 5

    Die Id ist veraltet

    Netz-Ids werden wiederverwendet. Eine vor Minuten festgehaltene Id kann jetzt etwas anderes bedeuten — oder nichts.

Wie du erkennst, welcher deiner ist

print(NetworkDoesNetworkIdExist(netId), NetworkDoesEntityExistWithNetworkId(netId))

Beide false, während der Spieler daneben steht, ist ein echtes Problem; beide false vom anderen Ende der Karte ist nur die Reichweite.

Wo du nachsehen musst

Wo die Netz-Id empfangen wird und ob irgendetwas auf die Entity wartet.

Wie du es behebst

Warte auf sie, mit einer Frist — nie eine unbegrenzte Schleife:

local function entityFromNet(netId, timeoutMs)
    local deadline = GetGameTimer() + (timeoutMs or 5000)
    while not NetworkDoesEntityExistWithNetworkId(netId) do
        if GetGameTimer() > deadline then return nil end
        Wait(0)
    end
    return NetToEnt(netId)
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 Sicherheitsscanner markiert die Event-Behandlung, die hierher führt.

Fehler, die mit diesem zusammen auftreten