Hier bitte, ich habe nun den Code gründlich durchgenommen und dir alles kommentiert. Viel Spaß.
stock CreateStuntTeleport(playerid,Float:X,Float:Y,Float:Z,Float:Angle,bool:WithCar,int,vir,price)
{
if(IsPlayerInAnyMinigame(playerid) == 1)
{
iSendClientMessage(playerid,COLOR_ERROR," You're still in a minigame. First type /exit."," Du bist schon in einem Minigame, mach erst /beenden.");
return 0;
}
if(GetPlayerMoney(playerid) < price)
{
iSendClientMessage(playerid,COLOR_ERROR,"You haven't enough money!","Du hast zu wenig Geld!");
return 0;
}
else if(!IsValidTeleVeh(GetPlayerVehicleID(playerid)) && WithCar)
{
iSendClientMessage(playerid,COLOR_ERROR,"This isn't a teleport valid vehicle!","Dieses Fahrzeug ist nicht zum Teleport geeignet!");
return 0;
}
else if(WithCar)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
//Ok, der brutalste Fehler überhaupt und ich selber nicht weiß was bei dem Passiert.
//Jedoch wird bei Verwendung der Float´s das Float später weggelassen.
//Auch wenn es richtig sein könnte, bei manchen Verwendungen kann es zu Fehlern entstehen.
//Also nur bei Definitionen der Float, ansonsten weg damit!
//Ich will auch dir nicht hier in einem Roman schreiben, wie diese "Tags" verwendet werden. Ist nur mein Rat ^^.
SetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z);
SetVehicleZAngle(GetPlayerVehicleID(playerid),Angle);
LinkVehicleToInterior(GetPlayerVehicleID(playerid),int);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),vir);
}
else
{
//Dieser folgende Code bedeutet also, wenn Spieler Passagier ist, wird er nur zur Position geportet, aber das Auto nicht?
//Du kannst also das GANZE else weglöschen und die Abfrage PLAYER_STATE_DRIVER. Das halt nur der obige Code, wo ich das
//mit dem Float: angemerkt habe unter "else if(withcar)" steht, ansonsten keine Abfrage.
//Natürlich kannst du es auch so lassen, wird aber Konseqzenzen erzeugen später.
SetPlayerPos(playerid,X,Y,Z);
SetPlayerFacingAngle(playerid,Angle);
InCar[playerid] = 0;
}
}
else if(!WithCar)
{
SetPlayerPos(playerid,X,Y,Z);
SetPlayerFacingAngle(playerid,Angle);
InCar[playerid] = 0;
}
//SetCameraBehindPlayer(playerid); //Das Gehört weg, sinnlos und blockiert nur.
//Es kann auch sein, dass dieses Problem durch dieses SetCameraBehindPlayer entstand.
//Habe es jedoch noch nie selber probiert.
GivePlayerMoney(playerid,-price);
SetPlayerInterior(playerid,int);
SetPlayerVirtualWorld(playerid,vir);
PlayerPlaySound(playerid,1058,0,0,0);
if(IsPlayerInAnyVehicle(playerid)) {
FreezePlayer(playerid);
MyState[playerid] = GetPlayerVehicleSeat(playerid);
ClearAnimations(playerid, 1); //Erzeugt das gleiche wie SetPlayerPos, jedoch erspart es sich die Zeilen ^^.
PutInCarTimer[playerid] = SetTimerEx("PutInCar",1*1000,0,"d",playerid);}
return 1;
}