Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 9
    Гостей: 4
    Пользователи: - отсутствуют
    Роботы: robot Bot, crawl Bot, Yahoo Bot, Yandex Bot, Google AdSense

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 26-12-2011, 11:10 Просмотров: 2776

    player_menu_info Функция проверяет видит ли игрок меню или нет.

    Если вам необходимо проверить видит игрок меню или нет, то эта функция для вас.
    Она работает как со старой системой меню так и новой. Думаю что полезна данная функция будет в меню с банами и подобными вещами для избыточной проверки процесса и исключения случайных банов. А может кто то придумает более интересное применение функции player_menu_info

    Инфо из newmenus.inc:
    /**
    * Returns information about a menu (if any) the client is currently viewing.
    *
    * If newmenu is valid, then the menu will refer to the menuid associated with
    * the title.  If newmenu is not valid, and the menu is valid, then the player
    * is viewing a menu displayed with show_menu().
    *
    * Both may be invalid if the player is not viewing a menu.
    *
    * @param id            Client index.
    * @param menu            Variable to store old menu id.  If none, then <1 will be
    *                        stored.
    * @param newmenu        Variable to store new menu id.  If none, then -1 will be
    *                        stored.
    * @param menupage        Variable to store current page of the new menu, if any.
    * @return                1 if the player is viewing a menu, 0 otherwise.
    * @error                Invalid client.
    */
    native player_menu_info(id, &menu, &newmenu, &menupage=0);


    Синтаксис:
    player_menu_info(id, &menu, &newmenu, &menupage=0)

    • id - Идентификатор игрока, для кого выполняется функция
    • &menu - Переменная для сохранения идентификатора меню(старого типа) ( что бы в дальнейшем работало)
    • &newmenu - Переменная для сохранения идентификатора меню(нового типа) ( что бы в дальнейшем работало)
    • &menupage=0 - Если указать, то будет проверяться какая именно страница или любая.


    Тип функции:
    Native

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[newmenu.inc] player_menu_info"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    new mTEST // Menu
    new mcbTEST // Menu Callback

    public plugin_init() {
        
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        register_clcmd("say /menu","func_menu")
        register_clcmd("say /tmenu","f_player_see_menu")
        
        /* Menu TEST */
        mTEST = menu_create("TEST", "mh_TEST")
        mcbTEST = menu_makecallback("mcb_TEST")
        menu_additem(mTEST, "M test 1", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 2", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 3", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 4", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 5", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 6", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 7", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 8", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "M test 9", "ma_TEST", ADMIN_ALL, mcbTEST)
        
        menu_setprop(mTEST,MPROP_EXIT, 1)
        
        /* Menu End */
        
    }
    public f_player_see_menu(id){
        new menu,newmenu
        new inmenu = player_menu_info(id,menu, newmenu)
        client_print(id,print_chat,"You see menu ? - %s",inmenu ? "Yes" : "No")
        
    }
    public func_menu(id){
        //Функция показывает меню,
        //которое было сформировано еще в plugin_init
        menu_display(id, mTEST, 0)
    }
    /* Menu TEST */
    public mh_TEST(id, menu, item) {
        // Функция вызывается при выборе одного из пунктов меню
        item++
        client_print(id,print_chat,"You select %d",item)
        
    }
    public mcb_TEST(id, menu, item) {
        // Тут код для активации/де активации пунктов меню
    }


    Описание:
    Выполните команду
    say /tmenu и вы получите вопрос с ответом - видите вы меню или нет.
    Затем откройте меню
    say /menu и повторите предыдущую команду и вы увидите отличие в ответе.

    Пример использования функции вы можете посмотреть в плагине restmenu.
    Учитывая что функция не пользуется популярностью, не вижу смысла на долго на ней останавливаться.
    Если будут какие то вопросы, обсудим.А пока что на этом все.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама