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]).
Freundliche Grüße
ioRawr
P. S. Falls jemand ein Fehler bzw. Bug findet, dann bitte melden!