
Lua desde cero para FiveM: guía práctica para empezar a programar
Descubre cómo aprender Lua para FiveM desde cero. Guía práctica con ejemplos listos, explicación cliente-servidor, buenas prácticas y apoyo de la comunidad Zeew Space.
Lua desde cero para FiveM: guía práctica para empezar a programar
Sí, puedes empezar hoy mismo aunque nunca hayas escrito código. Lua es sencillo, rápido de leer y perfecto para crear cosas reales en servidores de FiveM. En esta guía te explico lo esencial, te doy ejemplos listos y te muestro el camino para seguir creciendo sin perderte.
Resumen rápido (qué te llevas)
- Qué es Lua y por qué encaja tan bien en FiveM
- Cómo funciona cliente ↔ servidor y los eventos
- Tu primer recurso (estructura +
fxmanifest.lua
) - Snippets útiles: comandos, mensajes, eventos cliente/servidor
- Buenas prácticas y errores comunes a evitar
- Siguientes pasos para avanzar sin atascarte
¿Qué es Lua y por qué se usa en FiveM?
Lua es un lenguaje de scripting ligero y muy fácil de aprender. Nació para “vivir dentro” de otros sistemas (como motores de juego), así que en FiveM encaja perfecto para:
- Crear lógicas de gameplay (trabajos, misiones, tiendas, comandos).
- Personalizar NPCs, vehículos y objetos.
- Conectar con base de datos desde el servidor.
- Controlar flujos entre cliente (jugador) y servidor.
Piensa en Lua como el pegamento que une tus ideas con lo que pasa en el juego—rápido de escribir, fácil de leer y con resultados inmediatos.
Por qué Lua es ideal si empiezas desde cero
- Sintaxis simple: haces mucho con pocas líneas.
- Aprendes “lo de verdad”: variables, condiciones, funciones, eventos…
- Feedback inmediato: ves cambios al instante dentro de FiveM.
Concepto clave en FiveM: cliente ↔ servidor
En FiveM trabajarás en dos lados:
- Cliente: lo que corre en la PC del jugador (UI, efectos, notificaciones).
- Servidor: lógica compartida (economía, permisos, validaciones, DB).
Se comunican con eventos:
- Cliente → Servidor:
TriggerServerEvent("evento", data)
- Servidor → Cliente:
TriggerClientEvent("evento", playerId, data)
Esta separación te obliga a pensar en seguridad: valida en el servidor, nunca confíes en lo que llega del cliente.
Tu primer recurso: estructura mínima
Crea una carpeta dentro de resources/[local]/lua_hello/
con estos archivos:
fxmanifest.lua
client.lua
(cliente)
server.lua
(servidor)
Cómo probar
- Añade
ensure lua_hello
en tuserver.cfg
. - Arranca el servidor y entra.
- En el chat, escribe:
/saluda Zeew
.
Snippets útiles para seguir creando
1) Temporizadores sin bloquear (cliente o servidor)
2) Evento cliente → servidor
3) Tabla (array/diccionario) básica
Buenas prácticas (te evitan dolores de cabeza)
-
Nunca hagas bucles
while true do
conWait(0)
: usa 100–500ms si no es crítico. -
Valida todo en servidor (rango de valores, permisos, nil).
-
Separa config de lógica (
config.lua
vsserver.lua/client.lua
). -
Loguea con contexto:
-
Nombra eventos con prefijo único (
zeew:algo
) para evitar colisiones. -
Evita “copiar-pegar ciego”: entiende qué hace cada línea antes de publicarla.
Errores comunes (y cómo evitarlos)
- Confiar en el cliente: cualquier dato que te mande un jugador es sospechoso; valida y limita en servidor.
- No usar
-1
cuando quieres “a todos”: si mandas asource
y estás en consola, no llega a nadie. - Spamear prints: usa prints con prefijo y desactiva debug en producción.
- Variables globales sin querer: declara siempre con
local
.
Ruta de aprendizaje sugerida
- Base de Lua: variables, tablas, funciones, condiciones, bucles.
- Cliente/Servidor en FiveM: eventos, comunicación y permisos.
- Pequeños recursos: un comando, un menú, una notificación personalizada.
- Persistencia: guarda datos (licencias, inventario) del lado servidor.
- Optimización: reduce bucles, mide tiempos, cuida el rendimiento.
- Escalar: estructura carpetas, módulos y separa responsabilidades.
Preguntas frecuentes (FAQ)
¿Necesito experiencia previa? No. Con los ejemplos de esta guía puedes publicar algo funcional el primer día.
¿Lua solo sirve para FiveM? No. También se usa en otros juegos y herramientas (por eso aprenderlo es una inversión que “abre puertas”).
¿Debo usar un framework (ESX/QBCore)? No para empezar. Comienza “vanilla” y súmate a un framework cuando entiendas bien eventos, permisos y servidor.
Siguientes pasos (para no quedarte en el “hola mundo”)
- Curso Lua - Conoce las bases del lenguaje
- Curso FiveM - configura tu primer servidor de fivem
- Curso Scripts FiveM - crea tu propio script
- Blog: ¿Qué framework elegir? -cuándo y por qué ESX/QBCore/Qbox