SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Português/Portuguese (https://forum.sa-mp.com/forumdisplay.php?f=34)
-   -   [Ajuda] Adicionar TextDraw (https://forum.sa-mp.com/showthread.php?t=676055)

SkolPlay 28/05/2020 03:32 PM

Adicionar TextDraw
 
Bom, eu fiz um text draw de cash, dai eu queria fazer pra aparecer quantos cash o player tem

pawn Code:
Textdraw3 = TextDrawCreate(1.000000, 432.000000, "Cash:");
TextDrawBackgroundColor(Textdraw3, 255);
TextDrawFont(Textdraw3, 1);
TextDrawLetterSize(Textdraw3, 0.500000, 1.000000);
TextDrawColor(Textdraw3, -1);
TextDrawSetOutline(Textdraw3, 0);
TextDrawSetProportional(Textdraw3, 1);
TextDrawSetShadow(Textdraw3, 1);
TextDrawSetSelectable(Textdraw3, 0);
/////////////////////////////////////////////////////////////

new Cash[MAX_PLAYERS] = 0;
Cash[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Cash"));
dUserSetINT(PlayerName(playerid)).("Cash",Cash[playerid]);
Cash[playerid] = 0;

Quem consegui fazer isto, recebera +REP!

cicinho 28/05/2020 03:59 PM

Re: Adicionar TextDraw
 
É só usar TextDrawSetString, eu te conselho em vez de usar TextDraw(global), fazer uso de PlayerTextDraw para o propósito que você pretende, mostrar informações pessoais.

HTML Code:

new newtext[41];
    format(newtext, 41, "Cash: %d", Cash[playerid]);
    TextDrawSetString(Textdraw3, newtext); 
    TextDrawShowForPlayer(playerid, Textdraw3);


SkolPlay 28/05/2020 04:38 PM

Re: Adicionar TextDraw
 
Quote:

Originally Posted by cicinho (Post 4148456)
É só usar TextDrawSetString, eu te conselho em vez de usar TextDraw(global), fazer uso de PlayerTextDraw para o propósito que você pretende, mostrar informações pessoais.

HTML Code:

new newtext[41];
    format(newtext, 41, "Cash: %d", Cash[playerid]);
    TextDrawSetString(Textdraw3, newtext); 
    TextDrawShowForPlayer(playerid, Textdraw3);


Funcionou certinho, mas teria como ele ser atualizado na hora que eu retirar um cash?
Se minha explicação estiver ruim irei citar um exemplo.

Ex:Eu tenho 1000 cash, dai retiro 1, e ele atualizar e ficar 999

Porque ele só estar atualizando quando eu deslogo e entro novamente

wearLy 28/05/2020 04:41 PM

Re: Adicionar TextDraw
 
PHP Code:

stock UpdatePlayerCash(playerid)
{
    new 
newtext[41];
    
    
format(newtext41"Cash: %d"Cash[playerid]);
    
TextDrawSetString(Textdraw3newtext);
}

// E usar isso em tudo que for consumir ou adicionar cash:
UpdatePlayerCash(playerid); 

Ou você pode usar um 'timer' de 1 segundo para atualizar constantemente (oque é o mais usado e o menos recomendado).

SkolPlay 28/05/2020 05:42 PM

Re: Adicionar TextDraw
 
Obrigado a todos que me ajudaram, funcionou perfeitamente, +REP pra ambos!

HelderPT 28/05/2020 07:19 PM

Re: Adicionar TextDraw
 
Porque não criou a textdraw por player?

SkolPlay 28/05/2020 08:34 PM

Re: Adicionar TextDraw
 
Quote:

Originally Posted by cicinho (Post 4148456)
É só usar TextDrawSetString, eu te conselho em vez de usar TextDraw(global), fazer uso de PlayerTextDraw para o propósito que você pretende, mostrar informações pessoais.

HTML Code:

new newtext[41];
    format(newtext, 41, "Cash: %d", Cash[playerid]);
    TextDrawSetString(Textdraw3, newtext); 
    TextDrawShowForPlayer(playerid, Textdraw3);


Aconteceu um problema. Se um player que estiver logado tenha 5 cash e outro que tiver entrando tiver 0, acaba setando 0 pra todo mundo

SkolPlay 28/05/2020 08:38 PM

Re: Adicionar TextDraw
 
Quote:

Originally Posted by HelderPT (Post 4148483)
Porque não criou a textdraw por player?

Sou muito noob em pawn e muito mais em textdraw kkk, como que faz isso ?

cicinho 28/05/2020 09:50 PM

Re: Adicionar TextDraw
 
Quote:

Originally Posted by SkolPlay (Post 4148490)
Sou muito noob em pawn e muito mais em textdraw kkk, como que faz isso ?

Tente:

PHP Code:

new PlayerText:TextCash[MAX_PLAYERS],
    
Timer[MAX_PLAYERS];

public 
OnPlayerConnect(playerid)
{
    
TextCash[playerid] = CreatePlayerTextDraw(playerid1.000000432.000000"Cash");
    
PlayerTextDrawLetterSize(playeridTextCash[playerid], 0.5000001.000000);
    
PlayerTextDrawAlignment(playeridTextCash[playerid], 2);
    
PlayerTextDrawColor(playeridTextCash[playerid], -1);
    
PlayerTextDrawSetShadow(playeridTextCash[playerid], 0);
    
PlayerTextDrawSetOutline(playeridTextCash[playerid], 1);
    
PlayerTextDrawBackgroundColor(playeridTextCash[playerid], 255);
    
PlayerTextDrawFont(playeridTextCash[playerid], 2);
    
PlayerTextDrawSetProportional(playeridTextCash[playerid], 1);
    
TextDrawShowForPlayer(playeridTextCash[playerid]);
    
    
    
Timer[playerid] = SetTimerEx("AtualizarCash"1000true"i"playerid);
    return 
true;
}

forward AtualizarCash(playerid);
public 
AtualizarCash(playerid)
{
    new 
String[36];
    
format(String36"Cash: %d, "Cash[playerid]);
    
PlayerTextDrawSetString(playeridTextCash[playerid], String);
    return 
true;
}

public 
OnPlayerDisconnect(playerid)
{
    
KillTimer(Timer[playerid]);
    return 
true;



SkolPlay 29/05/2020 05:40 PM

Re: Adicionar TextDraw
 
Quote:

Originally Posted by cicinho (Post 4148495)
Tente:

PHP Code:

new PlayerText:TextCash[MAX_PLAYERS],
    
Timer[MAX_PLAYERS];

public 
OnPlayerConnect(playerid)
{
    
TextCash[playerid] = CreatePlayerTextDraw(playerid1.000000432.000000"Cash");
    
PlayerTextDrawLetterSize(playeridTextCash[playerid], 0.5000001.000000);
    
PlayerTextDrawAlignment(playeridTextCash[playerid], 2);
    
PlayerTextDrawColor(playeridTextCash[playerid], -1);
    
PlayerTextDrawSetShadow(playeridTextCash[playerid], 0);
    
PlayerTextDrawSetOutline(playeridTextCash[playerid], 1);
    
PlayerTextDrawBackgroundColor(playeridTextCash[playerid], 255);
    
PlayerTextDrawFont(playeridTextCash[playerid], 2);
    
PlayerTextDrawSetProportional(playeridTextCash[playerid], 1);
    
TextDrawShowForPlayer(playeridTextCash[playerid]);
    
    
    
Timer[playerid] = SetTimerEx("AtualizarCash"1000true"i"playerid);
    return 
true;
}

forward AtualizarCash(playerid);
public 
AtualizarCash(playerid)
{
    new 
String[36];
    
format(String36"Cash: %d, "Cash[playerid]);
    
PlayerTextDrawSetString(playeridTextCash[playerid], String);
    return 
true;
}

public 
OnPlayerDisconnect(playerid)
{
    
KillTimer(Timer[playerid]);
    return 
true;



Agora não está mostrando o textdraw na tela...
E quando copila, aparece isto: (14067) warning 213: tag mismatch

pawn Code:
(14067)TextDrawShowForPlayer(playerid, TextCash[playerid]);


All times are GMT. The time now is 03:25 AM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.