Limite de frequência de state bags / os state bags não replicam
Um script atualiza informação compartilhada muito mais vezes do que deveria, então algumas atualizações estão sendo descartadas.
Faça isto primeiro
Isso precisa de mudança no script: ele deveria atualizar quando algo muda, não o tempo todo.
O que significa
Os state bags têm um limite de frequência por entidade. Escrever mais rápido que esse limite significa que as atualizações são descartadas, freadas, ou no pior caso o servidor passa todo o tempo replicando. Não dá erro: o valor simplesmente não chega ao cliente, ou chega atrasado.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Escrever um state bag a cada tick
O limite existe justamente para frear isso. O combustível, a velocidade e a posição escritos a cada quadro vão ser freados.
- 2
Valores muito grandes
Um inventário inteiro dentro de um state bag é replicado para todos que estão no alcance a cada mudança. Uma carga desse tamanho em qualquer frequência é um problema.
- 3
Muitos bags sobre uma mesma entidade
Dezenas de chaves sobre a mesma entidade, cada uma replicando separadamente.
- 4
Replicado quando não era preciso
:set(chave, valor, true)replica. O estado que é só local deveria passarfalse. - 5
Ler um bag num cliente que não consegue ver a entidade
Fora de alcance significa que não tem bag. Não é um limite de frequência, mas dá o mesmo sintoma de «o valor não está lá».
Como saber qual é o seu
Escreva uma vez e leia: se uma única escrita chega e um laço de escritas não, é o limite de frequência. Se nenhuma chega, a entidade está fora de alcance.
Onde olhar
Cada .state:set do resource, e com que frequência ele roda.
Como consertar
Escreva só quando mudar, e só o que precisa cruzar a rede:
local last
CreateThread(function()
while true do
Wait(1000) -- não 0
local fuel = math.floor(GetFuel(veh))
if fuel ~= last then -- só quando muda
last = fuel
Entity(veh).state:set('fuel', fuel, true)
end
end
end)Ainda 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.