>
Tutorial 2026-01-20

Noções Básicas de Scripting Lua para Desenvolvimento em FiveM

TDYSKY

TDYSKY

Fundador & Lead Developer na Agency Scripts

Por que Lua para FiveM?

Lua é a principal linguagem de script usada no desenvolvimento do FiveM, e por um bom motivo. É leve, rápido de executar e profundamente integrado à estrutura CitizenFX que alimenta o FiveM. Esteja você construindo um script de comando simples ou um sistema de roleplay complexo, compreender os fundamentos de Lua é o primeiro passo para se tornar um desenvolvedor FiveM proficiente. Ao contrário das linguagens mais pesadas, Lua oferece a sobrecarga de desempenho necessária para scripts de servidor de jogos em tempo real, onde cada milissegundo conta.

Variáveis, tipos e funções

Lua usa tipagem dinâmica, o que significa que você não precisa declarar explicitamente os tipos de variáveis. Variáveis ​​locais são declaradas com a palavra-chave local e têm como escopo seu bloco, enquanto variáveis ​​globais são acessíveis em qualquer lugar, mas devem ser evitadas em scripts FiveM por motivos de desempenho e segurança. Funções em Lua são valores de primeira classe, o que significa que você pode armazená-los em variáveis, passá-los como argumentos e retorná-los de outras funções. Essa flexibilidade é fundamental para o funcionamento dos manipuladores de eventos e retornos de chamada do FiveM.

Trabalhando com tabelas

As tabelas são a estrutura de dados mais poderosa em Lua e servem como arrays, dicionários e objetos, tudo ao mesmo tempo. No FiveM, você usará tabelas constantemente para armazenar dados de jogadores, opções de configuração e itens de inventário. Uma tabela pode conter tipos de chaves mistas e estruturas aninhadas, tornando-a extremamente versátil. Compreender como iterar tabelas com pairs() e ipairs() é essencial para processar coleções de dados de forma eficiente tanto no cliente quanto no servidor.

Citizen.CreateThread e loops de jogo

Uma das funções Lua específicas do FiveM mais importantes é Citizen.CreateThread, que permite executar código assíncrono sem bloquear o thread principal do jogo. Dentro desses threads, você normalmente usa Citizen.Wait(ms) para controlar o tempo de execução. Um padrão comum é criar um loop com while true do dentro de uma thread, usando intervalos de espera para verificar condições ou atualizar o estado do jogo. Acertar o intervalo de espera é fundamental para o desempenho, pois um thread com Wait(0) executa cada quadro e deve ser reservado para tarefas que realmente precisam de atualizações por quadro.

Eventos e Comunicação

Os scripts FiveM se comunicam por meio de eventos, que são a espinha dorsal da interação cliente-servidor. Você registra manipuladores de eventos com RegisterNetEvent e AddEventHandler e, em seguida, aciona-os com TriggerEvent, TriggerServerEvent ou TriggerClientEvent. Compreender a distinção entre eventos do lado do cliente e do lado do servidor é crucial para a construção de scripts seguros. Nunca confie nos dados enviados do cliente sem validação do lado do servidor, pois jogadores mal-intencionados podem acionar qualquer evento registrado pelo cliente com dados arbitrários.

Introdução ao seu primeiro script

Para criar seu primeiro script FiveM, crie uma nova pasta em seu diretório de recursos, crie um fxmanifest.lua com os metadados do recurso e adicione um arquivo Lua do cliente ou servidor. Comece com algo simples, como um comando que exibe uma notificação ou teletransporta o jogador. Teste suas alterações reiniciando o recurso com o comando ensure no console do servidor. À medida que você se sentir mais confortável, explore as funções nativas por meio da documentação do FiveM e comece a construir sistemas mais complexos que combinem a renderização do cliente com a lógica do lado do servidor.

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.