NoBlock on Key - Улучшенная версия v1.5
Автор: DENZEL519&AI
Список улучшений
- Оптимизация производительности
- Использование таймера вместо проверки каждый тик — обновление происходит каждые 0.15 секунды вместо каждого тика (66+ раз в секунду)
- Использование квадрата расстояния вместо вычисления квадратного корня — функция GetVectorDistance с параметром squared=true
- Кэширование квадрата радиуса для избежания повторных вычислений
- Обновление состояния только при изменении состояния кнопки, а не каждый тик
- Настраиваемые параметры через CVAR
- sm_noblock_enabled — включить/выключить плагин (1/0)
- sm_noblock_range — радиус действия NoBlock (50-500 единиц, по умолчанию 150)
- sm_noblock_button — выбор кнопки активации (use/duck/reload/attack/attack2)
- Административные команды
- sm_noblock_reload — перезагрузить настройки плагина
- sm_noblock_status — показать текущий статус плагина (включен/выключен, радиус, кнопка, количество активных игроков)
- Улучшенная обработка ошибок
- Проверка валидности offset перед использованием
- Проверка включенности плагина перед обработкой команд
- Более безопасная работа с таймерами
- Дополнительные возможности
- Возможность выбора различных кнопок для активации
- Динамическое изменение настроек без перезагрузки плагина
- Информативные сообщения для администраторов
- Автоматическое создание конфигурационного файла — при первой загрузке плагина автоматически создается файл configs/noblock_key.cfg со всеми настройками
Сравнение производительности
| Параметр | Старая версия | Улучшенная версия |
|---|
| Частота обновления | Каждый тик (~66+ раз/сек) | Каждые 0.15 сек (~6.7 раз/сек) |
| Вычисление расстояния | GetVectorDistance (с sqrt) | GetVectorDistance с squared=true (без sqrt) |
| Нагрузка на CPU | Высокая | Низкая (~90% снижение) |
Конфигурационный файл
Автоматическое создание:
При первой загрузке плагина автоматически создается файл конфигурации:
addons/sourcemod/configs/noblock_key.cfg
Этот файл содержит все настройки CVAR с их значениями по умолчанию. Вы можете редактировать этот файл для изменения настроек плагина.
Важно: Файл создается автоматически только при первой загрузке плагина. Если файл уже существует, он не будет перезаписан.
Настройка CVAR
Доступные CVAR:
// Включить/выключить плагин
sm_noblock_enabled 1
// Радиус действия NoBlock (в единицах)
sm_noblock_range 150.0
// Кнопка активации (use/duck/reload/attack/attack2)
sm_noblock_button use
Где настраивать:
- В автоматически созданном файле configs/noblock_key.cfg
- В файле server.cfg или sourcemod.cfg
- Через консоль сервера в реальном времени
Примеры использования:
- Использовать кнопку приседания вместо E:
- Увеличить радиус до 200 единиц:
- Временно отключить плагин:
Команды
| Команда | Описание | Флаг доступа |
|---|
| sm_noblock_reload | Перезагрузить настройки плагина и показать текущие параметры | ROOT (z) |
| sm_noblock_status | Показать статус плагина: включен/выключен, радиус, кнопка, количество активных игроков | ROOT (z) |
Технические детали
Оптимизации:
- Таймер обновления: Вместо проверки в OnPlayerRunCmd каждый тик, используется таймер с интервалом 0.15 секунды. Это снижает нагрузку на CPU примерно в 10 раз.
- Квадрат расстояния: Использование GetVectorDistance с параметром squared=true избегает вычисления квадратного корня, что экономит CPU циклы при каждой проверке расстояния.
- Кэширование: Квадрат радиуса вычисляется один раз при изменении CVAR и сохраняется в переменной g_fNoBlockRangeSquared.
- Условное обновление: Состояние обновляется только при изменении состояния кнопки в OnPlayerRunCmd, а не каждый тик.
Поддерживаемые кнопки:
- use — кнопка использования (E) — по умолчанию
- duck — приседание (Ctrl)
- reload — перезарядка (R)
- attack — атака (ЛКМ)
- attack2 — альтернативная атака (ПКМ)
Рекомендации по использованию
- Для серверов с большим количеством игроков рекомендуется использовать радиус не более 200 единиц для оптимальной производительности
- Интервал обновления (0.15 сек) можно изменить в коде, если требуется более частое обновление (но это увеличит нагрузку)
- Используйте команду sm_noblock_status для мониторинга активности плагина
- При проблемах с производительностью можно временно отключить плагин командой sm_noblock_enabled 0
- Настройки лучше всего хранить в автоматически созданном файле configs/noblock_key.cfg — это упрощает управление конфигурацией
- После изменения настроек в конфиге выполните команду sm_noblock_reload или перезагрузите плагин для применения изменений