Portal SAMP
[Ajuda] textdraw de % de vida - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] textdraw de % de vida (/showthread.php?tid=3969)



textdraw de % de vida - Yuriasdasdasda - 16/09/2023

preciso de ajuda em um sistema de contagem de vida em t e x t d r a w em % t l g d tipo 100% de acordo com a vida do player


RE: ajuda textdraw de % de vida - xbruno1000x - 16/09/2023

A vida varia de 0 a 100, ou seja, já está em porcentagem.

Bastaria pegar a quantidade de vida:

Código:
new Float:health;
    GetPlayerHealth(playerid,health);

e posteriormente setar a string da textdraw criada:

Código:
format(tdstring, sizeof(tdstring), "Vida: %0f", health);

    PlayerTextDrawSetString(playerid, HealthTD[playerid], tdstring);

Essa setagem poderia ocorrer numa Callback chamada sempre que o player toma dano, como a OnPlayerTakeDamage.

Obs: a textdraw deverá ser criada em um editor como o Nick's Textdraw Editor(NTD).
Link: https://github.com/Nickk888SAMP/TextDraw-Editor/releases/download/6.1.1/ntd_6_1_1.zip
Caso o NTD seja muito complexo pra você, também indico o Zamaroth que é mais simples de usar.
Link: https://github.com/dimmyi/Zamaroht-s-TextDraw-Editor-V4.0/releases/download/4.0/zamaroth-td-editor-v4.0.zip


RE: textdraw de % de vida - Yuriasdasdasda - 16/09/2023

eu botei la mais n funciono

(16/09/2023 13:14)xbruno1000x Escreveu: A vida varia de 0 a 100, ou seja, já está em porcentagem.

Bastaria pegar a quantidade de vida:

Código:
    new Float:health;
    GetPlayerHealth(playerid,health);

e posteriormente setar a string da textdraw criada:

Código:
    format(tdstring, sizeof(tdstring), "Vida: %0f", health);

    PlayerTextDrawSetString(playerid, pVehicleHealthTD[playerid], tdstring);

Essa setagem poderia ocorrer numa Callback chamada sempre que o player toma dano, como a OnPlayerTakeDamage.

Obs: a textdraw deverá ser criada em um editor como o Nick's Textdraw Editor(NTD).
Link: https://github.com/Nickk888SAMP/TextDraw-Editor/releases/download/6.1.1/ntd_6_1_1.zip
Caso o NTD seja muito complexo pra você, também indico o Zamaroth que é mais simples de usar.
Link: https://github.com/dimmyi/Zamaroht-s-TextDraw-Editor-V4.0/releases/download/4.0/zamaroth-td-editor-v4.0.zip
Código:
    new Float:health;
         GetPlayerHealth(playerid,health);
    new tdstring[12];
    format(tdstring, sizeof(tdstring), "%0f", health);
    PlayerTextDrawSetString(playerid, hudnovo[playerid][10], tdstring); botei assim



RE: textdraw de % de vida - White_Blue - 16/09/2023

(16/09/2023 18:40)Yuriasdasdasda Escreveu: eu botei la mais n funciono

O Bruno deu literalmente a base inteira para você fazer o sistema que deseja. Basta adaptar e criar a Textdraw do jeito que quiser.

Código PHP:
new Float:Healthstr[65]; // Declara a variável "Health" do tipo float para armazenar números quebrados(80.5% por exemplo) e declara a string "str" para armazenar o texto da Textdraw, que no caso é o valor da vida do jogador.

GetPlayerHealth(playeridHealth); // Pega a vida do jogador e armazena na variável "Health".

format(strsizeof(str), "%.2f"Health); // Formata a string "str" com o valor da variável "Health".
PlayerTextDrawSetString(playeridVariavel_Da_Sua_Textdraw_Gerada_Pelo_Editor[playerid], str); // Seta a string "str" na Textdraw que você quiser. 

Exemplo prático:

Código PHP:
new PlayerText:HealthText[MAX_PLAYERS]; // Declara a variável "HealthText" para armazenar a Textdraw de vida.
new str[65], Float:Health;

public 
OnPlayerConnect(playerid) {
    GetPlayerHealth(playeridHealth);

    format(strsizeof(str), "%.2f"Health);
  
    HealthText
[playerid] = CreatePlayerTextDraw(playerid320.0240.0"~n~"); // Cria a Textdraw "HealthText".

    PlayerTextDrawSetString(playeridHealthText[playerid], str);
    PlayerTextDrawShow(playeridHealthText[playerid]);
    return 1;
}

public 
OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart/* Usamos a callback OnPlayerTakeDamage para atualizar a Textdraw de vida do jogador toda vez que ele receber algum dano. */ {
      GetPlayerHealth(playeridHealth);

      format(strsizeof(str), "%.2f"Health);
      PlayerTextDrawSetString(playeridHealthText[playerid], str);
      PlayerTextDrawShow(playeridHealthText[playerid]);
      return 1;


Adapte os exemplos acima de acordo com suas preferências e necessidades.


RE: textdraw de % de vida - Yuriasdasdasda - 16/09/2023

(16/09/2023 18:57)White_Blue Escreveu:
(16/09/2023 18:40)Yuriasdasdasda Escreveu: eu botei la mais n funciono

O Bruno deu literalmente a base inteira para você fazer o sistema que deseja. Basta adaptar e criar a Textdraw do jeito que quiser.

Código PHP:
new Float:Healthstr[65]; // Declara a variável "Health" do tipo float para armazenar números quebrados(80.5% por exemplo) e declara a string "str" para armazenar o texto da Textdraw, que no caso é o valor da vida do jogador.

GetPlayerHealth(playeridHealth); // Pega a vida do jogador e armazena na variável "Health".

format(strsizeof(str), "%.2f"Health); // Formata a string "str" com o valor da variável "Health".
PlayerTextDrawSetString(playeridVariavel_Da_Sua_Textdraw_Gerada_Pelo_Editor[playerid], str); // Seta a string "str" na Textdraw que você quiser. 

Exemplo prático:

Código PHP:
new PlayerText:HealthText[MAX_PLAYERS]; // Declara a variável "HealthText" para armazenar a Textdraw de vida.
new str[65], Float:Health;

public 
OnPlayerConnect(playerid) {
    GetPlayerHealth(playeridHealth);

    format(strsizeof(str), "%.2f"Health);
  
    HealthText
[playerid] = CreatePlayerTextDraw(playerid320.0240.0"~n~"); // Cria a Textdraw "HealthText".

    PlayerTextDrawSetString(playeridHealthText[playerid], str);
    PlayerTextDrawShow(playeridHealthText[playerid]);
    return 1;
}

public 
OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart/* Usamos a callback OnPlayerTakeDamage para atualizar a Textdraw de vida do jogador toda vez que ele receber algum dano. */ {
      GetPlayerHealth(playeridHealth);

      format(strsizeof(str), "%.2f"Health);
      PlayerTextDrawSetString(playeridHealthText[playerid], str);
      PlayerTextDrawShow(playeridHealthText[playerid]);
      return 1;


eu entendi oque o bruno mando mais tipo ele n esta setando na textdraw  a % da vida enquando o sede e fome seta certinho



RE: textdraw de % de vida - xbruno1000x - 16/09/2023

(16/09/2023 19:20)Yuriasdasdasda Escreveu: eu entendi oque o bruno mando mais tipo ele n esta setando na textdraw  a % da vida enquando o sede e fome seta certinho

Aí você precisa mostrar como fez, pois você fez algo incorreto que precisa ser corrigido.

Você poderia adicionar a atualização da String da textdraw de vida no mesmo lugar que a fome e sede. Já que eles estão funcionando, a Callback deve estar sendo chamada corretamente.


RE: textdraw de % de vida - Yuriasdasdasda - 16/09/2023

(16/09/2023 19:30)xbruno1000x Escreveu:
(16/09/2023 19:20)Yuriasdasdasda Escreveu: eu entendi oque o bruno mando mais tipo ele n esta setando na textdraw  a % da vida enquando o sede e fome seta certinho

Aí você precisa mostrar como fez, pois você fez algo incorreto que precisa ser corrigido.

Você poderia adicionar a atualização da String da textdraw de vida no mesmo lugar que a fome e sede. Já que eles estão funcionando, a Callback deve estar sendo chamada corretamente.

botei assim o 
Código:
            GetPlayerHealth(playerid, Health);
                format(str, sizeof(str), "%.2f", Health);
                            PlayerTextDrawSetString(playerid, hudnovo[playerid][15], str); botei na mesma callback do sede e fome agora aparece a % 00.0 na textdraw  mais n seta a % da vida do player