Jump to content

Recommended Posts

Тема изначально задумывалась как площадка для обмена премудростями по мышеводству.Но до многих,кто раньше был ярым поклоником данного вида управления ЛА, на сегодняшний день не  достучатся.Посему здесь попросту выложу, по просьбе нескольких вирпил, небольшой мануал,как управлять самолетом с помощью мышки.Причины пересесть на мышь порой бывают.Будь то запой и распродажа всех навороченых
девайсов или же " решил завязать с полетами" и снова распродажа вновь обретенных навароченных девайсов)).Причины могут быть другого рода:Если ты вахтовик или работаешь в охране,пожарным,бездельником в офисе.Если ты просто нищеброд.Если хочется новых ощушений и пр.
На форуме БЗС не стал открывать тему,потому как сама игра БЗС меня не вштырила

Итак от лирики к главному:
Способов управлять мышкой несколько.
Или ммджой,или с помощью vJoy+FreePIE или  PPJoy+GlovePIE.Пробовал все варианты.Для себя выбрал последний.


Для полетов нужна пара мышек.На выходе имеем на одной руке подобие обзора 6dof и газ.На другой Рус.
0.Вначале подключаем две мыши
1. Переводим Windows в тестовый режим.или отключаем проверку цифровой подписи драйверов в поздних версиях Windows
Тестовый режим нужен,чтобы установить драйверы ppjoy
хотя бы здесь это наглядно показано:https://www.youtube.com/watch?v=bpuTUWga5RA
2.Скачиваем и устанавливаем сам ppjoy: https://cloud.mail.ru/public/sme7/bEy8hJSEw
3.В ppjoy добавляем два виртуальных джойстика.Во вкладке "игровые устройства" видим следующие строчки :
  PPJoy Virtual Joystick 1  
  PPJoy Virtual Joystick 2
4.Скачиваем и устанавливаем GlovePIE(в архиве основные скрипты): https://cloud.mail.ru/public/8Xoq/wJN1tvxpd
5.Подключаем вторую мышь(если хотим именно на двух)

далее работаем с GlovePIE и скриптами.Кидаем,запускаем и смотрим результат.
За основу взят скрипт Белкина 6dof только с разными подменами ID номера мышек


Скрипт в общем то один.В нем лишь мной заменен ID номер мыши.(включаем их по очереди,смотря под  каким номером ID в системе,какой то обязательно должен сработать)
(1-3)или(2-3)или(3-2)ну и так далее.

 

Важно - одна из мышей очень желательно чтобы была с переключаемым разрешением DPI и несколькими дополнительными кнопками которые можно переназначить на любую клавишу клавиатуры - чтобы кнопки форсажа , закрылков , дополнительного оружия и т.д были на мышке . Лично у меня Logitech Mouse G300 как обзор(на обзор подойдет любая простая мышь) а джойстиком выступает Legend Chroma X.
Переключение DPI необходимо для разного стиля пилотажа и более точного прицеливания , опять-же к примеру на ишачке и хурре это позволяет добиться наиболее благоприятного отклика рулей .
Далее - правим конфиг Ила (!!! ) ОБЯЗАТЕЛЬНО СДЕЛАТЬ И СОХРАНИТЬ КОПИЮ conf.ini и папки User !!!
в корневом каталоге игры в файлике conf.ini редактируем разделы :

[HookView Config]
AzimutSpeed=0.1
TangageSpeed=0.1
LenSpeed=1.0
MinLen=1.0
DefaultLen=20.0
MaxLen=3000.0
Speed=6


