06.09.2013, 23:10
Colocar ese timer en OnPlayerSpawn harб que se cree cada vez que un jugador spawnee, causarб muchos problemas y lentitud del servidor.
Ahн una forma mas entretenida de hacerlo.
La variable que contiene las posiciones de los checkpoints es.
Para agregar checkpoints solo debes agregar las posiciones Y, X y Z con el formato {X, Y, Z}.
Definidos importantes.
pawn Код:
#include <a_samp>
#define checkpointCambiar 60000 //Milisegundos que cambiarб de posiciуn el checkpoint
#define checkpointTamano 10.0 //Tamaсo de los checkpoints
new Float:checkpointPos[][3] =
{
};
new checkpointTiempo[2]; // 0 = uso de SetTimer; 1 = tiempo faltante
new checkpointID; //Checkpoint actual
forward checkpointCallback();
#define checkpointFaltante() checkpointTiempo[1] //Obtener el tiempo que falta para cambiar el checkpoint
stock checkpointInicio()
{
//Cambiar de posiciуn un checkpoint
//Obtener un checkpoint al azar
checkpointID = random(sizeof(checkpointPos));
//Mostramos el nuevo checkpoint a todos los jugadores
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
SetPlayerCheckpoint(playerid, checkpointPos[checkpointID][0], checkpointPos[checkpointID][1], checkpointPos[checkpointID][2], checkpointTamano);
//Establecemos el tiempo que falta para que cambie de posiciуn el checkpoint
checkpointTiempo[1] = checkpointCambiar/1000;
//Hacemos correr el timer para verificar si ya es tiempo de cambiar de posiciуn el checkpoint
KillTimer(checkpointTiempo[0]);
checkpointTiempo[0] = SetTimer("checkpointCallback", 1000, true);
return 1;
}
public OnGameModeInit()
{
//Iniciar el sistema
checkpointInicio();
return 1;
}
public OnPlayerConnect(playerid)
{
//Mostramos el checkpoint actual
SetPlayerCheckpoint(playerid, checkpointPos[checkpointID][0], checkpointPos[checkpointID][1], checkpointPos[checkpointID][2], checkpointTamano);
return 1;
}
public checkpointCallback()
{
//Restamos 1 segundo al tiempo faltante
checkpointTiempo[1]--;
if(checkpointTiempo[1] <= 0)
{
//Llegу a cero el contador de tiempo
//Cambiar el checkpoint de lugar
checkpointInicio();
}
return 1;
}
La variable que contiene las posiciones de los checkpoints es.
pawn Код:
new Float:checkpointPos[][3] =
{
};
pawn Код:
native checkpointInicio(); //Cambia la posiciуn del checkpoint
native checkpointFaltante(); //Obtiene el tiempo faltante para que se cambie nuevamente
pawn Код:
#define checkpointCambiar 60000 //Milisegundos que demorarб en cambiar de posiciуn el checkpoint
#define checkpointTamano 10.0 //Tamaсo de los checkpoints