[Tutorial] Como criar uma Text Draw - Selecionбveis, comuns e para players especнficos
#1

Text Draws - How to
Por Kuddy


Quando eu comecei a codar, senti muita falta de um bom tutorial no assunto e embora este seja o meu primeiro, espero que seja de grande utilidade para alguйm.

1 - Introduзгo: - ui

Bom, antes de mais nada, vamos precisar criar uma textdraw.
Para criar o design da textdraw vamos utilizar o Zamaroth Text Draw Editor. Para carregar o Zamaroth й muito simples, primeiro baixe o FS, compile-o e coloque como Filterscript, sу isso.


2 - Zamaroth Text Draw Editor 1.0:

Para iniciarmos a nossa ediзгo de texts, vamos precisar ter o FS carregado, digitaremos /text e aparecerб o seguinte:



Criaremos um novo projeto, clique em New Project. Colocaremos o nome do nosso projeto, no meu caso eu coloquei Tutorial.

Agora iremos criar e selecionar nossas textdraws:



Agora vamos editar nossa textdraw, que apareceu encima da nossa tela.



Й muito importante, para facilitar nosso trabalho, criar as textdraws que variam separadas das texts que sempre terгo o mesmo texto. Tambйm й importante que vocк coloque um valor guia e algo que demarque o que aquela textdraw mostrarб
Terminei de fazer nossas text draws, nada muito bonito:



Apуs termos criado, editado e finalizado nossas texts, como em qualquer programa de ediзгo, teremos que exportar nosso projeto, recomendo fazerem desta maneira, fica mais fбcil para a nossa compreensгo depois



Apуs exportar, eu obtive o seguinte cуdigo na pasta scriptfiles (Como eu salvei com o nome Tutorial, ele aparecerб Tutorial.pwn):
pawn Код:
/*
Filterscript generated using Zamaroht's TextDraw Editor Version 1.0.
Designed for SA-MP 0.3a.

Time and Date: 2012-7-10 @ 8:26:55

Instructions:
1- Compile this file using the compiler provided with the sa-mp server package.
2- Copy the .amx file to the filterscripts directory.
3- Add the filterscripts in the server.cfg file (more info here:
https://sampwiki.blast.hk/wiki/Server.cfg)
4- Run the server!

Disclaimer:
You have full rights over this file. You can distribute it, modify it, and
change it as much as you want, without having to give any special credits.
*/


#include <a_samp>

new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
new Text:Textdraw4;

public OnFilterScriptInit()
{
    print("Textdraw file generated by");
    print("    Zamaroht's textdraw editor was loaded.");

    // Create the textdraws:
    Textdraw0 = TextDrawCreate(18.000000, 116.000000, "Mano Tutorialz");
    TextDrawBackgroundColor(Textdraw0, 255);
    TextDrawFont(Textdraw0, 1);
    TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
    TextDrawColor(Textdraw0, 16711935);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 1);

    Textdraw1 = TextDrawCreate(18.000000, 128.000000, "Score:");
    TextDrawBackgroundColor(Textdraw1, 255);
    TextDrawFont(Textdraw1, 1);
    TextDrawLetterSize(Textdraw1, 0.500000, 1.000000);
    TextDrawColor(Textdraw1, 16711935);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetShadow(Textdraw1, 1);

    Textdraw2 = TextDrawCreate(18.000000, 140.000000, "Nossa variavel:");
    TextDrawBackgroundColor(Textdraw2, 255);
    TextDrawFont(Textdraw2, 1);
    TextDrawLetterSize(Textdraw2, 0.500000, 1.000000);
    TextDrawColor(Textdraw2, 16711935);
    TextDrawSetOutline(Textdraw2, 0);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawSetShadow(Textdraw2, 1);

    Textdraw3 = TextDrawCreate(148.000000, 140.000000, "255 [ variavel ]");
    TextDrawBackgroundColor(Textdraw3, 255);
    TextDrawFont(Textdraw3, 1);
    TextDrawLetterSize(Textdraw3, 0.500000, 1.000000);
    TextDrawColor(Textdraw3, 65535);
    TextDrawSetOutline(Textdraw3, 0);
    TextDrawSetProportional(Textdraw3, 1);
    TextDrawSetShadow(Textdraw3, 1);

    Textdraw4 = TextDrawCreate(71.000000, 128.000000, "255 [ score ]");
    TextDrawBackgroundColor(Textdraw4, 255);
    TextDrawFont(Textdraw4, 1);
    TextDrawLetterSize(Textdraw4, 0.500000, 1.000000);
    TextDrawColor(Textdraw4, 65535);
    TextDrawSetOutline(Textdraw4, 0);
    TextDrawSetProportional(Textdraw4, 1);
    TextDrawSetShadow(Textdraw4, 1);

    for(new i; i < MAX_PLAYERS; i ++)
    {
        if(IsPlayerConnected(i))
        {
            TextDrawShowForPlayer(i, Textdraw0);
            TextDrawShowForPlayer(i, Textdraw1);
            TextDrawShowForPlayer(i, Textdraw2);
            TextDrawShowForPlayer(i, Textdraw3);
            TextDrawShowForPlayer(i, Textdraw4);
        }
    }
    return 1;
}

