[Tutorial] [TuT] Aprendendo sobre textdraws
#1

Aprendendo a mexer com textdraw







Introduзгo:
Eu estive vendo em alguns tуpicos recentes a quantidade de usuбrios que tinham dificuldades em utilizar Texdraw. Nгo й algo difнcil para um novato, hoje tem alguns pequenos aplicativos que nos ajudam bastante como o Zamaroth Textdraw editor ou iPleomax Textdraw Editor.

Este tutorial й para conhecimento do usuбrio, para ele saber como cada funзгo funciona e como ela se comporta no servidor.






Principais funзхes:
FunзгoExplicaзгo
TextDrawShowForPlayer Serve para mostrar o textdraw somente ao player.
TextDrawShowForAllMostra-rб para todos
TextDrawHideForPlayerDesligara o textdraw somente para o do Player (playerid)
TextDrawHideForAllDesligarб o TextDraw De Todos
TextDrawDestroyApagarб o TextDraw,isto й mais usado no OnPlayerDisconnect
Brasil=TextDrawCreatecriarб um novo text draw
TextDrawAlignmentdefinirб se vai ser no Centro ou nos Lados
TextDrawBoxColordefinirб se vai ter uma caixa no textdraw
TextDrawBackgroundColordefinirб cor de fundo do textdraw
TextDrawFontNem Preciso dizer que й a fonte do TextDraw
TextDrawLetterSizedefine o tamanho da letra do textdraw
TextDrawColordefine a cor do textdraw
TextDrawSetOutlinedefine se usarб uma estrutura
TextDrawSetProportionaldefine a escala do texto se serб desproporcional ou nгo
TextDrawSetShadowSombra do textdraw
TextDrawUseBoxSe o textdraw usarб Um BOx ou nгo
TextDrawSetStringDefine uma string no textdraw





Utilizando:
Para nуs criarmos qualquer textdraw, devemos primeiro criar uma variбvel aonde irб armazenar o ID do nosso textdraw!
pawn Код:
new Text:Brasil; //



A Funзгo TextDrawCreate cria um textdraw. quando o textdraw й criado ela й armazenada na variбvel Brasil o ID dela, para nуs termos total controle sobre ela.
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  return 1;
}

Quando determinamos que nosso textdraw nгo tem mais utilidade, precisaremos deletar ele para liberar a memуria armazenada na variбvel Brasil
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
 TextDrawDestroy(Brasil);
 return 1;
}

Para que nosso textdraw possa ser enxergado para todos, devemos exibi-la podendo usar duas funзхes, TextDrawShowForPlayer aonde й exibida somente para um jogador ou TextDrawShowForAll aonde й exibido hб todos ao mesmo tempo:
pawn Код:
public OnPlayerConnect(playerid)
{
  TextDrawShowForPlayer(playerid,Brasil);
  TextDrawShowForAll(Brasil);
}
*Obsevaзгo: Quando deletamos um textdraw, ela nгo pode ser mais usada!



Quando queremos esconder um textdraw hб um jogador, usamos a funзгo TextDrawHidForPlayer, quando queremos esconder de todos os jogadores, usamos a funзгo TextDrawHideForAll:
pawn Код:
if (strcmp("/desligar", cmdtext, true) == 0)
{  
TextDrawHideForPlayer(playerid,Brasil);
TextDrawHideForAll(Brasil);
return 1;  
}
*Observaзгo: Quando escondemos uma textdraw, ela nгo й deletada!



Com a funзгo TextdrawAlignment, podemos alinhar nosso texto ao tamanho dele!
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawAlignment(Brasil, 2); //
  return 1;
}

Jб a funзгo TextdrawBoxColor gera uma "Caixa" atrбs do nosso textraw:
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawBoxColor(Brasil,0x000000FF);
  return 1;
}

