Noblock по кнопке

Noblock по кнопке 1.5

Версия Дата выпуска Скачивания Оценка  
1.5 12 0.00 звёзд 0 оценок Скачать
1.4 7 0.00 звёзд 0 оценок Скачать
1.3 90 0.00 звёзд 0 оценок Скачать
NoBlock on Key - Улучшенная версия v1.5

Автор: DENZEL519&AI​




Список улучшений

  1. Оптимизация производительности
    • Использование таймера вместо проверки каждый тик — обновление происходит каждые 0.15 секунды вместо каждого тика (66+ раз в секунду)
    • Использование квадрата расстояния вместо вычисления квадратного корня — функция GetVectorDistance с параметром squared=true
    • Кэширование квадрата радиуса для избежания повторных вычислений
    • Обновление состояния только при изменении состояния кнопки, а не каждый тик
  2. Настраиваемые параметры через CVAR
    • sm_noblock_enabled — включить/выключить плагин (1/0)
    • sm_noblock_range — радиус действия NoBlock (50-500 единиц, по умолчанию 150)
    • sm_noblock_button — выбор кнопки активации (use/duck/reload/attack/attack2)
  3. Административные команды
    • sm_noblock_reload — перезагрузить настройки плагина
    • sm_noblock_status — показать текущий статус плагина (включен/выключен, радиус, кнопка, количество активных игроков)
  4. Улучшенная обработка ошибок
    • Проверка валидности offset перед использованием
    • Проверка включенности плагина перед обработкой команд
    • Более безопасная работа с таймерами
  5. Дополнительные возможности
    • Возможность выбора различных кнопок для активации
    • Динамическое изменение настроек без перезагрузки плагина
    • Информативные сообщения для администраторов
    • Автоматическое создание конфигурационного файла — при первой загрузке плагина автоматически создается файл configs/noblock_key.cfg со всеми настройками




Сравнение производительности

ПараметрСтарая версияУлучшенная версия
Частота обновленияКаждый тик (~66+ раз/сек)Каждые 0.15 сек (~6.7 раз/сек)
Вычисление расстоянияGetVectorDistance (с sqrt)GetVectorDistance с squared=true (без sqrt)
Нагрузка на CPUВысокаяНизкая (~90% снижение)




Конфигурационный файл

Автоматическое создание:

При первой загрузке плагина автоматически создается файл конфигурации:
C-подобный:
addons/sourcemod/configs/noblock_key.cfg

Этот файл содержит все настройки CVAR с их значениями по умолчанию. Вы можете редактировать этот файл для изменения настроек плагина.

Важно: Файл создается автоматически только при первой загрузке плагина. Если файл уже существует, он не будет перезаписан.




Настройка CVAR

Доступные CVAR:

C-подобный:
// Включить/выключить плагин
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:
    C-подобный:
    sm_noblock_button duck
  • Увеличить радиус до 200 единиц:
    C-подобный:
    sm_noblock_range 200.0
  • Временно отключить плагин:
    C-подобный:
    sm_noblock_enabled 0




Команды

КомандаОписаниеФлаг доступа
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 или перезагрузите плагин для применения изменений
1. Корректная обработка нескольких игроков с активным NoBlock
2. Правильное восстановление состояния при отпускании клавиши
3. Защита от ошибок при невалидных клиентах
4. Обновление состояния каждый тик для стабильной работы
Убраны неиспользуемые параметры
Вынесена повторяющаяся логика установки состояния коллизии в отдельную функцию
Оптимизированы циклы проверки игроков с использованием continue для раннего выхода
Убрано избыточное создание массивов внутри циклов
Обновлена версия плагина до 1.3
Добавлены более информативные сообщения об ошибках
Исправлены ошибки при компиляции в Sourcemod 1.11
Убраны все лишние проверки
Упрощена логика
Оптимизировано восстановление коллизии
Исправлена опечатка
Сверху Снизу