public OnFilterScriptExit()
{
    TextDrawHideForAll(Textdraw0);
    TextDrawDestroy(Textdraw0);
    TextDrawHideForAll(Textdraw1);
    TextDrawDestroy(Textdraw1);
    TextDrawHideForAll(Textdraw2);
    TextDrawDestroy(Textdraw2);
    TextDrawHideForAll(Textdraw3);
    TextDrawDestroy(Textdraw3);
    TextDrawHideForAll(Textdraw4);
    TextDrawDestroy(Textdraw4);
    return 1;
}

public OnPlayerConnect(playerid)
{
    TextDrawShowForPlayer(playerid, Textdraw0);
    TextDrawShowForPlayer(playerid, Textdraw1);
    TextDrawShowForPlayer(playerid, Textdraw2);
    TextDrawShowForPlayer(playerid, Textdraw3);
    TextDrawShowForPlayer(playerid, Textdraw4);
    return 1;
}
Como o nosso objetivo nгo й fazer um filterscript, utilizaremos apenas uma parte do cуdigo gerado, uma parte do OnFilterScriptInit, de // Create The Textdraws atй for(new i....)
pawn Код:
public OnGameModeInit()
{
    // Create the textdraws:
    Textdraw0 = TextDrawCreate(18.000000, 116.000000, "Mano Tutorialz");
    TextDrawBackgroundColor(Textdraw0, 255);
    TextDrawFont(Textdraw0, 1);
    TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
    TextDrawColor(Textdraw0, 16711935);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 1);

    Textdraw1 = TextDrawCreate(18.000000, 128.000000, "Score:");
    TextDrawBackgroundColor(Textdraw1, 255);
    TextDrawFont(Textdraw1, 1);
    TextDrawLetterSize(Textdraw1, 0.500000, 1.000000);
    TextDrawColor(Textdraw1, 16711935);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetShadow(Textdraw1, 1);

    Textdraw2 = TextDrawCreate(18.000000, 140.000000, "Nossa variavel:");
    TextDrawBackgroundColor(Textdraw2, 255);
    TextDrawFont(Textdraw2, 1);
    TextDrawLetterSize(Textdraw2, 0.500000, 1.000000);
    TextDrawColor(Textdraw2, 16711935);
    TextDrawSetOutline(Textdraw2, 0);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawSetShadow(Textdraw2, 1);

    Textdraw3 = TextDrawCreate(148.000000, 140.000000, "255 [ variavel ]");
    TextDrawBackgroundColor(Textdraw3, 255);
    TextDrawFont(Textdraw3, 1);
    TextDrawLetterSize(Textdraw3, 0.500000, 1.000000);
    TextDrawColor(Textdraw3, 65535);
    TextDrawSetOutline(Textdraw3, 0);
    TextDrawSetProportional(Textdraw3, 1);
    TextDrawSetShadow(Textdraw3, 1);

    Textdraw4 = TextDrawCreate(71.000000, 128.000000, "255 [ score ]");
    TextDrawBackgroundColor(Textdraw4, 255);
    TextDrawFont(Textdraw4, 1);
    TextDrawLetterSize(Textdraw4, 0.500000, 1.000000);
    TextDrawColor(Textdraw4, 65535);
    TextDrawSetOutline(Textdraw4, 0);
    TextDrawSetProportional(Textdraw4, 1);
    TextDrawSetShadow(Textdraw4, 1);
}
O cуdigo acima й o nosso design, vamos utilizar apenas ele do cуdigo gerado pelo Zamaroth Textdraw Editor.


3 - Pawnealizando:

