SA-MP Forums Archive
[Ajuda] KillTimer - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] KillTimer (/showthread.php?tid=582577)



KillTimer - RafaelOsio - 21.07.2015

Olб amigos. Eu tenho um timer que diminui o valor de uma variбvel em 1, de 1 em 1 segundo. Quando essa variбvel chegar a 0, quero que esse timer pare.

Fiz desta forma:
Player conecta ao servidor e inicia o timer.
Код:
V_TimerSono[playerid] = SetTimerEx("TimerSono", 1000, 1, "i", playerid);
O timer atualiza esta callback:
Код:
forward TimerSono(playerid);
public TimerSono(playerid)
{

	if(V_Sono[playerid] <= 0)
	{
		KillTimer(V_TimerSono[playerid]);
                //AQUI SE COLOCAR UMA MENSAGEM, POR EXEMPLO, A MENSAGEM Й ENVIADA, MAS O TIMER NГO Й "MORTO"
		return 1;
	}

	V_Sono[playerid] = V_Sono[playerid] - 1;

	return 1;
}
Fiz um teste para verificar se o problema estava no KillTimer, mas nгo estava. Coloquei o KillTimer em um comando e o executei. Resultado: O Timer parou normalmente. Com isso, cheguei na conclusгo que o problema estб na minha callback.
Aguardo respostas.


Re: KillTimer - Duun - 21.07.2015

nгo entendi, qual o problema ?
a mensagem nгo estб sendo enviada ?


Re: KillTimer - NegoEnsina - 21.07.2015

Tira o return 1; de dentro da condiзгo.


Re: KillTimer - RafaelOsio - 21.07.2015

A mensagem envia, apenas o KillTimer que nгo funciona.


Re: KillTimer - RafaelOsio - 21.07.2015

Quote:
Originally Posted by NegoEnsina
Посмотреть сообщение
Tira o return 1; de dentro da condiзгo.
Timer continua sendo executado.


Re: KillTimer - MarcusTakeshi - 21.07.2015

Sla, sou iniciante ainda mas tenta assim:

Код:
public TimerSono(playerid)
{

	if(V_Sono[playerid] > 0)
	{
		V_Sono[playerid] = V_Sono[playerid] - 1;
	}
	else{
		//Sua menssagem
		return KillTimer(V_TimerSono[playerid]);
	}
        return 1;
}



Re: KillTimer - NegoEnsina - 21.07.2015

PHP код:
forward TimerSono(playerid);
public 
TimerSono(playerid)
{
    if(
V_Sono[playerid] <= 0)
    {
        
KillTimer(V_TimerSono[playerid]);
    }
    else
    {
        
V_Sono[playerid] --;
    }
    return 
1;




Re: KillTimer - bruxo00 - 21.07.2015

Claro que a mensagem й enviada, porque nгo havia de ser? O timer й parado, mas a funзгo continua atй chegar ao fim, que neste caso й no return 1;


Re: KillTimer - RafaelOsio - 21.07.2015

Nenhuma das alternativas funcionaram. E brux00, nгo quero enviar uma mensagem, quero parar o timer quando a variбvel chegar a 0. Mas isso nгo estб acontecendo.


Re: KillTimer - MarcusTakeshi - 21.07.2015

Quote:
Originally Posted by RafaelOsio
Посмотреть сообщение
Nenhuma das alternativas funcionaram. E brux00, nгo quero enviar uma mensagem, quero parar o timer quando a variбvel chegar a 0. Mas isso nгo estб acontecendo.
Nunca testei recursividade no PAWNO, mas tenta isso:

Quando o Player se conectar:
Код:
V_TimerSono[playerid] = SetTimerEx("TimerSono", 1000, false, "i", playerid);
Callback:
Код:
forward TimerSono(playerid);
public TimerSono(playerid)
{
    if(V_Sono[playerid] > 0)
    {
        V_Sono[playerid]--;
        V_TimerSono[playerid] = SetTimerEx("TimerSono", 1000, false, "i", playerid);
    }
    return 1;
}