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

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, то закрылки всегда будут включены вне зависимости от положения оси тангажа.

 

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

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

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

; 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.ini, который создаётся автоматически в той же папке где расположен скрипт.

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

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

Мод отключает «раскачивание» самолета при виде сзади, жестко фиксируя к нему камеру. Может быть полезно, если вы используете вид сзади и вам кажется, что самолет со слишком большой задержкой реагирует на управление.

Мод не влияет на новую схему управления «World of Tanks мышь» (в 0.4.2 просто «мышь»).
Как это работает:
В виде на самолет сзади камера немного запаздывает за его маневрами, создавая впечатление красивой кинематографической сцены. К несчастью, поскольку самолет занимает лишь небольшую часть экрана, да и внимание часто бывает приковано к другим объектам, игрок естественным образом отмечает в основном положение горизонта на экране, т.е. как его видит игровая камера. А поскольку она с запаздыванием повторяет движение самолета, может создаваться впечатление, что самолет очень долго реагирует на команды. Обычно это приводит к постоянной раскачке самолета по крену при попытках поймать противника в прицел, а при игре на мыши ощущению, что курсор живет своей жизнью при резких маневрах и после каждого требуется коррекция.
Мод жестко фиксирует камеру к самолету, убирая эту кажущуюся задержку.

Установка:
Скачать мод фиксированной камеры для WoWP 0.4.2
Извлечь из архива файл aircraft_camera_presets.xml в папку (папка игры)\res\​sc​ri​pts\db\.
В архиве также исходный файл, если захочется вернуться обратно.
С патча 0.3.5 изменилось расположение файлов настроек, поэтому для установки рекомендуется использовать программу для установки модов на WoWP.
Мод имеет 4 варианта:
• Фиксированная камера [0] — возвращает настройки по умолчанию (но не восстанавливает исходные файлы игры!)
• Фиксированная камера [1] — только фиксирует камеру
• Фиксированная камера [2] — фиксирует камеру + отключает визуальные эффекты форсажа и выключения двигателя
• Фиксированная камера [3] — фиксирует камеру, отключает эффекты и увеличивает максимальное отдаление при виде сзади (работает примерно на половине самолетов).

Автор: umdms

Закрылки для лентяев

Закрылки для лентяев

Рубяты, по просьбе трудящихся нашёл, как сделать кнопку закрылок фиксированной, т.е. нажал-открылись, нажал-закрылись. Всё очень просто. Надо файл с закрылками переписать вот так

<CMD_FLAPS_UP>
<FIRE_KEYS>
  <FIRE_KEY>
   <fireKeyName> KEY_E </fireKeyName>
   <fireKeyDevice> 0 </fireKeyDevice>
  </FIRE_KEY>
  <FIRE_KEY>
   <fireKeyName> KEY_T </fireKeyName>
   <fireKeyDevice> -1 </fireKeyDevice>
  </FIRE_KEY>
</FIRE_KEYS>
<fireAxisIndex> -1 </fireAxisIndex>
<fireAxisSign> 0 </fireAxisSign>
<fireAxisDevice> 0 </fireAxisDevice>
<isBase> -1 </isBase>
<switchingStyle> 0 </switchingStyle>
</CMD_FLAPS_UP>

В этом случае у вас появится доп. окно при нажатии *закрылки* в настройках. Будет предложен выбор *открыты при удержании клавиши* и *открыты при нажатии клавиши*. Закрываются при повторном нажатии.
Поскольку просьба исходила от джойстиководов, то для них персонально архив с уже переделанным файлом джойстика. Вставить его надо с заменой в папки C:\Documents and Settings\Admin\Application Data\Wargaming.net\World of Warplanes и C:\Games\World_of_Warplanes\res\scripts\input_mapping (один и тот же файл 2раза)). Путь для ХР, для семёрки по аналогии.

Моды на управления для WoWP — танкомыши и джойстика

Моды на управления для WoWP — танкомыши и джойстика

От автора (с оф. форума)
Хотел в данной теме систематизировать свою работу по изменениям в управлении, однако понимаю, что ещё поле не паханное и не сеянное даже, но многие изменения которые могут быть полезны вкупе, так сказать, я сюда выложу.
Начну с описания конечно же), во-первых хочу отдельно остановиться на управлении полётом с клавиатуры в вариантах мышь 3.5-танкомышь, в обоих случаях переписана скорость реакции клавиатуры, т.е. самолёт реагирует на нажатие клавиши(любой) сразу выводя её в макс. значение. Само это изменение сильно меняет полёт с клавы доводя её до состояния самого суперского джойстика по реакции(во многих случаях и обгоняя)).

Мышь прописанная как 4.1 в названии, теперь работает как 3.5, танкомышь осталась прежней.
Кроме этого, добавлена возможность выбора действия на кнопки форсажа и закрылок, т.е. вы сможете выбрать в каком режиме эти кнопки будут функционировать, окно выбора появляется при нажатии в настройках на определение клавиш закрылок и форсажа соответственно. Это же справедливо и по отношению к клавишам настройки джойстика. В файлах джоста кроме доп.кнопок и уничтожения мёртвых зон ничего не стал делать, но позже дополню другими кривыми, поскольку те, что выписывает прога мне не очень нравятся.
Теперь подробнее о том, как всё это делается. По старой занудной привычке пути прописываю только для ХР, *семёрошники* страдают, грызут кактус и находят по аналогии).
Итак, если вам надо поменять мышиное управление, то, вы берёте эти 3 файла

  • mouse_directional.xml
  • mouse_direct_control.xml
  • mouse035.xml