в конф ини в разделе[rts_mouse]прописываем SensitivityZ=22.0(подбирается опытным путем;(на сколько делений будет разбита ось газа.
Например: если поставить  SensitivityZ=1.0 - тогда от нуля до ста Вы будете крутить скролом бесконечно долго:

[rts_mouse]
SensitivityX=0
SensitivityY=0
SensitivityZ=22.0
Invert=0

Далее в папке Users правим оси в текущем профиле ( ВНИМАНИЕ ! это мой профиль и просто показывает что на что назначено , можно попробовать
 и доточить ручками под себя , оси газа и шага винта совмещены и повешены на колесо мышки обзора )
[HotKey move]
AXE_U JoystickDevice0=power
AXE_Z JoystickDevice0=pitch
AXE_RZ JoystickDevice0=rudder
AXE_X JoystickDevice0=aileron
AXE_Y JoystickDevice0=elevator


если нужно чтобы на одной мышке были совмещены РВ,Элероны,РН  с триммерами этих осей, тогда settings.ini( из папки Users )
будет выглядеть так:

[HotKey move]
AXE_Z JoystickDevice0=pitch
AXE_RZ JoystickDevice0=rudder
AXE_U JoystickDevice0=power
AXE_X JoystickDevice0=aileron
JoystickDevice0 AXE_RZ=trimrudder
JoystickDevice0 AXE_Y=trimelevator
JoystickDevice0 AXE_X=trimaileron
AXE_Y JoystickDevice0=elevator

где RZ руль направления
     Y руль высоты
     X руль элероны

Чтобы прописать в самой игре две оси на одну , например руль высоты и триммер руля высоты , нужно одну из осей прописать
в изменённом виде , иначе игра сбросит двойное назначение оси .
Например
AXE_Y JoystickDevice0=elevator
JoystickDevice0 AXE_Y=trimelevator

фактически на ось Y назначено две оси , но с таким прописыванием конфликта не происходит .


Так как у меня элероны и руль направления на одной оси , то для нормального доворота и прицеливания делаем следующее :
В самой игре настраиваем кривые отклика - руль высоты все движки по 100 , руль направления - всё по 100 ,
элероны - выставляем движки отклика 10-10 , 20-20 ...100-100 , так сделано для того чтобы при горизонтальном
движении мышкой сначала была реакция на руль направления а уже при дальнейшем движении срабатывали элероны ,
это позволяет немного доворачивать РН практически без изменения крена , для прицеливания или коррекции траектории .

 

При запуске скрипта заходим в панель управления в закладку игровые устройства , наблюдаем два виртуальных джойстика , при нажатии
 свойства видим как при движении соответствующей мыши движутся оси джойстиков , теперь должно работать и в Иле , запускаем и проверяем .
Из за разных ID номеров мыши желаемая мышь может работать наоборот (обзор,управление) или совсем не реагировать.Поэтому уже заранее подготовил один и тот же
скрипт с заменой строчки Mouse1 на Mouse2 и Mouse3 в разных вариантах.Теперь можно не прописывая вручную,просто запускать другой скрипт,пока в тестере не заработает
нужное сочетание.Я их пометил так:6dof(3-4).6dof(3-2).6dof(3-1).6dof(2-3).6dof(1-2) и т.д.

Возможно понадобится второй скрипт.Для отключения курсора,управляющей Рус мышкой(чтобы не маячил перед глазами когда водишь рулями) его тоже досЫпал в архив.

Буду рад любому толковому совету по данному материалу.

 

 

Link to post
Share on other sites
 
Posted (edited)

Выкладываю скрипт в текстовом формате.Потому,как ссылки и архивы имеют свойство исчезать:

//CODE
 // Тумблер F9
 //Вкл/Выкл джоя
 if (F9 = false) then var.f=0
 if (F9 = true and var.off = 0 and var.f=0) {
 var.off = 1
 var.f=1
 elseif (F9 = true and var.off = 1 and var.f=0) {
 var.off = 0
 var.f=1
 }
 }

 

 if var.off =0 {
 // ######## Опрос мышек НАЧАЛО #######
 // ############ Mouse1 #######################
 if (Mouse2.present) {
 if (var.Mouse2_in = false) {

 // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Входные параметры:
 var.mouse2xrange = 800 // граница движения мыши по оси X, точки на дюйм (DPI)
 if (mouse2.DirectInputX + var.mouse2x) < -var.mouse2xrange then var.mouse2x = -var.mouse2xrange - mouse2.DirectInputX // условия, ограничивающие движение мыши
 if (mouse2.DirectInputX + var.mouse2x) > var.mouse2xrange then var.mouse2x = var.mouse2xrange - mouse2.DirectInputX
 FakeTrackIR.yaw = ensureMapRange(mouse2.DirectInputX + var.mouse2x, -var.mouse2xrange, var.mouse2xrange, -179, 179)
 FakeTrackIR.x = ensureMapRange(mouse2.DirectInputX + var.mouse2x, -var.mouse2xrange, var.mouse2xrange, -1, 1)
 FakeTrackIR.roll = ensureMapRange(mouse2.DirectInputX + var.mouse2x, -var.mouse2xrange, var.mouse2xrange, -30, 30)

 var.mouse2yrange = 800 // то же самое по оси Y
 if (mouse2.DirectInputY + var.mouse2y) < -var.mouse2yrange then var.mouse2y = -var.mouse2yrange - mouse2.DirectInputY
 if (mouse2.DirectInputY + var.mouse2y) > var.mouse2yrange then var.mouse2y = var.mouse2yrange - mouse2.DirectInputY

 var.Mouse2_mapZ = var.Mouse2_Wheel*200
 var.Mouse2_Wheel = 11 //На сколько щелчков колеса мыши разбить ось джойстика
 var.Mouse2_deltaz = Delta(Mouse2.DirectInputZ)
 var.Mouse2_Z = var.Mouse2_Z + (var.Mouse2_deltaz)
 if var.Mouse2_Z < 0 then var.Mouse2_Z = 0
 if var.Mouse2_Z > var.Mouse2_mapZ then var.Mouse2_Z = var.Mouse2_mapZ
 Var.Mouse2_JZ = MapRange(var.Mouse2_Z, 0, var.Mouse2_mapZ, -1 ,1)

 FakeTrackIR.pitch = -ensureMapRange(mouse2.DirectInputY + var.mouse2y, -var.mouse2yrange, var.mouse2yrange, -100, 120)
 } else {
 FakeTrackIR.yaw = 0
 FakeTrackIR.pitch = 0
 FakeTrackIR.roll = 0
 }

 // ########## MOUSE2 #######################
 if (Mouse1.present) {
 if (var.Mouse1_in = false) {

 // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Входные параметры:
 var.Mouse1_mapX = 1280 //Разрешение оси X, подбирается индивидуально
 var.Mouse1_mapY = 1024 //Разрешение оси Y подбирается индивидуально
 var.Mouse1_Wheel = 16 //На сколько щелчков колеса мыши разбить ось джойстика

 var.Mouse1_mapZ = var.Mouse1_Wheel*120
 var.Mouse1_X = var.Mouse1_mapX/2
 var.Mouse1_Y = var.Mouse1_mapY/2
 var.Mouse1_Z = var.Mouse1_mapZ/2
 var.Mouse1_in = true
 }

 var.Mouse1_deltax = Delta(Mouse1.DirectInputX)
 var.Mouse1_deltay = Delta(Mouse1.DirectInputY)
 var.Mouse1_deltaz = Delta(Mouse1.DirectInputZ)

 // собственно координаты мыши
 var.Mouse1_X = var.Mouse1_X + (var.Mouse1_deltax)
 var.Mouse1_Y = var.Mouse1_Y + (var.Mouse1_deltay)
 var.Mouse1_Z = var.Mouse1_Z + (var.Mouse1_deltaz)

 if var.Mouse1_X < 0 then var.Mouse1_X = 0
 if var.Mouse1_X > var.Mouse1_mapX then var.Mouse1_X = var.Mouse1_mapX
 if var.Mouse1_Y < 0 then var.Mouse1_Y = 0
 if var.Mouse1_Y > var.Mouse1_mapY then var.Mouse1_Y = var.Mouse1_mapY
 if var.Mouse1_Z < 0 then var.Mouse1_Z = 0
 if var.Mouse1_Z > var.Mouse1_mapZ then var.Mouse1_Z = var.Mouse1_mapZ

 Var.Mouse1_JX = MapRange(var.Mouse1_X, 0, var.Mouse1_mapX, -1 ,1)
 Var.Mouse1_JY = MapRange(var.Mouse1_Y, 0, var.Mouse1_mapY, -1 ,1)
 Var.Mouse1_JZ = MapRange(var.Mouse1_Z, 0, var.Mouse1_mapZ, -1 ,1)

 }
 //Опрос мышек КОНЕЦ ###########

 

 

 //################### Подменяем оси джойстика на оси мыши #######
 // Первый джойстик - управление самолетом
 PPJoy1.analog0 = Var.Mouse1_JX // Ось Х
 PPJoy1.analog1 = Var.Mouse1_JY // Ось У
 PPJoy1.analog2 = Var.Mouse2_JZ
 PPJoy1.analog3 = Var.Mouse1_JX
 PPJoy1.analog4 = Var.Mouse2_JZ
 PPJoy1.analog5 = Var.Mouse2_JZ
 PPJoy1.analog6 = Var.Mouse2_JZ

 }
 }

 

 

 //################ Подменяем кнопки джойстика кнопками нужной мыши #####
 PPJoy1.Digital0 = Mouse2.LeftButton
 PPJoy1.Digital1 = Mouse2.RightButton
 PPJoy1.Digital2 = Mouse2.MiddleButton
 PPJoy1.Digital3 = Mouse1.LeftButton
 PPJoy1.Digital4 = Mouse1.RightButton


 // Центрирование осей
 if Mouse1.MiddleButton = true { //Если нажата кнопка колеса Mouse1 - Эти оси центрируются
 var.Mouse1_X = var.Mouse1_mapX/2
 var.Mouse1_Y = var.Mouse1_mapY/2

 }


 }// Type your script here, or click the GUI tab to autogenerate it!

 

Да,важное дополнение к нему!!!!:

изменив строчки на представленный ниже,мы получаем еще одну,которую так долго искал,фишку:при зажатой ПКМ отключались элероны и работали только РВ и РН.

а при отжатой ПКМ все возвращалось как было

 //################### Подменяем оси джойстика на оси мыши #######
 // Первый джойстик - управление самолетом
 PPJoy1.analog1 = Var.Mouse2_JY // Ось У
 PPJoy1.analog2 = Var.Mouse1_JZ

 PPJoy1.analog3 = Var.Mouse2_JX // Ось Z
 PPJoy1.analog4 = Var.Mouse1_JZ
 PPJoy1.analog5 = Var.Mouse1_JZ
 PPJoy1.analog6 = Var.Mouse1_JZ
 }
 }

