Frage zu || und &&

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
  • Hallo


    Ich habe hier ein Codestück, welches momentan nicht das macht, was es sollte, der Grund ist klar:


    else if(IsPlayerInRangeOfPoint(playerid,10,-74.1881,-1120.7853,1.0781) && TAuftrag[3][playerid] == 1 && GetVehicleModel(GetPlayerVehicleID(playerid)) == 514 && IsPlayerInAnyVehicle(playerid) && GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 435 && GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 591)
    {
    TAuftrag[3][playerid] = 0;
    JB_GivePlayerMoney(playerid,75);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast den Auftrag abgeschlossen und bekommst 75 Dollar");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }


    Vorrausetzungen:
    -IsPlayerInAnyInVehicle
    -PlayerInfo[Zahl][playerid] ==1


    -ModelID 514 oder XX (eines von beiden)
    -Trailer 435 ider 591 (Eines von beiden)


    Wo mus sich das || setzten, damit nicht beide Trailer ein oder sind sondern nur einer ?


    MfG dUDA

  • else if(IsPlayerInRangeOfPoint(playerid,10,-74.1881,-1120.7853,1.0781) && TAuftrag[3][playerid] == 1 && GetVehicleModel(GetPlayerVehicleID(playerid)) == 514 && IsPlayerInAnyVehicle(playerid) && GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 435 && GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 591)


    Ehm,was ist das den bitte für ne Abfrage?
    PlayerToPoint ist für Positionen und für nichts anderes!!!

  • && steht für UND.


    || steht für ODER.


    also:

    GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 435 || GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 591)


    Zitat

    ´Ehm,was ist das den bitte für ne Abfrage?
    PlayerToPoint ist für Positionen und für nichts anderes!!!

    Ach?
    Das ist aber IsPlayerInRangeOfPoint.


    Und diese abfrage ist korrekt da abgefragt wird ob er an dieser Position ist und ob der weitere Code zutrifft.

  • else if(IsPlayerInRangeOfPoint(playerid,10,-74.1881,-1120.7853,1.0781) && TAuftrag[3][playerid] == 1 && IsPlayerInAnyVehicle(playerid) &&( GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 435||GetVehicleTrailer(GetPlayerVehicleID(playerid)) == 591))

    So stimmt das.
    Wenn es sowieso wurscht ist, in was für nem Auto der Spieler sitzt kannste die Model-Abfrage ja auch lassen, weil du mit IsPlayerInAnyVehicle ja fragst, ob er prinzipiell in einem Fahrzeug sitzt.

  • Positionsabfrage:
    if(IsPlayerInRangeOfPoint(playerid,range,x,y,z))


    VehicleID abfrage:
    if(IsPlayerInVehicle(playerid,/*Deine VehicleID*/))


    Ob er ein Fahrzeug dran hat:
    if(GetVehicleTrailer(GetPlayerVehicleID(playerid)))


    Und alles in eine Abfrage stellen.

  • Nein eine if abfrage die überprüft ob deine vorgaben erfüllt werden.


    Code:

    if(IsPlayerInRangeOfPoint(playerid,range,x,y,z) && IsPlayerInVehicle(playerid,vehicleid) && GetVehicleTrailer(GetPlayerVehicleID(playerid)))
    {
    // Wen es zutrifft.
    }
    else
    {
    // Wen es nicht zutrifft.
    }