Volver al blog
Tutorial3 min de lectura

Conceptos básicos de Lua para FiveM: kit inicial para desarrolladores

Aprende Lua para FiveM desde cero: sintaxis, funciones nativas, cliente y servidor, eventos y ejemplos reales para crear tu primer recurso.

Agency Scripts

Fundador y desarrollador principal en Agency Scripts

¿Por qué Lua para FiveM?

Lua es el lenguaje de scripting principal que se utiliza en el desarrollo para FiveM, y por buenas razones. Es ligero, se ejecuta rápidamente y está profundamente integrado en el framework CitizenFX que impulsa FiveM. Tanto si estás creando un simple script de comandos como un complejo sistema de roleplay, entender los fundamentos de Lua es el primer paso para convertirte en un desarrollador competente de FiveM. A diferencia de los lenguajes más pesados, Lua ofrece el rendimiento necesario para crear scripts de servidores de juego en tiempo real, donde cada milisegundo cuenta.

Variables, tipos y funciones

Lua usa tipado dinámico, lo que significa que no necesitas declarar explícitamente los tipos de las variables. Las variables locales se declaran con la local palabra clave y su ámbito se limita al bloque correspondiente, mientras que las variables globales son accesibles desde cualquier lugar, aunque conviene evitarlas en los scripts de FiveM por motivos de rendimiento y seguridad. Las funciones en Lua son valores de primera clase, lo que significa que puedes almacenarlas en variables, pasarlas como argumentos y devolverlas desde otras funciones. Esta flexibilidad es fundamental para el funcionamiento de los manejadores de eventos y las callbacks de FiveM.

Trabajar con tablas

Las tablas son la estructura de datos más potente de Lua y funcionan como arrays, diccionarios y objetos a la vez. En FiveM, usarás tablas constantemente para almacenar datos de jugadores, opciones de configuración y artículos del inventario. Una tabla puede contener distintos tipos de claves y estructuras anidadas, lo que la hace extremadamente versátil. Entender cómo recorrer tablas con pairs() y ipairs() es fundamental para procesar colecciones de datos de forma eficiente tanto en el cliente como en el servidor.

Citizen.CreateThread y los bucles del juego

Una de las funciones de Lua específicas de FiveM más importantes es Citizen.CreateThread, que te permite ejecutar código asíncrono sin bloquear el hilo principal del juego. Dentro de estos hilos, normalmente usarás Citizen.Wait(ms) para controlar el tiempo de ejecución. Un patrón común consiste en crear un bucle con while true do dentro de un hilo y usar intervalos de espera para comprobar condiciones o actualizar el estado del juego. Elegir correctamente el intervalo de espera es fundamental para el rendimiento, ya que un hilo con Wait(0) se ejecuta en cada fotograma y debe reservarse para tareas que realmente necesiten actualizarse en cada fotograma.

Eventos y comunicación

Los scripts de FiveM se comunican mediante eventos, que son la base de la interacción entre el cliente y el servidor. Registras los manejadores de eventos con RegisterNetEvent y AddEventHandlery luego los activas con TriggerEvent, TriggerServerEvent, o TriggerClientEvent. Entender la diferencia entre los eventos del lado del cliente y los del lado del servidor es fundamental para crear scripts seguros. Nunca confíes en los datos enviados desde el cliente sin validarlos en el servidor, ya que los jugadores malintencionados pueden activar cualquier evento registrado en el cliente con datos arbitrarios.

Cómo empezar con tu primer script

Para crear tu primer script de FiveM, crea una carpeta nueva en el directorio de recursos, crea un fxmanifest.lua con los metadatos del recurso y añade un archivo Lua de cliente o de servidor. Empieza con algo sencillo, como un comando que muestre una notificación o teletransporte al jugador. Prueba los cambios reiniciando el recurso con el ensure comando en la consola del servidor. A medida que te sientas más cómodo, explora las funciones nativas en la documentación de FiveM y empieza a crear sistemas más complejos que combinen el renderizado del cliente con la lógica del servidor.

¿Listo para empezar?

Consigue los scripts en nuestra tienda, o únete al Discord para soporte, novedades y un adelanto de lo que viene.