SA-MP Forums Archive
[duvida] Jeito simples de colocar tempo em comando. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [duvida] Jeito simples de colocar tempo em comando. (/showthread.php?tid=268767)



[duvida] Jeito simples de colocar tempo em comando. - Xpectro - 13.07.2011

Coisa simples aqui, alguem sabe um jeito bem simples de colocar um tempo em um comando

Tipo, voce usa o comando "/lalala" ai sу depois de 5 minutos por exemplo, tu pode usar ele denovo, ai aparece SendClientMessageToAll dizendo o comando pode ser usado novamente bla bla bla ..



Re: [duvida] Jeito simples de colocar tempo em comando. - Ricop522 - 13.07.2011

Clique aqui e seje muito feliz !


Re: [duvida] Jeito simples de colocar tempo em comando. - Rodox_Mortein - 13.07.2011

tambйm preciso de algo do tipo .. procurei no seach e nгo achei nadinha ...

se nгo vai ajudar pra que que posta ¬¬


Re: [duvida] Jeito simples de colocar tempo em comando. - Gabriel Duarte - 13.07.2011

Gente demorei mais fiz uma pra vcs. Tomarem que gostem, caso goste lembre da estrelinha.

@Edit
Mano nao vi que vc queria 5 min, mas ai so trocar o SetTimer para SetTimer("exemplo", 300000, 0);

pawn Код:
new pexemplo;// coloca no topo do gm
forward exemplo;//coloca no topo do GM


    if(strcmp(cmd, "/exemplo", true) == 0) // seu cmd (ONPLAYERCOMMAND...)
    {
    if(IsPlayerConnected(playerid))
        {
         if(pexemplo == 1)//aqui й que o comando ja foi utilizado e tem q esperar
                {
                    SendClientMessage(playerid,0xFFFFFFFF,"Espere 60 para usa denovo!");
                    return 1;
                }
            else
            {
        SendClientMessageToAll(0xFFFFFFFF, "Teste CMD");//aqui sera o que o comando ira fazer
        pexemplo = 1; // Vc colocarб o que definiu no TOPO do GM
        SetTimer("exemplo", 60000, 0);//6000 й o tempo para anunciar no caso 60 seg e colocamos o nome q esta no forward
        return 1;
            }
            }
        return 1;
    }
   
public exemplo() // cria essa public com o nome da forward e do settime
{
       SendClientMessageToAll(0x33FF00FF, "COMANDO EXEMPLO LIBERADO");
        pexemplo = 0;
}



Re: [duvida] Jeito simples de colocar tempo em comando. - SuYaNw - 13.07.2011

pawn Код:
new a_STR;
public OnPlayerCommandText(playerid, cmdtext[])
{

    a_STR = GetTickCount();
    if(a_STR - GetTickcount() < TEMPO_AQUI)
    {
        return SendClientMessage(playerid, -1,"Tempo para usar comados exedido, espere acabar.");
    }
    return 0;
}



Re: [duvida] Jeito simples de colocar tempo em comando. - arakuta - 13.07.2011

Quote:
Originally Posted by Xpectro
Посмотреть сообщение
Coisa simples aqui, alguem sabe um jeito bem simples de colocar um tempo em um comando

Tipo, voce usa o comando "/lalala" ai sу depois de 5 minutos por exemplo, tu pode usar ele denovo, ai aparece SendClientMessageToAll dizendo o comando pode ser usado novamente bla bla bla ..
Leia o negrito, Swyam. Assim server para todos os cmds


Re: [duvida] Jeito simples de colocar tempo em comando. - Ricop522 - 13.07.2011

Nao use GetTickCount.
pawn Код:
if(!strcmp(cmd, "/comando", true))
{
    if(GetPVarInt(playerid, "UsouCMD") == 1) return SendClientMessage(playerid, -1,  "Voce ja usou o cmd ");
    SetTimerEx("usarcmd",TEMPO,false,"i",playerid);
    SetPVarInt(playerid,  "UsouCMD" , 1);
    return 1;


forward usarcmd(playerid); public usarcmd(playerid) return SetPVarInt(playerid,  "UsouCMD", 0);
Aqui esta.

Reputation? valeu


Re: [duvida] Jeito simples de colocar tempo em comando. - Shadoww5 - 13.07.2011

Em certos casos, PVar tambйm nгo sao muito aconselhaveis por serem um tanto lentas.

Desta forma, acho eu, seria melhor:

PHP код:
new UsouComando[MAX_PLAYERS];
public 
OnPlayerCommandText(playeridcmdtext[])
{
    if(
strcmp(cmdtext"/comando"true) == 0
    {
        if(
UsouComando[playerid] > gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente."); 
        
// FUNCOES
        
UsouComando[playerid] = gettime() + 5
        
// Troque 5 pelo numero de segundos necessarios para o jogador usar o comando de novo
        
return 1;
    }
    return 
0;




Re: [duvida] Jeito simples de colocar tempo em comando. - SuYaNw - 13.07.2011

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Nao use GetTickCount.
pawn Код:
if(!strcmp(cmd, "/comando", true))
{
    if(GetPVarInt(playerid, "UsouCMD") == 1) return SendClientMessage(playerid, -1,  "Voce ja usou o cmd ");
    SetTimerEx("usarcmd",TEMPO,false,"i",playerid);
    SetPVarInt(playerid,  "UsouCMD" , 1);
    return 1;


forward usarcmd(playerid); public usarcmd(playerid) return SetPVarInt(playerid,  "UsouCMD", 0);
Aqui esta.

Reputation? valeu
tб. vou parar de usar GetTickCount para usar seu cуdigo lento que gasta arrays igual a um condenado.

Quote:
Originally Posted by Shadoww5
Посмотреть сообщение
Em certos casos, PVar tambйm nгo sao muito aconselhaveis por serem um tanto lentas.

Desta forma, acho eu, seria melhor:

PHP код:
new UsouComando[MAX_PLAYERS];
public 
OnPlayerCommandText(playeridcmdtext[])
{
    if(
strcmp(cmdtext"/comando"true) == 0
    {
        if(
UsouComando[playerid] < gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente."); 
        
// FUNCOES
        
UsouComando[playerid] = gettime() + 5
        
// Troque 5 pelo numero de segundos necessarios para usar o jogador usar o comando de novo
        
return 1;
    }
    return 
0;

seu cуdigo em sн й melhor que o meu e do ricop522 juntos, gostei de vc!!


Re: [duvida] Jeito simples de colocar tempo em comando. - Ricop522 - 13.07.2011

Quote:
Originally Posted by SuYaNw
Посмотреть сообщение
tб. vou parar de usar GetTickCount para usar seu cуdigo lento que gasta arrays igual a um condenado.
seu cуdigo em sн й melhor que o meu e do ricop522 juntos, gostei de vc!!
Ola, sou GetTickCount prazer em te conhecer, pode me ler um pouco ?



Primeiro que o seu codigo nao faz o que ele pede.
pawn Код:
new a_STR;
public OnPlayerCommandText(playerid, cmdtext[])
{

    a_STR = GetTickCount();
    if(a_STR - GetTickcount() < TEMPO_AQUI)
    {
        return SendClientMessage(playerid, -1,"Tempo para usar comados exedido, espere acabar.");
    }
    return 0;
}
Segundo que GetTickCount e 1000x pior que SetPVar.

@Shadow
As vezes nao e aconselhavel, porem e mais pratico e nao e TAO lento assim.