Иконка ресурса

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #1
x.jpg not_him.jpg

Всё происходит в cfg/menu_creator/menu_creator.cfg - в нём есть описание всех команд и примеры того, как создавать меню (введите !menu в чат), связывать их и тд.
addons/sourcemod/translations/menu_creator.phrases.txt - перевод

Советую сначала смотреть на то, как создаются менюшки в menu_creator.cfg. Начать пытаться понимать нужно с этой строки:

// Главное меню
mc create menu MAIN "#MAIN#"

Посмотрели как было создано меню, зашли на сервер, ввели !menu и смотрите на него.
Затем просто ctrl+f по непонятным вам командам и читаем описание.

Возможные отличия от фальш-Reiko версии:

C-подобный:
- поддержка перевода, любой текст можно перевести
- любую опцию можно ограничить по флагу
- любую опцию можно сделать некликабельной или скрыть, а потом, когда нужно, кликабельной или вернуть
- при добавлении item в menu или panel можно передать в неё любую инфу + конечно текст + команды, которые будут выполнены
- возможность создавать алиасы
- при возвращении в прошлое меню вас возвращает именно на ту страницу, на которой вы были
- фильтр игроков более полный и переменных больше
- возможность удалить из списка игроков того, который только что был выбран
- возможность выполнить команды когда игрок нажимает на кнопку "назад"
- возможность получить случайное число (полезно для panel)
- при отправке menu/panel можно указать флаги, например чтобы не было какой-то опции/текста/кнопки выхода и тд
- это не фальш-Reiko версия, а от изначального автора, которого он даже не упомянул

СОЗДАНИЕ МЕНЮ (CREATE MENU)

C-подобный:
mc create menu/panel "name" ["title"]
Создать menu (может разбиваться на страницы и иметь много опций) или panel (лимит опций 7, страница одна).

name - имя menu/panel (должно быть уникальным)
title - заглавие (можно не указывать)

C-подобный:
mc cmd "cmd" ["flag"]
Создать консольную команду для вызова menu/panel ("flag" можно не указывать).
Если команда sm_x или x, то в чате она доступна как !x и /x

C-подобный:
mc back "name" ["cmds"]
Добавить в menu/panel кнопку (8) назад ("back" в menu_creator.phrases.txt).

name - имя menu/panel, в которое должно вернуть, или пустая строка "" если это не нужно.
cmds (не обязательно) - выполнить команды после нажатия на 8.

C-подобный:
mc no_exit
В menu/panel не будет кнопки выхода ("exit" в menu_creator.phrases.txt).

C-подобный:
mc pos "от 1 до 7"
Только для panel и "mc add item". Например, чтобы опция была под номером 5, а не 1.
Если вы указали позицию и добавили опцию, и снова указываете позицию, то она обязательно должна быть больше предыдущей.
Или если вы добавили x опций и только теперь указываете позицию, то она должна быть минимум x + 1.

C-подобный:
mc add item "info" "text" "cmds" ["flag"]
Добавить опцию в menu/panel

info - любая информация или пустая строка "". Пример полезности: "info" = "5", а "text" = "5 минут". "info" хранит только текст, поэтому переменные в нём не работают.
text - текст опции

cmds - rcon команды через ; которые будут выполнены после нажатия на опцию, или пустая строка "".
{name}, {map}, {steam_..} и тд оборачивайте кавычками {q}, т.к. в параметре не должно быть пробелов и символов вроде ':'

flag - если указан флаг, то опция видна лишь тем, у кого есть этот (или z) флаг.

C-подобный:
mc add text "text" ["flag"]
Добавить текст в menu/panel ("flag" можно не указывать).
Это просто белый текст, опция некликабельна.

РАЗНОЕ (OTHER)

Для "text" можно сделать "#text#", чтобы сказать что это перевод-фраза из menu_creator.phrases.txt (можно указать лишь одну перевод-фразу за раз).
Можно указать до 10 аргументов, пример:

