Ru Overriding Command Access (SourceMod)

Вступ

Перевизначення доступу до команди - один із найпотужніших аспектів системи адміністрування 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. Формат файлу дуже простий:

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

Варто зауважити, що клієнт повинен матиусіпрапори доступу, зазначені в перевизначенні.

Налаштування Груп

Перевизначення груп дозволяє дозволити чи заборонити групі команди. Це набагато простіше, ніж налаштовувати прапори кожної групи.

Для отримання більш детальної інформації відвідайте Adding Groups.