Criando interfaces com DGS, CEGUI e dxDraw
Interfaces bonitas e funcionais fazem um servidor de MTA parecer profissional: tela de login, HUD, inventário, painel de empregos. Há três caminhos principais para criá-las.
1. GUI nativa (CEGUI)
Funções guiCreate* criam janelas, botões, caixas de texto e listas com o visual padrão do MTA.
local janela = guiCreateWindow(0.35, 0.35, 0.3, 0.3, "Loja", true)
local botao = guiCreateButton(0.1, 0.7, 0.8, 0.2, "Comprar", true, janela)
showCursor(true)
addEventHandler("onClientGUIClick", botao, function()
triggerServerEvent("rp:comprar", localPlayer, "kit_medico")
end, false)
Prós: simples, eventos prontos, bom para ferramentas de staff.
Contras: visual datado e pouco personalizável.
2. dxDraw
Funções dxDrawRectangle, dxDrawText, dxDrawImage desenham diretamente na tela, a cada frame, dentro do evento onClientRender.
local sx, sy = guiGetScreenSize()
addEventHandler("onClientRender", root, function()
dxDrawRectangle(sx - 260, sy - 90, 240, 60, tocolor(0, 0, 0, 170))
dxDrawText("$" .. getPlayerMoney(), sx - 250, sy - 80, sx - 30, sy - 40,
tocolor(80, 255, 120), 1.4, "default-bold", "right", "center")
end)
Prós: liberdade visual total — HUDs modernos, animações.
Contras: você precisa programar cliques, rolagem e campos de texto manualmente.
Desempenho com dxDraw
- O código dentro de
onClientRenderroda a cada frame: evite cálculos pesados e funções que consultam o servidor ali; - Pré-calcule posições e textos fora do render;
- Para interfaces complexas e estáticas, use render targets (
dxCreateRenderTarget) e redesenhe só quando algo mudar; - Adapte posições à resolução da tela (use proporções de
guiGetScreenSize).
3. DGS (dxGUI System)
O DGS é uma biblioteca da comunidade que oferece componentes prontos (janelas, botões, campos de texto, listas, abas, barras de rolagem) desenhados com dx — unindo o visual moderno do dxDraw com a praticidade da GUI.
local DGS = exports.dgs
local janela = DGS:dgsCreateWindow(0.35, 0.35, 0.3, 0.3, "Loja", true)
local botao = DGS:dgsCreateButton(0.1, 0.7, 0.8, 0.2, "Comprar", true, janela)
Prós: visual moderno com eventos prontos; muito usado em servidores brasileiros.
Contras: dependência externa; consulte a documentação e mantenha atualizado.
Qual escolher?
| Uso | Recomendação |
|---|---|
| Painel de staff, ferramentas internas | CEGUI |
| HUD, velocímetro, notificações | dxDraw |
| Login, inventário, lojas, celular | DGS ou dxDraw próprio |
Lembre-se
A interface roda no cliente. Toda ação importante (comprar, vender, transferir) deve ser validada no servidor.
Hospede seu servidor com a VittHost
No MTASA-BR da VittHost, imagens e fontes das suas interfaces chegam rápido aos jogadores com downloads acelerados por nginx dedicado. Servidores no Brasil, painel Pterodactyl, proteção DDoS, MySQL incluso e teste grátis de 3 dias.