Tutorial completo para criar scripts em Lua para FiveM: estrutura de recursos, client.lua, server.lua, integração com ESX e QBCore, banco de dados e NUI.
Tutorial em Vídeo
Estrutura
// Estrutura de pasta do recurso:
meu-script/
├── fxmanifest.lua // obrigatório
├── client.lua // roda no jogador
└── server.lua // roda no servidor
-- fxmanifest.lua básico:
fx_version 'cerulean'
game 'gta5'
client_scripts {'client.lua'}
server_scripts {'server.lua'}
Do Zero ao Script
VS Code (gratuito) com extensões: Lua Language Server, FiveM Types para autocomplete. Opcionalmente o servidor FiveM local para testes rápidos.
Todo script FiveM é um 'recurso': uma pasta com fxmanifest.lua (declaração de arquivos), client.lua (roda no jogador), server.lua (roda no servidor) e HTML/CSS/JS para NUI (interface).
O manifesto declara o nome do recurso, versão, dependências e lista todos os arquivos Lua, HTML e JS que o recurso usa. Sem o manifesto correto, o recurso não carrega.
client.lua roda em cada jogador. Use RegisterCommand, AddEventHandler, RegisterNetEvent, TriggerServerEvent. Aqui ficam HUD, animações, keybinds e detecção de proximidade.
server.lua roda no servidor. Use AddEventHandler, RegisterServerEvent, TriggerClientEvent. Aqui ficam banco de dados (MySQL), validações de segurança e lógica de autoridade.
Use as funções do framework para acessar dados do jogador, inventário, dinheiro e trabalhos. ESX.GetPlayerData() / QBCore.Functions.GetPlayerData() são o ponto de partida.
Dúvidas
Qual linguagem usar para scripts FiveM?
Lua é a linguagem principal. Simples de aprender, com sintaxe próxima do inglês. JavaScript também é suportado, mas Lua domina a cena por ter mais frameworks, scripts de referência e suporte da comunidade.
O que é client.lua e server.lua?
client.lua roda no computador do jogador: interface, animações, input, eventos visuais. server.lua roda no servidor centralizado: banco de dados, autoridade de jogo, validação de segurança. Sempre valide no server o que o client envia.
O que é o fxmanifest.lua?
É o arquivo de configuração de cada recurso FiveM. Declara nome, versão, dependências e lista todos os arquivos que o recurso usa (scripts, HTML, imagens). Sem ele, o FiveM não sabe o que carregar.
Como salvar dados no banco de dados FiveM?
Use o oxmysql (recomendado) ou ghmattimysql. São recursos que dão acesso ao MySQL do servidor via Lua. Exemplo: MySQL.Async.execute('INSERT INTO tabela VALUES (?)', {valor}). Sempre no server.lua, nunca no client.
O que é NUI no FiveM?
NUI (Native UI) é a interface web embutida no FiveM. Você cria HTML/CSS/JS normal e o FiveM exibe dentro do jogo. Perfeito para inventários, menus, mapas e qualquer interface rica que Lua sozinha não consegue fazer.
ESX ou QBCore para começar?
Para iniciantes no Brasil: ESX tem mais tutoriais em português e mais scripts prontos disponíveis. QBCore tem melhor arquitetura e é preferido por devs mais experientes. Ambos são gratuitos e bem documentados.
Acelere seu servidor
A Ryze Store tem scripts testados e compatíveis com ESX e QBCore para você adicionar ao seu servidor sem precisar criar do zero.