[Tutorial] Textdraw Selecionбveis
#1

Textdraw Selecionбveis

Olб pessoal, venho atravйs deste tуpico ensinar a vocк que ainda nгo sabe a como criar uma textdraw clicбvel/selecionбvel, primeiramente vamos precisar de um editor de textdraw as textdraw pode ser criada manualmente mas nгo recomendбvel pois й muito trabalhoso ja que tem que saber as coordenadas da tela entгo vou recomendar alguns editores.. Zamaroth e iPLEOMAX's TextDraw Editor, eu utilizo o Zamaroth e ele supriu minhas necessidades ja o iPLEOMAX's ainda nгo utilizei porйm recomendo pois muitas pessoas usam e nгo tiveram problema algum.



PlayerTextDraw ou TextDraw normal ?

quando criamos uma textdraw selecionбvel deve-se utilizar PlayerTextDraw pois й criado pra cada player quando criamos uma textdraw selecionбvel й com o intuito de fazer alguma execuзгo/alteraзгo para o player, seja mostrar uma dialog ou mostrar a informaзгo especifica do player exemplo o score.. Textdraw normal й criada para todos entгo devemos utiliza-la quando queremos algo para todos os players como exemplo mostrar os players 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 box no texto, puxe a box para baixo do texto como na imagem com isso o TextDrawTextSize o eixo X ja vai estar no tamanho ideal restando consertar o Eixo Y.



depois vocк sу precisa deixar a box transparente se quiser. 00 no alpha.




agora sу exportar como PlayerTextDraw no zamaroth tem essa opзгo no iPLEOMAX's ja nгo sei.. se nгo tiver й sу vocк alterar manualmente. OBS: as bases pode ser em TextDraw normal como ja foi dito.

Код:
Textdraw0 = TextDrawCreate(310.000000, 140.000000, "test");
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);

vamos deixar a textdraw selecionбvel utilizando TextDrawSetSelectable:

Код:
TextDrawSetSelectable(ID_TEXTDRAW, true); 1 = selecionбvel 0 = nгo selecionбvel.
agora vamos focar em TextDrawTextSize й aonde podemos fazer com que fique clicбvel ..


TextDrawTextSize (Text:text, EixoX, EixoY);

Код:
EixoX equivale a esquerda e direita.
EixoY equivale a cima e baixo.
repare que o eixo Y esta zerado pra que fique clicбvel devemos aumentar, normalmente eu coloca 1 na frente do zero e ja й o bastante, funciona normalmente e ai sim a textdraw ira funcionar normalmente.

TextDrawTextSize(Textdraw0, 350.000000, 10.000000);


agora й sу mostrar a textdraw e ativar o ponteiro com SelectTextDraw, depois para cancelar CancelSelectTextDraw.

Код:
TextDrawShowForPlayer(playerid, Textdraw0);
SelectTextDraw(playerid, 0x00FF00FF);
cуdigo pronto e funcionando..

Код:
Textdraw0 = TextDrawCreate(310.000000, 140.000000, "test");
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 y com 10.000000 diferente de 0.000000
TextDrawSetSelectable(Text:Textdraw0, true);// agora esta selecionavel.
quando se clica em uma textdraw й chamado uma callback, OnPlayerClickTextDraw para textdraw normal e OnPlayerClickPlayerTextDraw para PlayerTextDraw.

clickedid = ID DA TEXTDRAW CLICADA

Код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Textdraw0)
    {
         SendClientMessage(playerid, 0xFFFFFFAA, "You clicked on a textdraw.");
         CancelSelectTextDraw(playerid);
    }
    return 1;
}
Код:
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 aconteзa isso devemos verificar se ele clicou em ESC utilizando 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 utilizando PlayerTextDraw devemos verificar se foi apertado ESC em OnPlayerClickTextDraw.


Код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
	
    if(clickedid == Text:INVALID_TEXT_DRAW)
    {
	/* eu poderia tornar clicavel novamente ou esconder as textdraws */
    }
    return 1;
}
Reply
#2

Valeu... Eu sempre gostei de Textdraw Selecionбveis, Jб fiz uns 3 e depois nunca mais consegui pegar as coordenadas corretas do box... isso tirou uma grande dъvida e.... Jб vou fazer um novo aqui rsrs
Reply
#3

Muito bom!! Ajudara muitos novatos
Reply
#4

Nice !!
bom tutorial cara, vai ajudar muita gente.. inclusive eu u.u hehe
+REP @EDIT, ja dei reputaзгo em outro post ;-; ai n da +
Reply
#5

Tutorial legal, apesar de eu nгo fazer dessa maneira.
Parabйns pela iniciativa..
Reply
#6

Quote:
Originally Posted by PetrickSchoba
Посмотреть сообщение
Valeu... Eu sempre gostei de Textdraw Selecionбveis, Jб fiz uns 3 e depois nunca mais consegui pegar as coordenadas corretas do box... isso tirou uma grande dъvida e.... Jб vou fazer um novo aqui rsrs
Quote:
Originally Posted by Carlos001
Посмотреть сообщение
Muito bom!! Ajudara muitos novatos
Quote:
Originally Posted by Ender_
Посмотреть сообщение
Nice !!
bom tutorial cara, vai ajudar muita gente.. inclusive eu u.u hehe
+REP @EDIT, ja dei reputaзгo em outro post ;-; ai n da +
Quote:
Originally Posted by HaRdiiZin
Посмотреть сообщение
Tutorial legal, apesar de eu nгo fazer dessa maneira.
Parabйns pela iniciativa..
que bom que vai ser ъtil , acredito que haja outras maneiras.
Reply
#7

Bom tutorial, mas nгo hб necessidade de usar box.
Reply
#8

Quote:
Originally Posted by arakuta
Посмотреть сообщение
Bom tutorial, mas nгo hб necessidade de usar box.
vlw, boa observaзгo sу utilizando TextDrawTextSize ja ira funcionar.
Reply
#9

@Whoo
bom.. eu gostaria de tirar uma duvida .. que acho atй muito importante..
Eu estou fazendo meu Login/Registro em textdraw clicaveis .. e percebi que ..
se eu sair do servidor .. e entrar novamente, a textdraw nгo aparece mais ..
porque isso estб acontecendo ?
o TextDrawShowForPlayer estб na == public OnPlayerConnect(playerid)
entгo.. ele deveria aparecer quando o player se conectar ..
( como n aparece.. fico necessбrio a reiniciar o GM sempre )
tem alguma soluзгo ?
Reply
#10

Cria o TD para o player.
https://sampwiki.blast.hk/wiki/PlayerTextDrawShow
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)