C-подобный:
#MyPhrase#arg1{ip}arg2{INFO_GRAVITY}arg3{!Любой текст}

{ip} - существующий ключ (ip игрока) или alias
{INFO_GRAVITY} - значение, которое было выбрано в меню GRAVITY, например 0.5.
{!Любой текст} - это обычный текст (символ ! в начале важен).

В файле перевода (menu_creator.phrases.txt) аргументы имеют такой вид "#format" "{1:s},{2:s}" или если аргумент один: "#format" "{1:s}"
Аргумент всегда будет строкой, поэтому {x:s} (где x номер аргумента от 1 до 10).

Везде можно использовать:

C-подобный:
{client} - индекс игрока
{userid} - userid
{ip} - "1.2.3.4" (ip)
{name} - "Nick"
{steam_s} - "STEAM_1:1:4153990"
{steam_u} - "[U:1:8307981]"
{steam_c} - "76561197968573709"
{map} - "de_dust2" (текущая карта)
{timeleft} - 01:05 (сколько минут:секунд осталось до смены карты)
{time} - 17:55 (текущее время часы:минуты)
{players} - 15 (сколько на сервере игроков не-ботов).
{admins} - 15 (сколько на сервере админов) (проверяется флаг "d" ban и "z" root)
{q} - кавычка "
{r} - решетка # (чтобы не было конфликта с перевод-фразами "#text#")
{n} - переход на новую строку (нельзя использовать в "cmds"). Ещё можно так: mc add text " "

{RANDOM:a-b} - возвращает случайное число от a до b (a должно быть меньше b).

Если указать x, то это будет последнее полученное случайное число + 1.
{RANDOM:1-5} // Случайное число от 1 до 5. Например, выдало 2.
{RANDOM:x-7} // Случайное число от 3 до 7, т.к. x это 2 + 1.

C-подобный:
mc show {client} "name" ["time"] ["flags"]
Показать menu или panel с именем "name".
Если time указано, то через time секунд меню закроется само (0 = не закроется).
flags - флаги (по умолчанию 0)

C-подобный:
no_title - не показывать заглавие
no_text - не показывать некликабельные опции
no_item - не показывать кликабельные опции
no_back - не показывать кнопку "назад"
no_exit - не показывать кнопку "выход"

C-подобный:
mc client_join_cmd "sec" "cmds"
Команды, которые выполнятся через "sec" секунд (0 = сразу) после входа игрока {client} на сервер (OnClientPostAdminCheck).

C-подобный:
mc map_start_cmd "cmds"
Команды, которые выполнятся после смены карты (OnConfigsExecuted).

C-подобный:
mc reload
Перезагрузить плагин

C-подобный:
mc show {client} PLAYER_LIST "title" "flags" "BackMenuOrPanel" "cmds"
mc show {client} PLAYER_LIST - открыть PLAYER_LIST с предыдущими настройками. Игроков, которых уже выбирали, не будет в списке.
Показать меню со списком нужных игроков

PLAYER_LIST - это не менять
title - заглавие
flags - флаги (если несколько, то через символ |). Если 0 или no_flags, то значит флаги не указаны.

C-подобный:
no_t - в списке игроков не будет террористов
no_ct - не будет контр-террористов
no_spec - не будет наблюдателей
no_bot - не будет ботов (только реальные игроки)
no_human - не будет реальных игроков (только боты)
no_admin - не будет админов с флагом "d" ban и "z" root
no_user - не будет обычных игроков (только админы с флагом "d" ban и "z" root)
no_self - не добавлять себя в список
no_alive - не будет живых
no_dead - не будет мертвых
no_immunity - не будет проверяться иммунитет (по умолчанию проверяется)
no_select - нельзя будет нажать на ник игрока в списке (опции будут некликабельными)

BackMenuOrPanel - имя menu/panel, чтобы добавить кнопку (8) назад ("back" в menu_creator.phrases.txt), или 0 чтобы кнопки не было.
cmds - команды через символ ; которые будут выполнены после выбора игрока.

