Warum wird der Spieler nicht aus dem fahrzeug geworfen?

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
  • Hier der code
    if(!ispassenger){
    for(new i = 0; i < sizeof(MedicalCars); i++){
    if(vehicleid == MedicalCars[i]){
    if(!isPlayerInFrakt(playerid, 2)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied des LVPD!");
    }
    }
    }
    }


    Die nachricht sende er wenn man kein mitglied ist aber er wirft den Spieler nicht raus

  • Unter welchem Callback?
    Ist das unter OnPlayerEnterVehicle?
    Wenn ja: Die Funktion "RemovePlayerFromVehicle" zwingt einen Spieler zum aussteigen.


    Gehst du in eins rein, kannst du nicht aussteigen.
    Dann solltest du das oben unter "OnplayerstateChange" machen wenn newstate == PLAYER_STATE_DRIVER ist


    Ansonsten an deiner stelle mit Freeze arbeiten oder ClearAnimations geht glaube ich auch


    Grüße


    (Bei Freeze ienmal kurz freezen und instant wieder unfreezen)

    ik bin der vito c:

  • @Wolf-Vito:


    So sieht es aus:



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger){
    for(new i = 0; i < sizeof(MedicalCars); i++){
    if(vehicleid == MedicalCars[i]){
    if(!isPlayerInFrakt(playerid, 2)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied des LVPD!");
    }
    }
    }
    }

    if(!ispassenger){
    for(new i = 0; i < sizeof(MedicalCars); i++){
    if(vehicleid == MedicalCars[i]){
    if(!isPlayerInFrakt(playerid, 15)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Sanitäter!");
    }
    }
    }
    }

    if(!ispassenger){
    for(new i = 0; i < sizeof(OrdnungsAmtCars); i++){
    if(vehicleid == OrdnungsAmtCars[i]){
    if(!isPlayerInFrakt(playerid, 5)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied des Ordnungsamtes!");
    }
    }
    }
    }

    if(!ispassenger){
    for(new i = 0; i < sizeof(HitmanCars); i++){
    if(vehicleid == HitmanCars[i]){
    if(!isPlayerInFrakt(playerid, 7)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Hitman!");
    }
    }
    }
    }

    if(!ispassenger){
    for(new i = 0; i < sizeof(SanNewsCars); i++){
    if(vehicleid == SanNewsCars[i]){
    if(!isPlayerInFrakt(playerid, 6)){
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der San news!");
    }
    }
    }
    }
    return 1;
    }

  • RemovePlayerFromVehicle(playerid);
    einfach durch
    SetPlayerControllable(playerid, false);
    SetPlayerControllable(playerid, true);
    ersetzen.


    Problem: OnPlayerEnterVehicle() wird aufgerufen, wenn man anfängt in das Fahrzeug einzusteigen (noch während der Animation, F, Enter oder G bspw.), um in das Fahrzeug einzusteigen, RemovePlayerFromVehicle() funktioniert aber erst, wenn man bereits im Fahrzeug drin ist.


    Also entweder oben genannte Möglichkeit oder das Ganze unter OnPlayerStateChange() in Kombination mit newstate == PLAYER_STATE_DRIVER.