if Mouse2.Button2 == 1  {
 PPJoy1.analog0 = - Var.Mouse2_JX * 0.01 // 0.01 это коэф его конкретно подогнать опытным путём
}else{
 PPJoy1.analog0 = Var.Mouse2_JX // Ось X
 }
 }

Edited by morgenmuffel
Link to post
Share on other sites
 

И что это дает тебе?) В чем смысл дриканья мыши по столу, вместо аутентичного управления виртуальным ЛА?

Link to post
Share on other sites
 

@BW=777 Лучше,конешна,что нибудь дельное по теме добавил.

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

Но потэнциал у нее есть.Побольше плотных часов налета и она уделает на вираже любой джойстик!!
Нужна только стальная выдержка и усидчивость.Какие плюсы - первое,что наблюдаешь - точность и кучность стрельбы.Помимо выше перечисленнных(читать первый пост)можно добавлять и добавлять.да хоть ставишь самоль в плавный климб и пошёл,отлил)).Вернулся - он уже на 2 км.))

Кроме своих,стоит добавить инструкции и полный набор файлов от вирпил Green и UHU.Их тоже бережно храню.
У UHU конечно скрипт богатый,но чтобы его полностью реализовать,нужно иметь под рукой клавиатуру.Плюс он летает с трекиром.
Все файлы и настройки UHU  https://88-uhu.livejournal.com/tag/uhu страничка и файлы с облака

