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,filesydependencies.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 dePlayerPedId(), 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_versionogameausentes o incorrectos en fxmanifest.lua. Síntoma: el recurso no arranca y la consola del servidor imprime un error de manifiesto. Solución: declarafx_version 'cerulean'ygame '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_scriptsy envía resultados al cliente mediante eventos. RegisterNetEventsin 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 comomirecurso:server:hacerAlgopara que los nombres nunca choquen.- Orden de
ensureincorrecto 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ñadedependency 'ox_lib'(odependencies { ... }) en fxmanifest.lua y haz elensurede la dependencia antes en server.cfg. - Bucles pesados
while true do Wait(0) endy globales por todas partes. Síntoma: tiempo alto de recurso en resmon y colisiones de nombres entre scripts. Solución: usa unWaitmás largo cuando no haya nada cerca, cacheaPlayerPedId()fuera del bucle, compara distancias con vectores y declara variables conlocal.
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
- Haz clic en “Download SKILL.md” en la parte superior de esta página.
- 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.
- 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_versionygamey 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/.
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.
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.
El archivo SKILL.md
Este es el archivo que lee tu asistente de IA. Enlaza a los archivos de reglas incluidos en la descarga.
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'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/
Preguntas frecuentes
- 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.
- 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/.
- 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.
¿Escribo recursos de FiveM en Lua o en JavaScript?
¿Dónde encuentro la lista de natives de FiveM?
¿Puedo usar esta skill con ChatGPT?
Guías relacionadas
Lecturas más largas del blog de FiveAI sobre el mismo tema.