[Include] h_Timer | Livraria de Timer
#1

h_Timer 0.2


O h_Timer tem o principal intuito de matar ou setar timers com seguranзa ou chamar a callback OnTimerFinish ao temporizador ser matado ou finalizado. Algumas pessoas podem achar estб include inutil, porйm alguma pessoa ou alguem no futuro mais breve possa procurar e encontrar algo que lhe atenda.


Funзхes
pawn Код:
native SetTimer(funcname[], interval, repeating);
native SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...);
native KillTimer(timerid); //Mata um timer somente se for existкnte.
native IsValidTimer(timerid);//Retorna true para existкnte, e false para nгo existкnte
native GetTimerCallback(timerid);//Obtкm a "funcname" utilizada em um timer.
forward OnTimerFinish(timerid, type, funcname[], txtf[], {Float,_}:...); //Callback chamada ao timer finalizar.

//Tipo de timer SetTimer();
#define TYPE_SETTIMER (1)
//Tipo de timer SetTimerEx();
#define TYPE_SETTIMEREX (2)
//Sistema de argumentos utilizado na callback OnTimerFinish
#define TIMER_ARG<%0> TimerArg[timerid][%0+3]
Aprenda
pawn Код:
/*
Antes de tudo vamos entender o TIMER_ARG<...> :
Estб й uma funзгo em que vocк vai puxar o valor setado no SetTimerEx();

Ex: SetTimerEx("Teste", 8000, false, "ds", 8, "palavra");

Ao timer finalizar os 8000 milйsimos ou 8 segundos ele vai chamar a callback OnTimerFinish, onde lб vocк poderб utilizar o TIMER_ARG...

De acordo com o SetTimerEx(); no exemplo acima os valores que TIMER_ARG resultarб sгo:

TIMER_ARG<1> = 8
TIMER_ARG<2> = palavra

Exemplo em printf:

printf("ARG1: %d | ARG2: %s", TIMER_ARG<1>, TIMER_ARG<2>);
*/

#define MAX_TIMERS (500)
#include <a_samp>
#include <h_timer>

new timerOFF;

public OnTimerFinish(timerid, type, funcname[], txtf[], {Float,_}:...)
{
    if(type == TYPE_SETTIMER) printf("TYPE_SETTIMER | ID: %d | FUNCNAME: %s", timerid, funcname);
    if(type == TYPE_SETTIMEREX) printf("TYPE_SETTIMEREX | ID: %d | FUNCNAME: %s | ARGS: %s | ARG1: %d | ARG2: %d | ARG3: %s", timerid, funcname, txtf, TIMER_ARG<1>, TIMER_ARG<2>, TIMER_ARG<3>);
    return true;
}
/* Saida no console:
[03:47:37] TYPE_SETTIMER | ID: 3 | FUNCNAME: Teste2
[03:47:32] TYPE_SETTIMEREX | ID: 2 | FUNCNAME: Teste1 | ARGS: dds | ARG1: 8 | ARG2: 5 | ARG3: testes
*/

forward Teste2();
public Teste2()
{
    KillTimer(timerOFF);
}

public OnGameModeInit(){
    timerOFF = SetTimerEx("Teste1",10000,false,"dds",8,5,"testes");
    SetTimer("Teste2",5000,false);
    return true;
}
Importante
  1. O sistema de argumentos das funзхes TIMER_ARG, SetTimerEx(); etc.. tem um limite de 8 argumentos nessa versгo atual.
  2. O funcname[] tem um limite de 80 caracteres na funзгo SetTimer/SetTimerEx. Ex: SetTimer("Aqui", ....
  3. O format[] tem um limite de 20 caracteres na funзгo SetTimer/SetTimerEx. Ex: SetTimer("Teste", 1000, true, "Aqui", ...
Instalaзгo
  1. Insira a include depois da include "a_samp".
  2. Coloque no topo do seu gamemode/filterscript "#define MAX_TIMERS (NЪMERO DE TIMERS QUE UTILIZARA)".
Download da Include Changelog
  • 0.1 Versгo inicial.
  • 0.2 Adicionado a callback OnTimerFinish(); com sistema de argumentos.
Crйditos
  • v0.1 | Mr.Hardy - Criador.
  • v0.1 | [JD]BlackFire - Tutorial de multiplos parвmetros.
  • v0.2 | Schooc - Hook < http://pastebin.com/zwBbXSgX >
  • v0.2 | Dolby - Idйia da implementaзгo do OnTimerFinish(); >
Atenзгo:
Nгo dou permissгo para qualquer suposta postagem em outro forum ou parte deste forum.
Reply
#2

Parapenis , bem util :P.

@Ofi : meu gay :3
Reply
#3

Massa ,
#eu tava precisando de um desses
+rep
Reply
#4

Quote:
Originally Posted by shittt
Посмотреть сообщение
Parapenis , bem util :P.

@Ofi : meu gay :3
Apenas curta o clima kkkk

Quote:
Originally Posted by Byted
Посмотреть сообщение
Massa ,
#eu tava precisando de um desses
Vlw
Reply
#5

Interessante. Seria legal se vocк colocasse funзхes adicionais como obter o tempo que falta para a execuзгo da Callback e o tempo passado desde o inнcio do temporizador, aн sim seria uma livraria para temporizadores completa, atй porque nгo atualizarei a minha por motivos que nгo vem ao caso.

Gostei bastante da forma com que trabalhou com o preprocessor, sу nгo gostei muito da estrutura do cуdigo, pois ficou um tanto quanto ilegнvel.

De qualquer maneira, parabйns.
Reply
#6

Quote:
Originally Posted by Dolby
Посмотреть сообщение
Interessante. Seria legal se vocк colocasse funзхes adicionais como obter o tempo que falta para a execuзгo da Callback e o tempo passado desde o inнcio do temporizador, aн sim seria uma livraria para temporizadores completa, atй porque nгo atualizarei a minha por motivos que nгo vem ao caso.

Gostei bastante da forma com que trabalhou com o preprocessor, sу nгo gostei muito da estrutura do cуdigo, pois ficou um tanto quanto ilegнvel.

De qualquer maneira, parabйns.
Obrigado pela opniгo, creio que brevemente adicionarei mais termos ou atй mesmo callbacks "OnTimerFinish"..
Reply
#7

Quote:
Originally Posted by Mr.Hardy
Посмотреть сообщение
Apenas curta o clima kkkk



Vlw
De nada
Reply
#8

Gostei desta sua include.

Ela e bem pratica e util, parabens.
Reply
#9

Quote:
Originally Posted by PT
Посмотреть сообщение
Gostei desta sua include.

Ela e bem pratica e util, parabens.
Obrigado
Reply
#10

Quote:
Originally Posted by Mr.Hardy
Посмотреть сообщение
Obrigado pela opniгo, creio que brevemente adicionarei mais termos ou atй mesmo callbacks "OnTimerFinish"..
Realmente seria interessante essa modulaзгo para gerenciar os temporizadores do script, criar uma unica callback para gerencia-los.

pawn Код:
public OnTimerFinish(timerid, format[], {Float,_}:...))
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)