Timed Plugin Loader v1.1
Автор: DENZEL519&AI
Описание плагина
Timed Plugin Loader — это плагин для SourceMod, который позволяет автоматически загружать и выгружать другие плагины по расписанию. Плагин работает по времени сервера и может выполнять действия в определенные дни недели.
Основные возможности
- Автоматическая загрузка/выгрузка плагинов — плагины загружаются и выгружаются в указанное время
- Гибкое расписание — настройка времени в формате ЧЧ:ММ и выбор дней недели
- Уведомления администраторов — автоматическое уведомление за 5 минут до события
- Сохранение состояния — плагин запоминает состояние плагинов между сменами карт
- Проверка операций — автоматическая проверка успешности загрузки/выгрузки с повторными попытками
- Множественные плагины — возможность указать несколько плагинов для одного события
Установка
- Скомпилируйте файл TimedLoader.sp в TimedLoader.smx
- Скопируйте TimedLoader.smx в папку addons/sourcemod/plugins/
- Создайте файл конфигурации addons/sourcemod/configs/timed_plugins.cfg (см. раздел "Настройка")
- Перезагрузите сервер или выполните sm plugins load TimedLoader
Настройка
Плагин использует файл конфигурации:
addons/sourcemod/configs/timed_plugins.cfg
Формат конфигурационного файла:
"TimedPlugins"
{
"Event1"
{
"time" "12:00" // Время в формате ЧЧ:ММ (24-часовой формат)
"days" "all" // Дни недели (см. ниже)
"action" "1" // 1 = загрузить, 0 = выгрузить
"plugin" "example" // Имя плагина (без .smx) или несколько через запятую
}
"Event2"
{
"time" "18:30"
"days" "weekdays" // Только будние дни
"action" "0"
"plugin" "plugin1, plugin2, plugin3"
}
"Event3"
{
"time" "20:00"
"days" "mon,wed,fri" // Конкретные дни
"action" "1"
"plugin" "myplugin"
}
}
Параметры конфигурации:
| Параметр | Описание | Примеры |
|---|
| time | Время выполнения события в формате ЧЧ:ММ (24-часовой формат) | "12:00", "18:30", "00:15" |
| days | Дни недели для выполнения события | "all", "weekdays", "weekend", "mon,wed,fri" |
| action | Действие: 1 = загрузить плагин, 0 = выгрузить плагин | "1", "0" |
| plugin | Имя плагина (без расширения .smx) или несколько плагинов через запятую | "example", "plugin1, plugin2" |
Варианты параметра "days":
- "all" — все дни недели
- "weekdays" — будние дни (понедельник — пятница)
- "weekend" — выходные дни (суббота, воскресенье)
- "mon,tue,wed,thu,fri,sat,sun" — конкретные дни (можно указывать несколько через запятую)
Примеры конфигурации:
"TimedPlugins"
{
// Загружать плагин "funplugin" каждый день в 10:00
"MorningLoad"
{
"time" "10:00"
"days" "all"
"action" "1"
"plugin" "funplugin"
}
// Выгружать плагин "eventplugin" в будние дни в 18:00
"EveningUnload"
{
"time" "18:00"
"days" "weekdays"
"action" "0"
"plugin" "eventplugin"
}
// Загружать несколько плагинов в выходные в 20:00
"WeekendLoad"
{
"time" "20:00"
"days" "weekend"
"action" "1"
"plugin" "plugin1, plugin2, plugin3"
}
// Загружать плагин только по понедельникам, средам и пятницам в 15:30
"SpecificDays"
{
"time" "15:30"
"days" "mon,wed,fri"
"action" "1"
"plugin" "specialplugin"
}
}
Команды
Все команды доступны только администраторам с флагом
ROOT (z).
| Команда | Описание |
|---|
| sm_timedloader_reload | Перезагружает конфигурационный файл и показывает время следующего запланированного события |
| sm_timedloader_status | Показывает время следующего запланированного события и сколько времени осталось до него |
| sm_timedloader_resetstate | Сбрасывает все сохраненные состояния плагинов (все плагины будут считаться включенными) |
Как работает плагин
- При запуске плагин читает конфигурационный файл timed_plugins.cfg
- Плагин вычисляет время следующего запланированного события на основе текущего времени и дней недели
- Каждую секунду плагин проверяет, не наступило ли время для выполнения события
- За 5 минут до события администраторы получают уведомление в чат
- В указанное время плагин выполняет действие (загрузка или выгрузка) для всех указанных плагинов
- Плагин проверяет успешность операции и при необходимости повторяет попытку
- Состояние плагинов сохраняется в файл data/timed_plugins_state.cfg
- При смене карты плагин восстанавливает сохраненные состояния
Особенности работы:
- Плагин использует окно допуска ±64 секунды для выполнения событий (учитывает неточность таймеров)
- Если плагин не удалось загрузить, плагин автоматически повторяет попытку через 2 секунды, затем через 5 секунд
- Уведомления отправляются только администраторам с флагом ADMFLAG_GENERIC (a) или выше
- Состояния плагинов сохраняются между сменами карт, но удаляются при выгрузке самого TimedLoader
Файлы плагина
- addons/sourcemod/plugins/TimedLoader.smx — скомпилированный плагин
- addons/sourcemod/configs/timed_plugins.cfg — конфигурационный файл (создается вручную)
- addons/sourcemod/data/timed_plugins_state.cfg — файл состояний (создается автоматически)
Устранение неполадок
Плагин не загружается/выгружается в указанное время:
- Проверьте правильность формата времени в конфигурации (ЧЧ:ММ)
- Убедитесь, что указаны правильные дни недели
- Проверьте, что имя плагина указано без расширения .smx
- Используйте команду sm_timedloader_status для проверки следующего события
- Проверьте логи сервера на наличие ошибок
Ошибка "Plugin file not found":
- Убедитесь, что плагин существует в папке addons/sourcemod/plugins/
- Проверьте правильность имени плагина (регистр важен на Linux-серверах)
- Убедитесь, что имя указано без расширения .smx
Плагин не сохраняет состояние между картами:
- Проверьте права доступа к папке addons/sourcemod/data/
- Убедитесь, что папка data существует
Техническая информация
- Версия плагина: 1.1
- Требования: SourceMod 1.10+
- Префикс уведомлений: [TimedLoader]
- Окно допуска времени: ±64 секунды
- Максимум плагинов на событие: 32