A Funзгo TextDrawBackgroundColor modifica a "sombra" de nosso textraw.
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawUseBox(Brasil,1);
  TextDrawBackgroundColor(Brasil, 0xFFFFFFFF);//branco
return 1;
}

A Funзгo TextDrawFont, define o estilo da fonte que iremos exibir na tela do jogador, tendo disponнvel 3 estilos:
[img]http://i.imgur.com/hftLSbE.png[img]
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawFont(Brasil,1);
return 1;
}

A Funзгo TextDrawLetterSize define o tamanho do nosso texto. Quando utilizamos algum texto para ser clicado, devemos sempre definir essa funзгo! Caso tenha alguma dificuldade, sugiro ir ao нndice do post e usar o FilterScript do iPleomax.
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawLetterSize(Brasil, 3.2 ,5.1);
return 1;
}

A Funзгo TextDrawColor modifica a cor do texto da nossa textdraw, podendo ser usado nъmeros hexadecimais ou decimais e tambйm cores da funзгo GameTextForPlayer:
Код:
    ~n~ Nova linha
    ~r~ Vermelho
    ~g~ Verde
    ~b~ Azul
    ~w~ Branco
    ~y~ Amarelo
    ~p~ Roxo
    ~l~ Preto( L em minъsculo )
    ~h~ Deixa seu texto mais claro(nгo funciona na cor preto).
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao ~r~H~h~e~h~x~~h~a");
  TextDrawColor(Brasil,0xFFFFFFFF);//branco
return 1;
}

A Funзгo TextDrawSetOutline define o contorno nosso textdraw.
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawSetOutline(Brasil,1);//Define a espessura do Contorno
return 1;
}

A Funзгo TextDrawSetProportional deixa todas as letras em tamanho iguais e proporcionais ao resto da frase
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawSetProportional(Brasil,1);//booleano que indica se o TextDraw й proporcional
  return 1;
}

Com a funзгo TextDrawSetShadow, й possнvel definir o tamanho da sombra no textdraw!
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawSetShadow(Brasil,1);//O tamanho da sombra
  return 1;
}

A Funзгo TextDrawUseBox habilita uma "caixa" atrбs do nosso textdraw!
pawn Код:
public OnGameModeInit()
{
  Brasil = TextDrawCreate(240.0,580.0,"Brasil Rumo Ao Hexa");
  TextDrawUseBox(Brasil,1);
  TextDrawBackgroundColor(Brasil, 0xFFFFFFFF);//branco
return 1;
}

A Funзгo TextDrawSetString modifica o texto original de uma textdraw, normalmente essa funзгo й utilizada
pawn Код:
new texto;

forward TrocarTexto();
public TrocarTexto(){

    if(texto == 0) TextDrawSetString(Brasil, "Santa Catarina");
    if(texto == 1) TextDrawSetString(Brasil, "Sao Ludgero");
    if(texto == 2) TextDrawSetString(Brasil, "Braco do Norte");
    if(texto == 3) TextDrawSetString(Brasil, "Orleans");
    if(texto == 4) TextDrawSetString(Brasil, "Criciuma");
    texto ++;
    return SetTimer("TrocarTexto", 5000, false);
}



Novas funзхes:
Na versгo 0.3c foram adicionado vбrias funзхes extras para textdraw e tambйm criado uma seзгo para textdraw para apenas jogadores, chamado PlayerTextdraw aonde facilitam muito a vida do programador quando precisa de funзхes para apenas o jogador.

Todos os exemplos citados acima podem ser usados para PlayerTextDraw, a ъnica diferenзa й que em cada funзгo й adicionado um "Player":

