AutoHotKey: Новые возможности джойстика своими руками

AutoHotKey: Новые возможности джойстика своими руками

Представляю вашему вниманию свою работу по расширению функционала джойстика. Конкретно речь идёт о скрипте для AutoHotKey, который решает следующие задачи:
1. Свободная камера под управлением хатки (обзор хаткой как в NewView. Игроки знакомые с Ил-2 поймут о чём речь)
2. Увеличение количества функций кнопок за счёт введения кнопки сдвига (Мне моих семи кнопок катастрофически не хватает).
3. Постоянное отображение имён игроков и марки самолётов при управлении джойстиком (Другими словами, пока вы отклоняете джойстик левый Alt будет зажат. Пока не реализован аналог OTM в самолётах — это будет очень полезно)
4. Удобное управление тягой на оси джойстика или на боковых кнопках мыши (Только нужные опции, максимум пользы от РУД. Экономится 4 кнопки! По умолчанию РУД оси джоя, но можно перенастроить на мышь)
5. Выпуск закрылков при максимальном отклонении по оси тангажа (Т.е. при отклонении ручки джойстика от себя или на себя до упора включаются закрылки для более резкого манёвра)
6. Переключаемые закрылки (один раз нажали кнопку — закрылки выпущены, второй раз — спрятаны)

Установка
Итак, как же использовать этот скрипт?
1. Cкачайте и установитеAutoHotKey_L
2. Настройте для AutoHotKey.exe запуск режиме администратора. Иначе скрипт не будет работать в клиенте запущенном в режиме администратора.
Делается это так:

3. Скачайте сам скрипт:

  • Предустановленная раскладка для джойстика Top Gun Fox 2 Pro: WoWp_v0.082.zip 8,13К
  • Предустановленная раскладка для джойстика MetalStrike 3D: WoWp_v0.081_MetalStrike.zip 8,3К

4. Очистите назначения кнопок джойстика, хатки и оси РУД в клиенте. Связано с тем, что AutoHotKey после обработки передаёт события джойстика в клиент.
5. Переназначьте кнопки управления в клиенте WoWp:

  • E — закрылки — переназначьте на F11
  • Левый Alt — показать игроков — переназначьте на F12
  • Левый Shift — штурмовой режим — переназначьте на Y
Читайте также  Мод радара для WoWP 0.4.1

6. Отредактируйте скрипт под свои нужды если необходимо. Как это сделать читайте ниже.
7. Запустите скрипт двойным кликом — в системном лотке появится значок , а на экране вы увидите форму настроек скрипта:

Всё, скрипт запущен и будет работать в клиенте WoWp. Выставьте настройки по желанию — они вступят в силу немедленно.
Чтобы завершить работу скрипта закройте окно настроек или нажмите правой кнопкой мыши на его значок в системном лотке и выберите Exit.

Подробное описание
Теперь подробнее о том что и как делает скрипт.
1. Скрипт работает только когда в фокусе форма клиента WoWp. Если вы переключаетесь на другое приложение или просто сворачиваете его — скрипт перестаёт работать. Ждёт когда вы обратно откроете окно игры. Кроме того отпускаются кнопки, которые могут оказаться зажатыми в процессе работы скрипта (Показать игроков — F12, форсаж — W, закрылки — F11 и пр.)
2. Кнопка сдвига режима кнопок джойстика (у меня она под номером 5) при удержании работает как кнопка Shift на клавиатуре. Например, зажимаем эту кнопку и жмём гашетку — вместо стрельбы из пулемётов запускается ракета. Подробнее см. рисунок:

Красным отмечены функции кнопки работающие при простом нажатии. Зелёным — расширенные функции работающие при удержании кнопки сдвига.Версия раскладки для джойстика MetalStrike 3D за авторством igruschka представлена ниже:

