SA-MP Forums Archive
[Tutorial] PlayerTextDraw - Onde devemos usar? Pra que serve? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] PlayerTextDraw - Onde devemos usar? Pra que serve? (/showthread.php?tid=578442)

Pages: 1 2


PlayerTextDraw - Onde devemos usar? Pra que serve? - ipsLuan - 19.06.2015

Introduзгo
Visto que muita gente tem uma certa dificuldade neste ponto, resolvi entгo fazer este pequeno tutorial explicando um pouco das funзхes de cada tipo de TextDraw.

Qual a diferenзa dela para a TextDraw Global?
Como o prуpio nome jб fala, ela й global e й criada pra todos os jogadores que estгo conectados, jб as PlayerTextDraw sгo criadas pra um jogador especнfico.
* Exemplo: Se vocк for criar uma TextDraw colocando a quantidade de jogadores online, vocк terб que usar a global, mas se for usar apenas pra jogadores especнficos usarб a PlayerTextDraw.

Qual TextDraw devemos usar?
Quando se deve usar TextDraws estбticas (TextDraws):
Quando se deve usar TextDraws dinвmicas (PlayerTextDraws):
Quais sгo os seus limites?
O limite de PlayerTextDraw sгo de apenas 256 PER-PLAYER, enquanto as globais sгo de 2048.

Exemplo de cуdigo com PlayerTextDraw.
PHP Code:
/*
    ipsLuan - since 2013
    www.ipsteam.net
*/
#include <a_samp> //Incluimos a biblioteca a_samp.
/* vars */
new
    
PlayerText: @_teste[MAX_PLAYERS], //Criamos a variбvel e definimos como PlayerText.
    
@_format[34], //Criamos o variбvel @_format.
    
