[Ajuda] SetTimerEx
#1

Comecei a mexer com SetTimerEx a pouco tempo e quero saber como que geto o tempo que falta no SetTimerEx.
Exemplo: Digitei o comando /kill e morri. Sу depois de 20 segundos eu posso voltar a usб-lo. Daн ainda nгo se passou 20 segundos. Ai aparece: Vocк deve esperar .. segundos para usar /kill novamente.
Esse .. seria o tempo que falta...
Reply
#2

Em vez de fazer um SetTimerEx com 20 segundos. Faзa de 1 segundo. E vai contando com uma variбvel +1. Quando o SetTimerEx de 1seg repetir 20 vezes, vocк usa o KillTimer... Essa vбriavel que vai contando +1 vai te dar o valor que estб faltando.
Reply
#3

Nгo entendi direito...
Reply
#4

Esse й o ъnico jeito?
Reply
#5

Recomendo utilizar gettime e um pouco de matemбtica

PHP код:
new
    
TempoCMD[MAX_PLAYERS]
;
CMD:kill(playerid)
{
    new 
TempoRestante = (gettime() - TempoCMD[playerid]), cmdString[128];
    if(
TempoRestante 20)
    {
         
format(cmdString128"Ainda restam %d para vocк utilizar novamente o cmd", (TempoRestante 20) * -1);
         
SendClientMessage(playerid, -1cmdString);
    }
    else
    {
        
SetPlayerHealth(playerid0.0);
        
TempoCMD[playerid] = gettime();
    }
    return 
1;

Reply
#6

new bool:SUA_VARIAVEL[MAX_PLAYERS] = false; // No Inicio do GM
if(strcmp(cmdtext, "/kill", true) ==0){
if( SUA_VARIAVEL[ playerid ] == true ) return SendClientMessage( playerid, -1, "Sу depois de 20 segundos mano");
SetPlayerHealth(playerid, 0.0);
SUA_VARIAVEL[playerid] = true;
SetTimerEx("Desbloquearcmd", 120000, false, "i", playerid); // 120000 // porque 1000, й a cada 1 segundo! nunca esqueзa
return 1;}
// No fim do GM
forward Desbloquearcmd(playerid);
public Desbloquearcmd(playerid)
{
SUA_VARIAVEL[playerid] = false;
return 1;
}
Reply
#7

Nгo cara, eu quero й o tempo vei. Getar o tempo. Tipo: Falta 10 segundos, 13 segundos, 15 segundos, 9 segundos
Reply
#8

Quote:
Originally Posted by Luiiiz
Посмотреть сообщение
Comecei a mexer com SetTimerEx a pouco tempo e quero saber como que geto o tempo que falta no SetTimerEx.
Exemplo: Digitei o comando /kill e morri. Sу depois de 20 segundos eu posso voltar a usб-lo. Daн ainda nгo se passou 20 segundos. Ai aparece: Vocк deve esperar .. segundos para usar /kill novamente.
Esse .. seria o tempo que falta...
amigo ъnica forma que conheзo para fazer isto й assim..

desculpe por tar mal organizado mais й sу vocк ajeitar que ta de boa..

PHP код:
SetTimer("MORRER"10001);
new 
tempomorrer[MAX_PLAYERS];
if(
strcmp("/kill"cmdtexttrue) == 0)
{
      new 
string[128];
      if(!(
tempomorrer[playerid] == 0))
      {
            
format(stringsizeof(string), "desculpe, mas vocк deve aguardar mais %d segundos para suicidar-se novamente."tempomorrer[playerid]);
        
SendClientMessage(playerid0xFF0000AAstring);
      }
      else
      {
            
SetPlayerHealth(playerid0);
            
SendClientMessage(playerid0x00FF00AA"vocк se matou.");
            
tempomorrer[playerid] = 20//TEM QUE ESPERAR 20 SEGUNDOS PARA PODER SE MATAR NOVAMENTE
      
}
      return 
1;
}
forward MORRER();
public 
MORRER()
{
      for(new 
0MAX_PLAYERSi++)
      {
            if(
IsPlayerConnected(i))
        {
              if(!(
tempomorrer[i] == 0))
          {
                        
tempomorrer[i] = tempomorrer[i]-1;
          }
        }
      }
      return 
1;

Reply
#9

PHP код:
new timerKill[MAX_PLAYERS];
CMD:kill(playerid)
{
    if(
gettime() - timerKill[playerid] > 20) {
        
timerKill[playerid] = gettime();
        
SetPlayerHealth(playerid0);
    }
    else {
        static 
str[55];
        
format(strsizeof str"Aguarde %d segundos para usar o comando novamente!"gettime() - timerKill[playerid] - 20);
        
SendClientMessage(playerid, -1str);
    }
    return 
true;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)