FunзгoExplicaзгo
CreatePlayerTextDrawCria um textdraw
PlayerTextDrawAlignmentDefine um alinhamento em nossa textdraw.
PlayerTextDrawBackgroundColorMuda acorda da sombra de nosso textdraw
PlayerTextDrawBoxColorModifica acorda "caixa" de nosso textdraw
PlayerTextDrawColorDefine acordo nosso textdraw
PlayerTextDrawDestroyDestrуi a textdraw
PlayerTextDrawFontDefinea fonte do textdraw
PlayerTextDrawHideEsconde a textdraw
PlayerTextDrawLetterSizeModificao tamanho do nosso textdraw
PlayerTextDrawSetOutlineHabilita contorno de nosso textdraw
PlayerTextDrawSetProportionalModifica a escaladas letras, tornando todas alinhadas
PlayerTextDrawSetShadowDefine a sombra em nosso textdraw
PlayerTextDrawSetStringModifica a frase do nosso textdraw
PlayerTextDrawShowExibe o Textdraw para o jogador
PlayerTextDrawTextSizeModifica o tamanho do texto da nossa textdraw
PlayerTextDrawUseBoxHabilita uma "Caixa" atrбs do nosso textdraw
PlayerTextDrawSetSelectableDefine se a nossa textdraw pode ser clicada
PlayerTextDrawSetPreviewModelDefine um modelo 3D para ser exibido em textdraw
PlayerTextDrawSetPreviewRotDefine a rotaзгo de nosso textdraw 3D
PlayerTextDrawSetPreviewVehColModifica acordo nossoTextdraw 3D


Como eu havia dito, as funзхes "PlayerTextdraw" sгo basicamente as mesmas que as citadas no inнcio do tуpico, exceto que algumas funзхes foram adicionadas como PlayerTextDrawSetSelectable aonde ativa um textdraw que pode ser clicado.

