Estouro de eventos de rede confiáveis
Um script mandou tanta coisa para um jogador que a conexão dele não deu conta, então ele foi expulso.
Faça isto primeiro
Anote com quais jogadores acontece e quando. Esse precisa de alguém para achar o script barulhento.
O que significa
Foram enfileirados para um cliente mais eventos do que o canal confiável aguenta. O FiveM corta a conexão em vez de ficar ainda mais atrás, então os jogadores são expulsos sem um motivo visível.
O canal é por cliente, então o jogador expulso não é necessariamente o que está fazendo algo estranho.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Um evento disparado num laço de tick
TriggerClientEventdentro de uma thread com um Wait curto, por jogador, é a causa de manual. - 2
Uma transmissão dentro de um laço
TriggerClientEvent('x', -1, ...)dentro de qualquer coisa que se repete se multiplica pela quantidade de jogadores. - 3
Cargas muito grandes
Um inventário inteiro ou um mapa de todos os jogadores, mandado com frequência. O tamanho enche o canal tão bem quanto a quantidade.
- 4
Um laço de realimentação entre cliente e servidor
O cliente dispara um evento do servidor, o servidor responde com um evento de cliente, o cliente responde de novo.
- 5
Um trapaceiro saturando um evento
Que além disso é um problema de segurança: veja o scanner de vulnerabilidades.
Como saber qual é o seu
Conte-os. Um contador por evento no servidor durante um minuto deixa o culpado à vista na hora:
local counts = {}
local realTrigger = TriggerClientEvent
-- envolver, contar, imprimir a cada 60 sOnde olhar
Cada TriggerClientEvent dentro de um CreateThread, e cada transmissão para -1.
Como consertar
Mande estado, não uma torrente de eventos. Os state bags se replicam uma vez e só quando mudam:
-- em vez de um TriggerClientEvent a cada tick
Entity(veh).state:set('fuel', level, true)Quando for preciso mandar eventos, coloque freio e agrupe:
if GetGameTimer() - lastSend > 1000 then
lastSend = GetGameTimer()
TriggerClientEvent('myres:update', src, batchedPayload)
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.