Все файлы и настройки Green  https://www.youtube.com/watch?v=AVJm7o3Cky0   и  файлы с облака

 

Link to post
Share on other sites
 

"...Побольше плотных часов налета и она уделает на вираже любой джойстик!!..." - как говорится блажен, кто верует). Ты это, потом, как освоишь мышь, переходи к клаве - из плюсов мгновенная перекладка рулей, а затем к голосовому вводу для слабовидящих, ну и так далее. Похвальная настойчивость, ее бы в нужное русло, но похоже скрипт убежденности в сверх силу святой мыши, уже само прописан и исправлению не подлежит. Остается только попытаться расширить ряды маргиналов, путем пропаганды нетрадиционной вирпильской ориентации.

Link to post
Share on other sites
 
Только что, BW=777 сказал:

"...Побольше плотных часов налета и она уделает на вираже любой джойстик!!..." - как говорится блажен, кто верует). Ты это, потом, как освоишь мышь, переходи к клаве - из плюсов мгновенная перекладка рулей, а затем к голосовому вводу для слабовидящих, ну и так далее. Похвальная настойчивость, ее бы в нужное русло, но похоже скрипт убежденности в сверх силу святой мыши, уже само прописан и исправлению не подлежит. Остается только попытаться расширить ряды маргиналов, путем пропаганды нетрадиционной вирпильской ориентации.

Это он для интересующихся) не тебе!

Так то он у меня девайс приобрел. Надеюсь теперь на джое будет летать!)

Link to post
Share on other sites
 

Сильно сомневаюсь). Гражданин в активном поиске волшебного нагибатора.

Link to post
Share on other sites
 
Posted (edited)
6 часов назад, BW=777 сказал:

 Гражданин в активном поиске волшебного нагибатора.

Конечно так)).Про голосовой ввод уже курю темы:

https://forum.il2sturmovik.ru/topic/16194-программа-для-управления-самолетом-голосом-изначально-делалась-для-vr/

https://www.elite-games.ru/conference/viewtopic.php?p=3223065#3223065

- "Ева,видишь вон на два часа кон висит?"
- "Вижу,Мой Господин"
- "Надо догнать и убить"
- "Слушаюсь Мой Господин"
- "До связи".
Сам идешь,мажешь бутерброд.

Edited by morgenmuffel
Link to post
Share on other sites
 

Сидел, глядел я у фонтана с интэрэсом....(с) 

Для такого, управления надо создать язык программирования ну очень высокого уровня с использованием ИИ. И тогда, либо кнопками, либо голосом вводить всего лишь три команды: 

1 Убить одного

2 Убить двух

3 Убить всех

Относительно третьей команды, всё же требуется пояснить, что в случае ограничения боезапаса и топлива, она может и не выполниться, впрочем на какой то десяток килов за вылет можно рассчитывать.:ca:

Link to post
Share on other sites
 
 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...