31.03.2014, 02:31
(
Последний раз редактировалось Mr.Hardy; 01.04.2014 в 04:32.
Причина: Update
)
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]
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;
}
- O sistema de argumentos das funзхes TIMER_ARG, SetTimerEx(); etc.. tem um limite de 8 argumentos nessa versгo atual.
- O funcname[] tem um limite de 80 caracteres na funзгo SetTimer/SetTimerEx. Ex: SetTimer("Aqui", ....
- O format[] tem um limite de 20 caracteres na funзгo SetTimer/SetTimerEx. Ex: SetTimer("Teste", 1000, true, "Aqui", ...
- Insira a include depois da include "a_samp".
- Coloque no topo do seu gamemode/filterscript "#define MAX_TIMERS (NЪMERO DE TIMERS QUE UTILIZARA)".
- 0.1 Versгo inicial.
- 0.2 Adicionado a callback OnTimerFinish(); com sistema de argumentos.
- 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.
Nгo dou permissгo para qualquer suposta postagem em outro forum ou parte deste forum.