16/04/2024 17:13
(14/04/2024 21:44)samuelmatheus0502 Escreveu: Olá meu amigo, fiz um aqui rapidinho pra você ter ideia e adaptar para você, lembrando existe inumeras maneiras de fazer, essa foi a maneira que eu fiz...
Lembrando: você terá que adaptar ao seu sistema de salvamento. Tendo que setar o segundo e minuto que ficou da última vez que o player logou, aí terá que criar uma função para issoCódigo:// No começo do seu gamemode juntos com suas variaveis adicione essas abaixos
new bool:timerPayday[MAX_PLAYERS];//variavel para ligar o timer
new idTimerPayday[MAX_PLAYERS];//variavel para armazenar o timer unico de cada player
new secondTimer[MAX_PLAYERS];//variavel para armazenar os segundos do timer
new minuteTimer[MAX_PLAYERS];//variavel para armazenar os minutos do timer
// ligarTimerPayday adicione essa função na public onplayerspawn da seguinte maniera: ligarTimerPayday(playerid);
/* EXEMPLO -------------------
OnPlayerSpawn(playerid) {
ligarTimerPayday(playerid);
return 1;
}
-----------------------------*/
// desligarTimerPayday adicione essa função na public onplayerdisconnect da seguinte maniera: desligarTimerPayday(playerid);
/* EXEMPLO ---------------------
OnPlayerDisconnect(playerid) {
desligarTimerPayday(playerid);
return 1;
}----------------------------*/
/* todas esses códigos abaixos adicione no final do seu gamemode, essas são as funções que rodará o seu timer,
OBS: eu fiz a atualizar em sendclientmessage, você terá que mudar para textdraw usando playertextdrawsetstring*/
ligarTimerPayday(playerid) { // função para ligar o timer
if(timerPayday[playerid] == false) {
timerPayday[playerid] = true;
idTimerPayday[playerid] = SetTimerEx("timerPaydayForPlayer", 1000, true,"i", playerid);
minuteTimer[playerid] = 60;
secondTimer[playerid] = 0;
}
return 1;
}
desligarTimerPayday(playerid) {// função desligar timer
if(timerPayday[playerid] == true) {
KillTimer(idTimerPayday[playerid]);
}
return 1;
}
forward timerPaydayForPlayer(playerid);
public timerPaydayForPlayer(playerid) {
new string[256];
if(minuteTimer[playerid] == 0 && secondTimer[playerid] == 0) { // aqui é se o timer finalizar, ou seja se ficar 00:00, onde você atualizaria sua textdraw com playertextdrawsetstring
SendClientMessage(playerid, -1, "SEU PAGAMENTO CHEGOU!!");
minuteTimer[playerid] = 60;
secondTimer[playerid] = 0;
return 1;
}
if(secondTimer[playerid] == 0) { // aqui é se o segundo zerar, ou seja, ex: 51:00 vai para 50:59
minuteTimer[playerid] --;
secondTimer[playerid] = 59;
format(string, sizeof(string),"%02d:%02d",minuteTimer[playerid], secondTimer[playerid]);
SendClientMessage(playerid, -1, string);
} else { // aqui é se nenhum dos casos acima ocorrer, nocaso subtrai 1 segundo do timer
secondTimer[playerid] --;
format(string, sizeof(string),"%02d:%02d",minuteTimer[playerid], secondTimer[playerid]);
SendClientMessage(playerid, -1, string);
}
return 1;
}
estou disposto a te ajudar se tiver alguma dúvida.
obrigado, adaptei ao meu servidor e esta funcionando certinho. So queria saber como funciona o SetTimerEx, os parametros e etc