И вставляете их в 2!!! места, в папку input_mapping по пути:C:\Games\World_of_Warplanes\res\scripts\input_mapping
и в папку World of Warplanes по пути:C:\Documents and Settings\Admin\Application Data\wargaming.net\World of Warplanes.
Если вам надо джост, то вы по той же схеме вставляете туда этот файл
joystick.xml

В качестве приятного дополнения отрезал от файлов Хотореза прицел и минимизировал его:

Смещение приборов + пристрел для WoWP 0.4.0

Смещение приборов + пристрел для WoWP 0.4.0

Мод смещающий высотомер и спидометр к центру под прицел и делающий ваши прицелы (в режимах интерфейса «Обычный» и «WOT») пристелянными.
Идея с данным положением приборов: Hootorez
Идея данной реализации пристрелянных прицелов смещением во флеш: roxblnfk
изготовил: Hootorez

Модифицированный конфиг управления джойстиком для патча 0.4.0.2

Модифицированный конфиг управления джойстиком для патча 0.4.0.2

(по дефолту настроен для джойстика ThrustMaster 16000M)

Теперь можете спокойно менять руками (через блокнот) параметры конфига недоступные из настроек управления в клиенте, такие как:
-Ускорение чувствительности (название возможно не верное, но смысл похож)

<SENSITIVITY_X> 0.2500000 </SENSITIVITY_X>
<SENSITIVITY_Y> 0.2500000 </SENSITIVITY_Y>
<SENSITIVITY_Z> 0.450000 </SENSITIVITY_Z>

а так же параметры:
-Название для обозначения этого параметра я так и не подобрал.
Попробуйте выставлять разные значения отличные от моего до 1.000000

<ROLL_SIGNIFICANT>
<VERTICAL_SIGNIFICANT>
<FORCE_SIGNIFICANT>
<FORCE_AND_FLAPS_SIGNIFICANT>
<HORIZONTAL_SIGNIFICANT>

-Так же не много о кривых и параметре 100
По моим наблюдениям количество точек (строк) и значение в pointCount и в графике кривых теперь сильно влияет на чувствительность управления. Поэтому, увеличил их до 1024 на осях X и Y, на Z поставил 256.

Как это все установить и что бы работало без глюков и без сброса уже настроенных параметров на дефолт.
Установщик установит в клиент два одинаковых конфига в папки \input_mapping\ и в папку \input_mapping\defaults\.
— От вас потребуется только вручную удалить старый joystick.xml файл из папки AppData расположенный по пути c:\Users\Admin\AppData\Roaming\wargaming.net\ ( * где Admin имя вашей учетной записи в системе). Лично я сразу руками устанавливал файл конфига с заменой, из папки с модом в папку AppData до запуска клиента.
Чтобы увидеть папку AppData надо включить отображение скрытых системных файлов и папок!

— Запускаете клиент и в настройках управления джойстиком перенастраиваете оси и кнопки под свой джойстик, сохраняете параметры.
— Теперь в папке AppData вы получили оригинальный дефолтный файл с вашими настроенными кнопками и осями и инициализацией (ID) именно вашего джоя.
Копию его сохраните в архив, вдруг еще пригодится если допустите ошибку при редактировании, то всегда сможете откатить на свой дефолт во всех трех папках.

— Если захотите заменить кривые и изменить мои настройки параметров SENSITIVITY_X, SENSITIVITY_Y, SENSITIVITY_Z и SIGNIFICANT.
Открываете блокнотом файл joystick.xml который лежит в AppData, изменяете, сохраняете и потом ОБЯЗАТЕЛЬНО копируете в папки \input_mapping\ и \input_mapping\defaults\ в клиенте игры.

Мод «Карнавал» для World of Warplanes 0.4.0

Мод «Карнавал» для World of Warplanes 0.4.0

Мод «Карнавал» v.1 для патча 0.4.0.1
Изменяет:
— Маркеры всех наземных целей становятся меньше и менее яркими в режиме без alt.
— В рамку атакуемого наземного объекта добавлены белые углы для контрастности.
— Рамке с обозначение ХП добавлена темная окантовка, для понимания краев рамки если она совмещается/накладывается с рамками других объектов.
— Изменен цвет текста указания расстояния до цели на бледно-желтый и цвет наносимого урона на бледно-розовый.
— Возвращены старые маркеры/стрелки целеуказания противника и их масштабирование в зависимости от дистанции до цели.
Красный и Рыжий с зебровым кантом указывают на самолеты противника. Оранжевый с черным кантом указывает на самолеты в звене.
— Расстояние появления маркеров и информации о цели по alt увеличено до максимально похожего по прошлому патчу

Мод радара для WoWP 0.4.1

Мод радара для WoWP 0.4.1

Новый мод полностью обновляет радар в игре World of Warplanes делая его куда более интереснее. Но это ещё не всё, на миникарте, изменяется стандартный маркер самолёта на новый, таким образом делая его более заметнее.
Автор модификации Скин для радара + свой маркер в виде самолета: Hootorez.