3. При управлении хаткой скрипт подсовывает клиенту команду «Нажать ПКМ» и «Сдвинуть мышку в указанном направлении». Чтобы вернуться в стандартный вид вперёд надо нажать одну из обзорных кнопок. У меня это кнопки 2 и 4.
4. Клавиша F12 (показать имена игроков) зажимается если вы отклоняете рукоятку джойстика или хатку. Если вы бросаете рукоятку F12 отпускается через 1,5 секунды (по умолчанию).
5. РУД работает так:
100 — Форсаж + 100% газ
99-50 — 100% газ
49-1 — 100% газ + Закрылки
0 — 0% газ + Закрылки
, где 100 — макимальное положение рукоятки, а 0 — минимальное. РУД можно инвертировать задав.
6. РУД на боковых кнопках мыши работает аналогично, только переключается ступенчато — последовательными нажатиями.
7. При отклонении оси Y джойстика в максимальное положение (тангаж, на себя или от себя до упора) включаются закрылки (если они есть). При этом есть возможность включения этой опции отдельно для максимального положения рукояти на себя или от себя. Следует отметить, что отклонение закрылок РУД имеет больший приоритет. Другими словами если ручка РУД в положении 49-0, то закрылки всегда будут включены вне зависимости от положения оси тангажа.

Читайте также  Фиксированная камера при виде сзади (0.4.2)

 

Как редактировать скрипт
Редактировать скрипт можно при помощи обычного Блокнота, но я настоятельно рекомендую использовать этот редактор (для того чтобы запущенный из-под него скрипт работал — редактор тоже надо настроить на запуск в режиме администратора).
Скрипт тщательно прокомментирован и разобраться в нём не представит особого труда. Для начала обратите внимание на текст между строками

; { ОБРАБОТКА КНОПОК ДЖОЙСТИКА
...
; } ОБРАБОТКА КНОПОК ДЖОЙСТИКА

расположен код обрабатывающий нажатие кнопок джойстика. Я привязал функции к стандартным кнопкам чтобы не настраивать заново при очередном обновлении клиента. Вот моя раскладка:

; Key 1
; 1) Space - Стрельба
; 2) 1 - Стрельба группой вооружения 1

; Key 2
; 1) F - Снайперский прицел
; 2) Y - Бомбовый прицел

; Key 3
; 1) R - Ракеты
; 2) B - Бомбы

; Key 4
; 1) Q - Задний вид
; 2) LShift - Камера на цель

; Key 5
; Кнопка shift джойстика. Она ничего не делает кроме сдвига режима других кнопок

; Key 6
; 1) Z - Активация микрофона
; 2) F7 - "Нужна помощь!"

; Key 7
; 1) M - Карта
; 2) N - переключение Радар/Карта

Если вас не устраивает моя раскладка — её легко исправить. Для примера приведу код обработки первой кнопки джойстика. Подробности комментариев позавидует сам КО:

; Key 1
; 1) Space - Стрельба из всех стволов
; 2) 1 - Стрельба группой вооружения 1
JoyKey1:                 ; Перехватываем нажатие 1-ой кнопки джойстика (Joy1)
if % GetKeyState(jShiftButton, "P")  ; Если при этом зажата кнопка сдвига режимов, то
{
  Send {SC002 Down} ; Кнопка "1"
  while GetKeyState("Joy1", "P")
   {
   }
  Send {SC002 Up}
}
else             ; Если же кнопка сдвига не нажата - выполняем стандартную функцию кнопки
{
  Send {Space Down}      ; Нажимаем кнопку Space
  while GetKeyState("Joy1", "P")  ; Пока кнопка (Joy1) нажата - ничего не делаем
  {
  }
  Send {Space Up}         ; Как только кнопка (Joy1) отпускается - отпускаем связанную с ней кнопку Space.
}
return

Между комментариями

; { ОБРАБОТКА РУД
...
; } ОБРАБОТКА РУД

находится обработка рукояти управления двигателем. И т.д.

Читайте также  Смещение приборов + пристрел для WoWP 0.4.0

Если вам не нужна обработка кнопок джойстика, кнопок клавиатуры или прочий фнкционал скрипта — он легко отключается в форме скрипта отключением соответствующей галочки. Настройки скрипта хранятся в файле WoWp.ini, который создаётся автоматически в той же папке где расположен скрипт.

admin

Обсуждение закрыто.

Copyright © 2018 mir-samoletov. Все права защищены

WildWeb

Яндекс.Метрика Top.Mail.Ru