После того, как игрок (цель) выбран, можно использовать:

C-подобный:
{Tclient} - индекс выбранного игрока
{Tuserid} - userid
{Tip} - "1.2.3.4" (ip)
{Tname} - "Nick"
{Tsteam_s} - "STEAM_1:1:4153990"
{Tsteam_u} - "[U:1:8307981]"
{Tsteam_c} - "76561197968573709"

C-подобный:
mc return_target {client} {Tclient}
Ничего в этой команде менять не нужно.
Т.к. при "mc show {client} PLAYER_LIST" мы уже не увидим прошлую выбранную цель, то так мы можем вернуть цель в список игроков.

C-подобный:
mc msg console {client} "text"
Отправить сообщение в консоль.
Если есть menu/panel с именем "text", то в консоль выдаст всё его содержимое.
Если {client} это "all", то сообщение для всех, но "text" не должно быть именем menu/panel.

C-подобный:
mc msg chat {client} "text"
Отправить сообщение в чат.
Если {client} это "all", то сообщение для всех, но "text" не должно быть именем menu/panel.

Можно использовать цвета:

C-подобный:
CSGO:  {default} {team} {lightblue}  {darkblue} {purple} {darkred} {lightred} {gray} {orange} {pink} {yellowgreen} {darkgreen} {lightgreen}
CSS_STEAM:    {default} {team} {lightgreen} {green} {darkgreen} + HTML (HEX) цвета: {HEX}FFFFFF
CSS_v34:  {default} {team} {lightgreen} {green}

CSS_STEAM + CSS_v34:
Нельзя совместить {team} и {lightgreen} (вместо lightgreen отобразится team цвет)

C-подобный:
mc msg center {client} "text"
Отправить сообщение в центр экрана.

C-подобный:
mc "block_item или hide_item" {client} [x]
block_item = опция станет некликабельной (использовать только на кликабельных опциях).
hide_item = опция не будет отображена (использовать на любых опциях, даже если это просто текст).

Если параметр x не указан, то будет заблокирована последняя нажатая опция.
Если x это имя menu/panel, то будут заблокированы все опции в этом menu/panel.
Если x это all, то будут заблокированы все опции во всех menu/panel.
Если x это name3, то будет заблокирована конкретная опция.
name = имя menu/panel
3 = номер опции. Считайте каждое add сверху вниз (даже если это просто text), пример:
C-подобный:
mc create menu MyMenu
mc add .. // Это опция "MyMenu1"
mc cmd ..
mc add .. // Это опция "MyMenu2"

C-подобный:
mc "unblock_item или unhide_item" {client} "x"
unblock_item = снова сделать опцию кликабельной
unhide_item = снова сделать опцию отображаемой
Параметр "x" обязателен, он такой же как и в block_item/hide_item (см. выше)

C-подобный:
mc alias "key" "info"
Создать алиас (после создания его нельзя изменить) (использовать алиас в алиасе нельзя)

key - ключ (должен быть уникальным)
info - любая информация

Если сделать: mc alias "abc" "mc show {client} SERVER_INFO"
то теперь мы можем писать {abc} и это заменится на "mc show {client} SERVER_INFO"

