dudas con y_timer -
Pipe98 - 15.12.2014
Estoy haciendo un gamemode tipo ad, y estoy usando y_timer, bueno quiero que cada mapa, o partida dure 5 minutos, ya y quiero que por ejemplo si el equipo 1 llegue a los 100 kills, la partida se termine, y se cambie, pero como mato ese y_timer?? para que se reinicie, osea para que vuelva a contar desde 0 hasta llegar a los 5 minutos, porque si ningъn equipo llega al 100 kills a los 5 minutos, se anuncia al ganador y el timer comienza de nuevo, pero podria pasar que el equipo haga los 100 kills en por ejemplo 4 minutos, se cambiarб el mapa pero el timer quedarб en 4 minutos, me entienden??... gracias y ya leн un poco sobre lo que dice en el tutorial pero no me entiendo mucho el ingles y me cuesta un poco! Gracias nuevamente!
Respuesta: dudas con y_timer -
hotspicytaco - 15.12.2014
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;
}
Respuesta: dudas con y_timer -
Pipe98 - 15.12.2014
Gracias por responder, pero al intentar crearlo me da error.
Код:
new Timer:t_AD;
main( )
{
t_AD = repeat TimerAD();
}
timer TimerAD[300000]()
{
...
...
if(Equipo1Kills == 100)
stop t_AD;
..
...
}
me da error en el stop t_AD;
Respuesta: dudas con y_timer -
hotspicytaco - 15.12.2014
Quй raro, a mн no me dio ninguno. їquй error te dio?
Respuesta: dudas con y_timer -
Pipe98 - 15.12.2014
Код:
C:\Users\Samsung\Desktop\Server Freeroam\gamemodes\frad.pwn(11410) : error 012: invalid function call, not a valid address
C:\Users\Samsung\Desktop\Server Freeroam\gamemodes\frad.pwn(11410) : error 029: invalid expression, assumed zero
C:\Users\Samsung\Desktop\Server Freeroam\gamemodes\frad.pwn(11410) : warning 215: expression has no effect
C:\Users\Samsung\Desktop\Server Freeroam\gamemodes\frad.pwn(26) : warning 204: symbol is assigned a value that is never used: "t_AD"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
2 Errors.
gracias nuevamente