Agora vamos comeзar a criar o nosso cуdigo para mudar o score e printar o valor de alguma variбvel qualquer.

Vamos fazer com que cada player veja um Score diferenciado, para os Scores nгo se confundirem, digo, para o player 0 nгo ver o score do player 10
Vamos colocar as definiзхes das textdraws com [MAX_PLAYERS], para que sejam criadas uma para cada player e tambйm vamos criar as textdraws na hora que o player conectar ao invez de ao gamemode iniciar, ficarб assim:
pawn Код:
new Text:Textdraw3[MAX_PLAYERS];// Topo do mode
new Text:Textdraw4[MAX_PLAYERS];// Topo do mode

public OnPlayerConnect(playerid)
{
    Textdraw3[playerid] = TextDrawCreate(148.000000, 140.000000, "255"); // Variбvel
    TextDrawBackgroundColor(Textdraw3[playerid], 255);
    TextDrawFont(Textdraw3[playerid], 1);
    TextDrawLetterSize(Textdraw3[playerid], 0.500000, 1.000000);
    TextDrawColor(Textdraw3[playerid], 65535);
    TextDrawSetOutline(Textdraw3[playerid], 0);
    TextDrawSetProportional(Textdraw3[playerid], 1);
    TextDrawSetShadow(Textdraw3[playerid], 1);

    Textdraw4[playerid] = TextDrawCreate(71.000000, 128.000000, "255"); // Score
    TextDrawBackgroundColor(Textdraw4[playerid], 255);
    TextDrawFont(Textdraw4[playerid], 1);
    TextDrawLetterSize(Textdraw4[playerid], 0.500000, 1.000000);
    TextDrawColor(Textdraw4[playerid], 65535);
    TextDrawSetOutline(Textdraw4[playerid], 0);
    TextDrawSetProportional(Textdraw4[playerid], 1);
    TextDrawSetShadow(Textdraw4[playerid], 1);
    return 1;
}
Para score, iremos pegar o valor atual do score e seta-lo na mesma hora. Como o score que eu estou utilizando serб por morte, irei colocar em OnPlayerDeath:
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new Str[10]; // Deixei a string apenas com 10 celulas pois acho que o score do player nгo vai passar de 9 caracteres :D
    SetPlayerScore(killerid, GetPlayerScore(playerid) + 1);
                         // %d pois й um nъmero: %s = Texto, %i = int, %f = float etc
    format(Str,sizeof(Str),"%d", GetPlayerScore(killerid); // Vamos converter nosso score para um texto
    TextDrawSetString(Textdraw4[killerid], Str); // Setar o texto da textdraw
    TextDrawShowForPlayer(killerid, Textdraw4[killerid]); // Mostrar / atualizar o valor da nossa text
    // Demos um de score para o matador e este serб mostrado no TAB e no valor da nossa textdraw :D
    return 1;
}
Agora caso queiramos mostrar alguma coisa na nossa textdraw Variбvel expecнfica, basta colocarmos:
pawn Код:
new Str[10]; // Mude para a quantidade de valores mбximos da textdraw, exemplo: 123 seria 4 celulas pois o ъltimo valor deve ser nulo :D  ( '\0' )
format(Str,sizeof(Str),"%d", Variavel[playerid]); // Variavel a ser utilizada
TextDrawSetString(Textdraw4[playerid], Str); // Setar o texto da textdraw
TextDrawShowForPlayer(playerid, Textdraw4[playerid]); // Mostrar / atualizar o valor da nossa text
Bom, estб pronto, o nosso cуdigo final poderia ser:
pawn Код:
#include <a_samp>

new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3[MAX_PLAYERS];
new Text:Textdraw4[MAX_PLAYERS];

new Variavel[MAX_PLAYERS] = 3;


main()
{
    print("\n \n Gamemode que so tem texdraws \n \n");
}

