Mehrere If-Abfragen

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
  • Hi,


    ich möchte bei OnPlayerStateChange mehrer If-Abfragen verwenden. Und zwar vier Fälle:
    1. Der Carownername stimmt überein und das Auto ist abgeschlossen (Meldung mit SendClientMessage)
    2. Der Carownername stimmt überein und das Auto ist nicht abgeschlossen (Auch ne Meldung)
    3. Der Carownername stimmt nicht überein und das Auto ist offen (Meldung ...)
    4. Der Carownername stimmt nicht überein und das Auto ist zu (RemovePlayerFromVehicle)


    So habe ich das mal ausprobiert, aber das wirft mir Pawno um dir Ohren :S


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == 2)
    {
    new name3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name3, sizeof(name3));
    new carid = GetPlayerVehicleID(playerid);

    if (strcmp(name3, CarInfo[carid][carsowner], true) == 0)
    {
    if(CarInfo[carid][carslock] == 1)
    {
    SendClientMessage(playerid,GREY, "Motor gestartet ...");
    SendClientMessage(playerid,GREY, "Dein Wagen ist abgeschlossen!");
    return 1;
    }
    else if(CarInfo[carid][carslock] == 0)
    {
    SendClientMessage(playerid, GREY, "Motor gestartet ...");
    SendClientMessage(playerid, ORANGE, "Dein Wagen ist nicht abgeschlossen!");
    }
    else
    {
    SendClientMessage(playerid,ORANGE, "Dieses Fahrzeug gehört nicht dir!");
    SendClientMessage(playerid,ORANGE, "Tippe /kurzschließen um das Fahrzeug kurzzuschließen! Achtung: Fahrzeuge klauen ist gegen das Gesetz!");
    return 1;
    }
    else if(strcmp(name3, CarInfo[carid][carsowner], true) == 0)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    }
    return 1;
    }


    Hoffe Ihr könnt mir weiterhelfen!


    Grüße
    samu

  • public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == 2)
    {
    new name3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name3, sizeof(name3));
    new carid = GetPlayerVehicleID(playerid);

    if (strcmp(name3, CarInfo[carid][carsowner], true) == 0)
    {
    if(CarInfo[carid][carslock] == 1)
    {
    SendClientMessage(playerid,GREY, "Motor gestartet ...");
    SendClientMessage(playerid,GREY, "Dein Wagen ist abgeschlossen!");
    }
    else if(CarInfo[carid][carslock] == 0)
    {
    SendClientMessage(playerid, GREY, "Motor gestartet ...");
    SendClientMessage(playerid, ORANGE, "Dein Wagen ist nicht abgeschlossen!");
    }}
    else
    {
    SendClientMessage(playerid,ORANGE, "Dieses Fahrzeug gehört nicht dir!");
    SendClientMessage(playerid,ORANGE, "Tippe /kurzschließen um das Fahrzeug kurzzuschließen! Achtung: Fahrzeuge klauen ist gegen das Gesetz!");
    if(CarInfo[carid][carslock] == 1) {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1); }
    }
    }
    return 1;
    }

  • Ok, das funktioniert schonmal :thumbup:


    noch so am Rande, kann man es machen, das wenn man nicht der Besitzer ist und das Auto abgeschlossen ist, das er erst garnicht einsteigt und dann wieder rausgeworfen wird? Weil sonst kommt ja erstens immer die Meldung mit Kurzschließen bla bla und es macht sich eben besser wenn er vl an der Tür zieht oder am besten garnichts macht ...


    Gruß
    samu

  • else if(CarInfo[carid][carslock] == 0)
    {
    SendClientMessage(playerid, GREY, "Motor gestartet ...");
    SendClientMessage(playerid, ORANGE, "Dein Wagen ist nicht abgeschlossen!");
    }}


    else
    {
    if(CarInfo[carid][carslock] == 1) {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1); }
    else {
    SendClientMessage(playerid,ORANGE, "Dieses Fahrzeug gehört nicht dir!");
    SendClientMessage(playerid,ORANGE, "Tippe /kurzschließen um das Fahrzeug kurzzuschließen! Achtung: Fahrzeuge klauen ist gegen das Gesetz!"); }
    }

  • ok das mit der meldung kommt jetzt auch nicht mehr :)
    Gibt es denn keine Möglichkeit das er da nicht erst ins auto einsteigt und dann wieder rausgeworfen wird? Das er vl einfach garnix macht?
    Weil in dem Moment wo man drinsitzt kann man mit /setcarowner .... den Besitzer ändern .. :rolleyes:


    EDIT: Habe das RemovePlayerFromVehicle mal mit SetVehicleParamsForPlayer ausgetauscht.
    if(CarInfo[carid][carslock] == 1)
    {
    //RemovePlayerFromVehicle(playerid);
    SetVehicleParamsForPlayer(carid,playerid,0,1 );
    TogglePlayerControllable(playerid,1);
    }
    else


    Aber dann kann man garnicht mehr ins Auto einsteigen, auch wenn man der Besitzer ist :pinch:

    :rolleyes:

    Einmal editiert, zuletzt von samu ()

  • hmm das ist genau das gleiche, man steigt ein obwohl zu ist und man nicht der Besitzer ist und kann losfahren ...


    EDIT: Geht es nicht das wenn er einsteigen "Möchte :thumbup: " er was anderes macht, eine Animation oder so, eben das er garnicht erst ins Auto einsteigt?

    :rolleyes:

    Einmal editiert, zuletzt von samu ()

  • Sicher das es unter OnPlayerEnterVehicle hinzugefügt wurde ? bei StateChange wird das nix
    wenn du es dort einfügst verwende das vordefinierte vehicleid als Fahrzeug Nummer Zurückgabe, sonst läuft nix

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • ok, er steigt immernoch ein :cursing: :cursing: :cursing:


    ich habe bei StateChange an der Stelle jetzt garnichts mehr stehen, also die 3 sachen auskommentiert, ist das richtig?


    Was mir auffällt, immer wenn ich On gehe kann ich in jedes Auto rein, erst wenn ich mal /setcarowner Name mache, also einen andern geht das das ich nicht einsteigen kann, nach dem ich RC gemacht habe komm ich wieder rein...

    :rolleyes:

    Einmal editiert, zuletzt von samu ()