[Ajuda] Timers
#1

Olб amigos. Eu tenho um sйrio problema com Timers. Jб aconteceram inъmeros bugs, mas jб consegui resolver. Hoje a porcaria do timer estб chamando a callback duas vezes. Por exemplo: Crio um TimerEx de 1 segundo. Resultado: De um em um segundo й chamado a callback duas vezes. Isso estб ocorrendo em todos meus Timers. Nгo sei por que isso. Alguйm tem alguma dica ?
Reply
#2

Posta o codigo, pois o SetTimer(Ex) nunca bugou comigo '-'
Reply
#3

Isso pode estб acontecendo por vocк colocar true nos timers fazendo com que eles fiquem repetindo em determinado tempo...


Ex:
PHP код:
SetTimer("sp",1000,true); 
Reply
#4

Muito provavelmente й erro de programaзгo SEU!
Veja:
Quote:

SetTimer(funcname[], interval, repeating);

Entгo й sу fazer isto: SetTimer("MinhaFuncao", 1000, false);

EDIT ##
This forum requires that you wait 120 seconds between posts. Please try again in 99 seconds.
Reply
#5

Este й um dos que estб bugado.
Eu ativo ele no OnPlayerSpawn
Код:
V_TimerIdleKicker[playerid] = SetTimerEx("IdleKicker", 1000, 0, "i", playerid);
Quando o player desconecta:
Код:
KillTimer(V_TimerIdleKicker[playerid]);
Callback do timer:
Код:
foreach(Player, playerid)
	{
		GetPlayerPos(playerid, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]);

		if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[playerid][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[playerid][LastY]))
		{
			PlayerAfkTicks[playerid] ++;
		}
		else
		{
			PlayerAfkTicks[playerid] = 0;
		}

		PlayerLastPos[playerid][LastX] = PlayerCurrentPos[0];
		PlayerLastPos[playerid][LastY] = PlayerCurrentPos[1];
		PlayerLastPos[playerid][LastZ] = PlayerCurrentPos[2];

		if(PlayerAfkTicks[playerid] == MAX_IDLE_TIME * 60)
		{
			AFK[playerid] = 1;
			SetPlayerVirtualWorld(playerid, 1);
			SetCameraBehindPlayer(playerid);
			TogglePlayerControllable(playerid,0);
			TextDrawShowForPlayer(playerid,AfkText1[playerid]);
			TextDrawShowForPlayer(playerid,AfkBackText1[playerid]);

		}

		if(PlayerAfkTicks[playerid] == MAX_IDLE_TIME * 120)
		{
			TextDrawHideForPlayer(playerid, AfkText1[playerid]);
			TextDrawHideForPlayer(playerid, AfkBackText1[playerid]);

			TextDrawShowForPlayer(playerid, AfkText2[playerid]);
			TextDrawShowForPlayer(playerid, AfkBackText2[playerid]);

			SetTimerEx("KickPlayer", 200, 0, "i", playerid);
		}
		V_TimerIdleKicker[playerid] = SetTimerEx("IdleKicker", 1000, 0, "i", playerid);
	}
OBS.: Й um timer que irб rodar de segundo em segundo.
OBSІ.: Este й apenas UM deles que estб assim.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)