Lua para FiveM: o básico, erros comuns e a skill de IA
Atualizado em
Não quer gerenciar as skills por conta própria? Obtenha o app completo.
Os scripts de FiveM são escritos em Lua, então funções, tabelas, variáveis, condicionais e tratamento de erros decidem se um recurso funciona. Este guia cobre as falhas de Lua que quebram recursos e a skill de IA que escreve Lua idiomático.
Lua para FiveM é uma linguagem pequena com algumas arestas afiadas, e a maioria dos recursos quebrados tropeça nessas arestas, não na API do FiveM. Arrays começam em 1, nil e false são coisas diferentes, não existe continue nem operador ternário. Se você escreve ou revisa recursos em Lua, ou deixa um assistente de IA escrevê-los, precisa dessas regras na sua frente. A skill de Lua básico empacota tudo em arquivos de regras que o assistente lê antes de escrever código.
O que a skill de Lua básico te dá
O SKILL.md é um índice. Cada tema tem o seu próprio arquivo de regras com explicações e exemplos.
rules/functions.md. Tamanho de funções, nomes, parâmetros, exports e guard clauses. Funções curtas que retornam cedo em vez de aninhar.rules/tables.md. Índices de array começam em 1, desreferenciação, evitartable.insertem caminhos quentes, iteração comipairsepairs, e tamanho de array com#.rules/variables.md. Nomes para constantes, locais em vez de globais, e quando um enum se lê melhor que um booleano.rules/conditionals.md. Valores padrão comor, expressões booleanas e legibilidade.rules/errors.md. Asserções, pré-condições, erros como valores e falhar em voz alta em vez de engolir problemas.rules/reference-links.md. Documentação oficial de Lua e FiveM, incluindo docs.fivem.net.
Erros comuns com Lua para FiveM
- Globais acidentais. Um
localfaltando transforma a variável em uma global compartilhada por todos os arquivos do recurso. Sintoma: valores vazando entre scripts, um contador de um arquivo mudando em outro, e acesso mais lento que com locais. Correção: declare tudo comlocale trate uma atribuição semlocalcomo bug. - Indexar a partir de 0.
players[0]énile um loopfor i = 0, #playerscomeça em um slot vazio. Sintoma: a primeira entrada é pulada ou o código falha na iteração zero. Correção: comece em 1 e itere comipairs. - Usar
#na tabela errada.#tsó está definido para uma sequência sem buracos. Ele ignora chaves de texto e, com buracos, o resultado é imprevisível. Correção: mantenha um contador separado ou itere compairsquando as chaves não forem 1..n. - Confundir
falsecomnil.if x thenfalha tanto comnilquanto comfalse. Sefalseé um valor válido, um padrão comox = x or truesobrescreve em silêncio. Correção: escrevaif x ~= nil thenquandofalseimporta, e cuidado coma and b or cquandobpode serfalse. - Tratar Lua como JavaScript. Não existe
!=(use~=), não existecontinue(usegoto continueou reestruture), não existe ternário. Montar strings grandes com..dentro de loops cria uma string nova a cada passo. Correção: usetable.concatpara saídas grandes e escreva condicionais do jeito Lua.
Por que assistentes de IA erram em Lua para FiveM
Um assistente genérico escreve Lua com a memória muscular de JavaScript e Python. Ele esquece local, começa loops em 0, usa !=, inventa um continue e recorre a a and b or c como ternário sem perceber o caso de false. Também chama table.insert dentro de loops quentes do servidor porque é o que todo tutorial faz. O código costuma rodar e falhar depois, em silêncio, sob carga.
A skill de Lua básico entrega ao assistente os cinco arquivos de regras e manda ler o que combina com a tarefa. Funções ganham guard clauses e corpos curtos, tabelas usam loops a partir de 1 com ipairs, variáveis são locais por padrão e erros aparecem por meio de asserções e pré-condições em vez de serem ignorados. O resultado se lê como Lua escrito por alguém que trabalha com FiveM todo dia, e isso torna a revisão muito mais fácil.
Instale a skill de Lua básico em 30 segundos
- Clique em "Download SKILL.md" no topo desta página.
- Descompacte na pasta de skills ou rules da sua ferramenta de IA. A seção de instalação abaixo mostra o caminho exato para Claude Code, Cursor e VS Code.
- Peça ao assistente algo concreto, como "escreva uma função que retorne os jogadores a menos de 10 metros de uma coordenada", e confira que toda variável é
local, que o loop usaipairse que a função retorna cedo com entrada inválida.
Como instalar esta skill
Baixe o zip, descompacte e coloque a pasta onde a sua ferramenta carrega skills ou regras. O caminho exato depende da ferramenta:
Claude Code
Descompacte em .claude/skills/lua-basics/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/lua-basics/.
Cursor
O Cursor carrega as regras do projeto de .cursor/rules/. Adicione ali um arquivo de regra apontando para a skill descompactada, ou cole o conteúdo do SKILL.md e dos arquivos de regras em uma regra. O formato é .mdc com frontmatter e muda entre versões, então confira a documentação da sua versão.
VS Code / Copilot
O Copilot lê arquivos de instruções em .github/instructions/*.instructions.md. Copie o SKILL.md para lá com um glob applyTo para os seus arquivos Lua e mantenha os arquivos de regras ao lado.
O arquivo SKILL.md
Este é o arquivo que o seu assistente de IA lê. Ele aponta para os arquivos de regras incluídos no download.
O conteúdo da skill está em inglês: é documentação técnica feita para agentes de IA.
Lua Basics
Best practices for writing effective Lua code in FiveM. This skill covers fundamental Lua patterns, performance optimizations, and code quality guidelines specifically for FiveM development.
When to use
- Writing or reviewing Lua code for FiveM resources.
- Questions about Lua best practices, naming conventions, or code structure.
- Optimizing Lua code for performance.
- Need guidance on functions, tables, variables, conditionals, or error handling in Lua.
How to use
Read individual rule files for detailed explanations and examples:
- rules/functions.md — Function best practices: size, naming, parameters, exports, guard clauses.
- rules/tables.md — Table operations: array indices, dereferencing, avoiding table.insert, iterations, array size.
- rules/variables.md — Variable naming conventions: constants, locals, globals, enums vs booleans.
- rules/conditionals.md — Conditional patterns: default values, boolean expressions, readability.
- rules/errors.md — Error handling: assertions, pre-conditions, errors as values, fail loudly.
- rules/reference-links.md — Official Lua and FiveM documentation resources.
Perguntas frequentes
- As builds atuais do FXServer rodam Lua 5.4 com adições próprias do FiveM. Recursos antigos escritos para 5.3 em geral ainda funcionam, mas confira a divisão inteira e outras mudanças do 5.4 antes de copiar código velho.
- Você deveria ler bem o suficiente para revisar o que o assistente escreve. A IA consegue produzir um recurso que funciona, mas também produz globais acidentais e loops com índice errado. Se você não enxerga isso, não pode confiar no resultado.
- Sim, com um passo manual. O SKILL.md e a pasta rules são markdown puro, então você pode colá-los na conversa como contexto. O suporte nativo a skills é para Claude Code, Cursor e VS Code.
Qual versão de Lua o FiveM usa?
Preciso saber Lua para usar IA no FiveM?
Posso usar esta skill com o ChatGPT?
Guias relacionados
Leituras mais longas do blog da FiveAI sobre o mesmo tema.