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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 25-12-2011, 00:49 Просмотров: 2873

    menu_cancel Функция отменяет меню для пользователя (выбирает exit не выключая меню)

    Представьте себе ситуацию, в плагине магазина игрок открыл меню пока живой, а пункт меню выберет после того как умрет - что будет? понятное дело что в хорошем плагине это будет предусмотрено, но все же, есть функция menu_cancel, которая как бы выберет за игрока пункт выход, при этом само меню не будет закрыто у игрока. На само деле результат работы функции можно выполнить и дургими способами, вернее ими все и пользуются, так что, выбор каким методом пользоваться остается за вами.

    Инфо из newmenus.inc:
    /**
    * Cancels a player's menu, effectively forcing the player to select MENU_EXIT.
    * The menu will still exist on their screen but any results are invalidated,
    * and the callback is invoked.
    *
    * @param player        Client index.
    * @noreturn
    * @error                Invalid client index.
    */
    native menu_cancel(player);


    Синтаксис:
    menu_cancel ( player )

    • player - id игрока кому надо отменить меню.


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

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

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[newmenu.inc] menu_cancel"
    #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")
        
        /* 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 func_menu(id){
        //Функция показывает меню,
        //которое было сформировано еще в plugin_init
        
        menu_display(id, mTEST, 0)

        menu_cancel(id)
        
    }
    /* Menu TEST */
    public mh_TEST(id, menu, item) {
        // Функция вызывается при выборе одного из пунктов меню
        item++
        client_print(id,print_chat,"You select %d",item)
        
    }
    public mcb_TEST(id, menu, item) {
        // Тут код для активации/де активации пунктов меню
    }


    Описание:
    Результат работы примера:
    menu_cancel Функция отменяет меню для пользователя (выбирает exit не выключая меню)















    Обратите внимание, на то, что уже перед тем как в чат вывелась команда, в меню уже отправлена команда на выход You select -2:
    public func_menu(id){
        //Функция показывает меню,
        //которое было сформировано еще в plugin_init
        
        menu_display(id, mTEST, 0)

        menu_cancel(id)
    }

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

Реклама