Przydatne do Scriptingu: Flagi

Flagi dostępne standardowo :
[pawn]ADMIN_ALL – którakolwiek
ADMIN_IMMUNITY – flaga „a”
ADMIN_RESERVATION – flaga „b”
ADMIN_KICK – flaga „c”
ADMIN_BAN – flaga „d”
ADMIN_SLAY – flaga „e”
ADMIN_MAP – flaga „f”
ADMIN_CVAR – flaga „g”
ADMIN_CFG – flaga „h”
ADMIN_CHAT – flaga „i” *
ADMIN_VOTE – flaga „j”
ADMIN_PASSWORD – flaga „k”
ADMIN_RCON – flaga „l”
ADMIN_LEVEL_A – flaga „m”
ADMIN_LEVEL_B – flaga „n”
ADMIN_LEVEL_C – flaga „o”
ADMIN_LEVEL_D – flaga „p”
ADMIN_LEVEL_E – flaga „q”
ADMIN_LEVEL_F – flaga „r”
ADMIN_LEVEL_G – flaga „s”
ADMIN_LEVEL_H – flaga „t”
ADMIN_MENU – flaga „u”
ADMIN_ADMIN – flaga „y”
ADMIN_USER – flaga „z”[/pawn]
Flagi dodatkowe :
[pawn]
ADMIN_FLAG_V – flaga „v”
ADMIN_FLAG_W – flaga „w”
ADMIN_FLAG_X – flaga „x”
[/pawn]

żeby ich używać trzeba dodać do pluginu
[pawn]
#define ADMIN_FLAG_V (1<<21)
#define ADMIN_FLAG_W (1<<22)
#define ADMIN_FLAG_X (1<<23)
[/pawn]

sprawdzenie czy gracz ma flage
[pawn]if(get_user_flags(id) & ADMIN_LEVEL_A){
//gracz ma flage m
}[/pawn]

sprawdzanie czy gracz nie ma flagi
[pawn]if( !(get_user_flags(id) & ADMIN_LEVEL_A) ){
//gracz nie ma flagi m
}[/pawn]

sprawdzanie czy gracz ma kilku flag
[pawn]public has_flags(id,string[])
{
new ret=1
new byte

new len = strlen(string)
new p_flag = get_user_flags(id)

for(new i=0;i<=len;i++)
{
if(string[i]>=’a’ && string[i]<=’z’) byte = (1<<(string[i]-’a’))
else if(string[i]>=’A’ && string[i]<=’Z’) byte = (1<<(string[i]-’A’))
else if(string[i]==’,’ && ret==1) return 1
else if(string[i]==’,’) ret=1
if(byte!=0 && !(p_flag & byte)) ret=0

byte=0
}

return ret
}[/pawn]

Przyklady:
Jak ma dzialac na – a lub b lub c – to dajemy [pawn]has_flag(id,”a,b,c”)[/pawn]
Jak ma dzialac tylko gdy user ma flage – a i b i c – to dajemy [pawn]has_flag(id,”abc”)[/pawn]
Jak ma dzialac w przypadkach – a i b lub a i c lub b i c – to dajemy[pawn]has_flag(id,”ab,ac,bc”) [/pawn]

lub

[pawn]new flaga = (ADMIN_LEVEL_A | ADMIN_LEVEL_B | ADMIN_LEVEL_C)
if((get_user_flags(id) & flaga) == flaga) {
// KOD
}[/pawn]
lub
[pawn]new sprawdz = get_user_flags(id)
if(sprawdz & ADMIN_LEVEL_A || sprawdz & ADMIN_LEVEL_B || sprawdz & ADMIN_LEVEL_C) {
// KOD
}[/pawn]

Inne przykłady:
[pawn]if (get_user_flags(id) & DEFINICJA_FLAGI) {
//osoba ma jakas tam flage
} else {
//osoba nie ma jakies tam flagi
}[/pawn]

[pawn]
public client_putinserver(id)
{
if( get_user_flags(id) & ADMIN_BAN)
client_print(0,print_chat,”Admin wchodzi na server”)
}[/pawn]

5 komentarzy o “Przydatne do Scriptingu: Flagi

  1. Świetny artykuł 🙂
    Jeszcze jakbyś mógł dodać wczytywanie vipów z innego pliku .ini
    np. vips.ini to będzie zarąbiscie 😛

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.