ESX Legacy para FiveM: qué es, errores comunes y la skill de IA

237 instalaciones en skills.sh

Actualizado

¿No quieres gestionar las skills tú mismo? Consigue la app completa.

ESX Legacy es el framework de rol de FiveM más veterano, construido alrededor de xPlayer, trabajos, cuentas e inventario. Esta guía cubre su API principal, los errores que rompen scripts ESX y la skill de IA que escribe código contra la API real.

ESX Legacy es el framework que corre en buena parte de los servidores de roleplay de FiveM: gestiona jugadores, trabajos, dinero, inventario y armas a través del recurso es_extended. Si escribes scripts para un servidor ESX, hablas con él mediante el objeto ESX, el objeto xPlayer en el servidor y PlayerData en el cliente. Esta página explica qué cubre la skill de ESX de FiveAI, los errores que más rompen scripts ESX y cómo instalar la skill en tu asistente de IA.

Referencia rápida

Las llamadas de ESX Legacy que más se buscan. En el servidor, comprueba siempre que xPlayer no sea nil.

Llamada Lado Qué hace
ESX.GetPlayerFromId(source) Servidor Devuelve el xPlayer de un jugador, o nil
ESX.GetPlayerFromIdentifier(identifier) Servidor Busca un jugador por identificador
ESX.GetExtendedPlayers(key, value) Servidor Jugadores que cumplen un filtro, como 'job', 'police'
xPlayer.getMoney() / addMoney(amount, reason) / removeMoney(amount, reason) Servidor Efectivo
xPlayer.getAccount(name) / addAccountMoney(account, amount, reason) Servidor Cuentas como bank
xPlayer.getJob() / setJob(name, grade, onDuty) Servidor Datos del trabajo y cambios de trabajo
xPlayer.addInventoryItem(item, count) / removeInventoryItem(item, count) Servidor Ítems
ESX.RegisterServerCallback(name, cb) Servidor Responde a una petición del cliente; el handler recibe source, cb, ...
ESX.TriggerServerCallback(name, cb, ...) Cliente Pide datos al servidor
ESX.IsPlayerLoaded() / ESX.PlayerData Cliente Comprueba que el jugador cargó antes de leer datos

Qué te da la skill de ESX

La skill es un archivo SKILL.md con un archivo de reglas por cada parte del framework:

  • core-concepts: cómo se inicializa es_extended, qué contiene PlayerData en el cliente y qué contiene xPlayer en el servidor.
  • client-functions y server-functions: ESX.IsPlayerLoaded() y ESX.PlayerData en el cliente, ESX.GetPlayerFromId(source) en el servidor, callbacks y triggers.
  • xplayer-methods: los métodos para dinero, items, armas, inventario, trabajos y metadata.
  • jobs-economy: definición de trabajos, salarios, las cuentas money y bank, gestión de sociedades.
  • inventory-items y weapons-loadout: registro de items, items usables, peso, armas, componentes, munición y tintes.
  • events-callbacks: eventos de ESX, callbacks de servidor y cliente, y SecureNetEvent para eventos que dispara el cliente.
  • best-practices: comprobaciones de nil, cacheo de objetos de jugador, nombres en camelCase, pocas globales y ox_lib para menús, notificaciones y barras de progreso en lugar de la UI de ESX.

Úsala cuando crees un recurso ESX, añadas un trabajo, toques la economía o escribas cualquier cosa que lea datos del jugador.

Errores comunes con ESX

  • Usar xPlayer sin comprobar nil. Síntoma: "attempt to index a nil value" en la consola del servidor cuando un jugador se desconecta en mitad de un evento o el source no es válido. Solución: local xPlayer = ESX.GetPlayerFromId(source) seguido de if not xPlayer then return end.
  • Mezclar las APIs de ESX y QBCore. Síntoma: una llamada a QBCore.Functions.GetPlayer o a Player.Functions.AddMoney dentro de un script ESX y un error de nil en ejecución. Pasa cuando el script se copió de un tutorial de QBCore. Solución: usa ESX.GetPlayerFromId y los métodos de xPlayer, nada más.
  • Leer ESX.PlayerData antes de que el jugador cargue. Síntoma: trabajo o dinero vacíos en el cliente durante los primeros segundos tras el spawn. Solución: comprueba ESX.IsPlayerLoaded() o espera al evento de jugador cargado antes de leer PlayerData.
  • Confiar en las cantidades de dinero que envía el cliente. Síntoma: un tramposo dispara tu evento con una cantidad inventada y el servidor la paga. Solución: calcula precios y recompensas en el servidor, valida el source y usa SecureNetEvent para los eventos que dispara el cliente.
  • Llamar a ESX.GetPlayerFromId dentro de bucles. Síntoma: un hilo del servidor que se ejecuta cada frame y busca al mismo jugador en cada iteración. Solución: obtén xPlayer una vez, guárdalo en una local y reutilízalo.

Por qué los asistentes de IA se equivocan con ESX

