08.04.2009, 09:57
Use a timer
A basic example:
A basic example:
pawn Код:
forward SetCameraPosition(playerid);
new
camview[MAX_PLAYERS],
camtimer[MAX_PLAYERS],
Float:campos[][] =
{
{ 10.0, 10.0, 10.0, 0.0, 0.0, 0.0 }, //cam 1 pos_x, pos_y, pos_z, lookat_x, lookat_y, lookat_z
{ -10.0, 10.0, 10.0, 0.0, 0.0, 0.0 }, //cam 2 pos_x, pos_y, pos_z, lookat_x, lookat_y, lookat_z
{ 10.0, -10.0, 10.0, 0.0, 0.0, 0.0 }, //cam 3 pos_x, pos_y, pos_z, lookat_x, lookat_y, lookat_z
{ -10.0, -10.0, 10.0, 0.0, 0.0, 0.0 } //etc
}
;
public OnPlayerConnect(playerid)
{
camtimer[playerid] = SetTimerEx("SetCameraPosition", 5000, true, "d", playerid);
return true;
}
public OnPlayerDisconnect(playerid, reason)
{
camview[playerid] = 0;
KillTimer(camtimer[playerid]);
return true;
}
public OnPlayerRequestSpawn(playerid)
{
camview[playerid] = 0;
KillTimer(camtimer[playerid]);
return true;
}
public SetCameraPosition(playerid)
{
new cam = camview[playerid];
SetPlayerPos(playerid, campos[cam][0], campos[cam][1], campos[cam][2] + 3); //set player pos near camera, for view distance
SetPlayerCameraPos(playerid, campos[cam][0], campos[cam][1], campos[cam][2]);
SetPlayerCameraLookAt (playerid, campos[cam][3], campos[cam][4], campos[cam][5]);
camview[playerid] = (camview[playerid]+1) % sizeof campos;
}