[duvida] Jeito simples de colocar tempo em comando.
#1

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 ..
Reply
#2

Clique aqui e seje muito feliz !
Reply
#3

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

se nгo vai ajudar pra que que posta ¬¬
Reply
#4

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;
}
Reply
#5

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;
}
Reply
#6

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
Reply
#7

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
Reply
#8

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;

Reply
#9

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!!
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)