Como criar um textdraw clicбvel
Para fazer este feito, primeiro devemos criar um textdraw qualquer, neste exemplo vou usar para o PlayerTextdraw:
PHP код:
#include <a_samp>
new PlayerText:BemVindo[MAX_PLAYERS];
public 
OnPlayerConnect(playerid)
{
    
// Criando um textdraw, com as funзхes do nosso tutorial
    
BemVindo[playerid] = CreatePlayerTextDraw(playerid10.000000141.000000"MyTextDraw");
    
PlayerTextDrawTextSize(playeridBemVindo[playerid], 60.00000020.000000);
    
PlayerTextDrawAlignment(playeridBemVindo[playerid],0);
    
PlayerTextDrawBackgroundColor(playeridBemVindo[playerid],0x000000ff);
    
PlayerTextDrawFont(playeridBemVindo[playerid], 1);
    
PlayerTextDrawLetterSize(playeridBemVindo[playerid], 0.2500001.000000);
    
PlayerTextDrawColor(playeridBemVindo[playerid], 0xffffffff);
    
PlayerTextDrawSetProportional(playeridBemVindo[playerid], 1);
    
PlayerTextDrawSetShadow(playeridBemVindo[playerid], 1);
    
// Habilitando que este textdraw й clicбvel
    
PlayerTextDrawSetSelectable(playeridBemVindo[playerid], 1);
    
// Exibindo para o jogador
    
PlayerTextDrawShow(playeridBemVindo[playerid]);
    return 
1;

Segundo o cуdigo acima, quando o jogador conectar ao seridor serб criado um PlayerTextdraw aonde serб definido vбrias configuraзхes sobre nossa textdraw inclusive a funзгo PlayerTextDrawSetSelectable. Se vocк testar o cуdigo em seu servidor, notarб que aparecera "MyTextDraw" na tela e vocк pode clicar nele porйm nгo irб acontecer nada!

Para nуs criar uma "reaзгo" para nosso textdraw, vamos usar a callback prуpria dele chamada OnPlayerClickPlayerTextDraw!
PHP код:
public OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid)
{
    if(
playertextid == BemVindo[playerid])
    {
         
SendClientMessage(playerid0xFFFFFFAA"Vocк clicou no textdraw!");
         
CancelSelectTextDraw(playerid);
    }
    return 
1;

Quando o jogador entrar no servidor, serб criado um textdraw com todas as definiзхes na callback OnPlayerConnect e quando o jogador clicar na textdraw automaticamente serб mandado uma mensagem e a opзгo de selecionar serб desativada.










Ttransparкncia
Quote:
Originally Posted by zSuYaNw
Посмотреть сообщение
Em textdraws pode-se definir uma certa intensidade da cor, aonde podemos atй deixar um textdraw totalmente claro ou totalmente forte. Veja um exemplo:

Cor branca em baixa intensidade:Cor branca com alta intensidade:
Este fenфmeno de transparкncia pode ser feito adicionando um ultimo parвmetro em nossa cor, assim ficando 4 parвmetros: RR GG BB TT:
Veja um exemplo:

Aqui temos uma cor verde, eu ainda nгo defini nenhuma transparкncia para ela:
Код:
0x00FF00
Irei deixar ela com mйdia intensidade, igual da primeira foto em nosso exemplo acima:
Код:
0x00FF0055
Existe vбrias intensidades que podemos usar, 00 sendo a mais baixa intensidade tornando a cor totalmente transparente e FF aonde ela fica em alta tensidade. Somente lembrando que essas intensidade de cores sу funcionam em textdraws, ao usar em um sendclientmessage por exemplo, a estrutura da cor muda totalmente. Clique aqui para saber mais sobre intensidade de cores.







Crйditos:
#zSuYaNw @ 2016
Reply
#2

muito bom garfield, esta na TPM?
Reply
#3

nгo й que tomei vacina da h1n1 e estou tudo quebrado.
Reply
#4

Quote:
Originally Posted by TheGarfield
nгo й que tomei vacina da h1n1 e estou tudo quebrado.
Tambйm estou quebrado, estб vacina doi muito

@ TOPIC

Muito bom o tutorial
Reply
#5

Quote:
Originally Posted by Gil_Henriquee
Quote:
Originally Posted by TheGarfield
nгo й que tomei vacina da h1n1 e estou tudo quebrado.
estб vacina doi muito
ain,entгo tomarб que seja na bunda.

Brinkz, eu fiz no Braзo e dуi mesmo


@Topic:
Garfield nem todos sгo Brasileiros, rs.
Reply
#6

Gostei do tutorial em Garfield! ^^

------------------------------------
OFF: OMG, nгo doн nada, nгo sei da onde tiraram essa "dor". =x
Reply
#7

@Topic:
Garfield nem todos sгo Brasileiros, rs.
[/quote]

Homenagem ao Brasil q vai levar a Taзa !
Quote:
Originally Posted by Gil_Henriquee
Quote:
Originally Posted by TheGarfield
nгo й que tomei vacina da h1n1 e estou tudo quebrado.
Tambйm estou quebrado, estб vacina doi muito

@ TOPIC

Muito bom o tutorial
Quote:
Originally Posted by SuB_ZeRo0_
Gostei do tutorial em Garfield! ^^

------------------------------------
OFF: OMG, nгo doн nada, nгo sei da onde tiraram essa "dor". =x
Obigado ai
Reply
#8

Vocкs ainda vгo nessa treta da gripe h1n1? Esqueзam essa merda, e nem tomem vacina nenhuma. A h1n1 й uma treta.

OnTopic: Explica a transparкncia das cores. "0xFFFFFF50". O 50 seria a transparкncia da cor, depois й sу alterar da maneira que quiserem.
Reply
#9

Quote:
Originally Posted by SuB_ZeRo0_
Gostei do tutorial em Garfield! ^^

------------------------------------
OFF: OMG, nгo doн nada, nгo sei da onde tiraram essa "dor". =x
-----------------------------------
OFF 2: Nгo doi mesmo nao.
Reply
#10

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
@Topic:
Homenagem ao Brasil q vai levar a Taзa !
Nгo..
Fail



RoamPT vai rir de mim
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)