Ru:Overriding Command Access (SourceMod)

From AlliedModders Wiki
Jump to: navigation, search

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

Вступление

Переопределение доступа к команде - один из самых мощных аспектов системы администрирования SourceMod. Оно позволяет вам:

  • Настроить доступ к любой команде администратора без изменения исходного кода плагина;
  • Изменить доступ к целой группе команд без изменений исходного кода;
  • Создать настраиваемые уровни доступа;
  • Разрешить или запретить команду или группу команд группе администраторов, несмотря на их флаги доступа.

Изменение прав доступа к SourceMod объекту называется переопределением (оверрайд, override). Переопределение - это произвольная строка. Если переопределенная строка совпадает с именем команды, то тогда доступ к команде будет унаследован от переопределения.

Это очень важно по двум причинам:

  • Переопределение может изменить доступ к команде.
  • Переопределение может использоваться как настраиваемый флаг доступа.

Например, плагин требует доступ к флагу "g", чтобы использовать команду sm_map. Однако, переопределение может дать/запретить использовать эту команду определенной группе и/или может изменить обычный флаг для sm_map на "k" (или любой другой).

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

Последний пример гибкости этой системы: плагин может сообщить, что пользователь должен обладать доступом к plugin_crab_usage, а это не является командой. Вместо этого плагин подразумевает "значение по умолчание" как уровень доступа, и пользователи могут выбрать, как переопределить. Это показывает, что переопределения отделены от команд, однако, команды наследуют их права доступа от переопределений одинаковых имен.

Типы Переопределений

Переопределения бывают двух видов: переопределение команды и переопределение групп команд.

Переопределение команды переопределяет уровень доступа, если у переопределения и у команды одинаковые названия. В этом случае команда автоматически наследует уровень доступа у переопределения. Пример: если существует переопределение для sm_map, то тогда любая команда администратора, имеющая название sm_map будет наследовать эти разрешения.

По аналогии с этим, переопределение групп команд переопределяет уровни доступа для всех команд, которые относятся к этой группе. Пример: Если существует переопределение групп команд для CSDM, то все команды администратора, отмеченные как "CSDM" унаследуют такие же права доступа.

Глобальная конфигурация

Уровни доступа для переопределений могут быть глобально переопределены через configs/admin_overrides.cfg. Формат файла очень прост:

Overrides
{
	"[имя1]"	"[флаги]"
	"@[группа1]"	"[флаги]"
	/* ... */
}

Группы команд отмечаются установкой символа ('@') перед названием. Пример:

Overrides
{
	"sm_map"	"k"	//Изменить доступ к команде "sm_map" на "k" флаг.
	"@CSDM"		"m"	//Изменяет доступ ко всем CSDM командам на "m" флаг.
	"sm_chat"	""	//Позволяет всем использовать "sm_chat"
}

Стоит заметить, что клиент должен будет обладать всеми флагами доступа, указанными в переопределении.

Настройка Групп

Переопределения групп позволяет разрешить или запретить группе команды. Это гораздо проще, чем настраивать флаги каждой группе.

Для более подробной информации посетите Adding Groups.