Hm, kay ...
Aber ausm Kopf geschrieben und nicht getestet,keine Garantie! xD
Achja OnPlayerUpdate wir pro sekunde ca 30 mal aufgerufen,deshalb ist es dort sehr unsinnig eine Schleife auszuführen ![]()
//oben ins script
new WatchingID[MAX_PLAYERS];
new IsSpectator[MAX_PLAYERS];//vllt haste sowas in der art ja schon im script
new ConnectedPlayers;
//unter OnPlayerConnect;
IsSpectator[playerid] = 999;
Watching[playerid] = 999;
ConnectedPlayers ++;
//unter disconnect
ConnectedPlayers --;
//Wenn der Spieler halt anfangen soll nen anderen zu beobachten,kA wann du das haben willst...
//Aber z.B
public OnPlayerDeath(playerid, killerid, reason)
{
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, killerid);
IsSpectator[playerid] = 1;
Watching[playerid] = killerid;
return 1;
}
//dann
public OnPlayerUpdate(playerid)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(lr > 0) //rechts
{
if(IsSpectator[playerid] == 1)
{
Watching[playerid] += 1;//drückt rechts will nächsten spieler
//Abfrage jez ob es den spiler eig gibt, z.B er ist
//bei ID 5 von 6 spielern,nächste währe dann ID 0
//das finde ich damit jez raus:
if(Watching[playerid] == ConnectedPlayers)
{
Watching[playerid] = 0;
PlayerSpectatePlayer(playerid, Watching[playerid]);
}
//ansonsten geht das ja normal weiter
PlayerSpectatePlayer(playerid, Watching[playerid]);
}
}
else if(lr < 0)//links
{
if(IsSpectator[playerid] == 1)
{
Watching[playerid] -= 1;
//hier abfrage ob er von ID 0 zum id höchsten spieler jumpt
//sagen wur von ID 1 auf 0,passt! Aber von 0?
//da springt die if abfrage hier ein,kleiner als 0 ist -1
if((Watching[playerid] == -1))
{
//zum letzen spieler,allerfings gibt es ja durch id 0 einen spieler mehr
// bsp. 7 Connected user aber spieler 7 hat id
//6 und nicht 7 ;),ist bissle verwirrend i know
Watching[playerid] = (ConnectedPlayers - 1);
PlayerSpectatePlayer(playerid, Watching[playerid]);
}
//ansonsten geht das ja normal weiter
PlayerSpectatePlayer(playerid, Watching[playerid]);
}
}
return 1;
}