public OnGameModeInit()
{
    AddPlayerClass(1,0,0,0,0,31,100,0,0,0,0);

    Textdraw0 = TextDrawCreate(18.000000, 116.000000, "Mano Tutorialz");
    TextDrawBackgroundColor(Textdraw0, 255);
    TextDrawFont(Textdraw0, 1);
    TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
    TextDrawColor(Textdraw0, 16711935);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 1);

    Textdraw1 = TextDrawCreate(18.000000, 128.000000, "Score:");
    TextDrawBackgroundColor(Textdraw1, 255);
    TextDrawFont(Textdraw1, 1);
    TextDrawLetterSize(Textdraw1, 0.500000, 1.000000);
    TextDrawColor(Textdraw1, 16711935);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetShadow(Textdraw1, 1);

    Textdraw2 = TextDrawCreate(18.000000, 140.000000, "Nossa variavel:");
    TextDrawBackgroundColor(Textdraw2, 255);
    TextDrawFont(Textdraw2, 1);
    TextDrawLetterSize(Textdraw2, 0.500000, 1.000000);
    TextDrawColor(Textdraw2, 16711935);
    TextDrawSetOutline(Textdraw2, 0);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawSetShadow(Textdraw2, 1);
    return 1;
}

public OnPlayerConnect(playerid)
{
    Textdraw3[playerid] = TextDrawCreate(148.000000, 140.000000, "255"); // Variбvel
    TextDrawBackgroundColor(Textdraw3[playerid], 255);
    TextDrawFont(Textdraw3[playerid], 1);
    TextDrawLetterSize(Textdraw3[playerid], 0.500000, 1.000000);
    TextDrawColor(Textdraw3[playerid], 65535);
    TextDrawSetOutline(Textdraw3[playerid], 0);
    TextDrawSetProportional(Textdraw3[playerid], 1);
    TextDrawSetShadow(Textdraw3[playerid], 1);

    Textdraw4[playerid] = TextDrawCreate(71.000000, 128.000000, "255"); // Score
    TextDrawBackgroundColor(Textdraw4[playerid], 255);
    TextDrawFont(Textdraw4[playerid], 1);
    TextDrawLetterSize(Textdraw4[playerid], 0.500000, 1.000000);
    TextDrawColor(Textdraw4[playerid], 65535);
    TextDrawSetOutline(Textdraw4[playerid], 0);
    TextDrawSetProportional(Textdraw4[playerid], 1);
    TextDrawSetShadow(Textdraw4[playerid], 1);

    // Vamos mostrar as textdraws!
    new Str[10]; // Mude para a quantidade de valores mбximos da textdraw, exemplo: 123 seria 4 celulas pois o ъltimo valor deve ser nulo :D  ( '\0' )
    format(Str,sizeof(Str),"%d", Variavel[playerid]); // Variavel a ser utilizada
    TextDrawSetString(Textdraw3[playerid], Str); // Setar o texto da textdraw
    TextDrawShowForPlayer(playerid, Textdraw3[playerid]); // Mostrar / atualizar o valor da nossa text

    new Str2[10];
    format(Str2,sizeof(Str2),"%d", GetPlayerScore(playerid)); // Vamos converter nosso score para um texto
    TextDrawSetString(Textdraw4[playerid], Str2); // Setar o texto da textdraw
    TextDrawShowForPlayer(playerid, Textdraw4[playerid]); // Mostrar / atualizar o valor da nossa text
    // Demos um de score para o matador e este serб mostrado no TAB e no valor da nossa textdraw :D
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    TextDrawDestroy(Textdraw3[playerid]); // Vamos destruнlas para poderem ser criadas novamente
    TextDrawDestroy(Textdraw4[playerid]); // quando o player conectar :D
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    new Str[10]; // Deixei a string apenas com 10 celulas pois acho que o score do player nгo vai passar de 9 caracteres :D
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    format(Str,sizeof(Str),"%d", GetPlayerScore(killerid)); // Vamos converter nosso score para um texto
    TextDrawSetString(Textdraw4[killerid], Str); // Setar o texto da textdraw
    TextDrawShowForPlayer(killerid, Textdraw4[killerid]); // Mostrar / atualizar o valor da nossa text
    // Demos um de score para o matador e este serб mostrado no TAB e no valor da nossa textdraw :D
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/variavel", cmdtext, true, 10) == 0)
    {
        Variavel[playerid] = 10;
        new Str[10]; // Mude para a quantidade de valores mбximos da textdraw, exemplo: 123 seria 4 celulas pois o ъltimo valor deve ser nulo :D  ( '\0' )
        format(Str,sizeof(Str),"%d", Variavel[playerid]); // Variavel a ser utilizada
        TextDrawSetString(Textdraw3[playerid], Str); // Setar o texto da textdraw
        TextDrawShowForPlayer(playerid, Textdraw3[playerid]); // Mostrar / atualizar o valor da nossa text
        return 1;
    }
    return 0;
}
Print de como ficou:


