Введение
Функция пользовательских меню позволяет администраторам сервера добавлять новые элементы в SourceMod меню администратора. Оно предназначено для использования в качестве дополнения к плагинам команды которых нужно добавить в меню.
Администраторы могут настроить их меню с помощью конфигурационного файла sourcemod/configs/adminmenu_custom.txt, этот файл создает набор пунктов и категорий в меню администратора при запуске сервера.

Список параметров
Все эти параметры могут быть указаны для настройки меню. Большинство из них необязательны и имеют значения по умолчанию, если они не обнаружены. Смотрите 3ий пункт примеры команд и/или пункт файлы примеров для получения информации о том, как должен выглядеть и какую структуру иметь конфигурационный файл.

  • cmd - команда которая будет выполнена (#1,#2 и т.д. для параметров - никаких лимитов для них) Используйте @num чтобы послать параметр не окруженный "кавычками"
  • admin - уровень администратора требующийся для доступа к выполнению команды - смотрите уровни администраторов
  • execute - 'server' или 'player' - выбор выполнить команду на клиенте или как команду сервера - значение по умолчанию 'player'
  • 1 - Информация о параметре 1 (#1) - Вы должны указать большинство из следующих параметров
    • type - значение по умолчанию 'list' если другое не указано
      • 'groupplayer' - Список в виде групп + присоединенные игроки
      • 'group' - Список групп
      • 'player' - Список игроков
      • 'list' - Список из определенных опций
      • 'mapcycle' - автоматическое заполнение списка содержимым вашего mapcycle файла
      • 'onoff' - On или Off меню которое посылает числа 1/0 (хорошо для cvars(консольных переменных имеющих значения вкл./выкл.))
    • path - Требуется только для типа mapcycle. Путь (включая имя файла и его расширение) содержащий список карт (или другой текстовый отформатированный как mapcycle.txt) - по умолчанию имеет значение 'mapcycle.txt'
    • method - 'name', 'steamid', 'userid', 'userid2' (обратите внимание что символ '#' не указывается), 'clientid', 'ip' - необходимы только для меню groupplayer/player - по умолчанию name
    • title - Заголовок меню выбора (опционально)
    • 1-x - Список параметров - нужен только для параметров типа 'list'
    • 1.-x. - Текст описывающий параметр - нужен только для параметров типа 'list' (опционально, можно использовать в качестве текста или не использовать вообще)
    • 1* - x* - Уровень администратора требующийся чтобы видеть эту опцию (также как и остальные типы admin)
Примеры команд

PHP:
"Commands"
{
    "Fun Commands"
    {
        "Set Player Speed"
        {
            "cmd"            "sm_speed #1 @2"
            "admin"            "sm_kick"
            "execute"        "player"
            "1"
            {
                "type"         "groupplayer"
                "method"    "name"
                "title"        "Player/Team to Edit"

            }
            "2"
            {
                "type"         "list"
                "title"        "Speed Multiplier"
                "1"        "1.0"
                "1."        "Normal"
                "2"        "0.8"
                "2."        "80%"
                "3"        "0.5"
                "3."        "Half"
                "4"        "1.5"
                "4."        "50% Boost"
                "5"        "2.0"
                "5."        "Double"
                "5*"        "sm_ban"
                //restrict the double option to admins who have access to the 'sm_ban' override
            }

        }
    }
}
Выше написан пример содержимого конфигурационного файла adminmenu_custom.txt мы создали новую категорию в админском меню называемую 'Fun Commands'.


  • Эта категория содержит опцию под названием : "Set Player Speed". (установить скорость игрока)
  • Выбрав это мы бы вызвали следующее меню под названием: "Player/Team to Edit" содержащее список групп и имена игроков.
  • Далее выбрав что либо в списке мы переходим в следующее меню называющееся "Speed Multiplier".
  • Видим список опций такие как "Normal", "80%" например.
  • Пример команды отправляемой если пользователь выбран "Double" (выполняется команда на игроке FakeClientCommand) - 'sm_speed "@CT" 2.0'
Примечание: Вы можете использовать \ в качестве символа перехода. Использование \" позволит вам добавить кавычки в вашу строку.

Админские уровни
Все типы 'admin' сейчас требуют имя командной строки. Эта команда может быть уже существующей (sm_ban) или полностью воображаемой (onlycrabscanusethis).
Если команда существует в этой секции (или списке опций) потребуется точно такой же уровень доступа как и команда (включая любые перекрывающие указатели).
Пример. Вы используете sm_ban в качестве уровня администратора для под меню, поэтому все кто может получить доступ sm_ban также будут иметь доступ к этой опции меню (По умолчанию это администраторы с флагом 'ban' ). Однако если у вас есть перекрывающая sm_ban группа, то эта группа также будет иметь доступ.
Если команда не существует, вы будете должны добавить её в свои перекрывающие разделы, как если бы это была нормальная команда. Это может быть сделано в файле admin_overrides.cfg (чтобы присвоить флаг к этой команде), и/или в admin_groups.cfg (предоставить доступ к команде определенной группе или удалить её из группы, хотя они имеют флаг к использованию её)
Если не уровень администратора указан для базовой команду он по умолчанию будет первым аргументом в "cmd" строке. Например, имея
будет иметь значение по умолчанию admin override строка 'sm_ban'
Для более подробной информации смотрите Overriding Command Access

Группы подменю
Типы 'group' и 'groupplayer' добавляют предварительно настроенные параметры в меню.
Эти параметры настраиваются с помощью файла sourcemod/configs/adminmenu_grouping.txt
Они, как правило, используется для обеспечения действий над командами или всеми игроками, например как '@all' , '@t' в вашем меню.

Категории
Если вы хотите добавить элементы в уже существующую категорию, вам необходимо указать внутреннее имя этой категории. Названия для трех категорий, предусмотренных по умолчанию в SourceMod:

  • PlayerCommands
  • ServerCommands
  • VotingCommands
Сортировка

Категории и пункты добавленые с помощью динамического меню могут быть отсортированы таким же образом, как обычные элементы. Для получения дополнительной информации смотрите Admin Menu Configuration

Вам необходимо указать имя, которое вы дали команде в файле конфигурации.
Пример:
Примеры файлов
Пример настроек adminmenu_custom.txt:
adminmenu_custom.txt
Полные примеры:
adminmenu_custom.txt
admin_overrides.cfg
admin_groups.cfg