Scripting en FiveM: recursos, fxmanifest, eventos y la skill de IA

375 instalaciones en skills.sh

¿No quieres gestionar las skills tú mismo? Consigue la app completa.

El scripting en FiveM empieza por los recursos: carpetas que contienen un fxmanifest.lua y los scripts de cliente, servidor y compartidos que forman una funcionalidad. Cada framework, script de trabajo o interfaz de un servidor es un recurso, así que estas bases aplican a cualquiera que programe para FiveM. Esta página explica qué documenta la skill de fundamentos de FiveM de FiveAI, los errores que impiden que un recurso arranque y cómo instalar la skill en tu asistente de IA.

Qué te da la skill de fundamentos de FiveM

La skill es un archivo SKILL.md con un archivo de reglas por tema:

  • structure: cómo organizar un recurso, separación de cliente y servidor, agrupación lógica y nombres.
  • fxmanifest: las claves del manifiesto que importan: fx_version, game, client_scripts, server_scripts, shared_scripts, files y dependencies.
  • client-server: qué corre en cada lado, código compartido y los patrones de comunicación entre ambos.
  • events: RegisterNetEvent, TriggerServerEvent, TriggerClientEvent, convenciones de nombres y seguridad.
  • exports: cómo definir un export y llamarlo desde otro recurso.
  • debugging: la consola del servidor frente a la consola F8 del cliente, y cuándo pedir los logs de F8 si el servidor no muestra nada.
  • optimization: locales, tiempos de bucle, cacheo de PlayerPedId(), distancia con vectores, state bags y estructura de carpetas.
  • reference-links: la documentación oficial en https://docs.fivem.net/docs/ y la referencia de natives en https://docs.fivem.net/natives/.

Úsala siempre que crees o edites un recurso, sin importar qué framework corra encima.

Errores comunes con recursos de FiveM

  • fx_version o game ausentes o incorrectos en fxmanifest.lua. Síntoma: el recurso no arranca y la consola del servidor imprime un error de manifiesto. Solución: declara fx_version 'cerulean' y game 'gta5' al inicio del manifiesto y luego lista tus scripts.
  • Lógica de servidor en un archivo de cliente. Síntoma: una consulta a base de datos o un native exclusivo de servidor corre en el cliente, falla o expone datos a todos los jugadores. Solución: mantén todo lo que toque base de datos, dinero o permisos en server_scripts y envía resultados al cliente mediante eventos.
  • RegisterNetEvent sin handler, o nombres de handler que no coinciden con el trigger. Síntoma: el evento se dispara y no pasa nada, sin error en ninguna consola. Solución: registra el evento y añade el handler con la misma cadena, y usa un prefijo de recurso como mirecurso:server:hacerAlgo para que los nombres nunca choquen.
  • Orden de ensure incorrecto en server.cfg. Síntoma: un recurso arranca antes que el framework o la librería que necesita, así que sus exports son nil al cargar. Solución: añade dependency 'ox_lib' (o dependencies { ... }) en fxmanifest.lua y haz el ensure de la dependencia antes en server.cfg.
  • Bucles pesados while true do Wait(0) end y globales por todas partes. Síntoma: tiempo alto de recurso en resmon y colisiones de nombres entre scripts. Solución: usa un Wait más largo cuando no haya nada cerca, cachea PlayerPedId() fuera del bucle, compara distancias con vectores y declara variables con local.

Por qué los asistentes de IA se equivocan con FiveM

Un asistente genérico no sabe a qué lado de la red pertenece un native, así que llama natives de cliente en el servidor, inventa exports que un recurso nunca tuvo y escribe manifiestos de memoria con un fx_version desactualizado o sin la línea game. También recurre a la sintaxis de eventos más antigua de sus datos de entrenamiento y rara vez añade un prefijo de recurso a los nombres de eventos.

La skill le da una referencia corta para cada una de esas áreas: las claves del manifiesto, la separación cliente y servidor, las funciones de eventos con sus reglas de nombres y seguridad, el patrón de exports y la guía de optimización. También le indica que consulte la referencia de natives en docs.fivem.net en lugar de adivinar la firma de un native, y que pida los logs de F8 cuando un bug de cliente deja limpia la consola del servidor. Eso convierte un script plausible en uno que arranca y funciona.

Instala la skill de fundamentos de FiveM en 30 segundos

  1. Haz clic en “Download SKILL.md” en la parte superior de esta página.
  2. Descomprímelo en la carpeta de skills o reglas de tu herramienta de IA. La sección de instalación de abajo muestra la ruta exacta para Claude Code, Cursor y VS Code.
  3. Pide al asistente algo concreto, como un recurso con un evento de servidor y un comando de cliente, y comprueba que el manifiesto tiene fx_version y game y que los nombres de eventos coinciden en ambos lados.

Cómo instalar esta skill

Descarga el zip, descomprímelo y coloca la carpeta donde tu herramienta carga skills o reglas. La ruta exacta depende de la herramienta:

Claude Code

Descomprime en .claude/skills/fivem-basics/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/fivem-basics/.

Documentación de skills de Claude Code

Cursor

Cursor carga las reglas del proyecto desde .cursor/rules/. Añade ahí un archivo de regla que apunte a la skill descomprimida, o pega el contenido de SKILL.md y los archivos de reglas en una regla. El formato es .mdc con frontmatter y cambia entre versiones, así que revisa la documentación de tu versión.

Documentación de reglas de Cursor

VS Code / Copilot

Copilot lee archivos de instrucciones desde .github/instructions/*.instructions.md. Copia SKILL.md ahí con un glob applyTo para tus archivos Lua y deja los archivos de reglas al lado.

Documentación de instrucciones de VS Code

El archivo SKILL.md

Este es el archivo que lee tu asistente de IA. Enlaza a los archivos de reglas incluidos en la descarga.

Contenido de la skill (incluye SKILL.md y cualquier otro archivo)

El contenido de la skill está en inglés: es documentación técnica pensada 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/

Preguntas frecuentes

¿Escribo recursos de FiveM en Lua o en JavaScript?
El runtime de FiveM soporta los dos. Lua es la opción más común y es lo que usan ESX, QBCore y la mayoría de scripts publicados, así que con Lua tienes más ejemplos y una integración más fácil. JavaScript funciona bien si tu equipo ya vive en Node.
¿Dónde encuentro la lista de natives de FiveM?
La referencia oficial es https://docs.fivem.net/natives/. Lista cada native con sus parámetros, valores de retorno y el lado (cliente o servidor) donde corre. La documentación general está en https://docs.fivem.net/docs/.
¿Puedo usar esta skill con ChatGPT?
Sí. SKILL.md es markdown plano. Pégalo en una instrucción personalizada o adjúntalo a un proyecto de ChatGPT. Claude Code, Cursor y VS Code lo cargan desde su carpeta de skills o reglas.

Lecturas más largas del blog de FiveAI sobre el mismo tema.

Más skills