Un asistente genérico ha visto años de tutoriales de ESX, y muchos apuntan a versiones antiguas. Suele recurrir al evento esx:getSharedObject para obtener el objeto ESX, inventa métodos que no existen en xPlayer o mete lógica exclusiva de servidor en un archivo de cliente. También mezcla vocabulario de frameworks: xPlayer en una función y Player.PlayerData en la siguiente, porque ambos aparecen en sus datos de entrenamiento.

La skill le da al asistente una referencia corta y actual. Los tutoriales antiguos usan el evento getSharedObject; ESX Legacy entrega el objeto a través del import o el export de es_extended, y el archivo de conceptos básicos de la skill apunta al asistente hacia ahí. La lista de principios (comprobar nil, esperar la carga del jugador, no confiar en el cliente, cachear objetos de jugador, preferir ox_lib para la UI) se carga cada vez que pides código ESX, así que el resultado coincide con la API que corre tu servidor.

Para ver cómo se compara una skill con otras configuraciones de IA para FiveM, lee nuestra comparativa.

Instala la skill de ESX en 30 segundos

  1. Haz clic en "Download SKILL.md" en la parte superior de esta página.
  2. 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.
  3. Pide al asistente algo concreto, como un evento de servidor que quite un item y sume dinero a la cuenta bank, y comprueba que usa ESX.GetPlayerFromId con comprobación de nil.

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/esx-framework/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/esx-framework/.

Documentación de skills de Claude Code

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.

Documentación de reglas de Cursor

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.

Documentación de instrucciones de VS Code

El archivo SKILL.md

Este es el archivo que lee tu asistente de IA. Enlaza a los archivos de reglas incluidos en la descarga.

Contenido de la skill (incluye SKILL.md y cualquier otro archivo)

El contenido de la skill está en inglés: es documentación técnica pensada para agentes de IA.

ESX Framework Development

Complete guide for developing with ESX Legacy Framework — the most trusted FiveM roleplay framework since 2017.

When to use

  • Creating or editing ESX resources/scripts
  • Working with player data (xPlayer, PlayerData)
  • Implementing jobs, economy, inventory, or weapon systems
  • Using ESX client/server functions, callbacks, or events
  • Questions about ESX best practices and optimization

How to use

Read individual rule files for detailed explanations and examples:

  • rules/core-concepts.md — ESX architecture, PlayerData, xPlayer object, framework initialization

  • rules/client-functions.md — Client-side ESX functions, UI systems, player state management

  • rules/server-functions.md — Server-side functions, player retrieval, callbacks, triggers

  • rules/xplayer-methods.md — xPlayer object methods: money, items, weapons, inventory, jobs, metadata

  • rules/jobs-economy.md — Job system, salaries, accounts (money/bank), society management

  • rules/inventory-items.md — Inventory system, item management, usable items, weight calculations

  • rules/weapons-loadout.md — Weapon system, loadout, components, ammo, tints

  • rules/events-callbacks.md — ESX events, server callbacks, client callbacks, secure net events

  • rules/best-practices.md — ESX coding standards, optimization, security, naming conventions

  • rules/reference-links.md — Official ESX documentation links

Key principles

  1. Always check for nil — if xPlayer then ... end before using xPlayer
  2. Use ESX.GetPlayerFromId — Standard player retrieval: local xPlayer = ESX.GetPlayerFromId(source)
  3. Wait for player load — Check ESX.IsPlayerLoaded() on client before accessing PlayerData
  4. Never trust client — Validate all data server-side, use SecureNetEvent for client events
  5. Follow ESX patterns — Use ESX functions instead of reinventing (callbacks, notifications, etc.)
  6. Optimize loops — Cache player objects, avoid unnecessary GetPlayerFromId calls
  7. Use camelCase — Follow Lua naming: myVariable, MyGlobalFunction, MY_CONSTANT
  8. Minimal globals — Keep variables local unless they need global scope
  9. Use ox_lib for UI — Prefer ox_lib for menus, dialogs, notifications, progress bars instead of ESX UI

Preguntas frecuentes

¿Elijo ESX o QBCore para un servidor nuevo?
Los dos son válidos. ESX es el framework más antiguo y sigue muy extendido, con un catálogo enorme de scripts compatibles. QBCore tiene otra API y su propio ecosistema. Elige el que conozca tu equipo y cuyos scripts vayas a usar, y no mezcles las dos APIs en un mismo recurso.
¿Esta skill cubre solo ESX Legacy?
Sí. La skill documenta la API actual de ESX Legacy: ESX.GetPlayerFromId, los métodos de xPlayer, ESX.IsPlayerLoaded, callbacks de servidor y SecureNetEvent. Los patrones de ESX 1.1 o 1.2 no son el objetivo.
¿Puedo usar esta skill con ChatGPT?
Sí. SKILL.md es markdown plano. Pégalo como instrucción personalizada o adjúntalo a un proyecto de ChatGPT. Claude Code, Cursor y VS Code lo cargan directamente desde su carpeta de skills o reglas.

Lecturas más largas del blog de FiveAI sobre el mismo tema.

Más skills