Można to zrobić na dwa sposóby.
I Sposób
Wygląd funkcji sprawdzającej
stock bool:sprawdz_bronie(id, disallowed) {
new weapons[32], num;
return bool:(get_user_weapons(id, weapons, num) & disallowed);
}
Wykorzystanie stocka
// tworzymy zmienną z id wszystkich broni, które funkcja ma sprawdzić
new disallowed = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG); // możemy tutaj wypisać wszystkie id broni jakie są
// teraz robimy warunek
if(sprawdz_bronie(id, disallowed)) {
// gracz posiada "w plecaku" którąkolwiek broń podaną wyżej
}
else {
// gracz nie ma broni
}
Oczywiście można to zrobić bez zmiennej "disallowed", czyli
if(sprawdz_bronie(id, (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG))) {
// gracz posiada "w plecaku" którąkolwiek broń podaną wyżej
}
II Sposób
Wygląd funkcji sprawdzającej
stock bool:sprawdz_bronie(id, disallowed[], ile = sizeof(disallowed)) {
new weapons[32], num, pwpns, i;
pwpns = get_user_weapons(id, weapons, num);
for(i=0; i<ile; ++i) {
if(pwpns & (1<<disallowed[i]))
return true;
}
return false;
}
Wykorzystanie stocka
// tworzymy tablicę z id wszystkich broni, które funkcja ma sprawdzić
new disallowed[] = { CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG } // możemy tutaj wypisać wszystkie id broni jakie są
// teraz robimy warunek
if(sprawdz_bronie(id, disallowed)) {
// gracz posiada "w plecaku" którąkolwiek broń podaną wyżej
}
else {
// gracz nie ma broni
}
Obydwa sposoby można napisać też tak (jeśli musielibyśmy sprawdzać kilka razy, czy gracz posiada jakieś bronie)
new bool:mabronie = sprawdz_bronie(id, (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG));
if(mabronie) {
// gracz posiada "w plecaku" którąkolwiek broń podaną wyżej
}
else {
// gracz nie ma broni
}
Oczywiście można użyć też negacji, czyli
if(!sprawdz_bronie(id, disallowed)) {
// gracz nie ma broni
}
lub (w przypadku tego drugiego)
if(!mabronie) {
// gracz nie ma broni
}
Tutaj -> Nazwy broni i ammo do give_item (+ speed) znajdziecie nazwy i ID wszystkich broni oprócz noża.
Podziękowania dla Knopersa za małą pomoc.