Podrнas usar tareas (tasks) de un segundo y alguna variable para eso.
Algo asн:
*haciйndolo de esta manera puedes saber cuбntos segundos han pasado y no sй, mostrarlo en algъn textdraw, o cambiar la duraciуn de la ronda con algъn comando.
pawn Код:
#define TIEMPO_LIMITE (60 * 5)
new bool:EnRonda;
new segundos;
// Al iniciar la ronda
EnRonda = true;
segundos = 0;
task CheckRound[1000]()
{
if(EnRonda)
{
segundos++;
if(segundos == TIEMPO_LIMITE)
{
// Pasaron 5 minutes
EnRonda = false;
....
}
if(Asesinatos_del_equipo_1 == 100)
{
// equipo 1 obtuvo 100 asesinatos
...
}
if(Asesinatos_del_equipo_2 == 100)
{
// equipo 2 obtuvo 100 asesinatos
...
}
}
}
O normalmente, haciйndolo asн:
* haciйndolo asн no puedes saber cuantos segundos quedan (al menos que hagas otro timer)
pawn Код:
new Timer:tRonda;
new bool:EnRonda;
// Al iniciar la ronda, despuйs de algъn conteу (ї?)...
tRonda = defer Ronda();
EnRonda = true;
// Destruir el timer de la ronda en alguna funciуn o comando
stop aRonda;
timer Ronda[300000]()
{
// la ronda terminу
...
EnRonda = false;
}
Utilizando un timer de un segundo que se repita:
* asн sн puedes saber cuбntos segundos han pasado
pawn Код:
// Tiempo lнmite de la ronda (en segundos)
#define TIEMPO_LIMITE (60 * 5)
new Timer:tRonda;
new bool:EnRonda;
new segundos;
IniciarRonda()
{
tRonda = defer CheckRound();
EnRonda = true;
segundos = 0;
return true;
}
CancelarRonda()
{
stop tRonda();
EnRonda = false;
return true;
}
timer CheckRound[1000]()
{
if(EnRonda)
{
segundos++;
if(segundos == TIEMPO_LIMITE)
{
CancelarRonda();
}
if(asesinatos_equipo_1 == 100)
{
// el equipo 1 obtuvo 100 asesinatos
}
if(asesinatos_equipo_2 == 100)
{
// el equipo 2 obtuvo 100 asesinatos
}
// Volver a llamar el timer
defer CheckRound();
}
}
___________
Explicaciуn de las funciones que utilicй:
defer - Llama al timer en el tiempo que tiene establecido.
pawn Код:
// Llamarб al timer en el tiempo que tiene establecido.
defer CheckRound();
// Llamarб al timer en ese mismo momento, como si fuera una funciуn normal.
CheckRound();
Y si gustas, tambiйn puedes establecerle otro tiempo:
pawn Код:
//Llamarб al timer en el tiempo que tiene establecido (1 segundo)
defer CheckRound();
//Llamarб al timer en dos segundos.
defer CheckRound[2000]();
stop - Funciona como KillTimer, necesitas el "ID" del timer.
pawn Код:
new Timer:x;
// En alguna funciуn...
x = defer CheckRound[30000]();
// En algъn comando...
CMD:cancelarronda(playerid, params[])
{
// ...
stop x();
// ...
return true;
}