Ioannis20x
Du solltest das hier nutzen:
ocmd:vcam(playerid,params[])
{
if(GetPVarType(playerid,!"spectate_person") != PLAYER_VARTYPE_NONE) {
//Löscht diese Zwischenvariable
DeletePVar(playerid,!"spectate_person");
//Das lässt den Spieler aus dem spectate Modus (er wird dadurch respawnt)
TooglePlayerSpectating(playerid, 0);
return 1;
}
new pID;
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_GREY,"/vcam [playerid]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht online!");
if(!IsPlayerInAnyVehicle(pID)) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler befindet sich in keinem Auto!");
//Sorgt dafür, dass playerid in die Welt von pID kommt, damit er ihn sehen kann
SetPlayerInterior(playerid, GetPlayerInterior(pID));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(pID)),
//Versetzt playerid in den Spectate Modus und beobachtet pID kontinuierlich!
TooglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(pID));
//Wichtig, damit bei erneutem eingeben von /vcam der Spectate Modus aufgehoben wird
SetPVarInt(playerid,!"spectate_person",pID);
return 1;
}
Alles anzeigen
Das aktualisiert sich von selbst, da musst du kein OnPlayerUpdate o.ä. nutzen.
PS: Er respawnt jetzt, wenn er den Befehl noch einmal eingibt, wenn er wieder dahin gelangen soll, wo er war, müsstest du seine Position, Interior & VW zwischenspeichern und dann wieder setzen.