Tutorial 2026-03-05

Como Otimizar os Teus Scripts FiveM para 0ms de Resmon

TDYSKY

TDYSKY

Fundador & Lead Developer na Agency Scripts

Compreendendo o desempenho do Resmon e do script

O comando resmon no FiveM exibe métricas de desempenho de recursos em tempo real, mostrando quantos milissegundos cada script consome por tick do servidor. Um script bem otimizado deve mostrar 0,00ms em resmon na maior parte do tempo, aumentando brevemente apenas durante o processamento ativo de eventos. Scripts que mostram consistentemente valores altos de resolução degradam o desempenho do servidor, aumentam a dessincronização do jogador e podem causar o temido atraso do servidor que afasta as comunidades. Criar perfis de seus scripts regularmente é o primeiro passo para manter um servidor tranquilo.

Gerenciamento de threads e tempos de espera

O maior problema de desempenho em scripts FiveM é o gerenciamento inadequado de threads. Usar Citizen.Wait(0) dentro de um loop significa que seu código executa cada quadro, o que ocorre aproximadamente 60 vezes por segundo. A maioria das tarefas não precisa dessa frequência. Aumente seus tempos de espera para Wait(500) ou Wait(1000) para verificações que só precisam ser executadas periodicamente, como detecção de proximidade para marcadores ou verificações de zona. Para sistemas baseados em distância, use uma abordagem em camadas onde você verifica em intervalos mais longos quando estiver longe de pontos de interesse e em intervalos mais curtos quando estiver próximo.

Desativando threads desnecessários

Em vez de executar threads continuamente, considere ativá-los somente quando necessário. Use eventos ou alterações de estado para iniciar e parar loops de processamento. Por exemplo, um script de pesca não precisa executar seu loop de lançamento quando o jogador não está perto da água. Rastreie uma variável de estado ativa e saia do thread com return quando o recurso não estiver em uso. Esse padrão pode reduzir seu script de 0,50 ms constantes para 0,00 ms durante períodos ociosos, que é a diferença entre um script que escalona e outro que paralisa seu servidor.

Armazenamento em cache e prevenção de chamadas redundantes

As chamadas de função nativa no FiveM têm sobrecarga, especialmente quando chamadas repetidamente dentro de loops estreitos. Armazene em cache os resultados de chamadas como GetEntityCoords, GetPlayerPed e GetPlayerServerId no início da iteração do loop, em vez de chamá-las várias vezes no mesmo ciclo. Armazene dados estáticos como valores de configuração, posições de marcadores e coordenadas de blip em variáveis ​​locais no momento do carregamento do script. Essa técnica simples pode reduzir drasticamente o tempo de execução do script e é uma das otimizações mais impactantes que você pode fazer.

Otimizações Matemáticas

Cálculos de distância estão entre as operações mais comuns em scripts FiveM. Substitua a verificação de distância #(coords1 - coords2) padrão por comparações de distância quadrada quando você precisar apenas de distância relativa. Como o cálculo da raiz quadrada é caro, comparar distâncias quadradas com limites quadrados obtém o mesmo resultado sem a dispendiosa operação matemática. Além disso, evite chamar GetDistanceBetweenCoords nativo quando puder calcular a distância em Lua, pois as chamadas nativas carregam sobrecarga adicional em comparação com operações Lua puras.

Gerenciamento de entidades e mensagens

A criação de entidades, blips e marcadores tem custos de renderização e de rede. Remova ícones e entidades quando eles não forem mais necessários, em vez de deixá-los no mundo do jogo. Use DrawMarker somente quando o jogador estiver dentro da distância de renderização, e não globalmente em todo o mapa. Para scripts que gerenciam muitas entidades, implemente o particionamento espacial para processar apenas objetos próximos. Considere usar sistemas de streaming que criam e destroem entidades com base na proximidade do jogador, em vez de carregar tudo de uma vez quando o recurso é iniciado.

Partilhar este artigo

Pronto para melhorar o teu servidor?

Explora os nossos scripts FiveM premium na loja Agency Scripts ou junta-te à nossa comunidade no Discord para suporte e atualizações.