ESX Legacy para FiveM: o que é, erros comuns e a skill de IA
Atualizado em
Não quer gerenciar as skills por conta própria? Obtenha o app completo.
O ESX Legacy é o framework de roleplay mais antigo do FiveM, construído em torno de xPlayer, empregos, contas e inventário. Este guia cobre a API principal, os erros que quebram scripts ESX e a skill de IA que escreve código contra a API real.
O ESX Legacy é o framework que roda em boa parte dos servidores de roleplay do FiveM: ele gerencia jogadores, empregos, dinheiro, inventário e armas através do recurso es_extended. Se você escreve scripts para um servidor ESX, conversa com ele pelo objeto ESX, pelo objeto xPlayer no servidor e pelo PlayerData no cliente. Esta página explica o que a skill de ESX da FiveAI cobre, os erros que mais quebram scripts ESX e como instalar a skill no seu assistente de IA.
Referência rápida
As chamadas do ESX Legacy mais buscadas. No servidor, sempre verifique se xPlayer não é nil.
| Chamada | Lado | O que faz |
|---|---|---|
ESX.GetPlayerFromId(source) |
Servidor | Retorna o xPlayer de um jogador, ou nil |
ESX.GetPlayerFromIdentifier(identifier) |
Servidor | Busca um jogador pelo identificador |
ESX.GetExtendedPlayers(key, value) |
Servidor | Jogadores que atendem a um filtro, como 'job', 'police' |
xPlayer.getMoney() / addMoney(amount, reason) / removeMoney(amount, reason) |
Servidor | Dinheiro em mãos |
xPlayer.getAccount(name) / addAccountMoney(account, amount, reason) |
Servidor | Contas como bank |
xPlayer.getJob() / setJob(name, grade, onDuty) |
Servidor | Dados do emprego e mudanças de emprego |
xPlayer.addInventoryItem(item, count) / removeInventoryItem(item, count) |
Servidor | Itens |
ESX.RegisterServerCallback(name, cb) |
Servidor | Responde a um pedido do cliente; o handler recebe source, cb, ... |
ESX.TriggerServerCallback(name, cb, ...) |
Cliente | Pede dados ao servidor |
ESX.IsPlayerLoaded() / ESX.PlayerData |
Cliente | Confirme que o jogador carregou antes de ler dados |
O que a skill de ESX te dá
A skill é um arquivo SKILL.md com um arquivo de regras para cada parte do framework:
core-concepts: como oes_extendedinicializa, o que oPlayerDataguarda no cliente e o que oxPlayerguarda no servidor.client-functionseserver-functions:ESX.IsPlayerLoaded()eESX.PlayerDatano cliente,ESX.GetPlayerFromId(source)no servidor, callbacks e triggers.xplayer-methods: os métodos para dinheiro, itens, armas, inventário, empregos e metadata.jobs-economy: definição de empregos, salários, as contasmoneyebank, gestão de sociedades.inventory-itemseweapons-loadout: registro de itens, itens usáveis, peso, armas, componentes, munição e tints.events-callbacks: eventos do ESX, callbacks de servidor e cliente, eSecureNetEventpara eventos disparados pelo cliente.best-practices: checagem de nil, cache de objetos de jogador, nomes em camelCase, poucas globais e ox_lib para menus, notificações e barras de progresso no lugar da UI do ESX.
Use a skill quando criar um recurso ESX, adicionar um emprego, mexer na economia ou escrever qualquer coisa que leia dados do jogador.
Erros comuns com ESX
- Usar
xPlayersem checar nil. Sintoma: "attempt to index a nil value" no console do servidor quando um jogador desconecta no meio de um evento ou o source é inválido. Correção:local xPlayer = ESX.GetPlayerFromId(source)seguido deif not xPlayer then return end. - Misturar as APIs do ESX e do QBCore. Sintoma: uma chamada a
QBCore.Functions.GetPlayerou aPlayer.Functions.AddMoneydentro de um script ESX e um erro de nil em execução. Acontece quando o script foi copiado de um tutorial de QBCore. Correção: useESX.GetPlayerFromIde os métodos doxPlayer, nada mais. - Ler
ESX.PlayerDataantes de o jogador carregar. Sintoma: emprego ou dinheiro vazios no cliente nos primeiros segundos depois do spawn. Correção: chequeESX.IsPlayerLoaded()ou espere o evento de jogador carregado antes de ler oPlayerData. - Confiar nos valores de dinheiro enviados pelo cliente. Sintoma: um trapaceiro dispara seu evento com um valor inventado e o servidor paga. Correção: calcule preços e recompensas no servidor, valide o source e use
SecureNetEventpara eventos disparados pelo cliente. - Chamar
ESX.GetPlayerFromIddentro de loops. Sintoma: uma thread do servidor que roda a cada frame e busca o mesmo jogador em cada iteração. Correção: pegue oxPlayeruma vez, guarde em uma local e reutilize.
Por que os assistentes de IA erram com ESX
Um assistente genérico viu anos de tutoriais de ESX, e muitos apontam para versões antigas. Ele costuma recorrer ao evento esx:getSharedObject para obter o objeto ESX, inventa métodos que não existem no xPlayer ou coloca lógica exclusiva de servidor em um arquivo de cliente. Também mistura vocabulário de frameworks: xPlayer em uma função e Player.PlayerData na seguinte, porque os dois aparecem nos dados de treinamento.
A skill dá ao assistente uma referência curta e atual. Tutoriais antigos usam o evento getSharedObject; o ESX Legacy entrega o objeto pelo import ou pelo export do es_extended, e o arquivo de conceitos básicos da skill aponta o assistente para isso. A lista de princípios (checar nil, esperar o jogador carregar, nunca confiar no cliente, cachear objetos de jogador, preferir ox_lib para UI) é carregada toda vez que você pede código ESX, então a saída bate com a API que roda no seu servidor.
Para ver como uma skill se compara a outras configurações de IA para FiveM, leia nosso comparativo.
Instale a skill de ESX em 30 segundos
- Clique em "Download SKILL.md" no topo desta página.
- Descompacte na pasta de skills ou regras da sua ferramenta de IA. A seção de instalação abaixo mostra o caminho exato para Claude Code, Cursor e VS Code.
- Peça ao assistente algo concreto, como um evento de servidor que remova um item e some dinheiro na conta
bank, e confira se ele usaESX.GetPlayerFromIdcom checagem de nil.
Como instalar esta skill
Baixe o zip, descompacte e coloque a pasta onde a sua ferramenta carrega skills ou regras. O caminho exato depende da ferramenta:
Claude Code
Descompacte em .claude/skills/esx-framework/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/esx-framework/.
Cursor
O Cursor carrega as regras do projeto de .cursor/rules/. Adicione ali um arquivo de regra apontando para a skill descompactada, ou cole o conteúdo do SKILL.md e dos arquivos de regras em uma regra. O formato é .mdc com frontmatter e muda entre versões, então confira a documentação da sua versão.
VS Code / Copilot
O Copilot lê arquivos de instruções em .github/instructions/*.instructions.md. Copie o SKILL.md para lá com um glob applyTo para os seus arquivos Lua e mantenha os arquivos de regras ao lado.
O arquivo SKILL.md
Este é o arquivo que o seu assistente de IA lê. Ele aponta para os arquivos de regras incluídos no download.
O conteúdo da skill está em inglês: é documentação técnica feita 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
- Always check for nil —
if xPlayer then ... endbefore using xPlayer - Use ESX.GetPlayerFromId — Standard player retrieval:
local xPlayer = ESX.GetPlayerFromId(source) - Wait for player load — Check
ESX.IsPlayerLoaded()on client before accessing PlayerData - Never trust client — Validate all data server-side, use SecureNetEvent for client events
- Follow ESX patterns — Use ESX functions instead of reinventing (callbacks, notifications, etc.)
- Optimize loops — Cache player objects, avoid unnecessary GetPlayerFromId calls
- Use camelCase — Follow Lua naming:
myVariable,MyGlobalFunction,MY_CONSTANT - Minimal globals — Keep variables local unless they need global scope
- Use ox_lib for UI — Prefer ox_lib for menus, dialogs, notifications, progress bars instead of ESX UI
Perguntas frequentes
- Os dois são válidos. O ESX é o framework mais antigo e continua muito usado, com um catálogo enorme de scripts compatíveis. O QBCore tem outra API e seu próprio ecossistema. Escolha o que sua equipe conhece e cujos scripts você vai rodar, e não misture as duas APIs no mesmo recurso.
- Sim. A skill documenta a API atual do ESX Legacy: ESX.GetPlayerFromId, os métodos do xPlayer, ESX.IsPlayerLoaded, callbacks de servidor e SecureNetEvent. Os padrões do ESX 1.1 ou 1.2 não são o alvo.
- Sim. O SKILL.md é markdown puro. Cole como instrução personalizada ou anexe a um projeto do ChatGPT. Claude Code, Cursor e VS Code carregam o arquivo direto da pasta de skills ou regras.
Escolho ESX ou QBCore para um servidor novo?
Esta skill cobre só o ESX Legacy?
Posso usar esta skill com o ChatGPT?
Guias relacionados
Leituras mais longas do blog da FiveAI sobre o mesmo tema.