Pronto, terminamos de criar algumas variбveis comuns.


4 - Textdraws selecionбveis:

Primeiramente, vamos fazer o mesmo que o anterior sу que agora com um design diferente, nгo vou explicar novamente pois basta subir, aprender a usar o Zamaroth e fazer um design de sua preferencia.

Irei fazer com um design muito parecido com o de um menu:


bom, agora vamos pegar o code gerado:
pawn Код:
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
new Text:Textdraw4;

public OnGameModeInit()
{
    Textdraw4 = TextDrawCreate(433.000000, 123.000000, "_");
    TextDrawBackgroundColor(Textdraw4, 255);
    TextDrawFont(Textdraw4, 1);
    TextDrawLetterSize(Textdraw4, 0.500000, 10.500002);
    TextDrawColor(Textdraw4, -1);
    TextDrawSetOutline(Textdraw4, 0);
    TextDrawSetProportional(Textdraw4, 1);
    TextDrawSetShadow(Textdraw4, 1);
    TextDrawUseBox(Textdraw4, 1);
    TextDrawBoxColor(Textdraw4, 167773490);
    TextDrawTextSize(Textdraw4, 632.000000, 0.000000);

    Textdraw0 = TextDrawCreate(449.000000, 122.000000, "Menu de chessus");
    TextDrawBackgroundColor(Textdraw0, 255);
    TextDrawFont(Textdraw0, 0);
    TextDrawLetterSize(Textdraw0, 0.889998, 2.399998);
    TextDrawColor(Textdraw0, -1);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 1);

    Textdraw1 = TextDrawCreate(494.000000, 160.000000, "Opcao 1");
    TextDrawBackgroundColor(Textdraw1, 503319240);
    TextDrawFont(Textdraw1, 2);
    TextDrawLetterSize(Textdraw1, 0.500000, 1.299999);
    TextDrawColor(Textdraw1, -1);
    TextDrawSetOutline(Textdraw1, 1);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawUseBox(Textdraw1, 1);
    TextDrawBoxColor(Textdraw1, 842150500);
    TextDrawTextSize(Textdraw1, 586.000000, 0.000000);

    Textdraw2 = TextDrawCreate(494.000000, 179.000000, "Opcao 2");
    TextDrawBackgroundColor(Textdraw2, 503319240);
    TextDrawFont(Textdraw2, 2);
    TextDrawLetterSize(Textdraw2, 0.500000, 1.299999);
    TextDrawColor(Textdraw2, -1);
    TextDrawSetOutline(Textdraw2, 1);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawUseBox(Textdraw2, 1);
    TextDrawBoxColor(Textdraw2, 842150500);
    TextDrawTextSize(Textdraw2, 586.000000, 0.000000);

    Textdraw3 = TextDrawCreate(494.000000, 199.000000, "Opcao 3");
    TextDrawBackgroundColor(Textdraw3, 503319240);
    TextDrawFont(Textdraw3, 2);
    TextDrawLetterSize(Textdraw3, 0.500000, 1.299999);
    TextDrawColor(Textdraw3, -1);
    TextDrawSetOutline(Textdraw3, 1);
    TextDrawSetProportional(Textdraw3, 1);
    TextDrawUseBox(Textdraw3, 1);
    TextDrawBoxColor(Textdraw3, 842150500);
    TextDrawTextSize(Textdraw3, 586.000000, 0.000000);
    return 1;
}
Para as textdraws selecionбveis nгo bugarem, й de suma importвncia colocar uma BOX.

Procure a ъltima linha da geraзгo de cada textdraw, para que ela possa ser selecionбvel, altere:
TextDrawTextSize(Textdraw3, 586.000000, 0.000000);
Altere o ъltimo valor para 10, como o exemplo:
TextDrawTextSize(Textdraw3, 586.000000, 10.000000);

