Abfrage falsch?

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
  • Hey Leute ich wollte gerade eine Abfrage machen, das nur Beamten diesen
    Befehl nutzen können, aber wenn ich auch Cop bin steht da das ich das nicht
    machen darf....
    Befehl:

    if(GetPVarInt(playerid,"Fraktion")!=fPolizei||fArmy||fFBI||fSWAT)return SendClientMessage(playerid, Rot2, "Du bist dazu nicht !");

    Habe ich etwas falsch gemacht?

  • Mit einem "Stock"


    Unnötige Arbeit, wenn es nur einmal verwendet werden soll.


    if(GetPVarInt(playerid,"Fraktion")!=fPolizei && GetPVarInt(playerid,"Fraktion")!=fArmy && GetPVarInt(playerid,"Fraktion")!=fFBI && GetPVarInt(playerid,"Fraktion")!=fSWAT)
    Wenn du überprüfen willst, ob der Spieler ENTWEDER Polizei, Army, FBI oder SWAT ist, musst du mit && arbeiten, nicht mit Oder.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger


  • if(GetPVarInt(playerid,"Fraktion") != fPolize && GetPVarInt(playerid,"Fraktion") != fArmy && GetPVarInt(playerid,"Fraktion") != fFBI && GetPVarInt(playerid,"Fraktion") != SWAT) return SendClientMessage(playerid, Rot2, "Du bist dazu nicht !");


    Warum && und nicht || weil die Abfrage immer wahr sein würde wäre er zB Polizist weil er ja dann kein SWAT sein kann. Nun heißt die Abfrage wenn er Kein Polizist, Soldat, FBI und Kein SWAT Officer ist kommt die Aussage das er nicht dazu berechtigt ist


    Edit was hinzugefügt


  • Unnötige Arbeit, wenn es nur einmal verwendet werden soll.


    if(GetPVarInt(playerid,"Fraktion")!=fPolizei||GetPVarInt(playerid,"Fraktion")!=fArmy||GetPVarInt(playerid,"Fraktion")!=fFBI||GetPVarInt(playerid,"Fraktion")!=fSWAT)


    Mit freundl. Grüßen
    Padarom


    Wenn er es nur 1x verwenden will dann hast du recht ;)


    Wenn er es mehrmals verwenden will dann habe ich recht :D

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • Und dennoch ist es unnötig dafür einen Stock zu erstellen, da das nur eine Zeile ist.
    Wenn er keine Lust hat was zu kopieren, dann lohnt es sich, aber vom reinen Arbeitsaufwand passt das so, es sind ja immerhin keine 10 Zeilen, die überall wieder verwendet werden müssten.
    Und selbst wenn er einen Stock nutzt, muss die Funktion abgewandelt werden.


    Xenox:
    Wenn Spieler KEIN Polizist UND ZUGLEICH Spieler KEIN Army UND ZUGLEICH Spieler KEIN FBI UND ZUGLEICH Spieler KEIN SWAT ist, dann...
    Ansonsten würde auch die Nachricht kommen, wenn du zwar Polizist, aber kein Army-Mitglied bist.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Nein, du hast es genau andersrum gesagt. Ansonsten wäre dein Beitrag eine Zustimmung meines Beitrags sein, was ich allerdings nicht daraus lesen kann (Außer deine Wortwahl ist 3x um die Ecke gedacht, was selbst ich nicht verstehe).
    Aber egal, der TE soll das einfach mit meiner Version ausprobieren und dann sagen ob das passt oder nicht.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Und dennoch ist es unnötig dafür einen Stock zu erstellen, da das nur eine Zeile ist.
    Wenn er keine Lust hat was zu kopieren, dann lohnt es sich, aber vom reinen Arbeitsaufwand passt das so, es sind ja immerhin keine 10 Zeilen, die überall wieder verwendet werden müssten.
    Und selbst wenn er einen Stock nutzt, muss die Funktion abgewandelt werden.


    Xenox:
    Wenn Spieler KEIN Polizist UND ZUGLEICH Spieler KEIN Army UND ZUGLEICH Spieler KEIN FBI UND ZUGLEICH Spieler KEIN SWAT ist, dann...
    Ansonsten würde auch die Nachricht kommen, wenn du zwar Polizist, aber kein Army-Mitglied bist.


    Wenn ich mich nicht irre kann man es in eine zeile machen den stock:


    stock polizei(playerid) { new i = deinpvar,if(i == cop || i == fbi || i == swat | i == army)return 0,else { return 1; }


    können fehler bzw. Denkfehler drin sein bin müde und am Handy


    Ds

  • Was habe ich beim Stock falsch gemacht?



    stock IsPlayerBeamter(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion")!=fPolizei && GetPVarInt(playerid,"Fraktion")!=fArmy && GetPVarInt(playerid,"Fraktion")!=fFBI && GetPVarInt(playerid,"Fraktion")!=fSWAT) return SendClientMessage(playerid,Rot2,"Dazu bist du nicht berechtigt.");
    {
    }
    return 1;
    }



  • stock IsPlayerBeamter(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion") != fPolizei && GetPVarInt(playerid,"Fraktion") != fArmy && GetPVarInt(playerid,"Fraktion") != fFBI && GetPVarInt(playerid,"Fraktion") != fSWAT) return 0;
    return 1;
    }
    Alles andere wäre unlogisch.
    Nun nutzt du in deinem Command, bzw. was auch immer
    if(!IsPlayerBeamter(playerid)) return SendClientMessage(playerid, COLOR_RED, "NEIN!");

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • stock IstSpielerBeamter(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion") == 1 || GetPvarInt(playerid,"Fraktion") == 2))// beispiel, ich würde anstatt den Namen lieber Zahlen nehmen :)
    {
    return true;
    }
    else
    {
    return false;
    }
    }


    if(!IstSpielerBeamter(playerid))return SendClientMessage(playerid, Rot2, "Du bist dazu nicht !");


    Der Code kann ein wenig falsch sein, evtl eine ")" vergessen, bin mir nicht sicher.


    Gruß,

  • Machs so ;)

    Mit freundlichen Grüßen,