DENZEL519
Работаю через AI !
- Сообщения
- 502
- Реакции
- 322
Описание:
Плагин Key Bind Manager позволяет биндить любые клавиши игрока на выполнение команд через файл конфигурации. При нажатии назначенной клавиши автоматически выполняется указанная команда.Key Bind Manager - Плагин для бинда клавиш на команды
Основные возможности
- Бинд любых клавиш на команды через файл конфигурации
- Поддержка всех основных клавиш Source Engine (E, R, ЛКМ, ПКМ, Пробел, Ctrl и т.д.)
- Автоматическое создание файла конфигурации при первом запуске
- Поддержка различных типов команд (SourceMod, чат, консольные)
- Возможность включения/отключения биндов без перезагрузки плагина
- Перезагрузка конфигурации без перезапуска сервера
- Отслеживание только новых нажатий клавиш (не срабатывает при удержании)
Как работает плагин
1. Инициализация
При запуске плагина:
- Регистрируются команды для перезагрузки конфигурации:
иC-подобный:
sm_keybind_reloadC-подобный:sm_kb_reload - Создается путь к файлу конфигурации:
C-подобный:
cfg/sourcemod/key_bind.cfg - Инициализируется массив для хранения биндов
- Загружается конфигурация из файла
2. Загрузка конфигурации
Плагин читает файл
C-подобный:
cfg/sourcemod/key_bind.cfg
- Если файл не существует - создается файл с примерами биндов
- Если директория
не существует - она создается автоматическиC-подобный:
cfg/sourcemod - Парсится секция
со всеми биндамиC-подобный:
"Binds" - Каждый бинд проверяется на корректность (наличие клавиши и команды)
- Некорректные бинды пропускаются с записью в лог
- Все загруженные бинды сохраняются в памяти
3. Отслеживание нажатий клавиш
Плагин использует хук
C-подобный:
OnPlayerRunCmd
- Каждый тик проверяются все зарегистрированные клавиши
- Сравнивается текущее состояние кнопок с предыдущим
- Если клавиша только что была нажата (не была нажата в прошлом кадре, но нажата сейчас) - выполняется команда
- Состояние кнопок сохраняется для следующего тика
- Команды выполняются через таймер с задержкой 0.0 для безопасного выполнения
4. Выполнение команд
В зависимости от типа команды используется соответствующий метод:
- Команды чата (начинаются с
илиC-подобный:
!) - выполняются черезC-подобный:/C-подобный:say - SourceMod команды (начинаются с
) - выполняются черезC-подобный:
sm_C-подобный:FakeClientCommand - Команды say/say_team - выполняются через
C-подобный:
FakeClientCommand - Обычные консольные команды - выполняются через
C-подобный:
ClientCommand
Поддерживаемые клавиши
Плагин поддерживает следующие клавиши Source Engine:| Название | Клавиша | Описание |
|---|---|---|
|
C-подобный:
| E | Использование/взаимодействие |
|
C-подобный:
| R | Перезарядка оружия |
|
C-подобный:
| ЛКМ | Атака/стрельба |
|
C-подобный:
| ПКМ | Альтернативная атака/прицел |
|
C-подобный:
| Пробел | Прыжок |
|
C-подобный:
| Ctrl | Приседание |
|
C-подобный:
| W | Движение вперед |
|
C-подобный:
| S | Движение назад |
|
C-подобный:
| A | Поворот влево |
|
C-подобный:
| D | Поворот вправо |
|
C-подобный:
| A (боковое) | Боковое движение влево |
|
C-подобный:
| D (боковое) | Боковое движение вправо |
|
C-подобный:
| Shift | Бег |
|
C-подобный:
| Shift (альтернативный) | Ходьба |
|
C-подобный:
| ПКМ (в некоторых играх) | Прицеливание |
|
C-подобный:
| 4 | Первая граната |
|
C-подобный:
| 5 | Вторая граната |
|
C-подобный:
| 1 | Первое оружие |
|
C-подобный:
| 2 | Второе оружие |
|
C-подобный:
| Tab | Таблица результатов |
|
C-подобный:
| Q | Альтернативная клавиша 1 |
|
C-подобный:
| F | Альтернативная клавиша 2 |
Файл конфигурации
Расположение
Файл конфигурации находится по пути:
C-подобный:
cfg/sourcemod/key_bind.cfg
Формат файла
C-подобный:
"KeyBinds"
{
"Binds"
{
"ИмяБинда1"
{
"key" "IN_USE"
"command" "say_team Привет команде!"
"enabled" "1"
}
"ИмяБинда2"
{
"key" "IN_RELOAD"
"command" "sm_menu"
"enabled" "0"
}
}
}
Параметры бинда
- key - название клавиши (например,
,C-подобный:
IN_USE)C-подобный:IN_RELOAD - command - команда для выполнения (может быть SourceMod командой, командой чата или консольной командой)
- enabled - включен ли бинд (
- включен,C-подобный:
1- выключен)C-подобный:0
Примеры команд
-
- сообщение в командный чатC-подобный:
say_team Привет команде! -
- открыть меню SourceModC-подобный:
sm_menu -
- выполнить команду NoBlockC-подобный:
sm_noblock -
- команда чата (будет выполнена какC-подобный:
!voteban)C-подобный:say !voteban -
- команда чата (будет выполнена какC-подобный:
/help)C-подобный:say /help
Команды плагина
sm_keybind_reload
- Описание: Перезагружает конфигурацию биндов клавиш
- Доступ: Администраторы с флагом
C-подобный:
ADMFLAG_CONFIG - Альтернатива:
C-подобный:
sm_kb_reload - Использование:
C-подобный:
sm_keybind_reload
Технические детали
Структура данных
Каждый бинд хранится в структуре
C-подобный:
KeyBind
-
- название клавиши (строка)C-подобный:
keyName[32] -
- флаг клавиши (число, битовая маска)C-подобный:
keyFlag -
- команда для выполнения (строка)C-подобный:
command[256] -
- включен ли бинд (булево значение)C-подобный:
enabled
Алгоритм работы
- При загрузке плагина читается файл конфигурации
- Все бинды загружаются в массив
C-подобный:
g_KeyBinds - При каждом тике в
проверяются все биндыC-подобный:
OnPlayerRunCmd - Для каждого бинда сравнивается текущее состояние кнопки с предыдущим
- Если кнопка только что была нажата - команда добавляется в очередь через таймер
- Таймер выполняет команду в безопасном контексте
- Команда выполняется через соответствующий метод в зависимости от типа
Безопасность
- Проверка валидности клиента перед выполнением команды
- Игнорирование ботов (
)C-подобный:
IsFakeClient - Проверка подключения клиента (
)C-подобный:
IsClientInGame - Выполнение команд через таймер для избежания проблем в
C-подобный:
OnPlayerRunCmd - Очистка состояния при отключении клиента
Установка
- Скомпилируйте плагин:
C-подобный:
spcomp key_bind.sp - Скопируйте
вC-подобный:
key_bind.smxC-подобный:addons/sourcemod/plugins/ - Перезапустите сервер или выполните
C-подобный:
sm plugins load key_bind - При первом запуске автоматически создастся файл
C-подобный:
cfg/sourcemod/key_bind.cfg - Отредактируйте файл конфигурации под свои нужды
- Выполните
для применения измененийC-подобный:
sm_keybind_reload
Логирование
Плагин записывает в лог следующую информацию:- Загрузку каждого бинда с указанием имени, команды, клавиши и статуса
- Общее количество загруженных биндов
- Ошибки при загрузке конфигурации
- Создание файла конфигурации по умолчанию
- Ошибки при создании директорий
Ограничения
- Плагин отслеживает только новые нажатия клавиш (не срабатывает при удержании)
- Некоторые клавиши могут конфликтовать с игровыми механиками (например,
для стрельбы)C-подобный:
IN_ATTACK - Бинды применяются ко всем игрокам одинаково (нет индивидуальных настроек)
- Максимальная длина команды - 256 символов