Ru:Custom Admin Menu (SourceMod)

From AlliedModders Wiki
Jump to: navigation, search

Вступление

Кастом меню (Custom menu) позволяет серверным администраторам добавлять новые пункты в меню администратора. Оно было разработано, чтобы позволить плагинам добавлять свои возможности в меню, без внесения изменений в исходный код, т.к. большинство людей не обладают необходимыми знаниями. Для более подробной информации смотрите Admin Menu (SourceMod Scripting).

Настраивается кастом меню через конфиг файл (расположен по пути: sourcemod/configs/adminmenu_custom.txt) и именно этот файл определяет, какие пункты или категории будут добавлены к стандартному меню при запуске сервера.

Параметры

Ниже перечислены все парамерты, которые могут быть указаны при настройке вашего меню. Многие из них опциональны и имеют значение по умолчанию, если их не указали. Для более подробной информации смотрите Пример и/или приложение(я) Файлы с примерами.

  • cmd - команда на выполнение (#1,#2 и так далее - лимита на число параметров нет) Используйте @номер чтобы параметр не был взят в "кавычки"
  • admin - требуемый уровень администратора для доступа к этой команде - смотрите Уровни администраторов для более подробной информации
  • execute - 'server' или 'player' - кто является "выполнителем" команды - сервер или тот, кто использует эту команду. По умолчанию 'player'
  • 1 - Информация о параметре 1 (#1) - их должно быть ровно столько, сколько параметров в cmd
    • type - по умолчанию 'list', если не было указан.
      • 'groupplayer' - Лист Групп + подключенные игроки
      • 'group' - Лист Групп
      • 'player' - Лист игроков
      • 'list' - Настраеваемый список опций
      • 'mapcycle' - Автоматически заполняемое меню из карт вашего файла цикла карт
      • 'onoff' - "Вкл" или "Выкл", отсылает 1/0 (удобно для работы с консольными переменными (квары, ConVars, cvars), и им подобным)
    • path - Требуется только при type = 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')

Пример

Внимание! Если вы хотите использовать русские буквы в меню, то кодировка файла должна быть UTF-8 (без BOOM), иначе вместо букв вы увидите знаки вопроса!

"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" 
				//Double увидят лишь те администраторы, которые имеют доступ к команде "sm_ban"
			}
 
		}
	}
}

Если использовать пример выше для вашего adminmenu_custom.txt, то при запуске сервера в меню администратора будет добавлена новая категория под названием 'Fun Commands'.

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

Заметка: Вы можете использовать \ как управляющий символ. Таким образом, \" позволит вам добавить кавычку в вашу строку.

Уровни администраторов

Все 'type' 'admin' теперь требуют строчную команду. Эта команда может уже существовать (например, sm_ban) или быть полностью придуманной (например, onlycrabscanusethis).

Если команда существует, то эта опция (или лист опций) будет требовать уровень доступа, равный уровню доступа к этой команде (включая любые переопределения (оверрайды, overrides), которые вы сделали).
Например, если вы используете sm_ban как уровень администратора для подменю, то таким образом каждый, кто имеет доступ к sm_ban, будет так же иметь доступ и к этому подменю (по умолчанию доступ к этой команде является флаг бана). Однако если вы переопределили sm_ban для одной из групп ("override" "allow" - в файле admin_groups.cfg), то эта группа так же получит доступ.

Если команда не существует, то вам нужно будет добавить переопределение для этой команды, как это делается для простых команд. Это делается в файле admin_overrides.cfg (чтобы назначить флаг доступа к этой команде, и/или в файле admin_groups.cfg (чтобы дать доступ к команде определенной группе или же забрать, несмотря на то, что они имеют флаг доступа)

Если уровень доступа не был назначен, то тогда уровнем доступа будет назначен первый аргумент "cmd". Например, для команды

"cmd"		"sm_ban #1 #2"

уровнем доступа будет уровень доступа sm_ban, включая все его переопределения.

Для более подробной информации смотрите Переопределение уровней доступа

Group Подменю

Типы 'group' и 'groupplayer' автоматически добавляют заранее настроенные опции в меню. Эти опции настраиваются в файле sourcemod/configs/adminmenu_grouping.txt

Обычно они используются, чтобы добавить такие команды как '@all', '@t' и другие, для ваших меню.

Категории

Если вы хотите добавить пункт в уже существующую SourceMod категорию, вы должны будете определить его внутреннее имя в "commands" группе. Три категории, предоставленные SourceMod'ом:

  • PlayerCommands (Управление игроками)
  • ServerCommands (Управление сервером)
  • VotingCommands (Управление голосованиями)

Сортировка

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

Для того, чтобы можно было сортировать добавленный пункт, вы должны дать вашей команде уникальное имя в вашем конфигурационном файле. Для приведенного примера:

"item"	"Set Player Speed"

Дополнительные возможности

Пример использования полного потенциала меню: даем администраторам доступ к квару, не давая им флага доступа 'sm_cvars'

Добавьте квар, к которому вы хотите дать доступ, и установите 'execute' 'server'

"cmd"		"mp_friendlyfire #1"
"execute"	"server"
"admin"		"sm_kick"

Таким образом, команда будет выполнена через rcon, несмотря на обычную систему уровней доступа, и проверит доступ только к флагу, указанному в поле 'admin'. Это так же работает для любых других команд, включая sm_rcon.

Файлы с примерами

Пример файла adminmenu_custom.txt настроенный для Super Commands:
adminmenu_custom.txt

Полный пример, спасибо uE|Tekniqal:
adminmenu_custom.txt
admin_overrides.cfg
admin_groups.cfg