Nie potrzebne są żadne inne akcje, gdyż:
- Nie ma możliwości, aby żywi terroryści widzieli status VIPa w tabeli, podobnie jak żywi CT nie widzą, kto ma Bombę.
- ScoreAttrib wysyła się jako sumę binarną flag, co jest istotą całego rozwiązania i pozwala na taką prostotę działania.
- Priorytety flag układają się następująco:
- W pierwszej kolejności brana jest pod uwagę flaga DEAD, jeśli gracz nie żyje, to wyświetla się status DEAD w tabeli
- W drugiej kolejności zastosowanie ma flaga BOMB, co gwarantuje, że o ile któryś z Terrorystów posiada bombę, to jego towarzysze zawsze się o tym dowiedzą z tabeli
- W trzeciej kolejności dopiero brana jest pod uwagę flaga VIP, jeśli i jej nie ma, to dopiero wtedy pole w tabeli pozostaje puste, ostatecznie priorytety układają się rosnąco
register_message(get_user_msgid("ScoreAttrib"), "g_VipStatus");
Do kodu pluginu dodajemy funkcję
public g_VipStatus(){Przykład dla flagi "t", oczywiście ADMIN_LEVEL_H można zamienić na inną flagę vipa.
new id=get_msg_arg_int(1);
if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H){
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
}
}
Swój kod pozwoliłem sobie dodać do pierwszego postu, gdyż stary kod mierzwiego działał nieprawidłowo.
Nie uwzględniał on statusu posiadania bomby. Wszelkie inne kody także mają swoje wady. Najlepszy z tych
niepoprawnych kodów nie pokazuje statustu "Bomb" dla osób, które podniosą pakę po jej wcześniejszym upuszczeniu.
Ograniczenia
Żywi terroryści nie będą widzieli statustu Vipa.
Nie jest to błąd kodu, lecz ograniczenie po stronie silnika gry u graczy.
Nie ma możliwości ominięcia tego ograniczenia podobnie, jak żywi CT nie widzą statustu "Bomb".
Starą dyskusję w tym temacie pozostawiam poniżej tego postu jako Archiwalną.