Сповіщення
Очистити все

Назначення скриптам гарячих клавіш. Частина 3


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Перша частина

Друга частина

Найчастіше при розробці мода або в грі доводиться виконувати різні дії - видача інфопорцій, спавн об'єктів, включення відключення скриптового ПНО, скидання рюкзака, з'їдання антирада, запуск скриптового меню і т.д. Можна призначати гарячі кнопки своїм скриптам у будь-якій версії гри, при цьому не використовуючи головне меню, кейлоггер або редагування движка. По-перше, це кнопка, натискання якої відображає на екрані назву активного квесту (за замовчуванням – Tab). Приклад можна подивитися в моді OGSE 0692. У ньому на кнопку підвішено з'їдання антирада та включення кулемета до БТР. По-друге, є алгоритм, який використовує інші кнопки. Розглянемо його докладніше.

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

Працює ця схема на будь-якій версії гри. Не слід використовувати вже забиндені кнопки, т.к. Події, пов'язані з ними, можна перестануть виконуватися. Слід пам'ятати, що при відкритому діалоговому вікні воно перехоплює обробку кнопок і натискання не відловлюється.

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

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


   
Цитата