SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 20/12/2011, 11:04 PM   #1
Jorge_Braz
Big Clucker
 
Join Date: Jul 2011
Posts: 112
Reputation: 4
Default SetTimer

Tutorial sobre Settimer para Iniciantes em Pawno !!

Settimer usado para executar algo em determinado tempo !!

PHP Code:
SetTimer("mensagem",5000,false); 
Explicando
PHP Code:
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 Code:
forward mensagem();
public 
mensagem();
{
SendClientMessageToAll(0x808080AA"Ola");
return 
1;

Explicando
PHP Code:
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
__________________

GameMode
Brasil Revolution City
Tutorial
SetTimer
Criar Uma TextDraw
FilterScript
Sistema de Racha

Brasil Life RPG Venha Já !
Jorge_Braz is offline   Reply With Quote
Old 20/12/2011, 11:05 PM   #2
Kuddy
High-roller
 
Kuddy's Avatar
 
Join Date: Jun 2011
Location: Sapporo / JP
Posts: 2,869
Reputation: 299
Default Re: SetTimer

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 Code:
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 Code:
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 Code:
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.

Last edited by Kuddy; 21/12/2011 at 12:00 AM.
Kuddy is offline   Reply With Quote
Old 21/12/2011, 01:24 PM   #3
BlueX
High-roller
 
BlueX's Avatar
 
Join Date: Jul 2011
Location: Portugal
Posts: 2,057
Reputation: 288
Default Re: SetTimer

Quote:
Originally Posted by dMagnus View Post
pawn Code:
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.
__________________
Quote:
Originally Posted by Y_Less View Post
What do you enjoy? Make one you want to play or there's no point as you won't be interested in your own server.
A.K.A rebelox
BlueX is offline   Reply With Quote
Old 21/12/2011, 01:33 PM   #4
Lós
High-roller
 
Lós's Avatar
 
Join Date: Sep 2010
Location: Casterly Rock
Posts: 3,903
Reputation: 310
Default Re: SetTimer

Quote:
Originally Posted by BlueX View Post
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.
__________________
Lós is offline   Reply With Quote
Old 21/12/2011, 04:02 PM   #5
BlueX
High-roller
 
BlueX's Avatar
 
Join Date: Jul 2011
Location: Portugal
Posts: 2,057
Reputation: 288
Default Re: SetTimer

Quote:
Originally Posted by Los View Post
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 Code:
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.
__________________
Quote:
Originally Posted by Y_Less View Post
What do you enjoy? Make one you want to play or there's no point as you won't be interested in your own server.
A.K.A rebelox
BlueX is offline   Reply With Quote
Old 21/12/2011, 05:13 PM   #6
Lós
High-roller
 
Lós's Avatar
 
Join Date: Sep 2010
Location: Casterly Rock
Posts: 3,903
Reputation: 310
Default Re: SetTimer

Quote:
Originally Posted by BlueX View Post
Você chama de paramêtros e eu chamo de variáveis, porque ambas as coisas estão certas, ou seja.

pawn Code:
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.
__________________
Lós is offline   Reply With Quote
Old 25/12/2011, 11:02 PM   #7
SlashPT
High-roller
 
SlashPT's Avatar
 
Join Date: Sep 2009
Location: Hell
Posts: 2,071
Reputation: 107
Default Re: SetTimer

Quote:
Originally Posted by dMagnus View Post
Simples, mas útil...

...
Exemplo:
pawn Code:
...

Também podemos usar um timer, para fazer uma contagem!

pawn Code:
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 Code:
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 Code:
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...
__________________

Zh3r0Jansish
SlashPT is offline   Reply With Quote
Old 20/12/2011, 11:14 PM   #8
Jorge_Braz
Big Clucker
 
Join Date: Jul 2011
Posts: 112
Reputation: 4
Default Re: SetTimer

Vlw ae
__________________

GameMode
Brasil Revolution City
Tutorial
SetTimer
Criar Uma TextDraw
FilterScript
Sistema de Racha

Brasil Life RPG Venha Já !
Jorge_Braz is offline   Reply With Quote
Old 20/12/2011, 11:45 PM   #9
Lós
High-roller
 
Lós's Avatar
 
Join Date: Sep 2010
Location: Casterly Rock
Posts: 3,903
Reputation: 310
Default Re: SetTimer

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.
__________________
Lós is offline   Reply With Quote
Old 21/12/2011, 12:13 AM   #10
Cristhian
Gangsta
 
Cristhian's Avatar
 
Join Date: Aug 2011
Location: Onde Judas perdeu as botas .-.
Posts: 733
Reputation: 26
Default Re: SetTimer

Faltou o SetTimerEx
__________________
Scripto por dinheiro (via pagseguro, paypal) mande me PM.

"Scripto Pela Lógica, e Não pela Função." - DraKoN

Trabalhos:

FilterScripts

C-Admin
C-Cars v2.0
Cristhian is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
SetTimer wumpyc Scripting Help 7 30/09/2011 02:47 PM
SetTimer zxc1 Scripting Help 2 19/09/2011 01:16 PM
[Help] SetTimer NotoriousMOB Help Archive 8 05/06/2011 07:34 AM
[HELP] SetTimer Larsey123IsMe Help Archive 11 13/12/2010 10:05 PM
Settimer witha settimer in it 02manchestera Help Archive 2 07/03/2010 02:01 PM


All times are GMT. The time now is 05:16 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.