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

    Всего на сайте: 6
    Гостей: 2
    Пользователи: Neshropl
    Роботы: crawl Bot, crawl Bot, Mail Ru

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 12-12-2011, 12:12 Просмотров: 7529

    show_menu Функция показывает меню клиенту

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

    Инфо из amxmodx.inc:
    /* Displays menu. Keys have bit values (key 1 is (1<<0), key 5 is (1<<4) etc.). */
    native show_menu(index,keys,const menu[], time = -1, const title[] = "");


    Синтаксис:
    show_menu ( index, keys, const menu[], time = -1, title[] = "" )

    • index - Айди игрока которому будет показано меню
    • keys - Битовая сумма кнопок меню которые можно будет нажать игроку
      #define MENU_KEY_1    (1<<0)
      #define MENU_KEY_2    (1<<1)
      #define MENU_KEY_3    (1<<2)
      #define MENU_KEY_4    (1<<3)
      #define MENU_KEY_5    (1<<4)
      #define MENU_KEY_6    (1<<5)
      #define MENU_KEY_7    (1<<6)
      #define MENU_KEY_8    (1<<7)
      #define MENU_KEY_9    (1<<8)
      #define MENU_KEY_0    (1<<9)

    • const menu[] - Массив или отформатированная строчка с заголовком и пунктами меню.
    • time = -1 - Сколько времени будет отображаться меню ( -1 бесконечно )
    • title[] = "" - Идентификатор меню


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

    Пример:

    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[amxmodx.inc] show_menu"
    #define VERSION "1.0"
    #define AUTHOR "Admin"
    #define Menu_Keys (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_menu("my_menu",Menu_Keys,"Pressed",0)
        
        register_clcmd("say /menu","ShowMenu")
    }
    public ShowMenu(id) {

        new menu[192]
        new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0

        format(menu,191,"\yYou first menu:^n^n\w1. One^n2. Two^n3. Three^n4. Five^n5. None^n^n^n0. Exit")
        show_menu(id, keys, menu, -1, "my_menu")
        return PLUGIN_HANDLED

    }
    public Pressed(id, key) {
        switch (key) {
            case 0:client_print(id,print_chat,"Menu N 1")
            case 1:client_print(id,print_chat,"Menu N 2")
            case 2:client_print(id,print_chat,"Menu N 3")
            case 3:client_print(id,print_chat,"Menu N 4")
            case 4:client_print(id,print_chat,"Menu N 5")
        }
        return PLUGIN_HANDLED
    }



    Описание:
    Функция показа меню сама по себе очень простая, всего то необходимо указать в ней:
    1. id игрока кому будет показано меню ( Думаю и так все понятно)
    2. Какие кнопки может игрок нажать
      Вот тут пару слов скажу.
      Обратите внимание на строку:
          new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0

      Именно в этой строке указанно какие кнопки сможет нажать игрок в меню, даже если пункта меню не будет видно, нажать его можно будет.
      То есть Графическое отображение и выполняемые команды не связаны на прямую.
    3. Текст меню и заголовка.Как составляется меню:
      Меню составляется в одну строку с помощью переноса строк (^n). Первая строка это будет название меню, далее что бы перенести строку необходимо поставить вот эти 2 символа^n, они означают что следующий текст будет на следующей строке. Следующая строка это и будет следующим пунктом меню.Вот так будет нагляднее выглядеть:
      \yYou first menu:^n^n
      \w1. One^n
      2. Two^n
      3. Three^n
      4. Five^n
      5. None^n^n^n
      0. Exit
    4. Время показа ( все понятно из синтаксиса)
    5. id меню Необходимо указать тот айди что указывался при регистрации меню, иначе не будет вызываться исполняющаяся функция.


    Собственно меню показано, пункт выбран и передана информация о игроке и пункте что он выбрал в функцию:
    public Pressed(id, key) {

    Внутри которой уже и происходят необходимые действия для каждого пункта.

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

Реклама