Porcentagem - Lvzin Samp - 10/07/2024
Olá queria saber como que faz um cronômetro que indica quando a progress bar irar sumir igual ao exemplo abaixo, eu tentei fazer pelo SetTimerEx mais não deu certo.
Video - https://uploadnow.io/f/BH7syqV
RE: Porcentagem - xbruno1000x - 10/07/2024
É com setTimerEx mesmo. Mostra aí como tentou fazer.
RE: Porcentagem - Lvzin Samp - 11/07/2024
(10/07/2024 22:31)xbruno1000x Escreveu: É com setTimerEx mesmo. Mostra aí como tentou fazer.
(10/07/2024 22:31)xbruno1000x Escreveu: É com setTimerEx mesmo. Mostra aí como tentou fazer.
Código PHP: enum pnfo{ MinutosPorc, SegundosPorc, } new PInfo[MAX_PLAYERS][pnfo];
new TimerPorcentagem[MAX_PLAYERS];
#include YSI_Coding\y_hooks hook OnPlayerDisconnect(playerid, reason) { KillTimer(TimerPorcentagem[playerid]); return 1; }
hook OnGameModeInt() { Aviso[playerid][3] = CreatePlayerTextDraw(playerid, 363.000, 363.000, "00:00"); PlayerTextDrawLetterSize(playerid, Aviso[playerid][3], 0.150, 0.999); PlayerTextDrawAlignment(playerid, Aviso[playerid][3], 1); PlayerTextDrawColor(playerid, Aviso[playerid][3], -1); PlayerTextDrawSetShadow(playerid, Aviso[playerid][3], 0); PlayerTextDrawSetOutline(playerid, Aviso[playerid][3], 0); PlayerTextDrawBackgroundColor(playerid, Aviso[playerid][3], 150); PlayerTextDrawFont(playerid, Aviso[playerid][3], 1); PlayerTextDrawSetProportional(playerid, Aviso[playerid][3], 1); return 1; }
CMD:teste(playerid) { for(new i; i <9; i++) TextDrawShowForPlayer(playerid, Progress[i]);
for(new i; i <3; i++) PlayerTextDrawShow(playerid, Aviso[playerid][i]);
TimerPorcentagem[playerid] = SetTimerEx("Porcentagem", 1000, true, "i", playerid);
new string[125]; format(string, sizeof(string), "%02d:%02d", PInfo[playerid][MinutosPorc], PInfo[playerid][SegundosPorc]); PlayerTextDrawSetString(playerid, Aviso[playerid][3], string); PlayerTextDrawShow(playerid, Aviso[playerid][3]); return 1; }
forward Porcentagem(playerid); public Porcentagem(playerid) { if(PInfo[playerid][SegundosPorc] > 0) { PInfo[playerid][SegundosPorc] --; } if(PInfo[playerid][SegundosPorc] == 0 && PInfo[playerid][MinutosPorc] >= 1) { PInfo[playerid][SegundosPorc] = 59; PInfo[playerid][MinutosPorc] --; } if(PInfo[playerid][SegundosPorc] == 0 && PInfo[playerid][MinutosPorc] == 0) { KillTimer(TimerPorcentagem[playerid]); TimerPorcentagem[playerid] = 0;
PInfo[playerid][MinutosPorc] = 0; PInfo[playerid][SegundosPorc] = 0;
for(new i; i <9; i++) TextDrawHideForPlayer(playerid, Progress[i]);
for(new i; i <3; i++) PlayerTextDrawHide(playerid, Aviso[playerid][i]); return 1; } new string[10000]; format(string, sizeof(string), "%02d:%02d", PInfo[playerid][MinutosPorc], PInfo[playerid][SegundosPorc]); PlayerTextDrawSetString(playerid, Aviso[playerid][3], string); return 1; }
RE: Porcentagem - xbruno1000x - 12/07/2024
Testei o seu timer e está funcionando bem.
Encontrei um problema de boa prática nesse variável:
Código: new string[10000];
Jamais use um tamanho tão grande numa variável. Você criou um vetor de 10000 sendo que um de 10 já funcionaria.
Código: hook OnGameModeInt()
{
Aviso[playerid][3] = CreatePlayerTextDraw(playerid, 363.000, 363.000, "00:00");
PlayerTextDrawLetterSize(playerid, Aviso[playerid][3], 0.150, 0.999);
PlayerTextDrawAlignment(playerid, Aviso[playerid][3], 1);
PlayerTextDrawColor(playerid, Aviso[playerid][3], -1);
PlayerTextDrawSetShadow(playerid, Aviso[playerid][3], 0);
PlayerTextDrawSetOutline(playerid, Aviso[playerid][3], 0);
PlayerTextDrawBackgroundColor(playerid, Aviso[playerid][3], 150);
PlayerTextDrawFont(playerid, Aviso[playerid][3], 1);
PlayerTextDrawSetProportional(playerid, Aviso[playerid][3], 1);
return 1;
}
Esse trecho aqui nem compilaria pois não se usa playerid na OnGameModeInit. Deveria estar na OnPlayerConnect.
O que não estava no seu código era a progressbar, então segue um exemplo usando a include progress2 que automatiza a parte de criação de barra de progresso.
Link da include:
https://raw.githubusercontent.com/Southclaws/progress2/master/progress2.inc
Link do exemplo:
https://raw.githubusercontent.com/Southclaws/progress2/master/demo.pwn
Você deve reduzir a barra dentro do timer.
RE: Porcentagem - Lvzin Samp - 12/07/2024
(12/07/2024 00:30)xbruno1000x Escreveu: Testei o seu timer e está funcionando bem.
Encontrei um problema de boa prática nesse variável:
Código: new string[10000];
Jamais use um tamanho tão grande numa variável. Você criou um vetor de 10000 sendo que um de 10 já funcionaria.
Código: hook OnGameModeInt()
{
Aviso[playerid][3] = CreatePlayerTextDraw(playerid, 363.000, 363.000, "00:00");
PlayerTextDrawLetterSize(playerid, Aviso[playerid][3], 0.150, 0.999);
PlayerTextDrawAlignment(playerid, Aviso[playerid][3], 1);
PlayerTextDrawColor(playerid, Aviso[playerid][3], -1);
PlayerTextDrawSetShadow(playerid, Aviso[playerid][3], 0);
PlayerTextDrawSetOutline(playerid, Aviso[playerid][3], 0);
PlayerTextDrawBackgroundColor(playerid, Aviso[playerid][3], 150);
PlayerTextDrawFont(playerid, Aviso[playerid][3], 1);
PlayerTextDrawSetProportional(playerid, Aviso[playerid][3], 1);
return 1;
}
Esse trecho aqui nem compilaria pois não se usa playerid na OnGameModeInit. Deveria estar na OnPlayerConnect.
O que não estava no seu código era a progressbar, então segue um exemplo usando a include progress2 que automatiza a parte de criação de barra de progresso.
Link da include:
https://raw.githubusercontent.com/Southclaws/progress2/master/progress2.inc
Link do exemplo:
https://raw.githubusercontent.com/Southclaws/progress2/master/demo.pwn
Você deve reduzir a barra dentro do timer. Conseguir fazer aqui muito obrigado mesmo.
|