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
  • Hallo Community,
    brauche eure Hilfe.
    Wenn ich mehrere Befehle hab die nur die Cops nutzen dürfen muss ich ja Logischerweise eine if abfrage machen.
    für das ist auch manchmal ein stock ganz Hilfreich.
    Ich möchte aber bei dieser Abfrage nicht nur eine Fraktion in Anspruch nehmen, sondern 3.
    1 2 und 3.


    stock IstSpielerCop(playerid, fraktionsid)
    if(!IstSpielerCop(playerid,1 & 2 & 3)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    Achtung soll nicht heißen das ich das so im Script hab sondern ist schon da wo es hingehört. :)


    Wie kann man das beheben ?
    Bin noch ein Anfänger, aber ich will es ja lernen und nicht irgendein Godfather downloaden und auf meinen Root
    packen und dann sagen "Ja mein Selfmade Script bla bla bla bla"
    Deswegen mach ich ja ein Selfmade das ich sagen kann das es mein Selfmade ist.
    Naja bitte helft mir danke :>
    Gruß


    //edit:
    if(!IstSpielerAdmin(playerid,5))return SendClientMessage(playerid,GRAU,"Du bist kein Admin.");


    Das funktionier auch. !IstSpielerAdmin ist doch wenn er es nicht ist kommt SendClientMessage oder ?
    So wie ich es bei den Tutorials gelernt hab.
    Gruß²

  • Wie ist denn deine Variable ?
    Also bei GF wäre es ja PlayerInfo[playerid][pMember]
    Was ist das bei dir ?


    //Edit


    stock IstSpielerCop(playerid)
    {
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1) return 1; //Deine Fraktionsabfrage anpassen
    return 0;
    }
    if(!IstSpielerCop(playerid)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");

  • Hast du ein Register system bzw. wird dies ganze abgespeichert und in Variablen verwendet?
    Außer in
    IstSpielerCop


    if(!IstSpielerCop(playerid,1)||!IstSpielerCop(playerid,2)|| !IstSpielerCop(playerid,3)
    ) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");


    Falls es nicht funken sollte verwende else.


  • Also GF ist es keines :)
    ihr könnte ja kurz mal drauf schauen und ich erkläre es euch erneut.
    IP: 188.40.133.132:8888
    PW: "istspielercoptest"
    Gruß

  • Also GF ist es keines :)
    ihr könnte ja kurz mal drauf schauen und ich erkläre es euch erneut.
    IP: 188.40.133.132:8888
    PW: "istspielercoptest"
    Gruß


    Hast du eigentlich mein Beitrag gelesen?


    Bei Abfragen gibt es einige Funktionen wie:


    != = Alles andere als
    == = gleich
    >= größergleich
    <= kleinergleich
    < = kleiner
    > = größer


    !blabla = Alles andere als blabla
    blabla = blabla


    bla == 0 && bla == 1 <<< Beides muss eintreffen
    bla == 0 || bla == 1 <<< Entweder oder/und

  • if(!IstSpielerCop(playerid,1)||!IstSpielerCop(playerid,2)|| !IstSpielerCop(playerid,3)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    So hab ich es probiert, funktioniert nicht.
    Du bist kein Polizist. Deswegen kommt mir das ja komisch vor.


    stock IstSpielerCop(playerid, fraktionsid)
    {
    if(sSpieler[playerid][Fraktion] == fraktionsid) return 1;
    return 0;
    }
    oder ist der stock falsch ?
    Gruß

  • Es muss nicht || sondern && sein.
    Er muss ja in keiner der Fraks sein damit er den Error bekommt.


    Falsch.
    Denn wenn es "&&" ist, dann muss er alles drei sein.


    -edit-


    if(IstSpielerCop(playerid,1)|| IstSpielerCop(playerid,2)|| IstSpielerCop(playerid,3))
    {
    printf("funkt");
    }
    else
    {
    printf("funkt nicht");
    }

    Versuchs mal so, und sag uns was in der Console steht.


  • Falsch.
    Denn wenn es "&&" ist, dann muss er alles drei sein.

    Anscheinend nicht :)
    Intelligent hat recht wenn ich aus || - && mach dann funkt es.
    So nun bitte eine Aufklärung.
    Warum hat das vorhin nicht funktioniert ?
    Wenn ich es einfach nur so reinkopier bringt es mir ja nichts.
    Wenn einer so Nett ist bitte erklär/t es mir danke.
    Gruß

    btw.
    if(!IstSpielerCop(playerid,1)&&!IstSpielerCop(playerid,2)&&!IstSpielerCop(playerid,3)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");

    + stock
    stock IstSpielerCop(playerid, fraktionsid){
    if(sSpieler[playerid][Fraktion] == fraktionsid) return 1;
    return 0;
    }


    funktioniert es.

  • Es muss nicht || sondern && sein.
    Er muss ja in keiner der Fraks sein damit er den Error bekommt.



    In dem Fall hast du Recht.
    Hab oben noch eine Möglichkeit gepostet.




    -edit-



    Naja "!" ist ja Alles andere als "&&" ist und.


    Wenn er alles andere als Frak 1 ist UND und und...
    Dann wird blabla ausgeführt.


    warum ein stock funktioniert wirst du selber wissen ^^

  • Hier mal ne kleine Erklärung was das heißt:
    if(!IstSpielerCop(playerid,1)&&!IstSpielerCop(playerid,2)&&!IstSpielerCop(playerid,3)) return SendClientMessage(playerid,GRAU,"Du bist kein Polizist");
    Wenn( Der Spieler nicht in Fraktion 1 ist UND der Spieler nicht in Fraktion 2 ist UND der Spieler nicht in Fraktion 3 ist ) sende diese Nachricht zurück

  • Ja nun stellt sich mir die nächste frage.
    in manchen Tutorial Videos zb. MrMonat oder Nemesus hab ich solche Ports gesehen.


    new
    new bsnporte;new bsnporta



    definieren
    bsnporte=CreatePickup(1239,1,coordinate xyz);bsnporta=CreatePickup(1239,1,coordinate xyz);


    benutzen
    public OnPlayerPickUpPickup(playerid, pickupid){ if(pickupid==bsnporte) //eingang { SetPlayerPos(playerid,xyz); SetPlayerFacingAngle(playerid,die 4te wobei ich nicht weis wie Sie heisst); SetCameraBehindPlayer(playerid); SetPlayerInterior(playerid,zb.10); } if(pickupid==bsnporta) //ausgang { SetPlayerPos(playerid,xyz); SetPlayerFacingAngle(playerid,
    die 4te wobei ich nicht weis wie Sie heisst ); SetCameraBehindPlayer(playerid); SetPlayerInterior(playerid,0); }


    So nun die frage wie mach ich es das wenn ich DORT /enter eingib,
    das ich erst dann reinkomme ?
    da ich nun ja auf das Pickup geh dann werde ich ja geportet.
    wäre nett von euch / dir es mir zu erklären.
    Gruß

  • CreatePickup(1239,1,coordinate xyz); //Eingang
    CreatePickup(1239,1,coordinate xyz); //Ausgang


    if(strcmp(cmd, "/enter", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,Abstand,BSNx,BSNy,BSNz)) //Ist der Spieler im Abstand xx zum Punkt xyz ?
    {
    SetPlayerInterior(playerid,Interior); // Interior
    SetPlayerPos(playerid,xyz); //Pos setzen
    SetPlayerFacingAngle(playerid,a(Angle)); //Blickrichtung
    SetCameraBehindPlayer(playerid); //Kamera hinter Spieler
    }
    }
    return 1;
    }


    MfG.
    Me

  • Danke echt freundlich von dir.
    Aber wenn ich dann nochmal /enter verwenden möchte ?
    Gruß

  • Dann hängste ein
    else if(IsPlayerInRangeOfPoint(playerid,Abstand,x,y,z)) //Ist der Spieler im Abstand xx zum Punkt xyz ?
    {
    SetPlayerInterior(playerid,Interior); // Interior
    SetPlayerPos(playerid,xyz); //Pos setzen
    SetPlayerFacingAngle(playerid,a(Angle)); //Blickrichtung
    SetCameraBehindPlayer(playerid); //Kamera hinter Spieler
    }
    dran.


    Sieht dann so aus:


    if(strcmp(cmd, "/enter", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,Abstand,BSNx,BSNy,BSNz)) //Ist der Spieler im Abstand xx zum Punkt xyz ?
    {
    SetPlayerInterior(playerid,Interior); // Interior
    SetPlayerPos(playerid,xyz); //Pos setzen
    SetPlayerFacingAngle(playerid,a(Angle)); //Blickrichtung
    SetCameraBehindPlayer(playerid); //Kamera hinter Spieler
    }
    else if(IsPlayerInRangeOfPoint(playerid,Abstand,x,y,z)) //Ist der Spieler im Abstand xx zum Punkt xyz ?
    {
    SetPlayerInterior(playerid,Interior); // Interior
    SetPlayerPos(playerid,xyz); //Pos setzen
    SetPlayerFacingAngle(playerid,a(Angle)); //Blickrichtung
    SetCameraBehindPlayer(playerid); //Kamera hinter Spieler
    }
    }
    return 1;
    }


    MfG.
    Me