←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Niezamykanie jednej opcji w menu


Najlepsza odpowiedź Rivit 18.07.2014 07:16

case: 2
{
   client_cmd(id, "say /rank")
   menu_display(id, menu)
   return PLUGIN_CONTINUE
}
sprawdz. Przejdź do postu
Zablokowany

  • +
  • -
Midi - zdjęcie Midi 18.07.2014

Witam. mam pytanie dotyczące zamykania się menu. Jak zrobić by menu zamykało tylko przy niektórych opcjach? 

Przykładowy kod jest poniżej. Chciałbym by menu "Wyświetl rank" wykonywało swoją funkcję. ale nie zamykało się po kliknięciu. 

public show_menu(id) {
    new menu = menu_create("Menu serwera", "handle_menu");
    
    menu_additem(menu, "Wyświetl regulamin");
    if(cs_get_user_team(id)==CS_TEAM_CT)
        menu_additem(menu, "Kup AK47");
    else
        menu_additem(menu, "Kup M4A1");
    menu_additem(menu, "Wyświetl rank");
    menu_additem(menu, "Zobacz inne serwery");
    menu_additem(menu, "Przekaż pieniąde graczowi");
    
    menu_display(id, menu)
}
 
public handle_menu(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
 
    switch(item) {
        case 0: client_cmd(id, "say /regulamin");
        case 1: daj_bron(id);
        case 2: client_cmd(id, "say /rank");
        case 3: client_cmd(id, "say /serwery");
        case 4: client_cmd(id, "say /przelew");
    }
 
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
Odpowiedz

  • +
  • -
Najlepsza odpowiedź Rivit - zdjęcie Rivit 18.07.2014

case: 2
{
   client_cmd(id, "say /rank")
   menu_display(id, menu)
   return PLUGIN_CONTINUE
}
sprawdz.
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 18.07.2014

a no np tak (lepiej) 

public handle_menu(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
 
    switch(item) {
        case 0: client_cmd(id, "say /regulamin");
        case 1: daj_bron(id);
        case 2: client_cmd(id, "say /rank");
        case 3: client_cmd(id, "say /serwery");
        case 4: client_cmd(id, "say /przelew");
    }
 
    if(item != 2) menu_destroy(menu);
    return PLUGIN_HANDLED;
}
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 18.07.2014

CheQ, nie zadziała Twój pomysł niestety... od użycia menu_destroy nie zależy to, czy się menu zamknie czy nie, nawet lepiej: możesz użyć menu_destroy, a menu będzie dalej u gracza się pokazywać (ale nie będzie działało, tj wciśnięcie klawisza tylko je zamknie, nie wykona się akcja).

Menu zostaje zamknięte w nowym typie menu automatycznie po wciśnięciu klawisza, przed uruchomieniem forwardu, który podpięliśmy do tego menu. Jedynym sposobem jest NIE niszczenie menu oraz wyświetlenie go ponownie, tak jak pokazał to TibacK.
dasiek (18.07.2014 13:52):
Przepraszam - logika mnie zawiodła. :(
Odpowiedz

  • +
  • -
Midi - zdjęcie Midi 22.07.2014

Przepraszam, że dopiero teraz zamieszczam odpowiedź, ale wcześniej nie miałem na to czasu. 

Wszyscy dostajecie +

TibacK - za pomoc w rozwiązaniu problemu 

CheQ - za chęci

GwynBleidD - za wyjaśnienie, dlaczego nie działa sposób CheQ. 


Użytkownik Midi edytował ten post 22.07.2014 12:52
Odpowiedz
Zablokowany