RemovePlayerFromVehicle

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich habe ne ganz witzige idee...


    Ich möchte gern ein befehl erstellen der es mir erlaubt meinen beifahrer aus meinen auto zu kicken...


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (PRESSED(65536))
    {
    if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER )
    {
    beifahrer = ???
    RemovePlayerFromVehicle(beifahrer);
    }
    }
    }


    Wie kann ich auslesen wer sich bei mir auf dem beifahrerplatz befindet und wenn es mehrere sind wie mache ich das mit mehreren ids?


    Danke für eure antworten...

  • Bei einem Beifahrer bzw. bei einem gezielten Rauswurf.



    new vehid = GetPlayerVehicleID(-zukickendeid-);
    if(GetPlayerVehicleID(playerid) == vehid && GetPlayerVehicleSeat(-zukickendeid-) == 1)
    {
    // Wenn Spieler auf Sitz 1 (Beifahrersitz) sitzt, dann ->
    }
    else
    {
    //sonst ->
    }


    Hier mal der Link zur Funktion: http://wiki.sa-mp.com/wiki/GetPlayerVehicleSeat


    Müsstest du auch in der for Schleife benutzen, wenn du alle Spieler mit einem Befehl aus deinem Fahrzeug werfen möchtest.

  • hm... ok aber gibt es nicht die möglichekit auslesen zu lassen wer da neben mir sitzt?


    ich möchte es so machen:


    Wenn ein fahrer keine lust mehr auf seinen beifahrer hat dann drückt er die z taste und der beifahrer wird rausgeworfen. Egal ob der beifahrer die id 1 oder 100 ist. das erspart dann viel gesuche nach der id... bzw das eingeben der is ansonsten wäre es total einfach


  • new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3) // Hab das mal mit den Standard 4-Türern so gemacht, gibt natürlich noch Ausnahmen wie zum Beispiel den Bus.
    {
    RemovePlayerFromVehicle(i);
    }
    }


    Ungetestet, füg das mal unter der Hotkeyabfrage ein.

    Einmal editiert, zuletzt von Mostey ()

  • Der Script macht rein garnichts wenn ich meine taste drücke...


    ich muss ehrlich zugeben ich verstehe auch nicht so ganz wie man mit diesen schritten den Beifahrer der neben MIR sitzt auslesen kann... Hat sonst noch wer eine idee?

  • ich muss ehrlich zugeben ich verstehe auch nicht so ganz wie man mit diesen schritten den Beifahrer der neben MIR sitzt auslesen kann...


    new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3) // Hab das mal mit den Standard 4-Türern so gemacht, gibt natürlich noch Ausnahmen wie zum Beispiel den Bus.
    {
    RemovePlayerFromVehicle(i);
    }
    }
    Das ist schon ganz richtig..
    Man sollte evtl. noch ne Abfrage einbauen ob der Spieler, der die Taste drückt auch der Fahrer des Fahrzeuges ist.


    Vielleicht hast Du es einfach falsch eingebaut?
    Wenn Du schon nicht verstehst wie das Script den Beifahrer raus bekommt, dann denke ich mir wirklich eher das Du es einfach falsch eingebaut hast..


    Zeig doch mal Deinen Code?


    Greetz
    Hardcore

  • naja eingebaut habe ich es so hier:



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (PRESSED(262144))
    {
    new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3)
    {
    RemovePlayerFromVehicle(i);
    }
    }
    }
    return 1;
    }


    Achso ich habe mich nun übrigens für die Taste H entschieden... aber das ist nebensache andere funktionen wie mein motor an/aus und licht an/aus - system klapen wunderbar mit den Tasten "Z" und "N".

  • Debugging könnte uns helfen. Das heißt du fügst mal ein paar Konsolenausgaben ein, so wirst du schnell feststellen was hier nicht funktioniert.


    new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < GetMaxPlayers(); i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3) // Hab das mal mit den Standard 4-Türern so gemacht, gibt natürlich noch Ausnahmen wie zum Beispiel den Bus.
    {
    RemovePlayerFromVehicle(i);
    printf("ID: %d wurde ejected",i);
    }
    print("Durchlauf %d beendet", i);
    }


    Du müsstest für jeden Durchlauf nun eine Ausgabe bekommen. Das Ergebnis kannst du uns dann auch gerne mitteilen. :)

  • print("Durchlauf %d beendet", i); kann dort nicht eingefügt werden da kommt der fehler:


    warning 202: number of arguments does not match definition


    und wenn man "h" drückt dann kommt keine meldung in der console... ich teste das ganze ding nun mla mit einem Befehl...



    Edit:
    Ok mit Befhel klappt es aber es dauert ewig bis er aussteigt und dann bleibt plötzlich das auto stehen... woran kann das liegen?

    Einmal editiert, zuletzt von Takiry ()

  • joo danke habe ich jetzt auch gesehen aber wie gesagt es klappt mit befhel nach ewigkeiten und dann bleibt ruckartig das auto stehen von jetzt auf gleich und man muss neu anfahren...


    also nicht wirklich schön



    achso wenn es jemand sehen will hier der befehl:


    ocmd:test(playerid,params[])
    {
    new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3)
    {
    RemovePlayerFromVehicle(i);
    }
    }
    }

  • hm... ich hatte mal irgendwoher ein reallife script gehabt und da hat es wunderbar funktioniert...

  • Bei der Funktion RemovePlayerFromVehicle ist das normal, kommt halt auch immer auf die Geschwindigkeit an, in der diese Abfrage ausgeführt wird.


    Eine andere Möglichkeit (außer den Spieler neben das Fahrzeug zu porten) kenne ich leider nicht...

  • das mit dem porten klingt ganz lustig :D man muss halt nur eine abfrage machen in welche richtung das auto fährt und das ist schwer weil sonst eventuell der spieler im auto buggt... ich versuche mal was zu machen danke euch erstmal