Ich habe mir eine Funktion UpdateSpectate gemacht, um den Spectate Status immer zu aktualisieren, wenn sich der Status von einem Spieler ändert, aber sobald dieser stirbt oder ein Interior betritt bewegt sich die Kamera einfach nicht zu der Person hin. Der Gametext, wenn die Person tot ist wird übrigens auch warum auch immer nicht angezeigt. Die Variable pSpecID verändert sich nicht, ist also die richtige.
UpdateSpectate(playerid)
{
new target = pInfo[playerid][pSpecID];
if(pInfo[playerid][pSpecID] == -1) return 0;
if(pInfo[target][pSpecing]) return 0;
if(GetPlayerState(target) == PLAYER_STATE_WASTED) return GameTextForPlayer(playerid, "Warte einen Moment...", 1500, 6);
SetPlayerInterior(playerid, GetPlayerInterior(target));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(target));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(target)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(target));
else PlayerSpectatePlayer(playerid, target);
return 1;
}
Ich führe die Funktion bei OnPlayerDeath, bei OnPlayerInteriorChange, OnPlayerSpawn, OnPlayerEnterVehicle, OnPlayerExitVehicle und bei OnPlayerStateChange aus.
Überall so:
foreach(new i : Player)
{
if(pInfo[i][pSpecID] == playerid)
{
UpdateSpectate(i);
}
}
Es funktioniert aber einfach nicht, woran liegt das?