NetworkGetEntityFromNetworkId zwróciło 0
Grze gracza powiedziano o czymś, zanim to naprawdę dotarło na jego ekran.
Zrób najpierw to
Sporadyczne są normalne. Ciągłe znaczą, że skrypt nie czeka jak trzeba.
Co to znaczy
Identyfikator sieciowy zamieniono na lokalny uchwyt encji, a takiej encji na tym kliencie jeszcze nie ma. Natywna zwraca 0, zamiast zgłosić błąd, więc awaria wychodzi później jako bad argument albo index-nil.
To zwykle WYŚCIG, a nie błąd w identyfikatorze: serwer utworzył encję, a ten klient jeszcze jej nie dostał.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Klient dostał informację przed zsynchronizowaniem encji
Serwer tworzy pojazd i natychmiast wywołuje zdarzenie klienckie z identyfikatorem sieciowym. Zdarzenie dociera przed encją.
- 2
Encja jest poza zasięgiem
OneSync synchronizuje tylko encje blisko gracza. Identyfikator czegoś z drugiego końca mapy rozwiązuje się na tym kliencie na nic.
- 3
Jest w innym routing buckecie
To samo co poza zasięgiem, tylko celowo.
- 4
Encję usunięto między wysłaniem a odbiorem
Pojazd usunięty, kiedy wiadomość była w drodze.
- 5
Identyfikator jest nieaktualny
Identyfikatory sieciowe są używane ponownie. Taki trzymany sprzed kilku minut może teraz znaczyć coś innego albo nic.
Jak poznać, który jest twój
print(NetworkDoesNetworkIdExist(netId), NetworkDoesEntityExistWithNetworkId(netId))
Oba false przy graczu stojącym tuż obok to prawdziwy problem; oba false z drugiego końca mapy to po prostu zasięg.
Gdzie szukać
Miejsce odbioru identyfikatora sieciowego i to, czy cokolwiek czeka na encję.
Jak to naprawić
Zaczekaj na nią, z terminem — nigdy w nieograniczonej pętli:
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)
endWciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Skaner bezpieczeństwa oznacza obsługę zdarzeń, która do tego prowadzi.