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
  • Hallöchen!


    Heute will ich euch ein Include vorstellen, dass euch erlaubt, mehrere Werte innerhalb einer Variable zu speichern, was ziemlich ressourcesparend ist, wenn man nur Ja/Nein Werte speichern will.


    Beispiele:
    // Man kann auch enums verwenden, falls man auf die Nummerierung verzichten will
    enum (+= 1)
    {
    ADMIN = 1,
    SMOD,
    MOD,
    HELPER,
    NEW
    };


    new Information;
    SetInfo(Information, ADMIN, true); // Wert setzen bei ADMIN (=1)
    SetInfo(Information, SMOD, true); // Wert setzen bei SMOD (=2)
    SetInfo(Information, MOD, false); // Wert setzen bei MOD (=3)
    SetInfo(Information, HELPER, true); // Wert setzen bei HELPER (=4)
    SetInfo(Information, NEW, false); // Wert setzen bei NEW (=5)


    PrintInfo(Information, NEW); // Alle Ergebnisse bis NEW (=5) ausgeben


    // Man kann ebenso Werte mit Hilfe von enums in Variablen setzten,
    // die ebenso enums verweden.


    enum (+= 1)
    {
    ADMIN = 1,
    SMOD,
    MOD,
    HELPER,
    NEW
    };


    enum PLAYER
    {
    A_LEVEL,
    A_OTHER
    }; new Player[MAX_PLAYERS][PLAYER];


    SetInfo(Player[playerid][A_LEVEL], ADMIN, true); // ADMIN-Bit auf 1 (0b1 == 1)
    SetInfo(Player[playerid][A_LEVEL], SMOD, true); // SMOD-Bit auf 1 (0b10 == 1)
    SetInfo(Player[playerid][A_LEVEL], MOD, true); // MOD-Bit auf 1 (0b11 == 1)


    Man kann, wie man sieht, Admin, SMod und Mod sein und gleichzeitig auch kein HELPER (0b100 == 0) oder NEW (0b101 == 0).
    Man kann dann später unter A_OTHER auch andere Informationen speichern.
    Es gibt auch keine Probleme, falls man auch andere Variablen parallel zu den A_LEVEL oder A_OTHER führt, da
    Bitsetzungen lediglich ein Schalter in den Bits der einzelnen Variablen umlegt und somit nur eine Zahl zu der Variable addiert.


    Falls man ADMIN, SMOD und MOD auf 1 setzt, dann ist A_LEVEL als Wert: 6


    Admin abfragen (laut Code):
    // GetInfo(var, field)
    GetInfo(Player[playerid][A_LEVEL], ADMIN); // Man ist nur Admin, man ist kein SMOD zugleich.


    // PrintInfo(var, cap=31)
    PrintInfo(Player[playerid][A_LEVEL], NEW); // Den Inhalt in der Konsole ausgeben (bis NEW [=5]).



    Download:
    Dropbox
    Pastebin


    Freundliche Grüße
    ioRawr


    P. S. Falls jemand ein Fehler bzw. Bug findet, dann bitte melden!

    Einmal editiert, zuletzt von d30af26d ()

  • In wiefern ist das nützlich, wenn ca 93% der Leute nicht mal wissen was bools sind?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Die Beispiele stimmen nicht :p.


    SetInfo(Player[playerid][A_LEVEL], ADMIN, true); // ADMIN-Bit auf 1 (0x1 == 1)
    SetInfo(Player[playerid][A_LEVEL], SMOD, true); // SMOD-Bit auf 1 (0x10 == 1)
    SetInfo(Player[playerid][A_LEVEL], MOD, true); // MOD-Bit auf 1 (0x11 == 1)
    0x11 ist nicht 0b11.
    0x11 ist Hexadezimal und die Zahl 17.
    0b11 ist Binäir und die Zahl 3.


    http://pastebin.com/nk1fpCLT
    Wieso kann man bei 32 Bits nur 31 Bits für Ja/Nein benutzen :\ ?


    Irgendwie glaub ich dir deswegen auch nicht wirklich,dass die Funktionieren von dir kommen^^.
    Trotzdem nett :P.

  • Booleanische Werte gehören zum Grundwissen.
    Außerdem sollte jeder die Funktionen benutzen können, falls noch Gehirnmasse vorhanden ist.


    @ Goldkiller:
    Die Include und alle Funktionen sind von mir. Ich hab nicht alles auf den ersten Schlag geschafft,
    aber jede Menge getestet, bis es funktionierte. Außerdem ist der 32. Wert oft nicht richtig und
    deshalb auch manchmal auf 1, obwohl dieser nicht gesetzt wurde.


    - Ich werde die Beispiele anpassen. [Done]
    - Man kann ja die Stellen über 31 auch probieren, da keine Abfrage das Ganze stoppt.

  • Eher als ->normaler<- Scripteranfänger
    Aber nun gut...
    Werde es vielleicht nutzen, mal sehen.
    Trotzdem 7/10 für die Mühe ;D (3 Punkte Abzug weil es schon rBits gibt ^^)

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Bei rBits hast du bei 1-Bit Variablen nicht die Möglichkeit, die anderen Bit-Stellen zu belegen (wenn ich es so ansehe).
    Bei ioBit kannst du aber bei nur einer Variablen die Möglichkeit, exakt oder weniger als 31 Ja/Nein Werte zu speichern.