Textdraws: criando interfaces no open.mp
Textdraws são textos e caixas desenhados na tela do jogador. Com eles você cria HUDs de fome e sede, velocímetros, logotipos, telas de login e até menus clicáveis.
Globais x por jogador
- Textdraw global (
TextDrawCreate): igual para todos, como o logo do servidor ou o relógio; - Player textdraw (
CreatePlayerTextDraw): individual, como o dinheiro do banco ou a velocidade do veículo.
Use textdraws globais sempre que o conteúdo for o mesmo para todos. Eles economizam recursos.
Exemplo: logo do servidor
new Text:Logo;
public OnGameModeInit()
{
Logo = TextDrawCreate(500.0, 5.0, "MEU SERVIDOR RP");
TextDrawFont(Logo, TEXT_DRAW_FONT_2);
TextDrawLetterSize(Logo, 0.3, 1.2);
TextDrawColour(Logo, 0xFFFFFFFF);
TextDrawSetOutline(Logo, 1);
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, Logo);
return 1;
}
Nomes de funções e constantes podem variar entre os includes do SA-MP e do open.mp (por exemplo, Color e Colour). O open.mp costuma manter aliases de compatibilidade. Confira a documentação da sua versão.
Exemplo: velocímetro por jogador
new PlayerText:Velocimetro[MAX_PLAYERS];
// ao conectar
Velocimetro[playerid] = CreatePlayerTextDraw(playerid, 550.0, 400.0, "0 km/h");
// no timer do velocímetro
PlayerTextDrawSetString(playerid, Velocimetro[playerid], texto);
Atualize o texto só quando o valor mudar e com intervalos razoáveis. Atualizações excessivas geram tráfego de rede sem necessidade.
Textdraws clicáveis
- Marque o textdraw como selecionável (
TextDrawSetSelectable); - Ative o cursor com
SelectTextDraw(playerid, cor); - Trate o clique em
OnPlayerClickTextDrawouOnPlayerClickPlayerTextDraw; - Desative com
CancelSelectTextDraw.
Assim você monta lojas, seleção de personagem e menus de celular.
Limites
Existem limites de textdraws globais e por jogador. Gamemodes com muitas interfaces devem criar e destruir textdraws conforme a tela aberta, em vez de manter tudo carregado.
Boas práticas
- Teste em resoluções diferentes. As coordenadas são relativas a uma tela virtual de 640x480;
- Use ferramentas visuais (editores de textdraw da comunidade) para posicionar os elementos;
- Evite poluir a tela, porque o jogador precisa ver o jogo.
Hospede seu servidor com a VittHost
Nos planos OPENMP-BR da VittHost, seus jogadores veem as interfaces com resposta rápida graças aos servidores no Brasil. Painel Pterodactyl, proteção DDoS, MySQL incluso, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.