06
май
2025

[TUT] Делаем базовое меню    

Категория: CS 1.6: Статьи, Автор: alawz, Просмотров: 5


Доброго времени суток,хочу рассказать вам о том как сделать базовое меню на своем зомби сервере Zombie Plague (ZP).

Начнем 1 делом прописываем инклюды которые будут нужны в написание плагина в нашем случае :
#include <amxmodx>

далее мы делаем Инициализацию плагина:
public plugin_init()
{
    //вставьте ваш код

    register_clcmd( "my_awesome_menu","AwesomeMenu");
   //регистрируем команду что бы добраться до меню
}

Далее регистрируем функцию что бы дальше можно было сделать меню:
}
public AwesomeMenu(id)
{

далее делаем переменную которая позже будет "держать меню":
new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler");

Первый Параметр - То как будет названа "шапка" меню
Второй параметр - Функция которая будет обращаться с меню (какая пункт был нажат и что он делает)

Далее Добавляем что-либо в меню:
   menu_additem(menu, "\wI'm Selection #1", "1", 0);
   menu_additem(menu, "\wI'm Selection #2", "2", 0);
   menu_additem(menu, "\wI'm Secret Selection #3", "3", ADMIN_ADMIN);

  //Первый параметр - к какому меню мы будем относить добавление этой вещи
  //Второй параметр - то как будет назван этот предмет
  //Третий параметр - данные которые мы хотим послать с этим пунктом
  //Четвертый параметр - какой флаг мы хотим установить что бы можно было выбрать данную функцию

Далее мы устанавливаем собственность на меню:
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);

menu_display(id, menu, 0);

  //Первый параметр - какому индексу показать это (Вы не можете показать это всем сразу)
  //Второй параметр - какое меню показать им (в этом случае, то что мы сделали)

После того как мы показали им меню мы должны использовать функцию которая была раньше в menu_create:
public menu_handler(id, menu, item)
{
    //Мы не будем иметь дело если вышли из меню
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        //позволяет разрушить меню когда они что-либо выбрали
        return PLUGIN_HANDLED;
    }

    //Теперь создаем некоторые переменные которые дают нам информацию о выбранном пункте
    new data[6], szName[64];
    new access, callback;
    //Эта функция даст нам информацию
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    //Далее мы посылаем данные с каждым пунктом к menu_additem
    new key = str_to_num(data);

    //Теперь Позволяет находить какой пункт был нажат
    switch(key)
    {
        case 1:
        {
            //то что будет прописываться в чат
            client_print(id, print_chat, "Вы выбрали 1 пункт");
            // если мы хотим что бы меню закрылось после выбора
            menu_destroy(menu);
            return PLUGIN_HANDLED;
        }
        case 2:
        {
            client_print(id, print_chat, "Вы выбрали пункт 2");
        }
        case 3:
        {
            client_print(id, print_chat, "Вы Выбрали пункт для Администрации");
        }
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Вот полностью код плагина:
#include <amxmodx>

public plugin_init()
{
    register_clcmd( "my_awesome_menu","AwesomeMenu");
}
public AwesomeMenu(id)
{
    new menu = menu_create("\rLook at this awesome Menu!:", "menu_handler");

    menu_additem(menu, "\wI'm Selection #1", "1", 0);
    menu_additem(menu, "\wI'm Selection #2", "2", 0);
    menu_additem(menu, "\wI'm Secret Selection #3", "3", ADMIN_ADMIN);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);

    menu_display(id, menu, 0);
}
public menu_handler(id, menu, item)
{
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

    new key = str_to_num(data);

    switch(key)
    {
        case 1:
        {
            client_print(id, print_chat, "Вы Выбрали пункт 1");
            menu_destroy(menu);
            return PLUGIN_HANDLED;
        }
        case 2:
        {
            client_print(id, print_chat, "Вы Выбрали пункт 2");
        }
        case 3:
        {
            client_print(id, print_chat, "Вы Выбрали пункт для Администрации");
        }
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Вроде все
P.S. Добавить еще статью как сделать под меню меню для голосования и т.д...



0

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



Комментарии


Добавление комментария
Ваше Имя:
Ваш E-Mail:
Новый проект аниме блоги на недре
Код:
Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: