05.01.2014, 00:02
Quote:
A todos, me fijй que mientras actualizaba la hostname en el sa-mp se parу como por 6 segundos, tambiйn he observado no se si conocen el server pGA Zombie Mode, juguй ayer por la noche y pasa el mismo problema, se congela el servidor por 6 o 7 segundos y vuelve a la normalidad
EDIT: No entiendo mucho el topic en inglйs, me caerнa bien una simple explicaciуn en espaсol |
y_timers:
y_timers para utilizarlo, tiene dos opciones:
por tareas (task) tareas por jugador (ptask)
y como siempre: timers.
їpara que son las tareas?
las tareas funcionan desde el arranque del servidor hasta su fin (hasta que lo cierres) por eso se llaman tareas. estбn siempre activas en el servidor
їcomo hago para crear una tarea?, simple
pawn Код:
task nombre_de_la_funcion[milisegundosenquesejecuta]()
{
// tu codigo
}
pawn Код:
task MensajesAlAzar[1800000]() // la funciуn se llama MensajesAlAzar, y se ejecuta cada 30 minutos (1800000 milisegundos)
{
new azar= random(sizeof(azar));
SendClientMessageToAll(Naranja, MensajesAlAzar[azar]);
}
їque es ptask? es una tarea, pero a diferencia de la anterior, estб es para cada jugador.
pawn Код:
ptask MensajeCada3Seg[3000](playerid)
{
SendClientMessage(playerid, -1, "Hola, este es una tarea (o timer si quieres llamarlo) ejecutado cada 3 segundos");
}
Haremos como un timer global (SetTimer) y usaremos repeat para que se repita, pero se eliminara una vez ejecutada y no volverб a ejecutarse)
pawn Код:
new Timer:var_funcion;
public OnGameModeInit()
{
var_funcion = repeat nombre_funcion(); // esto hace repetir el timer segun sus milisegundos (en este caso, 10000 = 10 seg)
// codigos
return 1;
}
timer nombre_funcion[10000]();
{
print(" Hola, soy un Timer que se repetirб cada 10 milisegundos, 10 segundos mejor. Pero.. mi creador me parу y no puedo seguir ejecutandome para mostrar este mensaje :(");
stop var_funcion; // esto hace parar el timer (es igual al KillTimer)
}
usaremos defer, porque esto significa que sera llamado solo una vez.
pawn Код:
public OnGameModeInit()
{
defer nombre_funcion(); // sera llamado cuando el gamemode se inicie. solo una vez
// codigos
return 1;
}
timer nombre_funcion[10000]();
{
print("Hola, fui llamado diez segundos despuйs de que el GM iniciу, solo una vez.");
}
ahora crearemos timers pero con parametros.. ( como SetTimerEx )
pawn Код:
public OnPlayerConnect(playerid)
{
defer funcion_con_parametro(playerid); // sera llamado solo una vez.
// codigos
return 1;
}
timer funcion_con_parametro[2500](playerid) // el parametro es "playerid", y sera ejecutado en 2,5 seg.
{
TogglePlayerControllable(playerid, true);
//GameTextForPlayer(playerid, "~g~~h~Fui llamado al conectarte! Urra~r~~h~!!", 4000, 5);
}
pawn Код:
new Timer:var_pj[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
var_pj[playerid] = repeat funcion_con_parametro(playerid); // sera repetitivo, pero lo eliminaremos cuando sea ejecutada por primera vez.
// codigos
return 1;
}
timer funcion_con_parametro[2500](playerid) // el parametro es "playerid", y sera ejecutado en 2,5 seg.
{
TogglePlayerControllable(playerid, true);
//GameTextForPlayer(playerid, "~g~~h~Fui llamado al conectarte! Urra~r~~h~!!", 4000, 5);
stop var_pj[playerid];
}