Scripting no FiveM: recursos, fxmanifest, eventos e a skill de IA
Não quer gerenciar as skills por conta própria? Obtenha o app completo.
O scripting no FiveM começa pelos recursos: pastas que contêm um fxmanifest.lua e os scripts de cliente, servidor e compartilhados que formam uma funcionalidade. Cada framework, script de emprego ou interface de um servidor é um recurso, então essas bases valem para qualquer pessoa que programe para FiveM. Esta página explica o que a skill de fundamentos do FiveM da FiveAI documenta, os erros que impedem um recurso de iniciar e como instalar a skill no seu assistente de IA.
O que a skill de fundamentos do FiveM te dá
A skill é um arquivo SKILL.md com um arquivo de regras por tema:
structure: como organizar um recurso, separação entre cliente e servidor, agrupamento lógico e nomes.fxmanifest: as chaves do manifesto que importam:fx_version,game,client_scripts,server_scripts,shared_scripts,filesedependencies.client-server: o que roda em cada lado, código compartilhado e os padrões de comunicação entre os dois.events:RegisterNetEvent,TriggerServerEvent,TriggerClientEvent, convenções de nomes e segurança.exports: como definir um export e chamar a partir de outro recurso.debugging: o console do servidor versus o console F8 do cliente, e quando pedir os logs do F8 se o servidor não mostra nada.optimization: locais, tempo dos loops, cache dePlayerPedId(), distância com vetores, state bags e estrutura de pastas.reference-links: a documentação oficial em https://docs.fivem.net/docs/ e a referência de natives em https://docs.fivem.net/natives/.
Use a skill sempre que criar ou editar um recurso, não importa qual framework roda em cima.
Erros comuns com recursos do FiveM
fx_versionougameausentes ou errados no fxmanifest.lua. Sintoma: o recurso não inicia e o console do servidor imprime um erro de manifesto. Correção: declarefx_version 'cerulean'egame 'gta5'no início do manifesto e depois liste seus scripts.- Lógica de servidor em um arquivo de cliente. Sintoma: uma consulta ao banco de dados ou um native exclusivo de servidor roda no cliente, falha ou expõe dados para todos os jogadores. Correção: mantenha tudo que toca banco de dados, dinheiro ou permissões em
server_scriptse envie resultados ao cliente por eventos. RegisterNetEventsem handler, ou nomes de handler que não batem com o trigger. Sintoma: o evento dispara e nada acontece, sem erro em nenhum console. Correção: registre o evento e adicione o handler com a mesma string, e use um prefixo de recurso comomeurecurso:server:fazerAlgopara os nomes nunca colidirem.- Ordem de
ensureerrada no server.cfg. Sintoma: um recurso inicia antes do framework ou da biblioteca de que precisa, então os exports dela são nil na carga. Correção: adicionedependency 'ox_lib'(oudependencies { ... }) no fxmanifest.lua e faça oensureda dependência antes no server.cfg. - Loops pesados
while true do Wait(0) ende globais por toda parte. Sintoma: tempo alto de recurso no resmon e colisões de nomes entre scripts. Correção: use umWaitmais longo quando não há nada por perto, cacheiePlayerPedId()fora do loop, compare distâncias com vetores e declare variáveis comlocal.
Por que os assistentes de IA erram com FiveM
Um assistente genérico não sabe a qual lado da rede um native pertence, então chama natives de cliente no servidor, inventa exports que um recurso nunca teve e escreve manifestos de memória com um fx_version desatualizado ou sem a linha game. Também recorre à sintaxe de eventos mais antiga dos dados de treinamento e raramente adiciona um prefixo de recurso aos nomes de eventos.
A skill dá a ele uma referência curta para cada uma dessas áreas: as chaves do manifesto, a separação entre cliente e servidor, as funções de eventos com suas regras de nomes e segurança, o padrão de exports e a orientação de otimização. Também manda o assistente consultar a referência de natives em docs.fivem.net em vez de adivinhar a assinatura de um native, e pedir os logs do F8 quando um bug de cliente deixa o console do servidor limpo. É isso que transforma um script plausível em um que inicia e funciona.
Instale a skill de fundamentos do FiveM em 30 segundos
- Clique em “Download SKILL.md” no topo desta página.
- Descompacte na pasta de skills ou regras 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 um recurso com um evento de servidor e um comando de cliente, e confira se o manifesto tem
fx_versionegamee se os nomes dos eventos batem nos dois lados.
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/fivem-basics/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/fivem-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.
FiveM basics
Resource structure, fxmanifest, client/server split, events, exports and debugging for FiveM Lua.
Activation Contract
Load this skill when the user creates or edits any FiveM resource, fxmanifest.lua, client*.lua or server*.lua, asks how client/server, events or exports work, or reports a bug that needs server vs F8 logs.
Hard Rules
- Manifest:
fx_version 'cerulean'andgame 'gta5'(or'rdr3'/'common'); every client-served file goes infiles. - Register networked events with
RegisterNetEvent; local-only events useAddEventHandleralone, neverRegisterNetEvent. - Server handlers read the sender from
source; broadcast withTriggerClientEvent(event, -1, ...). GetInvokingResource()is nil for every net event that crosses the network; it is not an authentication check. Validate types, ranges and server-owned state instead.- Never handle money or item transactions on the client; validate and apply on the server.
- No game natives in
shared_scriptsunless guarded by environment. - Use
PlayerPedId()notGetPlayerPed(-1); use#(a - b)notGetDistanceBetweenCoords. - Prefer
local; prefer variableWait()over fixedWait(0). - Resource names use underscores, no spaces or special characters.
Decision Gates
| Need | Use |
|---|---|
| Client to server | TriggerServerEvent(event, ...) |
| Server to one / all clients | TriggerClientEvent(event, playerId | -1, ...) |
| Same side only | TriggerEvent + AddEventHandler |
| Data back across the network | a callback (ox_lib / framework), not paired events |
| Single-resource, non-networked call | a plain function, not an event |
| Cross-resource function | exports / server_export in manifest, exports.res:fn() |
| Bug with clean server console | ask for F8 client logs |
Execution Steps
- Lay out
client/,server/,shared/and the manifest; read rules/structure.md and rules/fxmanifest.md. - Decide the side for each piece of logic (natives on client, data and validation on server).
- Wire communication from Decision Gates; name events
resource:side:action. - Validate every server handler argument; add distance and state checks.
- Point to https://docs.fivem.net/natives/ for native lookups.
Output Contract
Return the manifest plus runnable Lua split by side, with event names, validation and source handling explicit.
References
- rules/structure.md — scope, client/server separation, naming.
- rules/fxmanifest.md — manifest entries, globbing, minimal example.
- rules/client-server.md — what runs where and how sides communicate.
- rules/events.md — register, trigger, naming, events vs functions, security.
- rules/exports.md — defining and consuming exports.
- rules/debugging.md — server console vs F8 logs.
- rules/optimization.md — locals, tables, natives, loops, security.
- rules/reference-links.md — official docs and natives reference.
Upstream docs: https://docs.fivem.net/docs/
Perguntas frequentes
- O runtime do FiveM suporta os dois. Lua é a escolha mais comum e é o que ESX, QBCore e a maioria dos scripts publicados usam, então com Lua você tem mais exemplos e uma integração mais fácil. JavaScript funciona bem se sua equipe já vive no Node.
- A referência oficial é https://docs.fivem.net/natives/. Ela lista cada native com seus parâmetros, valores de retorno e o lado (cliente ou servidor) onde roda. A documentação geral fica em https://docs.fivem.net/docs/.
- Sim. O SKILL.md é markdown puro. Cole em uma instrução personalizada ou anexe a um projeto do ChatGPT. Claude Code, Cursor e VS Code carregam o arquivo da pasta de skills ou regras.
Escrevo recursos do FiveM em Lua ou em JavaScript?
Onde encontro a lista de natives do FiveM?
Posso usar esta skill com o ChatGPT?
Guias relacionados
Leituras mais longas do blog da FiveAI sobre o mesmo tema.