Noblock по кнопке

Noblock по кнопке 1.7

Версия Дата выпуска Скачивания Оценка  
1.7 6 0.00 звёзд 0 оценок Скачать
1.6 7 0.00 звёзд 0 оценок Скачать
1.5 458 0.00 звёзд 0 оценок Скачать
Исправлено всё что описал Grey83 Noblock по кнопке
  • Мне нравится
Реакции: Аластар
  • Добавлено кэширование
  • Оптимизированы таймеры
  • Оптимизированы циклы
  • Оптимизирована нагрузка на цп.
  • Устранена утечка памяти
  • Мне нравится
Реакции: Аластар
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
  • Мне нравится
Реакции: Аластар
Убраны все лишние проверки
Упрощена логика
Оптимизировано восстановление коллизии
Исправлена опечатка
  • Мне нравится
Реакции: Аластар
Сверху Снизу