Fundamentos: tu primer recurso · Lección 6/6 · 6 min

Buenas prácticas y tu hoja de ruta

Los hábitos que separan a un script de aficionado de uno de producción, y por dónde seguir.

Ya sabes lo básico. Estos hábitos harán que tus recursos sean limpios, seguros y fáciles de mantener:

  • Configuración en config.lua, nunca valores «mágicos» repartidos por el código.
  • Eventos con nombres de recurso:lado:accion, claros y sin colisiones.
  • Base de datos con oxmysql y consultas parametrizadas (?), nunca concatenando strings.
  • Secretos (claves, tokens) fuera del código: en convars/server.cfg.
  • Server-authoritative siempre: el cliente pide, el servidor decide.
  • Programa a la defensiva: comprueba nil antes de usar.

Si interiorizas «el cliente nunca es de fiar», ya estás por delante de la mayoría de scripts que circulan por ahí (muchos con backdoors precisamente por ignorar esto).

Lo que viene

En los siguientes módulos: frameworks (ESX/QBCore), cliente y servidor a fondo, base de datos con oxmysql, interfaces NUI, depuración avanzada, seguridad anti-backdoor y un proyecto final donde construirás un recurso completo de principio a fin.

Practica lo aprendido

0/3
Test

¿Cómo se meten valores de usuario en una consulta SQL de forma segura?

Pista

La clave es evitar la inyección SQL.

Ordena el código

Ordena los pasos de un evento de servidor seguro que cobra un precio.

Coloca las líneas en el orden correcto con las flechas.

xPlayer.removeMoney(precio)
local xPlayer = ESX.GetPlayerFromId(source)
local precio = Config.Precios[item]
if not xPlayer then return end
Pista

Obtén el jugador, comprueba que existe, lee el precio de Config (servidor) y luego cobra.

Test

¿Cuál de estos es el hábito más importante para un script seguro?

Pista

Es la idea que repetimos en todo el módulo.

Reto: prográmalo tú

Coge el comando /cobrar y refactorízalo para que TODOS los valores (pago, cooldown, mensajes) salgan de Config.

Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.

Ver pista

Mueve los textos a Config.Mensajes = { ... } y léelos desde ahí.

Escribe aquí tu solución:

¿Qué tal esta lección?