Scripting no FiveM: recursos, fxmanifest, eventos e a skill de IA

375 instalações no skills.sh

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, files e dependencies.
  • 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 de PlayerPedId(), 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_version ou game ausentes ou errados no fxmanifest.lua. Sintoma: o recurso não inicia e o console do servidor imprime um erro de manifesto. Correção: declare fx_version 'cerulean' e game '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_scripts e envie resultados ao cliente por eventos.
  • RegisterNetEvent sem 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 como meurecurso:server:fazerAlgo para os nomes nunca colidirem.
  • Ordem de ensure errada 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: adicione dependency 'ox_lib' (ou dependencies { ... }) no fxmanifest.lua e faça o ensure da dependência antes no server.cfg.
  • Loops pesados while true do Wait(0) end e globais por toda parte. Sintoma: tempo alto de recurso no resmon e colisões de nomes entre scripts. Correção: use um Wait mais longo quando não há nada por perto, cacheie PlayerPedId() fora do loop, compare distâncias com vetores e declare variáveis com local.

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

  1. Clique em “Download SKILL.md” no topo desta página.
  2. 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.
  3. 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_version e game e 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/.

Documentação de skills do Claude Code

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.

Documentação de regras do Cursor

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.

Documentação de instruções do VS Code

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.

Conteúdo da skill (inclui SKILL.md e quaisquer outros arquivos)

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' and game 'gta5' (or 'rdr3' / 'common'); every client-served file goes in files.
  • Register networked events with RegisterNetEvent; local-only events use AddEventHandler alone, never RegisterNetEvent.
  • Server handlers read the sender from source; broadcast with TriggerClientEvent(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_scripts unless guarded by environment.
  • Use PlayerPedId() not GetPlayerPed(-1); use #(a - b) not GetDistanceBetweenCoords.
  • Prefer local; prefer variable Wait() over fixed Wait(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

  1. Lay out client/, server/, shared/ and the manifest; read rules/structure.md and rules/fxmanifest.md.
  2. Decide the side for each piece of logic (natives on client, data and validation on server).
  3. Wire communication from Decision Gates; name events resource:side:action.
  4. Validate every server handler argument; add distance and state checks.
  5. 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

Escrevo recursos do FiveM em Lua ou em JavaScript?
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.
Onde encontro a lista de natives do FiveM?
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/.
Posso usar esta skill com o ChatGPT?
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.

Leituras mais longas do blog da FiveAI sobre o mesmo tema.

Mais skills