SA-MP Forums Archive
Spectating system - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Spectating system (/showthread.php?tid=280418)



Spectating system - wouter0100 - 31.08.2011

Hey,

I have the following code:
pawn Код:
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;
}
But sometimes it goes in the -1, -2, or 0 (Nobody).
It need to start spectating on the first not yourself id, When there isnt another player online, than it need to say 'Nobody online' or something.
I'll hope somebody can help me.
Thanks!


Re: Spectating system - Snipa - 31.08.2011

Like this..:
pawn Код:
CMD:spec(playerid, params[])
{
    if(!IsPlayerConnected(playerid)) return 0;
    if(params = playerid) return 0;
    PlayerSpectatePlayer(playerid, params, SPECTATE_MODE_NORMAL);
    return 1;
}



Re: Spectating system - wouter0100 - 31.08.2011

No...


Re: Spectating system - wouter0100 - 01.09.2011

I have now:
pawn Код:
{
        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;
}
Sometimes it goes above my player limit (25)
How can i fix my system?
Thanks!


Re: Spectating system - =WoR=Varth - 01.09.2011

pawn Код:
#undef MAX_PLAYERS
#define MAX_PLAYERS 25



Re: Spectating system - wouter0100 - 01.09.2011

With SpectatePrevious & SpectateNext can i come in the + ( higher then 25 ) and in the - (lower then 1) and i can spectate myself!?


Re: Spectating system - =WoR=Varth - 01.09.2011

Quote:
Originally Posted by wouter0100
Посмотреть сообщение
With SpectatePrevious & SpectateNext can i come in the + ( higher then 25 ) and in the - (lower then 1) and i can spectate myself!?
Why don't you test it by yourself?


Re: Spectating system - wouter0100 - 01.09.2011

I'am testing it by myself?


Re: Spectating system - wouter0100 - 01.09.2011

Nobody :S?


Re: Spectating system - wouter0100 - 01.09.2011

Sorry, bump