Textdraw Selecionáveis
Olá pessoal, venho através deste tópico ensinado a você que ainda não sabe a como criar uma textdraw clicável/selecionável, preparação vamos precisar de um editor de textdraw as textdraw pode ser criado manualmente mas não recomendo pois é muito trabalhoo ja que tem que saber as teclas da tela então vou recomendar alguns editores . PlayerTextDraw ou TextDraw normal ?
quando criamos uma seleção de textdraw deve-se utilizar PlayerTextDraw pois é criado pra cada jogador quando criamos uma seleção de textdraw é com o intuito de fazer alguma execução/alteração para o jogador, seja mostrar uma caixa de diálogo ou mostrar a informação especifica do jogador exemplo o placar. Textdraw normal é criado para todos então devemos utilizar-la quando queremos algo para todos os jogadores como exemplo mostrar os jogadores online... ela pode ser utilizada em qualquer ocasião que ela não sofra alteração para mais informações leia este tutorial .
Criando a textdraw:
primeiro você precisa ter o texto que quer deixar selecionável, crie uma caixa no texto, guias a caixa para baixo do texto como na imagem com isso o TextDrawTextSize o eixo X ja vai estar no tamanho ideal restando perfeito o Eixo Y.
depois você só precisa deixar a caixa transparente se quiser. 00 sem alfa.
agora sу exportar como PlayerTextDraw no zamaroth tem essa opзгo no iPLEOMAX's ja nгo sei.. se nгo ter й sу vocк alterar manualmente. OBS: as bases podem ser em TextDraw normal como já foi dito.
- Código:
TextDraw0 = TextDrawCreate(310.000000, 140.000000, "teste");
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 2);
TextDrawLetterSize(Textdraw0, 0,390000, 2,100000);
TextDrawColor(Textdraw0, -1);
TextDrawSetOutline(Textdraw0, 0);
TextDrawSetProportional(Textdraw0, 1);
TextDrawSetShadow(Textdraw0, 1);
TextDrawUseBox(Textdraw0, 1);
TextDrawBoxColor(Textdraw0, 0);
TextDrawTextSize(Textdraw0, 350.000000, 0.000000);
TextDrawSetSelectable(Textdraw0, 0);
Код:
- Código:
TextDrawSetSelectable(ID_TEXTDRAW, verdadeiro); 1 = nível de seleção 0 = nível de seleção nгo.
agora vamos focar em [url=https://scriptsamp.forumeiros.com/t49258-textdrawtextsize#98917]TextDrawTextSize[/url] й aonde podemos fazer com que fique clicбvel ..
TextDrawTextSize (Text:text, EixoX, EixoY);
Код:TextDrawTextSize (Text:text, EixoX, EixoY);
- Código:
EixoX equivale a esquerda e direita.
EixoY equivale a cima e baixo.
repare que o eixo Y esta zerado pra que fique clicável deve aumentar, normalmente eu coloca 1 na frente do zero e já é o bastante, funciona normalmente e ai sim a textdraw ira funcionar normalmente.
TextDrawTextSize(Textdraw0, 350.000000, 1 0.000000);
agora é sу mostrar a textdraw e ativar o ponteiro com SelectTextDraw , depois para cancelar CancelSelectTextDraw .
Код:TextDrawTextSize(Textdraw0, 350.000000, 1 0.000000);
agora é sу mostrar a textdraw e ativar o ponteiro com SelectTextDraw , depois para cancelar CancelSelectTextDraw .
- Código:
TextDrawShowForPlayer(playerid, Textdraw0);
SelectTextDraw(playerid, 0x00FF00FF);
cуdigo pronto e funcionando..
Код:- Código:
TextDraw0 = TextDrawCreate(310.000000, 140.000000, "teste");
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 2);
TextDrawLetterSize(Textdraw0, 0,390000, 2,100000);
TextDrawColor(Textdraw0, -1);
TextDrawSetOutline(Textdraw0, 0);
TextDrawSetProportional(Textdraw0, 1);
TextDrawSetShadow(Textdraw0, 1);
TextDrawUseBox(Textdraw0, 1);
TextDrawBoxColor(Textdraw0, 0);
TextDrawTextSize(Textdraw0, 350.000000, 10.000000); // eixo e com 10.000000 diferente de 0.000000
TextDrawSetSelectable(Text:Textdraw0, true); // agora esta selecionável.
quando se clica em um textdraw é chamado uma callback, OnPlayerClickTextDraw para textdraw normal e OnPlayerClickPlayerTextDraw para PlayerTextDraw.
clickedid = ID DA TEXTDRAW CLIADA
Код:clickedid = ID DA TEXTDRAW CLIADA
- Código:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == Textdraw0)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Você clicou em um desenho de texto.");
CancelSelectTextDraw(playerid);
}
retornar 1;
}
Код:
- Código:
if(clickedid == Text:INVALID_TEXT_DRAW) // OnPlayerClickTextDraw funciona.
if(playertextid == PlayerText:INVALID_TEXT_DRAW) // OnPlayerClickPlayerTextDraw não funciona.
quando o player aperta a tecla "ESC" automaticamente o ponteiro da textdraw some, para que nгo conteзa isso seja verificado se ele clicou em ESC usando INVALID_TEXT_DRAW , em OnPlayerClickTextDraw a tecla ESC retorna como INVALID_TEXT_DRAW, o ъnico problema й que a callback OnPlayerClickPlayerTextDraw nгo reconhece quando clicamos em ESC, por isso mesmo usando PlayerTextDraw devemos verificar se foi apertado ESC em OnPlayerClickTextDraw.
Код:- Código:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == Text:INVALID_TEXT_DRAW)
{
/* eu poderia tornar clicavel novamente ou esconder as textdraws */
}
retornar 1;
}
Creditos: Whoo