Beiträge von Neckbreaker

    Also insgesamt sähe es so aus:



    // Oben
    new Ballascar1;
    ...
    // Unter OnGamemodeInit
    Ballascar1 = AddStaticVehicle(566,1941.1470,-1130.3367,25.2060,270.6465,78,78);
    ...
    // Und das unter OnPlayerEnterVehicle
    if(vehicleid == Ballascar1 && gTeam[playerid] != TEAM_BALLAS)
    {
    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    SetPlayerPos(playerid, pX, pY, pZ);
    return 1;
    }
    ...


    Müsste funktionieren...


    MFG
    Danny

    Mo-mo-ment mal... kann sein dass ich einen folgenschweren Denkfehler begehe, aber "OnPlayerEnterVehicle" beschreibt doch nur den Zustand, wenn der Spieler das Fahrzeug betritt, aber noch nicht drin sitzt?
    Demnach kann das logischweise ja alleine aus dem Grund schon nicht funktionieren, da der Spieler zum Zeitpunkt der Abfrage in keinem Fahrzeug sitzt, aus dem er rausgeworfen werden könnte.


    Abhilfe könntest du schaffen, indem du (statt den Spieler aus dem Fahrzeug werfen zu wollen) die Koordinaten des Spielers speicherst und die Spielerposition unmittelbar danach auf diese Koordinaten setzt. Somit wird der Spieler daran gehindert, überhaupt erst ins Fahrzeug einzusteigen.


    Das machst du wie folgt:
    Du erstellst drei Variablen, welche Gleitkommazahlen (Float) aufnehmen können. SAMP stellt den Befehl "GetPlayerPos(playerid,x,y,z)" bereit, womit du die aktuelle Spielerposition ermitteln kannst. Für x,y und z setzt du einfach deine vorher deklarierten Variablen ein, und zum Schluss setzt du die Spielerposition auf die Werte dieser Variablen (mithilfe des Befehls "SetPlayerPos(playerid,x,y,z)").


    Insgesamt sieht steht dann unter deiner If-Abfrage innerhalb der OnPlayerEnterVehicle-Methode (zB):

    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    SetPlayerPos(playerid, pX, pY, pZ);
    return 1;



    @]PRT[The_Gamer: Welche Abfragen soll er denn einzeln machen? Bezieht sich das auf das If? Ob er jetzt zwei If's schreibt oder den Operator && benutzt, kommt beides aufs selbe ;)



    @[NeXt]T.L: Die Variante die Lambo hatte (einfach nur eine Variable mit der Bezeichnung Ballascar1, ohne irgendwelche Arrays erstellen zu wollen) müsste aber eigentlich genauso gut funktionieren (wenn nicht belehrt mich eines besseren ^^).


    MFG
    Danny

    Du musst den Befehl " SetPlayerInterior(playerid,0); " ändern.
    Der Innenraum hat eine andere InteriorID, in dem Fall die 5. Die 0 ist die Standart-ID, halt für die gesamte Stadt. Die meisten Innenräume haben eine eigene ID. Schreibste also


    SetPlayerInterior(playerid,5);


    Idealerweise solltest du die Zeile " PlayerInfo[playerid][pInt] = 0; " auch anpassen, die 0 zu einer 5 ändern, damit falls der Spieler innerhalb des Innenraums offline geht, er nach dem Relog wieder darin spawnen kann und nicht durch die Luft fällt ;) Aber daran denken, diesen Wert nach dem Verlassen des Innenraums wieder auf 0 zu setzen.


    MFG
    Danny