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

    Всего на сайте: 12
    Гостей: 8
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, The Python Robot, crawl Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 18-12-2011, 00:33 Просмотров: 4747

    menu_display Функция показывает меню игроку

    И так в прошлых функциях мы составляли заголовок меню, пункты,обработчики и callback функции.
    Настало время показать наше меню игроку. Делается это с помощью функции menu_display.
    Для тех кто не читал предыдущие материалы, напоминаю:прежде чем показать игроку меню, его нужно сначала создать, добавить в него пункты меню и не забыть про функцию обработчик.

    Инфо из newmenu.inc:
    /**
    * Displays a menu to one client.  This should never be called from a handler
    * when the item is less than 0 (i.e. calling this from a cancelled menu will
    * result in an error).
    *
    * @param id            Client index.
    * @param menu            Menu resource identifier.
    * @param page            Page to start from (starting from 0).
    * @noreturn
    * @error                Invalid menu resource or client index.
    */
    native menu_display(id, menu, page=0);


    Синтаксис:
    menu_display ( id, menu, page )

    • id - Индекс игрока
    • menu - Идентификатор меню ( какое меню открыть, мало ли у вас их 10 штук в одном плагине)
    • page - Номер страницы меню, с какой необходимо открыть меню ( ну например не с первой, а сразу с пятой страницы или когда идет переход на следующую страницу меню)


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

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

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[newmenu.inc] menu_display"
    #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, "Menu test 1", "ma_TEST", ADMIN_ALL, mcbTEST)
        menu_additem(mTEST, "Menu test 2", "ma_TEST", ADMIN_ALL, mcbTEST)
        /* Menu End */


    }
    public func_menu(id){
        //Функция показывает меню,
        //которое было сформировано еще в plugin_init
        menu_display(id, mTEST, 0)
    }
    /* Menu TEST */
    public mh_TEST(id, menu, item) {
        // Функция вызывается при выборе одного из пунктов меню
    }
    public mcb_TEST(id, menu, item) {
        // Тут код для активации/де активации пунктов меню
    }


    Описание:
    И так для наглядности Все что связано с нашим меню имеет в своих названиях слово TEST.
    Грубо говоря, везде где есть это слово были произведены необходимые изменения в функциях, такие как объявление переменных или указание идентификатора.

    Сама по себе работа функции показа меню очень проста:
    menu_display(id, mTEST, 0)

    Показываем игроку с айди таким то, меню такое то, со страницы 0 ( то есть с первой)
    Если было бы в меню 30 пунктов, то можно было указать скажем с третьей страницы.И у игрока меню открылось бы сразу примерно с 23 пункта.

    Функции идущие после строки
    /* Menu TEST */

    Это функции обработчики, одна обрабатывает пункты меню до того как они появятся у пользователя, другая после того как пользователь выберет один из пунктов.

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

Реклама