SetTimer -
Jorge_Braz - 20.12.2011
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
Re: SetTimer -
Kuddy - 20.12.2011
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.
Re: SetTimer -
Jorge_Braz - 20.12.2011
Vlw ae
Re: SetTimer -
Lуs - 20.12.2011
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.
Re: SetTimer -
Cristhian - 20.12.2011
Faltou o SetTimerEx
Re: SetTimer -
RebeloX - 21.12.2011
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.
Re: SetTimer -
Lуs - 21.12.2011
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.
Re: SetTimer -
RebeloX - 21.12.2011
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.
Re: SetTimer -
Lуs - 21.12.2011
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.
Re: SetTimer -
SlashPT - 25.12.2011
Quote:
Originally Posted by dMagnus
Simples, mas ъtil...
...
Exemplo:
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...