O codigo ficarб:
pawn Код:
Code:
    Textdraw4 = TextDrawCreate(433.000000, 123.000000, "_");
    TextDrawBackgroundColor(Textdraw4, 255);
    TextDrawFont(Textdraw4, 1);
    TextDrawLetterSize(Textdraw4, 0.500000, 10.500002);
    TextDrawColor(Textdraw4, -1);
    TextDrawSetOutline(Textdraw4, 0);
    TextDrawSetProportional(Textdraw4, 1);
    TextDrawSetShadow(Textdraw4, 1);
    TextDrawUseBox(Textdraw4, 1);
    TextDrawBoxColor(Textdraw4, 167773490);
    TextDrawTextSize(Textdraw4, 632.000000, 0.000000);

    Textdraw0 = TextDrawCreate(449.000000, 122.000000, "Menu de chessus");
    TextDrawBackgroundColor(Textdraw0, 255);
    TextDrawFont(Textdraw0, 0);
    TextDrawLetterSize(Textdraw0, 0.889998, 2.399998);
    TextDrawColor(Textdraw0, -1);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 1);

    Textdraw1 = TextDrawCreate(494.000000, 160.000000, "Opcao 1");
    TextDrawBackgroundColor(Textdraw1, 503319240);
    TextDrawFont(Textdraw1, 2);
    TextDrawLetterSize(Textdraw1, 0.500000, 1.299999);
    TextDrawColor(Textdraw1, -1);
    TextDrawSetOutline(Textdraw1, 1);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawUseBox(Textdraw1, 1);
    TextDrawBoxColor(Textdraw1, 842150500);
    TextDrawTextSize(Textdraw1, 586.000000, 10.000000);

    Textdraw2 = TextDrawCreate(494.000000, 179.000000, "Opcao 2");
    TextDrawBackgroundColor(Textdraw2, 503319240);
    TextDrawFont(Textdraw2, 2);
    TextDrawLetterSize(Textdraw2, 0.500000, 1.299999);
    TextDrawColor(Textdraw2, -1);
    TextDrawSetOutline(Textdraw2, 1);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawUseBox(Textdraw2, 1);
    TextDrawBoxColor(Textdraw2, 842150500);
    TextDrawTextSize(Textdraw2, 586.000000, 10.000000);

    Textdraw3 = TextDrawCreate(494.000000, 199.000000, "Opcao 3");
    TextDrawBackgroundColor(Textdraw3, 503319240);
    TextDrawFont(Textdraw3, 2);
    TextDrawLetterSize(Textdraw3, 0.500000, 1.299999);
    TextDrawColor(Textdraw3, -1);
    TextDrawSetOutline(Textdraw3, 1);
    TextDrawSetProportional(Textdraw3, 1);
    TextDrawUseBox(Textdraw3, 1);
    TextDrawBoxColor(Textdraw3, 842150500);
    TextDrawTextSize(Textdraw3, 586.000000, 10.000000);


Vamos fazer com que as textdraws se tornem selecionбveis:

pawn Код:
// Logo abaixo da criaзгo delas, coloque as que serгo selecionбveis (ainda em OnGMinit)
    TextDrawSetSelectable(Textdraw1, true); // Opзгo 1
    TextDrawSetSelectable(Textdraw2, true); // Opзгo 2
    TextDrawSetSelectable(Textdraw3, true); // Opзгo 3
E finalmente vamos fazer o comando para mostra-las:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/chessus", cmdtext, true, 10) == 0)
    {
        TextDrawShowForPlayer(playerid, Textdraw4); // Como a box ficarб de fundo, crie-a em primeiro lugar ^^
        TextDrawShowForPlayer(playerid, Textdraw0);
        TextDrawShowForPlayer(playerid, Textdraw1);
        TextDrawShowForPlayer(playerid, Textdraw2);
        TextDrawShowForPlayer(playerid, Textdraw3);

        SelectTextDraw(playerid, 0xC0C0C0AA); // 0xC0C0C0AA Й a cor que aparece quando passamos o mouse por cima dela
        // SelectTextDraw й a funзгo para o mouse ficar livre para selecionar a textdraw :D
        return 1;
    }
    return 0;
}
Agora vamos colocar o que vai acontecer quando clicarmos na TextDraw:
pawn Код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Textdraw1)
    {
        SendClientMessage(playerid, 0xFFFFFFAA, "Vocк selecionou Textdraw1");
        EsconderTexts(playerid);
        return 1;
    }
    if(clickedid == Textdraw2)
    {
        SendClientMessage(playerid, 0xFFFFFFAA, "Vocк selecionou Textdraw2");
        EsconderTexts(playerid);
        return 1;
    }
    if(clickedid == Textdraw3)
    {
        SendClientMessage(playerid, 0xFFFFFFAA, "Vocк selecionou Textdraw3");
        EsconderTexts(playerid);
        return 1;
    }
    return 1;
}
De preferencia, para economizar linhas, coloque a funзгo para esconder as textdraws em public ou stock
pawn Код:
stock EsconderTexts(playerid)
{
    TextDrawHideForPlayer(playerid, Textdraw0);
    TextDrawHideForPlayer(playerid, Textdraw1);
    TextDrawHideForPlayer(playerid, Textdraw2);
    TextDrawHideForPlayer(playerid, Textdraw3);
    TextDrawHideForPlayer(playerid, Textdraw4);
    CancelSelectTextDraw(playerid); // Funзгo para voltar o mouse ao normal
    return 1;
}
Pronto, agora vocк jб poderб fazer uma textdraw selecionбvel e uma textdraw comum para mostrar variбveis in-game!

