[Tutorial] SetTimer
#1

Tutorial sobre Settimer para Iniciantes em Pawno !!

Settimer usado para executar algo em determinado tempo !!

PHP код:
SetTimer("mensagem",5000,false); 
Explicando
PHP код:
mensagem Nome da Public que serб executada
5000 
Tempo (1000 1 Segundo // 5000 = 5 segundos)
false Para nгo ficar repetindo de 5 em 5 segundos 
Agora iremos para aonde serб executada a funзгo depois de 5 segundos do GameMode iniciado !!

PHP код:
forward mensagem();
public 
mensagem();
{
SendClientMessageToAll(0x808080AA"Ola");
return 
1;

Explicando
PHP код:
as Public acima foram criadas para executar depois de 5 segundos
SendClientMessageToAll 
Vai enviar uma mensagem para todos os players em 5 segundos do GM Ligado
0x808080AA 
Cor
Ola 
Mensagem que mostrarб para todos os players Online 
Alguns vгo dizer, este tutorial ja existe, mais muitos sгo novatos e nгo sabem procurar, so fiz para ajudar

Contato: jorge-braz@live.com
Reply
#2

Simples, mas ъtil...

Quem lhe dera se existisse um quando eu estava comeзando a scriptar...

@edit

Vou complementar seu tutorial, estб faltando exemplos e aplicaзхes de timers.


Vocк pode utilisar um timer para fazer um portгo que abre e apуs um tempo ele fecha sozinho.
Exemplo:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/abrir", cmdtext, true, 10) == 0)
    {
        MoveObject(ID_DO_OBJETO, Float:X,Float:Y,Float:Z, Float:Velocidade, RotX, RotY, RotZ); // Posiзгo do portгo aberto
        SetTimer("Fechar", 8000, false);// False pois nгo queremos que este timer fique repetindo constatemente. O portгo chamara um timer em 8 segundos.
        return 1;
    }
    return 0;
}
forward Fechar();
public Fechar()
{
    MoveObject(ID_DO_OBJETO, Float:X,Float:Y,Float:Z, Float:Velocidade, RotX, RotY, RotZ);// Posiзгo do portгo fechado.
    printf("O portгo foi fechado com sucesso!");
    return 1;
}
Tambйm podemos usar um timer, para fazer uma contagem!

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/contar", cmdtext, true, 10) == 0)
    {
        printf("3");
        SetTimer("contar2",1000, false);// False pois nгo queremos que este timer fique repetindo constatemente.
        return 1;
    }
    return 0;
}

forward contar2();
public contar2()
{
    printf("2");
    SetTimer("contar1",1000, false); // Chamarб o timer congar1
    return 1;
}
forward contar1();
public contar1()
{
    printf("1");
    SetTimer("contargo", 1000, false); // Chamarб o timer
    return 1;
}
forward contargo();
public contargo()
{
    printf("Go");
    return 1;
}
Existe uma funзгo de SetTimers que й expecнfica para um certo player.
Tendeu nгo? Por exemplo: O player digita /peidei e em 5 segundos aparecerб uma para o player: Vocк peidou e jб estб fedendo.

Um exemplo de SetTimerEx:
pawn Код:
new peidando; // Vamos definir o timer.
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/peidei", cmdtext, true, 10) == 0)  // Comando
    {
        peidando = SetTimerEx("CarregarPeido", 5000, false, "i", playerid); //Timer em SetTimerEx...
        return 1;
    }
    return 0;
}


forward CarregarPeido(playerid);
public CarregarPeido(playerid)
{
    SendClientMessage(playerid, -1, "Vocк peidou e jб estб fedendo!");
    return 1;
}
Sгo sу alguns exemplos para ajudar a compreensгo do tutorial

Claro que existem funзхes mais otimizadas para fazer os meus exemplos acima, mas eu fiz do geito bem simples que й para a compreensгo geral.
Reply
#3

Vlw ae
Reply
#4

Vocк em um tutorial deveria pelo menos dar o exemplo e identar os cуdigos.

E pra que utilizar [PHP] sendo que й um cуdigo pawn?

E cadк o SetTimerEx que й uma das mais importantes funзхes? Pra mim isso й cуdigo ъtil e nгo um tutorial.
Reply
#5

Faltou o SetTimerEx
Reply
#6

Quote:
Originally Posted by dMagnus
Посмотреть сообщение
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/abrir", cmdtext, true, 10) == 0)
    {
        MoveObject(ID_DO_OBJETO, Float:X,Float:Y,Float:Z, Float:Velocidade, RotX, RotY, RotZ); // Posiзгo do portгo aberto
        SetTimer("Fechar", 8000, false);// False pois nгo queremos que este timer fique repetindo constatemente. O portгo chamara um timer em 8 segundos.
        return 1;
    }
    return 0;
}
forward Fechar();
public Fechar()
{
    MoveObject(ID_DO_OBJETO, Float:X,Float:Y,Float:Z, Float:Velocidade, RotX, RotY, RotZ);// Posiзгo do portгo fechado.
    printf("O portгo foi fechado com sucesso!");
    return 1;
}
kkkkkkk, magnus vc tem q aprender mesmo pawn mano x: vocк devia usar um settimerex, por causa das floats e tudo, porque ele necessita disso.

Completando, SetTimerEx serve para "transferir" variaveis de um local para o outro ou para usar em uma tal variavel.
Reply
#7

Quote:
Originally Posted by BlueX
Посмотреть сообщение
kkkkkkk, magnus vc tem q aprender mesmo pawn mano x: vocк devia usar um settimerex, por causa das floats e tudo, porque ele necessita disso.

Completando, SetTimerEx serve para "transferir" variaveis de um local para o outro ou para usar em uma tal variavel.
Ele nгo precisa de SetTimerEx.

E SetTimerEx nгo "transfere" variбveis, ele transfere paramкtros.

Nгo hб nenhum paramкtro no cуdigo do magnus, nгo hб motivos para usar SetTimerEx.
Reply
#8

Quote:
Originally Posted by Los
Посмотреть сообщение
Ele nгo precisa de SetTimerEx.

E SetTimerEx nгo "transfere" variбveis, ele transfere paramкtros.

Nгo hб nenhum paramкtro no cуdigo do magnus, nгo hб motivos para usar SetTimerEx.
Vocк chama de paramкtros e eu chamo de variбveis, porque ambas as coisas estгo certas, ou seja.

pawn Код:
new valor[MAX_PLAYERS];

//OnPlayerConnect

Valor[playerid] = 10;
SetTimerEx("Avalor",5000,0,"dd",playerid,valor);

//fim do gm

forward Avalor(playerid);
public Avalor(playerid)
{
    if(valor[playerid] == 10)
        return SendClientMessage(playerid,-1,"Valooor!");
}
O que aconteceu aqui? Ele transferiu a variavel valor para a forward Avalor, ou seja, como disse transferir parametros e variaveis й a mesma coisa.
Pelo menos й o q eu acho, posso estar errado, mas se um parametro tem o valor de uma variavel vгo ser iguais nгo acha. Diagamos q o parametro й um connectador entre a variavel e a sua funзгo.
Reply
#9

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Vocк chama de paramкtros e eu chamo de variбveis, porque ambas as coisas estгo certas, ou seja.

pawn Код:
new valor[MAX_PLAYERS];

//OnPlayerConnect

Valor[playerid] = 10;
SetTimerEx("Avalor",5000,0,"dd",playerid,valor);

//fim do gm

forward Avalor(playerid);
public Avalor(playerid)
{
    if(valor[playerid] == 10)
        return SendClientMessage(playerid,-1,"Valooor!");
}
O que aconteceu aqui? Ele transferiu a variavel valor para a forward Avalor, ou seja, como disse transferir parametros e variaveis й a mesma coisa.
Pelo menos й o q eu acho, posso estar errado, mas se um parametro tem o valor de uma variavel vгo ser iguais nгo acha. Diagamos q o parametro й um connectador entre a variavel e a sua funзгo.
Ai sim vocк tem que usar o SetTimerEx, pois vocк usou paramкtros na public.
Reply
#10

Quote:
Originally Posted by dMagnus
Посмотреть сообщение
Simples, mas ъtil...

...
Exemplo:
pawn Код:
...
Tambйm podemos usar um timer, para fazer uma contagem!

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/contar", cmdtext, true, 10) == 0)
    {
        printf("3");
        SetTimer("contar2",1000, false);// False pois nгo queremos que este timer fique repetindo constatemente.
        return 1;
    }
    return 0;
}

forward contar2();
public contar2()
{
    printf("2");
    SetTimer("contar1",1000, false); // Chamarб o timer congar1
    return 1;
}
forward contar1();
public contar1()
{
    printf("1");
    SetTimer("contargo", 1000, false); // Chamarб o timer
    return 1;
}
forward contargo();
public contargo()
{
    printf("Go");
    return 1;
}
...
Eish jasus que trabalhao para fazer uma coisa tao simples, nao te esqueзas que o settimerex existe para alguma coisa...


pawn Код:
public
    OnPlayerCommandText ( playerid , cmdtext [ ] )
{
    if ( strcmp ( "/contar" , cmdtext , true , 8 ) == 0 )
    {
        print ( "3" ) ;
        SetTimerEx ( "Contar" , 1000 , false , "i" , 3 ) ;
        return 1 ;
    }
    return 0 ;
}

forward Contar ( iR ) ;
public
    Contar ( iR )
{
    return ( iR ) ? ( iR-- , ( iR == 0 ) ? ( print ( "Go" ) ) : ( printf ( "%i" , iR ) ) , SetTimerEx ( "Contar" , 1000 , false , "i" , iR ) ) : ( 1 ) ;
}
Ou

pawn Код:
public
    OnPlayerCommandText ( playerid , cmdtext [ ] )
{
    if ( strcmp ( "/contar" , cmdtext , true , 8 ) == 0 )
    {
        return Contar ( 4 ) ;
    }
    return 0 ;
}

forward Contar ( iR ) ;
public
    Contar ( iR )
{
    return ( iR ) ? ( iR-- , ( iR == 0 ) ? ( print ( "Go" ) ) : ( printf ( "%i" , iR ) ) , SetTimerEx ( "Contar" , 1000 , false , "i" , iR ) ) : ( 1 ) ;
}
Como ves podes fazer codigos mais pequenos e organizados...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)