stock SpectateOn(playerid)
{
TogglePlayerSpectating(playerid, 1);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
}
IsPlayerSpectating[playerid] = true;
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
}
stock SpectateOff(playerid)
{
TogglePlayerSpectating(playerid, 0);
SpectatedPlayer[playerid] = 0;
IsPlayerSpectating[playerid] = false;
}
stock SpectateNext(playerid)
{
SpectatedPlayer[playerid]++;
for(new i=SpectatedPlayer[playerid]; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
SpectatedPlayer[playerid] = i;
break;
}
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
}
stock SpectatePrevious(playerid)
{
SpectatedPlayer[playerid]--;
for(new i=SpectatedPlayer[playerid]; i>-1; i--)
{
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
SpectatedPlayer[playerid] = i;
break;
}
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
}
stock GetName(i)
{
new name[24];
GetPlayerName(i, name, 24);
return name;
}
CMD:spec(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 0;
if(params = playerid) return 0;
PlayerSpectatePlayer(playerid, params, SPECTATE_MODE_NORMAL);
return 1;
}
{
TogglePlayerSpectating(playerid, 1);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(i==MAX_PLAYERS)
{
SendClientMessage(playerid, COLOR_FADE1, "There are no players to spectate.");
SpectateOff(playerid);
return 1;
}
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
}
IsPlayerSpectating[playerid] = true;
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
return 1;
}
stock SpectateOff(playerid)
{
TogglePlayerSpectating(playerid, 0);
SetSpawnInfo(playerid, 0, Playerdata[playerid][Skin], 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SpectatedPlayer[playerid] = 0;
IsPlayerSpectating[playerid] = false;
}
stock SpectateNext(playerid)
{
SpectatedPlayer[playerid]++;
for(new i=SpectatedPlayer[playerid]; i<MAX_PLAYERS; i++)
{
if(i==MAX_PLAYERS)
{
SendClientMessage(playerid, COLOR_FADE1, "There are no players to spectate.");
SpectateOff(playerid);
return 1;
}
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
SpectatedPlayer[playerid] = i;
break;
}
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
return 1;
}
stock SpectatePrevious(playerid)
{
SpectatedPlayer[playerid]--;
for(new i=SpectatedPlayer[playerid]; i>-1; i--)
{
if(i==MAX_PLAYERS)
{
SendClientMessage(playerid, COLOR_FADE1, "There are no players to spectate.");
SpectateOff(playerid);
return 1;
}
if(!IsPlayerConnected(i) || i==playerid) continue;
if(IsPlayerInAnyVehicle(i))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(i));
}
else
{
PlayerSpectatePlayer(playerid, i);
}
SpectatedPlayer[playerid] = i;
break;
}
new str[128];
format(str, 128, "You are now spectating %s (ID:%d).", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, COLOR_FADE1, str);
return 1;
}
stock GetName(i)
{
new name[24];
GetPlayerName(i, name, 24);
return name;
}
#undef MAX_PLAYERS
#define MAX_PLAYERS 25
With SpectatePrevious & SpectateNext can i come in the + ( higher then 25 ) and in the - (lower then 1) and i can spectate myself!?
|