←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Menu z lista graczy z drużyny

AnoMusiTak - zdjęcie AnoMusiTak 20.05.2014

Mam pytanie jak zrobić menu z listą graczy z drużyny , mam menu z listą graczy całego serwera ale trzeba że tylko drużyna CT smile.png

public Zapros(id)
    if(is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT)
{
    new menu = menu_create("Buduj z", "Zapros_Handle");
    new cb = menu_makecallback("Grupa_Callback");
    for(new i=0, n=0; i<=32; i++)
    {
        if(!is_user_connected(i))
            continue;
        grupa_id[n++] = i;
        new nazwa_gracza[64];
        get_user_name(i, nazwa_gracza, 63)
        menu_additem(menu, nazwa_gracza, "0", 0, cb);
    }
    menu_display(id, menu);
}

To jest linijka menu i jak zrobić żeby tylko lista drużyny CT się pokazywała smile.png

Z góry dzięki , daję ++


Użytkownik AnoMusiTak edytował ten post 20.05.2014 20:13
Odpowiedz

  • +
  • -
korake - zdjęcie korake 20.05.2014

public Zapros(id)
    if(is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT)
{
    new menu = menu_create("Buduj z", "Zapros_Handle");
    new cb = menu_makecallback("Grupa_Callback");
    for(new i=0, n=0; i<=32; i++)
    {
        if(!is_user_connected(i))
            continue;
        if(cs_get_user_team(i) != CS_TEAM_CT)
            continue;

        grupa_id[n++] = i;
        new nazwa_gracza[64];
        get_user_name(i, nazwa_gracza, 63)
        menu_additem(menu, nazwa_gracza, "0", 0, cb);
    }
    menu_display(id, menu);
}
Odpowiedz

  • +
  • -
Drago36 - zdjęcie Drago36 21.05.2014

new maxPlayers
//(...)

public plugin_cfg(){
    maxPlayers=get_maxplayers();
}

//(...)

public Zapros(id)
{
    new menu = menu_create("Buduj z", "Zapros_Handle");
    new cb = menu_makecallback("Grupa_Callback");
    for(new i = 1; i <= maxPlayers; i++)
    {
        if(is_user_alive(i) && get_user_team == 2 && i != id) // wyswietli sie lista zywych graczy z CT oraz na tej liscie twoj nick nie bedzie istanial
        {
            grupa_id[n++] = i;
            new nazwa_gracza[64];
            get_user_name(i, nazwa_gracza, 63)
            menu_additem(menu, nazwa_gracza, "0", 0, cb);
        }
    }
    menu_display(id, menu);
}
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 24.05.2014

NIE UŻYWAJ takiego menu pod ŻADNYM POZOREM!!! Żadnego wymienionego wcześniej w temacie!

Założę się, że w handlerze menu pobierasz znów listę graczy żeby się dowiedzieć który gracz został wybrany. Ale przecież od wyświetlenia menu do kliknięcia czegoś w nim może minąć sporo czasu. Zanim gracz przewertuje całą listę i znajdzie tego, co go interesuje, jeszcze przy okazji może z 3 fragi ustrzeli... a przez ten czas może kilka osób z serwera wyjść i kilka dojść przez co kolejność graczy się zmieni i wybrany gracz NIE BĘDZIE tym, który być wybrany powinien!!! A to może mieć katastrofalne skutki przy np menu banowania, możesz zbanować nawet sam siebie w ten sposób i skutecznie zablokować sobie dostęp do serwera na długi czas.

Dlatego przy tworzeniu gracza ZAWSZE w info (3 parametr menu_additem, tam gdzie teraz podajesz "0" podaj przekonwertowane na string id z get_user_userid(i). Następnie odnajdź tego gracza w handlerze po tym ID (np poprzez find_player albo lecąc pętlą po graczach i porównując userid). W ten sposób będziesz w 100% pewny, że trafisz na właściwego gracza, bo userid jest unikalne w obrębie serwera!
Odpowiedz