@_nome[24]; //Criamos a variбvel @_nome.
;
public 
OnPlayerConnect(playerid) {
    
/* PlayerTextDraw */
    
@_teste[playerid] = CreatePlayerTextDraw(playerid296.111083165.407409"Seu nome: ipsLuan.");
    
PlayerTextDrawLetterSize(playerid, @_teste[playerid], 0.2816661.164445);
    
PlayerTextDrawAlignment(playerid, @_teste[playerid], 1);
    
PlayerTextDrawColor(playerid, @_teste[playerid], -1);
    
PlayerTextDrawSetShadow(playerid, @_teste[playerid], 0);
    
PlayerTextDrawSetOutline(playerid, @_teste[playerid], 1);
    
PlayerTextDrawBackgroundColor(playerid, @_teste[playerid], 51);
    
PlayerTextDrawFont(playerid, @_teste[playerid], 3);
    
PlayerTextDrawSetProportional(playerid, @_teste[playerid], 1);
    return 
1;
}
public 
OnPlayerSpawn(playerid) {
    
GetPlayerName(playerid, @_nomesizeof(@_nome); //Armazenamos o nome na string @_nome.
    
format(@_formatsizeof(@_format), "Seu nome: %s", @_nome); //Formatamos @_format.
    
PlayerTextDrawSetString(playerid, @_teste[playerid], @_format); //Setamos a PlayerTextDraw.
    
PlayerTextDrawShow(playeridPlayerText:@_teste[playerid]);
    print(
"DEBUG: Mostrou o nome"); //DEbug bбsico.
    
return 1;

Exemplos de cуdigo com TextDraw global.
PHP Code:
/*
    ipsLuan - since 2013
    www.ipsteam.net
*/
#include <a_samp> //Incluimos a biblioteca a_samp.
/* vars */
new
    
Text: @_teste//Criamos a variбvel e definimos como Text global.
    
@_nome[24]; //Criamos a variбvel @_nome.
;
public 
OnGameModeInit() {
    @
_teste TextDrawCreate(240.0580.0"Bem vindo."); //Criamos a TextDraw.
    
SetTimerEx("@_esconder"2000false"i"playerid); //Criamos um timer de 2 segundos.
    
return 1;
}
public 
OnPlayerConnect(playerid) {
    
TextDrawShowForPlayer(playerid, @_teste); //Mostramos a TextDraw.
    
return 1;
}
forward @_esconder(playerid);
public @
_esconder(playerid) {
    
TextDrawHideForPlayer(playerid, @_teste); //Escondemos a TextDraw.
    
print("[DEBUG] TextDraw escondida."); //Debug bбsico.
    
return 1;

Perguntas frequentes
Pergunta: A TextDraw sу aparece pro ID 0, o que fazer?
Resposta: Use PlayerTextDraw.

Pergunta: Vou criar um sistema de informaзхes de cada jogador, qual devo usar?
Resposta: Use PlayerTextDraw.

Pergunta: Vou criar uma TextDraw pra mostrar o nome do servidor, qual devo usar?
Resposta: Use TextDraw global.

Crйditos
SA:MP Team - Pela include a_samp.
ipsLuan - Criador dos tutorial e pela maioria dos cуdigos.
Jimmmy - Pelo cуdigo @_teste. (Peguei de um sistema dele e adaptei).
ipsLeon - Por reportar algumas irregularidades.


*** ATENЗГO: Tуpico sujeito а alteraзхes.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - ImperioHosting - 19.06.2015

Muito bom tutorial, +REP.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - GM_KoDi - 19.06.2015

Muito bom Luan, bem explicado e organizado o tуpico, vai ajudar muito a galera que estб aprendendo ou que ainda tem duvidas relacionadas a TextDraw e PlayerTextDraw



Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - Lуs - 19.06.2015

Essa nomenclatura de variбveis fica confuso, fora do padrгo, estranho e atй mesmo "feio" no script em si.

Do mais, bom tutorial, apesar de simples.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - ipsLuan - 19.06.2015

Quote:
Originally Posted by Lуs
View Post
Essa nomenclatura de variбveis fica confuso, fora do padrгo, estranho e atй mesmo "feio" no script em si.

Do mais, bom tutorial, apesar de simples.
Costumo a usar ela, e acho um tesгo, fora dos padrхes porйm perfeita.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - n0minal - 19.06.2015

Quote:

new
Text: @_teste[MAX_PLAYERS],

Textdraws globais nгo devem ser indexadas com MAX_PLAYERS, visto que criando assim vocк terб 500 textdraws criadas, quando na verdade sу precisa de 1.

Textdraws tкm que ser divididas em estбticas e dinвmicas, sendo respectivamente textdraws globais e playertextdraws.

Quando se deve usar TextDraws estбticas (TextDraws):
Quando se deve usar TextDraws dinвmicas (PlayerTextDraws):
Limites:

TextDraws estбticas: 2048 <- Nгo й recomendado indexar valores altos.
TextDraws dinвmicas: 256 POR PLAYER, ou seja, vocк pode indexar 256 PlayerTextDraws com MAX_PLAYERS.


Espero ter esclarecido, bom tutorial apesar de alguns erros.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - ipsLuan - 19.06.2015

Quote:
Originally Posted by ipsLeon
View Post
Textdraws globais nгo devem ser indexadas com MAX_PLAYERS, visto que criando assim vocк terб 500 textdraws criadas, quando na verdade sу precisa de 1.

Textdraws tкm que ser divididas em estбticas e dinвmicas, sendo respectivamente textdraws globais e playertextdraws.

Quando se deve usar TextDraws estбticas (TextDraws):
  • TextDraws em geral que nгo precisem alterar seu valor para cada player, caso altere, tem que alterar para todos.
Quando se deve usar TextDraws dinвmicas (PlayerTextDraws):
  • Opostamente аs estбticas, sу use TextDraws dinвmicas caso seu valor ou outras informaзхes precisam ser modificadas para um player especнfico. Caso vocк queira que uma textdraw tenha uma string, cor, tamanho, etc, diferentes para cada player, aн vem a necessidade de textdraws dinвmicas.
Limites:

TextDraws estбticas: 2048 <- Nгo й recomendado indexar valores altos.
TextDraws dinвmicas: 256 POR PLAYER, ou seja, vocк pode indexar 256 PlayerTextDraws com MAX_PLAYERS.


Espero ter esclarecido, bom tutorial apesar de alguns erros.
Correto, esqueci de retirar o MAX_PLAYERS e de citar algumas caracterнsticas.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - Jimmmy - 19.06.2015

Otimo tutorial parabкns


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - Sky™ - 19.06.2015

Saudaзхes !


Nгo esqueзa de citar que PlayerTextDraw costumam bugar com algumas sprites ... ao entrar uma quantidade de players ela buga ...


@recomendaзгo: nгo use muitos sprites em playertext ...



Bem legal, parabйns !


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - PT - 19.06.2015

Espero que agora aprendam a usar isso corretamente.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - FallweN - 19.06.2015

Bem explicado e organizado, parabйns.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - D3sconn3ct - 19.06.2015

Muitos nгo sabem mesmo sobre isso.
Bom tutorial


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - GetCode - 19.06.2015

Bom tutorial.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - n0minal - 19.06.2015

Quote:
Perguntas frequentes
Pergunta: A TextDraw sу aparece pro ID 0, o que fazer?
Resposta: Use PlayerTextDraw.

Pergunta: Vou criar um sistema de informaзхes de cada jogador, qual devo usar?
Resposta: Use PlayerTextDraw.

Se a textdraw sу aparecer pro ID 0 provavelmente й algum erro no script do jogador e nгo do id ou tipo da textdraw em si. Caso o scripter faзa um loop incorreto ou passe parвmetros incorretos na instruзгo de mostrar a textdraw pode causar o erro.

Ao criar qualquer tipo de sistema dinвmico (onde hб playertextdraws) geralmente vocк tambйm poderб usar textdraws estбticas para economizar, por exemplo, uma box de fundo padrгo pra todos os usuбrios nгo precisa ser em PlayerText, dб pra fazer uma boa economia de textdraws dinвmicas com isso.





Muito bom tutorial Luan, espero que continue a trazer conteъdos assim


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - ipsLuan - 19.06.2015

Sim, geralmente faзo isso.
Os boxs crio como global, mas as informaзхes coloco em PlayerTextDraw.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - HaRdiiZin - 19.06.2015

Parabйns.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - Monotox - 19.06.2015

Boas dicas, serб de grande utilidade em caso de dъvidas.


Respuesta: PlayerTextDraw - Onde devemos usar? Pra que serve? - AndreLuiz - 19.06.2015

Bom tutorial


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - LockedLucas - 19.06.2015

Muito bom o tutorial luan.


Re: PlayerTextDraw - Onde devemos usar? Pra que serve? - ipsLuan - 19.06.2015

Grato pelos feedbacks.