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.