Lua para FiveM: lo básico, errores comunes y la skill de IA
326 instalaciones en skills.sh
Actualizado
¿No quieres gestionar las skills tú mismo? Consigue la app completa.
Los scripts de FiveM se escriben en Lua, así que funciones, tablas, variables, condicionales y manejo de errores deciden si un recurso funciona. Esta guía cubre los fallos de Lua que rompen recursos y la skill de IA que escribe Lua idiomático.
Lua para FiveM es un lenguaje pequeño con unas pocas aristas afiladas, y la mayoría de los recursos rotos tropiezan con esas aristas y no con la API de FiveM. Los arrays empiezan en 1, nil y false son cosas distintas, no hay continue ni operador ternario. Si escribes o revisas recursos en Lua, o dejas que un asistente de IA los escriba por ti, necesitas estas reglas delante. La skill de Lua básico las empaqueta en archivos de reglas que el asistente lee antes de escribir código.
Qué te da la skill de Lua básico
El SKILL.md es un índice. Cada tema tiene su propio archivo de reglas con explicaciones y ejemplos.
rules/functions.md. Tamaño de funciones, nombres, parámetros, exports y guard clauses. Funciones cortas que retornan pronto en vez de anidar.rules/tables.md. Los índices de array empiezan en 1, desreferenciar, evitartable.inserten rutas calientes, iterar conipairsypairs, y el tamaño de array con#.rules/variables.md. Nombres para constantes, locales antes que globales, y cuándo un enum se lee mejor que un booleano.rules/conditionals.md. Valores por defecto conor, expresiones booleanas y legibilidad.rules/errors.md. Aserciones, precondiciones, errores como valores y fallar ruidosamente en vez de tragarse los problemas.rules/reference-links.md. Documentación oficial de Lua y FiveM, incluida docs.fivem.net.
Errores comunes con Lua para FiveM
- Globales accidentales. Un
localque falta convierte la variable en una global compartida por todos los archivos del recurso. Síntoma: valores que se filtran entre scripts, un contador de un archivo que cambia en otro, y accesos más lentos que con locales. Solución: declara todo conlocaly trata una asignación sinlocalcomo un bug. - Indexar desde 0.
players[0]esnily un buclefor i = 0, #playersarranca en un hueco vacío. Síntoma: se salta la primera entrada o el código falla en la iteración cero. Solución: empieza en 1 e itera conipairs. - Usar
#en la tabla equivocada.#tsolo está definido para una secuencia sin huecos. Ignora las claves de texto y con huecos el resultado es impredecible. Solución: lleva un contador aparte o itera conpairscuando las claves no son 1..n. - Confundir
falseconnil.if x thenfalla tanto connilcomo confalse. Sifalsees un valor válido, un valor por defecto comox = x or truelo pisa en silencio. Solución: escribeif x ~= nil thencuandofalseimporta, y cuidado cona and b or ccuandobpuede serfalse. - Tratar Lua como JavaScript. No hay
!=(usa~=), no haycontinue(usagoto continueo reestructura), no hay ternario. Construir cadenas grandes con..dentro de bucles crea una cadena nueva en cada paso. Solución: usatable.concatpara salidas grandes y escribe los condicionales a la manera de Lua.
Por qué los asistentes de IA fallan con Lua para FiveM
Un asistente genérico escribe Lua con la memoria muscular de JavaScript y Python. Omite local, arranca bucles en 0, usa !=, se inventa un continue y recurre a a and b or c como ternario sin ver el caso de false. También llama a table.insert dentro de bucles calientes del servidor porque eso hace cada tutorial. El código suele correr y fallar más tarde, en silencio, bajo carga.
La skill de Lua básico le da al asistente los cinco archivos de reglas y le indica que lea el que encaja con la tarea. Las funciones llevan guard clauses y cuerpos cortos, las tablas usan bucles desde 1 con ipairs, las variables son locales por defecto y los errores salen a la luz con aserciones y precondiciones en vez de ignorarse. El resultado se lee como Lua escrito por alguien que trabaja en FiveM a diario, y eso hace que revisarlo sea mucho más fácil.
Instala la skill de Lua básico 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 rules de tu herramienta de IA. La sección de instalación de abajo muestra la ruta exacta para Claude Code, Cursor y VS Code.
- Pídele al asistente algo concreto, como "escribe una función que devuelva los jugadores a menos de 10 metros de una coordenada", y comprueba que cada variable es
local, que el bucle usaipairsy que la función retorna pronto con entradas inválidas.
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/lua-basics/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/lua-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.
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.
Preguntas frecuentes
- Las builds actuales de FXServer corren Lua 5.4 con añadidos propios de FiveM. Los recursos antiguos escritos para 5.3 suelen seguir funcionando, pero revisa la división entera y otros cambios de 5.4 antes de copiar código viejo.
- Deberías leerlo lo bastante bien como para revisar lo que escribe el asistente. La IA puede producir un recurso que funciona, pero también produce globales accidentales y bucles con índice desfasado. Si no los detectas, no puedes confiar en el resultado.
- Sí, con un paso manual. El SKILL.md y su carpeta rules son markdown plano, así que puedes pegarlos en la conversación como contexto. El soporte nativo de skills es para Claude Code, Cursor y VS Code.
¿Qué versión de Lua usa FiveM?
¿Necesito saber Lua para usar IA en FiveM?
¿Puedo usar esta skill con ChatGPT?
Guías relacionadas
Lecturas más largas del blog de FiveAI sobre el mismo tema.