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

    Всего на сайте: 6
    Гостей: 5
    Пользователи: - отсутствуют
    Роботы: crawl Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 27-12-2011, 01:25 Просмотров: 3034

    menu_item_setname Функция изменяет отображаемое имя пункта в меню.

    Функция будет полезна тем, кто задумывается об оптимизации плагина.
    Представьте себе следующие: Вы создаете меню во время инициализации плагина, то есть это происходит 1 раз и изменить меню по идее уже ни как, по этому что бы его менять, его создание будет вынесено в отдельную функцию и оно будет создаваться при каждом вызове, что не является оптимальным.
    Функция menu_item_setname может изменить пункт в меню, которое уже было создано.
    Обращаю внимание, что данная функция меняет только отображаемое название, остальные свойства меняют другие функции, но они отдельно поговорим.

    Инфо из newmenu.inc:
    /**
    * Sets an item's display text.
    *
    * @param menu            Menu resource identifier.
    * @param item            Item identifier.
    * @param name            New item display text.
    * @return                1 on success, 0 on failure.
    * @error                Invalid menu resource.
    */
    native menu_item_setname(menu, item, const name[]);


    Синтаксис:
    menu_item_setname ( menu, item, name[] )

    • menu - Идентификатор меню
    • item - Пункт меню
    • name[] - Новый текст для пункта меню
    Функция возвращает 1, если пункт меню был изменен, 0 если нет.

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

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

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[newmenu.inc] menu_item_setname"
    #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 /SetOptions","f_SetOptions")
        
        mTEST = menu_create("TEST", "mh_TEST")
        mcbTEST = menu_makecallback("mcb_TEST")
        
        new szItem[64]
        for (new i=1; i < 10; i++){
            format(szItem,63,"Item %i",i)
            menu_additem(mTEST,szItem, "ma_TEST", ADMIN_ALL, mcbTEST)
        }
        menu_setprop(mTEST,MPROP_EXIT, 1)
    }
    public func_menu(id)
        menu_display(id, mTEST, 0)

    public f_SetOptions()
        menu_item_setname(mTEST,0,"New name to item")
        
    public mh_TEST(id, menu, item) {
        item++
        client_print(id,print_chat,"You select %d",item)
    }
    public mcb_TEST(id, menu, item){
        //callback
    }


    Описание:
    В данном примере я немного причесал код, так смотрится красивее, да и правильнее.
    Для того что бы оценить работу примера, зайдите на сервер и попробуйте открыть меню say /menu,
    вы увидите ровный столбик имен пунктов меню. Закройте меню и выполните команду say /SetOptions, которая вызовет функцию:
    public f_SetOptions()
        menu_item_setname(mTEST,0,"New name to item")
    Внутри которой происходит изменение названия пункта меню.
    Это изменение можно производить сколько угодно раз и в любое время.
    Напоминаю. что функция изменяет только название пункта меню, остальные свойства изменяют функции menu_item_set***.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама