NetworkGetEntityFromNetworkId devolveu 0
O jogo de um jogador foi avisado de algo antes de aquilo chegar de verdade na tela dele.
Faça isto primeiro
De vez em quando é normal. O tempo todo significa que o script não está esperando direito.
O que significa
Um id de rede foi convertido num identificador local de entidade e neste cliente ainda não existe nenhuma entidade assim. O nativo devolve 0 em vez de dar erro, então a falha aparece depois como um argumento inválido ou um index-nil.
Isso normalmente é uma CORRIDA, não um erro do id: o servidor criou a entidade e este cliente ainda não recebeu.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
O cliente foi avisado antes de a entidade sincronizar
O servidor cria um veículo e imediatamente dispara um evento de cliente com o id de rede. O evento chega antes da entidade.
- 2
A entidade está fora de alcance
O OneSync só sincroniza as entidades perto do jogador. Um id de rede de algo do outro lado do mapa não resolve para nada naquele cliente.
- 3
Está em outro routing bucket
A mesma coisa que estar fora de alcance, mas de propósito.
- 4
A entidade foi apagada entre o envio e a recepção
Um veículo removido enquanto a mensagem estava em voo.
- 5
O id está vencido
Os ids de rede são reutilizados. Um id guardado há minutos pode significar outra coisa, ou nada.
Como saber qual é o seu
print(NetworkDoesNetworkIdExist(netId), NetworkDoesEntityExistWithNetworkId(netId))
Os dois em false com o jogador parado ao lado significa um problema de verdade; os dois em false do outro lado do mapa é só o alcance.
Onde olhar
Onde o id de rede é recebido, e se alguma coisa espera pela entidade.
Como consertar
Espere por ela, com um prazo; nunca um laço sem teto:
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)
endAinda travado no seu próprio código?
Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.
bug_reportAbrir o Server FixerPara esse tipo de erro, o Escâner de segurança marca o tratamento de eventos que leva até aqui.