Contador embaixo na tela. - xxxjhonatan_wi - 06/11/2021
Fiz um sistema de payday de 45 minutos, e queria que na tela do player tivesse uma contagem regressiva: "PayDay em: 45 minutos", e toda vez que o tempo acabasse, começasse de novo. PS:Ele deve ser zerado toda vez que o player der disconnect
RE: Contador embaixo na tela. - xbruno1000x - 06/11/2021
Use um criador de textdraw para pegar a posição, use format para o texto juntamente de suas variáveis que armazenam o tempo. Depois é so usar o SetString para funcionar. É difícil alguém conseguir fazer isso pra você, pois não temos acesso as suas variáveis.
RE: Contador embaixo na tela. - xxxjhonatan_wi - 07/11/2021
(06/11/2021 21:17)xbruno1000x Escreveu: Use um criador de textdraw para pegar a posição, use format para o texto juntamente de suas variáveis que armazenam o tempo. Depois é so usar o SetString para funcionar. É difícil alguém conseguir fazer isso pra você, pois não temos acesso as suas variáveis.
Você pode me dar um guia mais específico ? eu não manjo de textdraw. Vou colocar tudo relacionado a payday aqui abaixo:
new TIMERPAYDAY[MAX_PLAYERS]; //VARIAVEL GLOBAL
TIMERPAYDAY[playerid] = SetTimerEx( "PayDay", 60000 , true, "d", playerid); //Onde o tempo começa a contar, coloquei na dialog de quando acerta a senha!
KillTimer(TIMERPAYDAY[playerid]); //Coloquei em OnPlayerDisconnect
forward PayDay(playerid);
public PayDay(playerid)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+1);
GivePlayerMoney(i, 6500);
}
}
if(PlayerInfo[playerid][Vip] == 1)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Por ser um player vip: Ganhou + 2 score[TOTAL 3] e mais $6500[TOTAL 13000]");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+2);
GivePlayerMoney(i, 6500);
}
}
}
if(PlayerInfo[playerid][Acionista] == 1)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Por ser um player Acionista: Ganhou + 4 score[TOTAL 5] e mais $13000[TOTAL 19500]");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+4);
GivePlayerMoney(i, 13000);
}
}
}
}
RE: Contador embaixo na tela. - xbruno1000x - 07/11/2021
no post você diz que o sistema de 45 minutos, mas esse que você enviou só tem 1 minuto.
Código: new stringXb[70];
format(stringXb, 70, "O próximo payday será em ~r~%d segundos", valor);
GameTextForPlayer(playerid, stringXb, 1250, 4);
Basta substituir o valor por uma variável que armazene o tempo decorrido.
Com textdraw personalizada é a mesma coisa, porém utilizará o TextdrawSetString.
RE: Contador embaixo na tela. - xxxjhonatan_wi - 07/11/2021
(07/11/2021 12:20)xbruno1000x Escreveu: no post você diz que o sistema de 45 minutos, mas esse que você enviou só tem 1 minuto.
Código: new stringXb[70];
format(stringXb, 70, "O próximo payday será em ~r~%d segundos", valor);
GameTextForPlayer(playerid, stringXb, 1250, 4);
Basta substituir o valor por uma variável que armazene o tempo decorrido.
Com textdraw personalizada é a mesma coisa, porém utilizará o TextdrawSetString.
está 1 minuto porquê eu estava testando, mas vou por 45.
Então o código fica assim?
new stringXb[70];
format(stringXb, 70, "O próximo payday será em ~r~%d segundos", TIMERPAYDAY); (É a variável que eu uso pro tempo)
GameTextForPlayer(playerid, stringXb, 1250, 4);
RE: Contador embaixo na tela. - MrThúúG - 07/11/2021
será que não dava pra fazer a verificação pelo gettime ? e usar as variáveis individuais em vez de usar variáveis globais. ?
RE: Contador embaixo na tela. - xxxjhonatan_wi - 07/11/2021
(07/11/2021 13:58)MrThúúG Escreveu: será que não dava pra fazer pelo gettime ? e usar as variáveis individual em vez de usar variáveis global. ?
Até dar, só n sei fazer ikksjkj
RE: Contador embaixo na tela. - MrThúúG - 07/11/2021
eu não entendi isso no teu codigo... você esta misturando variáveis globais com variáveis pessoais '-' public PayDay(playerid) e depois faz uma verificação global for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++) ....
forward PayDay(playerid);
public PayDay(playerid)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+1);
GivePlayerMoney(i, 6500);
}
}
RE: Contador embaixo na tela. - White_Blue - 15/07/2022
É um tópico antigo, mas vou deixar minha mensagem se por a caso alguém precisar algum dia.
Código PHP: #define PAYDAY 40 // Defina o tempo do seu PayDay, defini para 40 minutos.
// Variáveis Globais new Text:PaydayText[2]; new PlayerText:PaydayPlayerText[MAX_PLAYERS][1]; new PaydayTimer[MAX_PLAYERS]; new Timer[MAX_PLAYERS];
public OnGameModeInit() { // TextDraws PaydayText[0] = TextDrawCreate(432.058837, 384.249938, "ld_grav:timer"); TextDrawTextSize(PaydayText[0], 24.000000, 28.000000); TextDrawAlignment(PaydayText[0], 1); TextDrawColor(PaydayText[0], -1); TextDrawSetShadow(PaydayText[0], 0); TextDrawBackgroundColor(PaydayText[0], 255); TextDrawFont(PaydayText[0], 4); TextDrawSetProportional(PaydayText[0], 0);
PaydayText[1] = TextDrawCreate(457.999847, 394.749969, "box"); TextDrawLetterSize(PaydayText[1], 0.000000, -0.070588); TextDrawTextSize(PaydayText[1], 618.000000, 0.000000); TextDrawAlignment(PaydayText[1], 1); TextDrawColor(PaydayText[1], -1); TextDrawUseBox(PaydayText[1], 1); TextDrawBoxColor(PaydayText[1], 255); TextDrawSetShadow(PaydayText[1], 0); TextDrawBackgroundColor(PaydayText[1], 255); TextDrawFont(PaydayText[1], 1); TextDrawSetProportional(PaydayText[1], 1); return 1; }
public OnPlayerConnect(playerid) { // TextDraws PaydayPlayerText[playerid][0] = CreatePlayerTextDraw(playerid, 624.588378, 396.500091, "~w~Payday em ~g~40~w~ minutos!"); PlayerTextDrawLetterSize(playerid, PaydayPlayerText[playerid][0], 0.400000, 1.600000); PlayerTextDrawAlignment(playerid, PaydayPlayerText[playerid][0], 3); PlayerTextDrawColor(playerid, PaydayPlayerText[playerid][0], 41215); PlayerTextDrawSetShadow(playerid, PaydayPlayerText[playerid][0], 0); PlayerTextDrawSetOutline(playerid, PaydayPlayerText[playerid][0], 1); PlayerTextDrawBackgroundColor(playerid, PaydayPlayerText[playerid][0], 255); PlayerTextDrawFont(playerid, PaydayPlayerText[playerid][0], 3); PlayerTextDrawSetProportional(playerid, PaydayPlayerText[playerid][0], 1);
MostrarText(playerid);
Timer[playerid] = PAYDAY * 60 + 1; // Timer PaydayTimer[playerid] = SetTimerEx("PayDay", 1000, true, "i", playerid); return 1; }
forward PayDay(i); public PayDay(i) { new string[128]; Timer[i]--; format(string, sizeof(string), "~w~Payday em ~g~%s~w~ minutos!", Convert(Timer[i])); PlayerTextDrawSetString(i, PaydayPlayerText[i][0], string); if(Timer[i] == 0) { SetPlayerScore(i, GetPlayerScore(i) + 1); GivePlayerMoney(i, 2500); SendClientMessage(i, -1, "=========================\nPayday!\n========================="); PlayerPlaySound(i, 1137, 0.0, 0.0, 0.0); Timer[i] = PAYDAY * 60 + 1; } return 1; }
stock Convert(number) { new hours, mins, secs, string[100]; hours = floatround(number / 3600); mins = floatround((number / 60) - (hours * 60)); secs = floatround(number - ((hours * 3600) + (mins * 60))); if(hours >= 24) hours = hours % 24;
if(hours > 0) format(string, 100, "%02d:%02d:%02d", hours, mins, secs); else format(string, 100, "%02d:%02d", mins, secs); return string; }
stock MostrarText(playerid) { for(new i = 0; i < 2; i++) TextDrawShowForPlayer(playerid, PaydayText[i]); for(new j = 0; j < 1; j++) PlayerTextDrawShow(playerid, PaydayPlayerText[playerid][j]); return 1; }
stock EsconderText(playerid) { for(new i = 0; i < 2; i++) TextDrawHideForPlayer(playerid, PaydayText[i]); for(new j = 0; j < 1; j++) PlayerTextDrawHide(playerid, PaydayPlayerText[playerid][j]); return 1; }
RE: Contador embaixo na tela. - MaxN - 07/10/2022
(15/07/2022 14:40)White_Blue Escreveu: É um tópico antigo, mas vou deixar minha mensagem se por a caso alguém precisar algum dia.
Como posso deixar em 10 minutos para ganhar, pode me ajudar?
Código PHP: #define PAYDAY 40 // Defina o tempo do seu PayDay, defini para 40 minutos.
// Variáveis Globais new Text:PaydayText[2]; new PlayerText:PaydayPlayerText[MAX_PLAYERS][1]; new PaydayTimer[MAX_PLAYERS]; new Timer[MAX_PLAYERS];
public OnGameModeInit() { // TextDraws PaydayText[0] = TextDrawCreate(432.058837, 384.249938, "ld_grav:timer"); TextDrawTextSize(PaydayText[0], 24.000000, 28.000000); TextDrawAlignment(PaydayText[0], 1); TextDrawColor(PaydayText[0], -1); TextDrawSetShadow(PaydayText[0], 0); TextDrawBackgroundColor(PaydayText[0], 255); TextDrawFont(PaydayText[0], 4); TextDrawSetProportional(PaydayText[0], 0);
PaydayText[1] = TextDrawCreate(457.999847, 394.749969, "box"); TextDrawLetterSize(PaydayText[1], 0.000000, -0.070588); TextDrawTextSize(PaydayText[1], 618.000000, 0.000000); TextDrawAlignment(PaydayText[1], 1); TextDrawColor(PaydayText[1], -1); TextDrawUseBox(PaydayText[1], 1); TextDrawBoxColor(PaydayText[1], 255); TextDrawSetShadow(PaydayText[1], 0); TextDrawBackgroundColor(PaydayText[1], 255); TextDrawFont(PaydayText[1], 1); TextDrawSetProportional(PaydayText[1], 1); return 1; }
public OnPlayerConnect(playerid) { // TextDraws PaydayPlayerText[playerid][0] = CreatePlayerTextDraw(playerid, 624.588378, 396.500091, "~w~Payday em ~g~40~w~ minutos!"); PlayerTextDrawLetterSize(playerid, PaydayPlayerText[playerid][0], 0.400000, 1.600000); PlayerTextDrawAlignment(playerid, PaydayPlayerText[playerid][0], 3); PlayerTextDrawColor(playerid, PaydayPlayerText[playerid][0], 41215); PlayerTextDrawSetShadow(playerid, PaydayPlayerText[playerid][0], 0); PlayerTextDrawSetOutline(playerid, PaydayPlayerText[playerid][0], 1); PlayerTextDrawBackgroundColor(playerid, PaydayPlayerText[playerid][0], 255); PlayerTextDrawFont(playerid, PaydayPlayerText[playerid][0], 3); PlayerTextDrawSetProportional(playerid, PaydayPlayerText[playerid][0], 1);
MostrarText(playerid);
Timer[playerid] = PAYDAY * 60 + 1; // Timer PaydayTimer[playerid] = SetTimerEx("PayDay", 1000, true, "i", playerid); return 1; }
forward PayDay(i); public PayDay(i) { new string[128]; Timer[i]--; format(string, sizeof(string), "~w~Payday em ~g~%s~w~ minutos!", Convert(Timer[i])); PlayerTextDrawSetString(i, PaydayPlayerText[i][0], string); if(Timer[i] == 0) { SetPlayerScore(i, GetPlayerScore(i) + 1); GivePlayerMoney(i, 2500); SendClientMessage(i, -1, "=========================\nPayday!\n========================="); PlayerPlaySound(i, 1137, 0.0, 0.0, 0.0); Timer[i] = PAYDAY * 60 + 1; } return 1; }
stock Convert(number) { new hours, mins, secs, string[100]; hours = floatround(number / 3600); mins = floatround((number / 60) - (hours * 60)); secs = floatround(number - ((hours * 3600) + (mins * 60))); if(hours >= 24) hours = hours % 24;
if(hours > 0) format(string, 100, "%02d:%02d:%02d", hours, mins, secs); else format(string, 100, "%02d:%02d", mins, secs); return string; }
stock MostrarText(playerid) { for(new i = 0; i < 2; i++) TextDrawShowForPlayer(playerid, PaydayText[i]); for(new j = 0; j < 1; j++) PlayerTextDrawShow(playerid, PaydayPlayerText[playerid][j]); return 1; }
stock EsconderText(playerid) { for(new i = 0; i < 2; i++) TextDrawHideForPlayer(playerid, PaydayText[i]); for(new j = 0; j < 1; j++) PlayerTextDrawHide(playerid, PaydayPlayerText[playerid][j]); return 1; }
|