NetworkGetEntityFromNetworkId devolvió 0
Al juego de un jugador le avisaron de algo antes de que llegara de verdad a su pantalla.
Haz esto primero
De vez en cuando es normal. Constantes significa que el script no está esperando como debe.
Qué significa
Se convirtió un id de red en un identificador local de entidad y en este cliente todavía no hay ninguna entidad así. El nativo devuelve 0 en vez de dar error, así que el fallo sale a la luz más tarde como un argumento inválido o un index-nil.
Esto normalmente es una CARRERA, no un fallo del id: el servidor creó la entidad y este cliente todavía no la recibió.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Al cliente se le avisó antes de que la entidad se sincronizara
El servidor crea un vehículo e inmediatamente dispara un evento de cliente con el id de red. El evento llega antes que la entidad.
- 2
La entidad está fuera de alcance
OneSync sólo sincroniza las entidades cerca del jugador. Un id de red de algo que está al otro lado del mapa no resuelve a nada en ese cliente.
- 3
Está en otro routing bucket
Lo mismo que estar fuera de alcance, pero a propósito.
- 4
La entidad se borró entre el envío y la recepción
Un vehículo retirado mientras el mensaje estaba en vuelo.
- 5
El id está caducado
Los ids de red se reutilizan. Un id guardado hace minutos puede significar otra cosa, o nada.
Cómo saber cuál es el tuyo
print(NetworkDoesNetworkIdExist(netId), NetworkDoesEntityExistWithNetworkId(netId))
Los dos en false con el jugador parado al lado significa un problema de verdad; los dos en false desde el otro lado del mapa es sólo el alcance.
Dónde mirar
Dónde se recibe el id de red, y si algo espera a la entidad.
Cómo arreglarlo
Esperala, con un plazo; nunca un bucle sin tope:
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¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Escáner de seguridad marca el manejo de eventos que lleva hasta acá.