Crйditos:
Kuddy - Pelo tutorial
Zamaroth - Pelo editor
Dropbox - Hospedagem das imagens
Minha alergia - Por me deixar internado em um hospital e com tempo para fazer este tutorial.


Se o tutorial estб meio confuso, informe-me para que eu possa arruma-lo
Reply
#2

Bom Kudнleity

-

Como eu faзo pra ele tipo digitar algum texto em uma box? tipo
eu quero fazer um login / registro para o player digitar sua senha e logar-se / registrar-se como faзo? '-'
Reply
#3

Quote:
Originally Posted by dPlaYer_
Посмотреть сообщение
Bom Kudнleity

-

Como eu faзo pra ele tipo digitar algum texto em uma box? tipo
eu quero fazer um login / registro para o player digitar sua senha e logar-se / registrar-se como faзo? '-'
Sу se vocк fazer isso getando as teclas q o player digitar e ir colocando em tempo real na textdraw, mas isso alйm de dar um trabalinho, й mais fбcil e mais eficiente de ser feito com Dialogs
Reply
#4

Quote:
Originally Posted by dPlaYer_
Посмотреть сообщение
Bom Kudнleity

-

Como eu faзo pra ele tipo digitar algum texto em uma box? tipo
eu quero fazer um login / registro para o player digitar sua senha e logar-se / registrar-se como faзo? '-'
Tem que criar um teclado com textdraws ou tentar fazer um sistema com o OnPlayerText.

@Topic

Bom tutorial Kuddy, serб ъtil para varias pessoas.
Reply
#5

Eu uso esse FS mais ele й traduzido...

Parabйns pelo tutorial, vai ajudar muita gente.
Reply
#6

bom tutorial cara
Reply
#7

Parabйns, Mais tem um detalhe nгo й de suma importвncia fazer uma Box para que nгo bugue, para que nгo bugue basta vc configurar corretamente o TextDrawTextSize, atй o ponto que eu busquei entender, funciona perfeitamente aqui se eu deixar TextDrawAlignment 2(Centro) e no TextDrawTextSize vai ficar somente o X preenchido, ai eu pego e como eu fiz um quadrado perfeito apenas deixei Y igual a X e funfa sem usar Box.
Reply
#8

Quote:
Originally Posted by paulor
Посмотреть сообщение
Parabйns, Mais tem um detalhe nгo й de suma importвncia fazer uma Box para que nгo bugue, para que nгo bugue basta vc configurar corretamente o TextDrawTextSize, atй o ponto que eu busquei entender, funciona perfeitamente aqui se eu deixar TextDrawAlignment 2(Centro) e no TextDrawTextSize vai ficar somente o X preenchido, ai eu pego e como eu fiz um quadrado perfeito apenas deixei Y igual a X e funfa sem usar Box.
Funcionar funciona, sу que nгo fica muito legal. As vezes as texts se misturam, fica uma confusгo dos diabos.

E modificar a TextDrawTextSize sem box eu ainda nгo aprendi :S

Quote:
Originally Posted by Juninho_Oakley
Посмотреть сообщение
bom tutorial cara
Thanks

Quote:
Originally Posted by Luciano*
Посмотреть сообщение
Eu uso esse FS mais ele й traduzido...

Parabйns pelo tutorial, vai ajudar muita gente.
Thanks
Reply
#9

Nice work Cudymacaco, ops, Kuddy
Aprendi altas ondas que nгo sabia =D
Reply
#10

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
Funcionar funciona, sу que nгo fica muito legal. As vezes as texts se misturam, fica uma confusгo dos diabos.

E modificar a TextDrawTextSize sem box eu ainda nгo aprendi :S
Eu sei fazer o sem Box com Alinhamento 2 pois й bem mais fбcil os outros preferi nгo ler..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)