[Любая игра] Menu Creator

Тема в разделе "Утверждённые плагины", создана пользователем Reiko1231, 23 июл 2013.

  1. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Описание:
    Плагин позволяет создавать вам любые меню для вашего сервера, которые будут открываться по командам, которые вы зададите.
    [​IMG]

    Установка плагина:
    Извлечь архив в папку sourcemod/

    Использование плагина:
    Плагин создает меню на основе menu_creator.txt. Все команды выглядят как три блока, разделенные между собой вертикальным слешем (arg1|arg2|arg3).

    Описание команд для создания меню:
    Создание меню:
    create|название меню|тип меню
    название_меню для каждого меню должно быть уникальным
    типы меню: menu - меню, panel - панель, list - список

    Команда для открытия меню:
    regcmd|команда|флаги доступа
    команда - зависит от регистра
    флаги доступа - не указывать, если команда должна работать и для простых игроков

    Установка заглавия меню:
    title|заглавие

    Добавление пункта в меню:
    item|отображаемый текст|действие при нажатии
    действие при нажатии - ограничение 256 символов

    Добавление текста в меню:
    text|отображаемый текст

    Добавить кнопку "назад":
    setback|название меню
    название меню - меню, в которое возвращаться при нажатии на "назад"

    Переместить позицию кнопки:
    setpos|позиция
    только для панелей, позволяет создать меню с отсутствующими цифрами (например, нажать можно будет на 1, 3, 6)

    Время, которое будет открыто меню:
    settime|время
    время - в секундах

    Команды плагина:
    sm_mc_om <client> - открыть меню для игрока
    sm_mc_ourl <client> <url> - открыть url в motd для игрока
    sm_mc_fc <client> <command> - выполнить команду от лица игрока
    sm_mc_ol <client> - открыть список для игрока
    sm_mc_odl <client> <type> <alive> <team> - открыть список с игроками для игрока, type - clients1, clients2 - индекс клиента, userids1, userids2 - юзерайди клиента, name1, name2 - имя клиента, alive - 0 = только мертвые, 1 - только живые, 2 - живые и мертвые, team - 0 = любая, 1 - спектраторы, 2 - т, 3 - кт, 4 - т и кт.
    Алиасы:
    {nl} - перенос на новую строку "\n"
    {s} - вертикальный слеш "|"
    { } - пробел " "

    {cl} - индекс клиента, нажимающего в меню
    {uid} - юзерайди клиента, нажимающего в меню
    {name} - имя клиента, нажимающего в меню

    для списков:
    {q1} - первые кавычки
    {q2} - вторые кавычки
    {название меню} - то, что выбрал клиент в этом списке

    Консольные переменные плагина:
    sm_mc_onpostadmin - команда, выполняемая клиентом при входе на сервер (если вам нужно открыть какое-то меню после входа игрока)

    История изменений:
    (23.07.2013) - выход версии 1.0.
    (20.10.2013) - выход версии 2.0. Полностью переписан код, добавлена возможность вложения в панелях на любой уровень.
    (21.10.2013) - выход версии 2.1. Изменен синтаксис, убран стандартный "exec" конфига, вместо этого добавлен свой парсер файла, перенесены настройки меню в другой файл, убраны команды созданий меню и их настроек (этим теперь занимается парсер на запуске плагина). Добавлена поддержка любых символов в тексте, командах (благодаря парсеру).
    (20.06.2015) - выход версии 3.0.0.0. Перенос на новый синтаксис, добавлена поддержка списков, добавлена возможность выполнять разрешенные команды от лица игрока (например, say), добавлен конвар sm_mc_onpostadmin
    (08.07.2015) - выход версии 3.0.0.1. Исправлена ошибка, когда на sm_mc_onpostadmin ставилось открытие панели, и потом при нажатии на элемент панели она просто закрывалась без всяких ошибок.

    Примеры создания меню:
    см. menu_creator.txt

    Списки дают возможность вам "выслушать" мнение игрока, который его использует. Допустим, вы хотите дать игрокам возможность выбрать из меню приветствие игрока (см. menu_creator.txt, greetings меню). После выбора вы хотите, чтобы эту фразу от сказал от своего лица, и вернулся в предыдущее меню. Для этого открывается меню greetings, но уже через команду открытия списка sm_mc_ol. Затем выполняется команда sm_mc_fc {cl} "say {greetings} и открытие меню sm_mc_om {cl} mainMenu. Так как в последнем действии две команды, их нужно разделить двоеточием. Для этого перед первой и второй командой нужно поставить {q1} (такие сложности связаны с ServerCommand() сурсмода). {q2} ставятся так же, как и {q1}, только когда вам нужно, чтобы выполнялось первый раз два+ действия, и затем еще раз 2+ действия. Тогда в этом случае {1} ставится для первых действий, а {q2} - для вторых.
    Пример использования sm_mc_odl схож с sm_mc_ol, только лишь с тем отличием, что вам не надо описывать меню, оно будет составлено автоматически плагином (будет динамическим, по завершению его использования хандл будет закрыт сам), и так же содержит по два одинаковых типа (на всякий случай).

    P.S. Аналог плагина от wS Menu Creator, который он продает за 300 рублей теперь уже 100 рублей теперь уже бесплатно.

    Администрация:
    Данная тема в теге "оффтоп" обсуждется здесь
     

    Вложения:

    Последнее редактирование: 8 июл 2015
    666FoX666, vlad113, nuPAT и 16 другим нравится это.
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.973
    Симпатии:
    2.980
    Обновлено!
     
    romchik4021 и Andrey нравится это.
  3. Денис Мурзакамалов

    Денис Мурзакамалов

    Сообщения:
    40
    Симпатии:
    8
  4. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Re: Рассуждения о GPL и о платном плагине schmidt - Menu Creator

    exec конфига выполяется очень коряво, там разделители не только кавычки, но и двоеточия. А про спец символы я не знаю, обрабатывает он их или нет...
    Так что надо из твоего конфига удалять все двоеточия или менять их на другие безобидные знаки. А так же конфиг игнорирует и \, считая их за простой символ, и игнорирует так же \\, считая их как два символа...
     
  5. Денис Мурзакамалов

    Денис Мурзакамалов

    Сообщения:
    40
    Симпатии:
    8
    Re: Рассуждения о GPL и о платном плагине schmidt - Menu Creator

    Исправь пожалуйста:this:
     
  6. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Обновил версию до 2.1:
    • Входной файл обрабатывает не команда exec, а парсер. Таким образом, добавилась поддержка символов """, ":", и многих других.
    • Изменен формат создания меню\панелей.
    • Добавлено логгирование ошибок при создании меню\панелей - вплоть до номера строки с ошибкой и текста.

    Всем, кто качал более ранние версии, советую обновится и обратить внимание на то, что теперь файл с меню находится в другом месте и имеет другой вид!

    Денис Мурзакамалов, Оффтоп
     
  7. Денис Мурзакамалов

    Денис Мурзакамалов

    Сообщения:
    40
    Симпатии:
    8
    всё равно не показывает эти пункты не работает исправьте пожалуйста
    Посмотреть вложение menu_creator.txt ::
     
  8. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Внимательнее надо быть - у тебя дважды создается меню admins:
    Код:
    create		|admins											|menu
    settitle	|Администрация:									|
    additem		|☆RED☆174rus☆									|sm_mc_open {client} aboutred174rus
    setback		|main											|
    Код:
    create		|admins											|menu
    settitle	|Администрация:									|
    additem		|†Vasiliy.A 7.62†								|sm_mc_open {client} aboutVasiliy
    setback		|main											|
    А надо один раз создавать, иначе новое меню перекрывает старое, т.е. меню админс у тебя должно выглядеть так:
    Код:
    create		|admins											|menu
    settitle	|Администрация:									|
    additem		|☆RED☆174rus☆									|sm_mc_open {client} aboutred174rus
    additem		|†Vasiliy.A 7.62†								|sm_mc_open {client} aboutVasiliy
    setback		|main											|
    С этой поправкой твоё меню у меня вот так выглядит (открывается командой sm_test либо в чат !test или /test):
    [​IMG][​IMG][​IMG][​IMG]
    [​IMG][​IMG][​IMG]


    В приложении прикрепил твоё меню с исправлениями.
     

    Вложения:

    Денис Мурзакамалов нравится это.
  9. express_killer

    express_killer

    Сообщения:
    1
    Симпатии:
    0
    А можно ли сделать так, чтобы меню саво выскакивало при заходе игрока на сервер?
     
  10. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
  11. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    Hejter, это даже не задумка, а исполнение, скажем так.
     
    Hejter нравится это.
  12. rodgerland

    rodgerland

    Сообщения:
    500
    Симпатии:
    122
    Классно, запихал для сервера TF2 КлавВара.
     
  13. david777

    david777 SemJef ЛОЛ

    Сообщения:
    55
    Симпатии:
    7
    mc_create menu z_AdminMenu "Admin"
    mc_regcmd sm_a z
    mc_additem "Рестарт раунда" "mp_restartgame 1;mc_show_menu {client} z_AdminMenu"
    mc_additem "Кикнуть Игрока" "sm_kick" "sm_kick <#userid|name> [reason]"
    mc_additem "Сменить карту" "sm_map"
    mc_additem "Установить Скорость" "sm_speed #1 @2"


    Как сделать чтоб кик работал
     
  14. kings-css

    kings-css

    Сообщения:
    68
    Симпатии:
    1
    На новой версии не работает кик, если игрок нажимает не согласен с правилами
    create |main |menu
    regcmd |sm_kings |
    settitle |Тестовое меню |
    additem |Правила сервера |sm_mc_open {client} rules
    additem |Администрация |sm_mc_open {client} admins
    additem |О плагине |sm_mc_openurl {client} "http://hlmod.ru/forum/showthread.php?t=18977"

    create |rules |panel
    settitle |Правила сервера:
    additem |Открыть правила |sm_mc_openurl {client} kings-css.net/index.php?/topic/6-pravila/
    additem |Я НЕ согласен с правилами |sm_kick {name} Несогласие с правилами
    additem |Я согласен с правилами |sm_mc_open {client} main

    create |admins |menu
    settitle |Администрация: |
    additem |Reiko1231 |sm_mc_open {client} aboutReiko1231
    setback |main |

    create |aboutReiko1231 |panel
    settitle |Информация о Reiko1231: |
    addtext |Скайп: LLReiko1231LL |
    addtext |Сайт: http://all4css.ru/ |
    addtext |Сайт: http://hlmod.ru/forum/member.php?u=35796 |
    addtext |{space} |
    setback |admins |

    create |adminka |menu
    regcmd |sm_adm |z
    settitle |[Root Admin] |
    additem |Рестарт игры |mp_restartgame 1; sm_mc_open {client} adminka
    additem |Выключить сервер |exit

    Добавлено через 15 минут
    Подскажите что не так
     
    Последнее редактирование: 2 янв 2014
  15. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.973
    Симпатии:
    2.980
    kings-css, Замени
    PHP:
    additem |Я НЕ согласен с правилами |sm_kick {nameНесогласие с правилами
    на
    PHP:
    additem |Я НЕ согласен с правилами |sm_kick {clientНесогласие с правилами
     
    kings-css нравится это.
  16. kings-css

    kings-css

    Сообщения:
    68
    Симпатии:
    1
    Спасибо, но к сожеленью не работает
     
  17. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Пара человек просила сделать так, чтобы плагин открывал при входе игроку созданное меню. Включать это в функционал не считаю необходимым, поэтому сделал отдельный плагин. Компилируете плагин, запускаете его на сервере. В папке cfg/sourcemod/ появится файл onpostadmin_command.cfg. В него прописываете команду(ы), которая будет выполнена после входа игроком на сервер.

    kings-css,
    Код:
    additem |Я НЕ согласен с правилами	 |sm_kick "{name}" "Несогласие с правилами"
     

    Вложения:

    CAH4E3, zloykif, kings-css и 3 другим нравится это.
  18. zloykif

    zloykif

    Сообщения:
    137
    Симпатии:
    24
    А зря :) Опционально, было бы очень даже полезно, что-бы сторонними способами это делать не приходилось. Ведь всё равно нужно либо как то оповещать о том что это меню существует, либо насильно его запускать
     
    Последнее редактирование: 10 янв 2014
  19. rasal

    rasal

    Сообщения:
    119
    Симпатии:
    14
    А как правильно сделать чтобы сначала открылась правила, а потом все остальное.
     
  20. Илья Беззпалева

    Илья Беззпалева

    Сообщения:
    8
    Симпатии:
    4
    Помоги пожалуйста.
    Как сделать так, чтобы нажимая на пункт в меню в чат вводилась команда от клиента.

    То есть, чтобы при нажании на пункт меню, к примеру на "!admins", от клиента в чат писалось "!admins"?