Hab ich doch tatsächlich vergessen Gestern hier noch zu posten.
enum (<<= 1)
{
PLAYER_FLAG_GOD = 1,
PLAYER_FLAG_VIP, // 2
PLAYER_FLAG_MUTE, // 4
PLAYER_FLAG_INVISIBLE, // 8
PLAYER_FLAG_SPECTATED, // 16
PLAYER_FLAG_SPEEDO, // ...
PLAYER_FLAG_LOGGEDIN,
PLAYER_FLAG_LOGINCHECK,
PLAYER_FLAG_JAIL,
PLAYER_FLAG_REGISTERMSG,
PLAYER_FLAG_VTEXT,
PLAYER_FLAG_DRAWAVAILABLE,
PLAYER_FLAG_FREEZE,
PLAYER_FLAG_LOGINPANEL
};
// defined um es einfacher zu gestalten :-O
#define IsPlayerFlag(%0,%1) \
(PlayerInfo[%0][ibFlag] & (%1) )
#define AddPlayerFlag(%0,%1) \
(PlayerInfo[%0][ibFlag] |= %1 )
#define DeletePlayerFlag(%0,%1) \
(PlayerInfo[%0][ibFlag] &= ~%1 )
#define ResetPlayerFlag(%0) \
(PlayerInfo[%0][ibFlag] = 0)
// AddPlayerFlag(playerid,PLAYER_FLAG_MUTE); bsp
Sowas kann man bei vielen Sachen benutzen.
Ein gutes Beispiel wäre wohl ein Führerschein in einem Reallife-Script.
Anstatt sowas zu benutzten:
bool:HATAUTOFUEHRERSCHEIN[MAX_PLAYERS];
bool:HATMOTORRADFUEHRERSCHEIN[MAX_PLAYERS];
...
Kann man es anders regeln wie oben gezeigt.
enum (<<= 1)
{
LAPPEN_AUTO = 1,
LAPPEN_MOTORRAD,
LAPPEN_BOOT,
LAPPEN_FLUGZEUG
};
new ibFuehrerschein[MAX_PLAYERS];
Man müsste dann nur Abfragen ob das Bit gesetzt ist für einen bestimmten Führerschein.
if(ibFuehrerscehin[playerid] & LAPPEN_AUTO) { }
Spart einiges an Arbeit.Hab es selber auch so gemacht in einem angefangen Reallife-Script .
Passt zwar nicht ganz hier in den Thread aber was solls :-O