Límite de frecuencia de state bags / los state bags no se replican
Un script actualiza información compartida muchísimo más seguido de lo debido, así que algunas actualizaciones se están tirando.
Haz esto primero
Esto necesita un cambio en el script: debería actualizar cuando algo cambia, no todo el tiempo.
Qué significa
Los state bags tienen un límite de frecuencia por entidad. Escribir más rápido que ese límite significa que las actualizaciones se descartan, se frenan, o en el peor de los casos el servidor pasa todo su tiempo replicando. No da error: el valor sencillamente no llega al cliente, o llega tarde.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Escribir un state bag en cada tick
El límite existe precisamente para frenar esto. El combustible, la velocidad y la posición escritos en cada fotograma se van a frenar.
- 2
Valores muy grandes
Un inventario entero dentro de un state bag se replica a todos los que estén en alcance en cada cambio. Una carga de ese tamaño a cualquier frecuencia es un problema.
- 3
Muchas bolsas sobre una misma entidad
Decenas de claves sobre la misma entidad, cada una replicándose por separado.
- 4
Replicado cuando no hacía falta
:set(clave, valor, true)replica. El estado que sólo es local debería pasarfalse. - 5
Leer una bolsa en un cliente que no puede ver la entidad
Fuera de alcance significa que no hay bolsa. No es un límite de frecuencia, pero da el mismo síntoma de «el valor no está».
Cómo saber cuál es el tuyo
Escribí una vez y leelo: si una sola escritura llega y un bucle de escrituras no, es el límite de frecuencia. Si no llega ninguna, la entidad está fuera de alcance.
Dónde mirar
Cada .state:set del recurso, y con qué frecuencia se ejecuta.
Cómo arreglarlo
Escribí sólo cuando cambie, y sólo lo que tenga que cruzar la red:
local last
CreateThread(function()
while true do
Wait(1000) -- no 0
local fuel = math.floor(GetFuel(veh))
if fuel ~= last then -- sólo cuando cambia
last = fuel
Entity(veh).state:set('fuel', fuel, true)
end
end
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á.