Servidores de Jogos

Criando interfaces com DGS, CEGUI e dxDraw

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 onClientRender roda 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS