Назначение скриптам горячих кнопок. Часть 3. — S.T.A.L.K.E.R. Inside Wiki

Назначение скриптам горячих кнопок. Часть 3.

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Зачастую при разработке мода или в игре приходится выполнять различные действия - выдача инфопорций, спавн объектов, включение\отключение скриптового ПНВ, сброс рюкзака, съедание антирада, запуск скриптового меню и т.д. Можно назначать горячие кнопки своим скриптам в любой версии игры, при этом не используя главное меню, кейлоггер или правку движка. Во-первых, это кнопка, нажатие которой отображает на экране название активного квеста (по умолчанию - Tab). Пример можно посмотреть в моде OGSE 0692. В нем на кнопку подвешено съедание антирада и включение пулемета в БТР. Во-вторых, есть алгоритм, использующий другие кнопки. Рассмотрим его подробнее.

Идея довольно проста - использование консольной команды вида "bind_console demo_record 1 knumpad0". В данном примере при нажатии кнопки 0 на дополнительной клавиатуре будет выполнена команда "demo_record 1". Таким образом для каждой кнопки можно задать выполнение своей консольной команды. Мы можем взять в качестве команды какую-нибудь неиспользуемую в сингле, например "mm_net_player_name", а в качестве параметра передавать идентификатор нажатой кнопки. Теперь, если на апдейте ловить значение параметра консольной команды, то будем знать, какая кнопка нажата, и выполнять соответствующую ей функцию.

Работает эта схема на любой версии игры, однако нельзя использовать уже забинденные клавиши, т.к. они будут перебиндены на другое действие. Следует помнить, что при открытом диалоговом окне оно перехватывает обработку клавиш и нажатия не отлавливаются.

При нажатии клавиш 0,1 или 2 цифровой клавиатуры будет выведено соответствующее каждой кнопке сообщение. Отслеживать можно не только нажатие, но и отпускание кнопки. Cделать это можно аналогично случаю с кнопкой Tab. На наше счастье на одно действие можно забиндить вторую кнопку командой "bind_sec". Вариант кода с отлавливанием отпускания выглядит так:

При нажатии клавиши 0 на дополнительной клавиатуре будет выведено сообщение "нажали 0", а при отпускании "отпустили 0".Функцию update вызываем из апдейта биндера актора. Имена функций берутся из класса-перечисления DIK_keys, описание которого можно найти в lua_help.script.

Автор Charsi. Навел на идею Shadows.

Другие места
LANGUAGE