C-подобный:
mc force_cmd {client} "cmds"
Выполнить консольную команду от лица игрока (например kill, say, retry).
Список доступных стандартных команд можно узнать введя в консоль "findflags SERVER_CAN_EXECUTE".
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
@_wS_, открою страшный секрет - у людей проблемы создать меню из 10 команд с тремя параметрами. ваш же плагин дает огромнейшее количество настроек, в котором человек без особых знаний разобраться не сможет. да, функционал шире, но кому он нужен такой ценой? чтобы эффективно его использовать, нужно обладать минимальными знаниями в программировании. а тут уже проще и полезнее написать свой плагин с меню, чем пользоваться этим.
90% людей не будут читать это полотно текста на три страницы А4, где всё слишком переусложнено абстактными переменными, а будут по-прежднему использовать мой Menu Creator, потому что описание укладывается на половину страницы, а разница в функционале не так велика.
 

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #3
90% людей не будут читать это полотно текста на три страницы А4, где всё слишком переусложнено абстактными переменными, а будут по-прежднему использовать мой Menu Creator, потому что описание укладывается на половину страницы, а разница в функционале не так велика.
Ага, продолжай в это верить и на это надеяться. Куда мне, "твой" Menu Creator же всегда будет НАМНОГО лучше, что не делай, даже боги не помогут. И у тебя логика выходит такая, что этот Menu Creator херовый, потому что читать долго придется, а у тебя он лучше, т.к. читать не так много да? Хватит нести бред, прими факт что твоя версия теперь ничтожна и успокойся. Ну да, я подробно расписал каждую команду, как она работает, чего ты не сделал, и мне все равно сколько текста вышло, кто захочет понять, он поймет благодаря этому тексту и примерам, а не поймет, то спросит или закажет.

Забавно даже то, что у тебя скрин был сделан на той же карте и в том же месте, что и у меня, это тоже случайность наверно, или совпадение. А, нет, ты же ничего не копируешь, я опять не прав, умоляю (на коленях) извини. Вообще с тобой и переписываться не хочу, т.к. ты хреново себя ведешь. Ты в "своем" ресурсе упомянул оригинального автора идеи? Почему ты ищешь людей, которые что-то продают и пытаешься сделать улучшенную копию, а потом выкладываешь для всех и говоришь "смотрите, он там продаёт, а я вам бесплатно даю". Твоё хобби? Ты своими мозгами придумай какую-то идею лучше и реализуй. Прям следил еще так за колебанием стоимости моей версии и был так рад наверно когда я удалил свою версию. И мне даже интересно есть ли у тебя в продаже какие-то plugins? Я даже время не пожалею, сделаю и бесплатно людям отдам и посмотрим на твою реакцию и что у тебя на душе будет, ты наверно когда кидаешь камень и не думаешь что будет, если этот камень кинут в тебя.

Тебе тут еще и спасибо ставят, я просто хренею с этого мира, да, давайте восславим справедливость и благородность великого reiko на коленях.
 

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #4

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
@Reiko1231, @_wS_, плес, давайте без очередного срача, я понимаю что на форуме стало скучно но всё же.
Оба плагина имеют преимущества и недостатки, обсуждать это можно долго, но зачем?
 

FlexMan

Участник
Сообщения
72
Реакции
28
Отличный плагин!
 
Последнее редактирование:

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #7
Пользователь _wS_ обновил ресурс Menu Creator новой записью:

Исправления/добавления

Исправлена неправильная проверка no_user флага.
Длина строки с командами 512 символов.
Команда mc noexit теперь mc no_exit
Команда mc autoshow "name" "time" удалена.
Команда mc show теперь имеет вид mc show {client} "name" ["time"] ["flags"]
Команда mc block_item {client} [x] теперь имеет вид mc "block_item или hide_item" {client} [x]
Команда mc unblock_item {client} "x" теперь имеет вид mc "unblock_item или unhide_item" {client} "x"

Добавлены:

C-подобный:
mc client_join_cmd "cmds"
mc...

Узнать больше об этом обновлении...
 

FlexMan

Участник
Сообщения
72
Реакции
28
После обновления,при заходе на сервер,правила на английском языке,но в !menu уже на русском! (Если в файле перевода, eng поставить русский текст,то будет все работать.)
А так обновление отличное!
 
Последнее редактирование:

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #9
После обновления,при заходе на сервер,правила на английском языке,но в !menu уже на русском! (Если в файле перевода, eng поставить русский текст,то будет все работать.
Не знаю, проверил только что в css (steam), на русском у меня и после входа.
Может по какой-то причине SM не успевает определить язык клиента, тогда только таймер запускать.

В addons\sourcemod\configs\core.cfg у тебя же "AllowClLanguageVar" "On" ?
B клиенте cl_language "russian" ?
 

FlexMan

Участник
Сообщения
72
Реакции
28
Не знаю, проверил только что в css (steam), на русском у меня и после входа.
Может по какой-то причине SM не успевает определить язык клиента, тогда только таймер запускать.

В addons\sourcemod\configs\core.cfg у тебя же "AllowClLanguageVar" "On" ?
B клиенте cl_language "russian" ?

"AllowClLanguageVar" "On"
Клиент на русском
 

FlexMan

Участник
Сообщения
72
Реакции
28
--- Добавлено позже ---
@_wS_, если я хочу добавить panel,то в начале я должен добавить: mc add item "" "#TEST#" "mc show {client}
Потом уже :
mc create panel TEST "#TEST#"
mc add text "#test_info#{n} {n}"

Дальше добавляю переводы и панель будет рабочей?
Если я просто хочу информативную панель,например под донат?
--- Добавлено позже ---
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #13
Не знаю, проверил только что в css (steam), на русском у меня и после входа.
Может по какой-то причине SM не успевает определить язык клиента, тогда только таймер запускать.

В addons\sourcemod\configs\core.cfg у тебя же "AllowClLanguageVar" "On" ?
B клиенте cl_language "russian" ?
у меня в вип тоже самое. СМ еще не получил язык клиента в момент когда отправляет это меню при входе и поэтому используется дефолтный язык
 

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #14
--- Добавлено позже ---
@_wS_, если я хочу добавить panel,то в начале я должен добавить: mc add item "" "#TEST#" "mc show {client}
Потом уже :
mc create panel TEST "#TEST#"
mc add text "#test_info#{n} {n}"

Дальше добавляю переводы и панель будет рабочей?
Если я просто хочу информативную панель,например под донат?
--- Добавлено позже ---
В любом порядке, т.к. "mc show" это команда из раздела "РАЗНОЕ (OTHER)".
Единственное, где надо быть внимательным, это команды из раздела "СОЗДАНИЕ МЕНЮ (CREATE MENU)", их нужно использовать только после "mc create" (в любом порядке).
 

СергейDOC

Участник
Сообщения
200
Реакции
12
Я пытался разобраться, но не получается что то, функционал расширенный, что мне очень нравится , но реализовать свои идеи ещё не получается
 

СергейDOC

Участник
Сообщения
200
Реакции
12
В чем сложности?
В командах, у меня есть мысли что я хочу и наброски, но вот как их реализовать не могу , ошибок много, то команды не работают , то перевод забуду, то точку или ещё что то потеряю
Сложновато, ну пытаюсь, даже что бы сделать простенький меню , не получается
 

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #18
В таких случаях нужно давать свой код и спрашивать почему он не работает, а не писать тут "я не могу, не получается", и не получится тогда.
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #19
В таких случаях нужно давать свой код и спрашивать почему он не работает, а не писать тут "я не могу, не получается", и не получится тогда.


как правильно выполнить команду от имени игрока?

mc add item "" "Сменить модель ножа" "mc force_cmd {client} "sm_knife"

не могу разобраться
 

_wS_

Участник
Сообщения
383
Реакции
760
  • Автор ресурса
  • #20
"mc force_cmd {client} "sm_knife"
За кавычками не следишь, у тебя две открытых и одна закрытая.
Список команд ("cmds") - это должен быть один аргумент (одно значение), для этого оно оборачивается кавычками.
Если мы обернули этот аргумент кавычками, то внутри ставить другие кавычки нельзя, можно только {q}, и то не всегда.
Или так "mc force_cmd {client} sm_knife" или так "mc force_cmd {client} {q}sm_knife{q}"
У тебя одна команда, в ней нет пробелов и левых символов типа : поэтому кавычки не обязательны.
 
Сверху Снизу