Zxx Опубликовано: 7 марта 2024 Опубликовано: 7 марта 2024 Всем привет. Вопрос можно ли управлять мышкой в ил 2 штурмовик Blitz? А то управлять на клавиатуре просто невозможно. Напишите ответ пожалуйста
Shinobimono Опубликовано: 9 марта 2024 Опубликовано: 9 марта 2024 07.03.2024 в 16:10, Zxx сказал: можно ли управлять мышкой в ил 2 штурмовик Blitz? Нельзя. Не очень понятно, что эта тема делает в разделе Ил-2 1946.
trotil812 Опубликовано: 11 марта 2024 Опубликовано: 11 марта 2024 (изменено) 07.03.2024 в 16:10, Zxx сказал: Всем привет. Вопрос можно ли управлять мышкой в ил 2 штурмовик Blitz? А то управлять на клавиатуре просто невозможно. Напишите ответ пожалуйста Может пора купить джойстик и перестать мучаться играя на клавишах как тракторист? Я прошёл все стадии дурдома - клавиатура,мышеджои,геймпады (о да,в ИЛа можно играть на геймпадах от PS4 Xbox 360,играл на них) и в итоге купил РУД+РУС и забыл про все эти мучения,чего и вам советую,один раз живем всётаки,зачем мучаться?! Изменено 11 марта 2024 пользователем trotil812 1
figli Опубликовано: 5 апреля 2024 Опубликовано: 5 апреля 2024 (изменено) В этом вся и прелесть:Когда есть супер-пупер джой,все становится до безобразия пресно и просто.С мышью все по другому:Сначала проходишь все круги ада.И бьют тебя нещадно.И в сталфайте уходишь в сваливание в неподходящий момент.Но с временем замечаешь,что начинают проходить такие фишки,которые на джойстике не проходили.И точность стрельбы растет и вытягиваешь лучше на горках и тд.Оказывается под рукой лежит опасный скальпель.От тебя лишь требуется аккуратность и терпение. Нужно уже все темы с мышками обьеденить в одну и там уже делится "премудростями",а их у каждого есть. Изменено 5 апреля 2024 пользователем figli
gfdtk62 Опубликовано: 17 апреля 2024 Опубликовано: 17 апреля 2024 Тут вопрос может быть рассмотрен в таком аспекте: -Есть желание попробовать в авиасимулятор, но нет желания покупать хороший (а значит дорогой) джойстик, а вдруг не зайдёт? Плохой же, покупать не следует даже из любопытства. Кроме того иногда случается так, что человек находится далеко от своего рабочего места где есть и джой и педали и т.д. а полетать хочется. Вот тогда мышеджойстик достойный вариант. Вот вариант скрипта (автор не я) который закроет все потребности для полётов в Ил-2 ЗС хоть на истребителе, хоть на бомбере (с управлением турелями), обзором, при этом нужна только мышь и клавиатура. Скрипт подробно расписан, что и как назначить. Пугаться его громоздкости не надо, а надо установить GlovePIE (просто скачать и вставить нижеприведенный скрипт), а также установить PPJoy тоже не сложно (если Винда будет сопротивляться, то запустить его в тестовом режиме). Да в скрипте возможно придётся поменять разрешение экрана и поставить параметры своей мыши амплитуду движения и dpi в скрипте всё расписано. Ниже скрипт: // ============================================================ // Пример эмуляции джойстика и трекира с помощью мыши и клавиатуры // ============================================================ // Для Ил-2 необходимо через "conf.ini" включить использование системного // курсора (mouseUse=1), джойстика (joyUse=1) и трекира (trackIRUse=1). Обзор // мышью нужно оставить включенным (SensitivityX=1.0 и SensitivityY=1.0), чтобы // сохранить возможность управления турельными пулеметами при переключении на // задних стрелков. Ил-2 автоматически отвязывает обзор от мыши (при сохранении // мышиного управления турельными пулеметами) после каждого изменения состояния // трекира. // // ... // [rts] // mouseUse=1 // joyUse=1 // trackIRUse=1 // ... // [rts_mouse] // SensitivityX=1.0 // SensitivityY=1.0 // ... // // Для Ил-2 в настройках управления необходимо не использовать клавиши [Q], [W], // [E], [A], [S], [D], так как в скрипте они используются для управления // клавотрекиром (в режиме пилотирования) и клаводжойстиком (во вспомогательном // режиме). // // Для полноценного обзора с помощью клавотреикра в Ил-2 рекомендуется // использовать следующие настройки кнопок и осей: // - "Оружие 1+2" - кнопка [Пробел] // - "Сменить сменить угол зрения" - кнопка [C] // - "Смотреть через прицел. Вкл/Выкл" - кнопка [X] // ... // - "Элероны" - Ось X // - "Руль высоты" - Ось Y // - "Тяга" - Ось Z // - "Руль высоты" - Вращение по оси Z // - "Приближение" - Скольжение по оси U // // Для Ил-2 через "settings.ini" в подкаталоге "users\1\" можно совместить рули // с соответствующими триммерами синхронно на одной оси (для бомбардировщиков // важен только триммер руля направления на оси RZ, поскольку он позволяет // доворачить по курсу в автогоризонте): // // ... // [HotKey aircraftView] // Space=Weapon01 // X=cockpitAim // C=fovSwitch // ... // [HotKey move] // JoystickDevice0 AXE_X=aileron // JoystickDevice0 AXE_Y=elevator // JoystickDevice0 AXE_Z=power // JoystickDevice0 AXE_RZ=rudder // JoystickDevice0 AXE_U=zoom // AXE_X JoystickDevice0=trimaileron // AXE_Y JoystickDevice0=trimelevator // AXE_RZ JoystickDevice0=trimrudder // ... // // ============================================================ // [F9] Режим пилотирования (клавотрекир + мышеджойстик) // ============================================================ // При отжатой [ALT] любая мышь управляет только джойстиком // (оси трекира сохраняют свое значение или управляются с клавиатуры) // При зажатой [ALT] любая мышь управляет только трекиром // (оси джойстика сохраняют свое значение, системный курсор свободен) // // В режиме пилотирования доступен клавотрекир, заточенный под левую руку: // Комбинации [Q, W, E, A, S, D] - быстрый осмотр с клавиатуры (с автовозвратом) // [SHIFT] + [Q, W, E, A, S, D] - плавный осмотр с клавиатуры (без автовозврата) // [SHIFT] + [Q] + [E] - центровка по курсу и тангажу трекира // Сдвиг головы в сторону поворота выполняется автоматически // // ============================================================ // [F10] Вспомогательный режим (клаводжойстик + мышь) // ============================================================ // При отжатой [ALT] любая мышь управляет курсором, турельными пулеметами и т.п. // (оси джойстика и трекира сохраняют свое значение, системный курсор свободен) // При зажатой [ALT] любая мышь управляет только трекиром // (оси джойстика сохраняют свое значение, системный курсор свободен) // // Во вспомогательном режиме доступен клаводжойстик, заточенный под левую руку: // [A-D], [W-S], [Q-E] - быстрое дерганье элеронов, РВ и РН (с автовозвратом) // [SHIFT] + [A-D], [W-S], [Q-E] - плавное подруливание (без автовозврата) // [SHIFT] + [Q] + [E] - центровка элеронов, РВ и РН джойстика // // ============================================================ // [F11] Режим полета задом наперед (инвертированный клаводжойстик + мышь) // ============================================================ // Данный режим полностью аналогичен вспомогательному режиму, но управление // элеронами и рулями высоты на клаводжойстике инвертировано для удобства // подруливания от лица заднего стрелка при полете задом как от лица пилота // при полете вперед. // // ============================================================ // Управление мышеджойстиком (только в режиме пилотирования) // ============================================================ // Оси "X Axis" (элероны) и "Z Rotation" (руль направления, РН) джойстика: // Управляются горизонтальным движением любой мыши (при отжатой [ALT]) // При зажатой ЛКМ управляются только элероны без руля направления // [мышь влево/вправо = РУС влево/вправо = крен влево/вправо] // При зажатой ПКМ управляются только руля направления без элеронов // [мышь влево/вправо = педали влево/вправо = рысканье влево/вправо] // Центровка визуальная по горизонтальному положению курсора-крестика на экране, // а при необходимости откалибровать оси точно по центру можно нажать [F12]. // // Ось "Y Axis" (руль высоты, РВ) джойстика: // Управляется вертикальным движением любой мыши (при отжатой [ALT]) // [мышь на себя = РУС на себя = увеличение угла атаки] // Центровка визуальная по вертикальному положению курсора-крестика на экране, // а при необходимости откалибровать оси точно по центру можно нажать [F12]. // // Ось "Z Axis" (рычаг управления двигателем, РУД) джойстика: // Управляется колесом прокрутки любой мыши (при отжатой ALT) // При отжатой ПКМ управляется с шагом 5/110 (22 деления) // При зажатой ПКМ управляется с шагом 25/110 (4-5 делений) // Центровка РУД не нужна, в Ил-2 тяга от 0% до 110% пишется текстом // // ============================================================ // Управление мышетрекиром (во всех режимах при зажатой [ALT]) // ============================================================ // Ось "Yaw" (курс влево-вправо) трекира: // Управляется горизонтальным движением мыши (при зажатой [ALT]) // // Ось "Pitch" (тангаж вверх-вниз) трекира: // Управляется вертикальным движением мыши (при зажатой [ALT]) // // Ось "U"/"Slider" (скольжение) джойстика: // Управляется колесом прокрутки любой мыши (при зажатой ALT) // При отжатой ПКМ управляется с шагом 5/110 (22 деления) // При зажатой ПКМ управляется с шагом 25/110 (4-5 делений) // Центровка скольжения не нужна, если использовать эту ось для зума // Если выполняется первая итерация скрипта (starting = 1) при запуске // или зажата клавиша [F12] (Keyboard.F12 = 1) для калибровки центра осей, // то инициализируем параметры скрипта и центруем оси джойстика и трекира if ((starting = 1) or (Keyboard.F12 = 1)) then begin // ============================================================ // Настраиваемые параметры, которые можно изменить по желанию // ============================================================ // Указываем желаемое количество итераций в секунду PIE.FrameRate = 250; // Указываем желаемую амплитуду движения мыши (в сантиметрах по горизонтали // и по вертикали), которая будет соответствовать полному ходу осей // джойстика и трекира, а так же полному ходу скорректированной позиции // курсора относительно экрана при визуальной центровке осей джойстика. // Для повышения разрешения и точности осей джойстика и трекира необходимо // указать увеличенную амплитуду движения мышью (или завышенный dpi). var.JoystickCentimetersDX := 5.08; var.JoystickCentimetersDY := 2.85; var.TrackIRCentimetersDX := 5.08; var.TrackIRCentimetersDY := 2.85; // Указываем реальный DPI сенсора мыши (количество точек на линейный дюйм). // Возможные значения DPI: от 300 до 4000 (зависит от сенсора мыши). // Для повышения разрешения и точности осей джойстика и трекирe необходимо // использовать мышь с высоким dpi (или увеличить амплитуду движения мыши). var.DotsPerInch := 1000.0; // Указываем желаемое количество делений колеса прокрутки, которое будет // соответствовать полному ходу осей Z (РУД) и U (скольжение) джойстика. // Для управления тягой с шагом 5% в диапазоне от 0% до 110% необходимо // указать 22 деления (110% / 5%). Для повышения разрешения и точности осей // Z и U необходимо указать увеличенное число делений колеса прокрутки. var.PowerClicks := 22; var.ZoomClicks := 24; // Указываем желаемое количество секунд, которое будет соответствовать // полному ходу осей при управлении ими с клавиатуры в режиме плавного // триммирования без автовозврата. var.KeyDeltaTime := 2.0; // ============================================================ // Вычисляемые параметры // ============================================================ // Вычисляем разрешение осей джойстика и трекира // (2000 точек при 2-ух дюймовой амплитуде на мышке с 1000 dpi) var.JoystickDotsDX := (var.JoystickCentimetersDX / 2.54) * var.DotsPerInch; var.JoystickDotsDY := (var.JoystickCentimetersDY / 2.54) * var.DotsPerInch; var.TrackIRDotsDX := (var.TrackIRCentimetersDX / 2.54) * var.DotsPerInch; var.TrackIRDotsDY := (var.TrackIRCentimetersDY / 2.54) * var.DotsPerInch; // Вычисляем чувствительность мышеджойстика // (зависит от амплитуды движения и DPI сенсора мыши) var.MouseSensX := (2.0 / var.JoystickDotsDX); var.MouseSensY := (2.0 / var.JoystickDotsDY); var.MouseSensZ := (2.0 / var.PowerClicks); var.MouseSensZoom := (2.0 / var.ZoomClicks); // Вычисляем чувствительность мышетрекира // (зависит от амплитуды движения и DPI сенсора мыши) var.MouseSensYaw := (360.0 / var.TrackIRDotsDX); var.MouseSensPitch := (180.0 / var.TrackIRDotsDY); // Вычисляем чувствительность клаводжойстика за одну итерацию // (зависит от количества итераций в секунду) var.KeySensX = (2.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); var.KeySensY = (2.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); var.KeySensZ = (2.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); var.KeySensRZ = (2.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); var.KeySensZoom = (2.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); // Вычисляем чувствительность клавотрекира за одну итерацию // (зависит от количества итераций в секунду) var.KeySensYaw = (360.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); var.KeySensPitch = (180.0 / (var.KeyDeltaTime * RemoveUnits(PIE.FrameRate))); // Переключаемся в режим пилотирования (клавотрекир + мышеджойстик) var.Mode = 0; // Инициализируем триммирование осей джойстика var.TrimHorizontal := 0.0; var.TrimVertical := 0.0; var.TrimX := 0.0; var.TrimY := 0.0; var.TrimZ := 0.0; var.TrimRZ := 0.0; var.TrimZoom := 0.0; // Инициализируем триммирование осей трекира var.TrimYaw := 0.0; var.TrimPitch := 0.0; var.TrimRoll := 0.0; // Триммируем первые 8 осей джойстика PPJoy.Analog0 := var.TrimX; PPJoy.Analog1 := var.TrimY; PPJoy.Analog2 := var.TrimZ; PPJoy.Analog3 := var.TrimRZ; PPJoy.Analog4 := var.TrimZoom; PPJoy.Analog5 := 0.0; PPJoy.Analog6 := 0.0; PPJoy.Analog7 := 0.0; // Отжимаем первые 8 кнопок джойстика PPJoy.Digital0 := 0; PPJoy.Digital1 := 0; PPJoy.Digital2 := 0; PPJoy.Digital3 := 0; PPJoy.Digital4 := 0; PPJoy.Digital5 := 0; PPJoy.Digital6 := 0; PPJoy.Digital7 := 0; // Триммируем 6 осей трекира FakeTrackIR.Yaw = var.TrimYaw; FakeTrackIR.Pitch = var.TrimPitch; FakeTrackIR.Roll = var.TrimRoll; FakeTrackIR.X = 0.0; FakeTrackIR.Y = 0.0; FakeTrackIR.Z = 0.0; end else begin // После нажатия клавиши [F9] переключаемся в режим пилотирования // После нажатия клавиши [F10] переключаемся во вспомогательный режим // После нажатия клавиши [F11] переключаемся в режим полета задом наперед // Клавиша может быть отжата, но режим запоминается для следующих итераций if (Key.F9 = 1) then var.Mode = 0; if (Key.F10 = 1) then var.Mode = 1; if (Key.F11 = 1) then var.Mode = 2; // Считываем точные изменения осей мыши через DirectInput // (используем RemoveUnits, чтобы единицы измерения не конвертировались) var.MouseDeltaX = RemoveUnits(Delta(Mouse.DirectInputX)); var.MouseDeltaY = RemoveUnits(Delta(Mouse.DirectInputY)); var.MouseDeltaZ = (RemoveUnits(Delta(Mouse.DirectInputZ)) / 120); var.MouseButton1 = RemoveUnits(Mouse.Button1); var.MouseButton2 = RemoveUnits(Mouse.Button2); // Если активен режим пилотирования и отжата клавиша [ALT], // то любая мышь управляет джойстиком if ((var.Mode = 0) and (Key.Alt = 0)) then begin // ============================================================ // Эмулируем джойстик мышью (мышеджойстик) // ============================================================ // Если мышь сдвинулась по горизонтали, то двигаем оси X и RZ // (при неподвижной мыши оси X и RZ сохранят свое значение) if (var.MouseDeltaX <> 0) then begin // Суммируем относительные сдвиги мыши по горизонтали // в масштабированное абсолютное значение в диапазоне [-1..+1] var.TrimHorizontal := (var.TrimHorizontal + var.MouseSensX * var.MouseDeltaX); if (var.TrimHorizontal < -1.0) then var.TrimHorizontal := -1.0; if (var.TrimHorizontal > 1.0) then var.TrimHorizontal := 1.0; // Если отжата правая кнопка мыши (ПКМ), // то ось X мыши управляет осью X (элероны) джойстика // (при зажатой ПКМ элероны сохраняют свое положение) if (var.MouseButton2 = 0) then var.TrimX := var.TrimHorizontal; // Если отжата левая кнопка мыши (ЛКМ), // то ось X мыши управляет осью RZ (руль направления) джойстика // (при зажатой ЛКМ руль направления сохраняет свое положение) if (var.MouseButton1 = 0) then var.TrimRZ := var.TrimHorizontal; end; // Если мышь сдвинулась по вертикали, то двигаем ось Y (руль высоты) // (при неподвижной мыши ось Y сохранит свое значение) if (var.MouseDeltaY <> 0) then begin // Суммируем относительные сдвиги мыши по вертикали // в масштабированное абсолютное значение в диапазоне [-1..+1] var.TrimVertical := (var.TrimVertical + var.MouseSensY * var.MouseDeltaY); if (var.TrimVertical < -1.0) then var.TrimVertical := -1.0; if (var.TrimVertical > 1.0) then var.TrimVertical := 1.0; var.TrimY := var.TrimVertical; end; // Если колесо прокрутки сдвинулось, то двигаем ось Z (РУД) // (при неподвижном колесе прокрутке ось Z сохранит свое значение) if (var.MouseDeltaZ <> 0) then begin // При зажатой ПКМ регулируем тягу в 5 раз быстрее if (var.MouseButton2 = 1) then var.MouseDeltaZ = 5.0 * var.MouseDeltaZ; // Суммируем относительные повороты колеса прокрутки // в масштабированное абсолютное значение в диапазоне [-1..+1] var.TrimZ := (var.TrimZ + var.MouseSensZ * var.MouseDeltaZ); if (var.TrimZ < -1.0) then var.TrimZ := -1.0; if (var.TrimZ > 1.0) then var.TrimZ := 1.0; end; // ============================================================ // Выполняем автоматический сдвиг курсора для визуальной центровки // ============================================================ // Для визуальной центровки необходимо в каждой итерации корректировать // позицию системного курсора так, чтобы видимое положение курсора // внутри основного экрана соответствовало положению осей джойстика. // Если мышь сдвинулась, то корректируем позицию курсора для визуальной центровки if ((var.MouseDeltaX <> 0) or (var.MouseDeltaY <> 0)) then begin // Отображаем абсолютную позицию осей джойстика из диапазона [-1..+1] // в абсолютную позицию курсора-крестика внутри основного экрана Mouse.CursorPosX := MapRange(var.TrimHorizontal, -1, 1, Screen.Left, Screen.Right); Mouse.CursorPosY := MapRange(var.TrimVertical, -1, 1, Screen.Top, Screen.Bottom); // Раскомментируйте эти строки для центровки курсора-крестика // внутри второго экрана (при наличии нескольких мониторов) //Mouse.CursorPosX := MapRange(var.TrimHorizontal, -1, 1, Screen2.Left, Screen2.Right); //Mouse.CursorPosY := MapRange(var.TrimVertical, -1, 1, Screen2.Top, Screen2.Bottom); // Раскомментируйте эти строки для центровки курсора-крестика // внутри расширенного рабочего стола на несколько экранов //Mouse.CursorPosX := MapRange(var.TrimHorizontal, -1, 1, Screen.DesktopLeft, Screen.DesktopRight); //Mouse.CursorPosY := MapRange(var.TrimVertical, -1, 1, Screen.DesktopTop, Screen.DesktopBottom); end; // Если в любом режиме зажата клавиша [ALT], // то любая мышь управляет трекиром end else if (Key.Alt = 1) then begin // ============================================================ // Эмулируем трекир мышью (мышетрекир) // ============================================================ // Если мышь сдвинулась по горизонтали, то двигаем ось Yaw (курс) // (при неподвижной мыши ось Yaw сохраняет свое значение) if (var.MouseDeltaX <> 0) then begin // Суммируем относительные сдвиги мыши по горизонтали // в масштабированное абсолютное значение в диапазоне [-180..+180] var.TrimYaw := (var.TrimYaw + var.MouseSensYaw * var.MouseDeltaX); if (var.TrimYaw < -180.0) then var.TrimYaw := (var.TrimYaw + 360.0); if (var.TrimYaw > 180.0) then var.TrimYaw := (var.TrimYaw - 360.0); end; // Если мышь сдвинулась по горизонтали, то двигаем ось Pitch (тангаж) // (при неподвижной мыши ось Pitch сохраняет свое значение) if (var.MouseDeltaY <> 0) then begin // Суммируем относительные сдвиги мыши по вертикали // в масштабированное абсолютное значение в диапазоне [-180..+180] var.TrimPitch := (var.TrimPitch - var.MouseSensPitch * var.MouseDeltaY); if (var.TrimPitch < -180.0) then var.TrimPitch := (var.TrimPitch + 360.0); if (var.TrimPitch > 180.0) then var.TrimPitch := (var.TrimPitch - 360.0); end; // Если колесо прокрутки сдвинулось, то двигаем ось U джойстика // (при неподвижном колесе прокрутке ось U сохраняет свое значение) if (var.MouseDeltaZ <> 0) then begin // При зажатой ПКМ регулируем ось U джойстика в 5 раз быстрее if (var.MouseButton2 = 1) then var.MouseDeltaZ = 5.0 * var.MouseDeltaZ; // Суммируем относительные сдвиги мыши по вертикали // в масштабированное абсолютное значение в диапазоне [-1..+1] var.TrimZoom := (var.TrimZoom - var.MouseSensZoom * var.MouseDeltaZ); if (var.TrimZoom < -1.0) then var.TrimZoom := -1.0; if (var.TrimZoom > 1.0) then var.TrimZoom := 1.0; end; // ============================================================ // Отключаем автоматический сдвиг курсора // ============================================================ // В режиме мышетрекира (при зажатой клавише [ALT]) любая мышь управляет // трекиром, а оси X, Y и RZ джойстика сохраняют свое фиксированное // положение (которое было перед зажатием [ALT]). Корректировать позицию // курсора в режиме мышетрекира нет никакой надобности, пусть его // позиция меняется с системными настройками скорости и ускорения. // В режиме мышеджойстика (после отжатия клавиши [ALT]) любая мышь снова // начнет управлять джойстиком и снова включится визуальная центровка, // так что системный курсор автоматически вернется в ту позицию внутри // экрана, которая соответствует текущей позиции осей джойстика. end; // ============================================================ // Режим пилотирования (клавотрекир + мышеджойстик) // ============================================================ if (var.Mode = 0) then begin // В режиме пилотирования клаводжойстик не используется, // поэтому используем текущее затриммированное положение джойстика var.JoyX := var.TrimX; var.JoyY := var.TrimY; var.JoyZ := var.TrimZ; var.JoyRZ := var.TrimRZ; // ============================================================ // Эмулируем трекир клавиатурой (клавотрекир) // ============================================================ // Если зажата клавиша [SHIFT] на клавиатуре, // то плавно дублируем мышетрекир с клавиатуры (без автовозврата) if (Key.Shift) then begin // [SHIFT] + [A] - курс левее // [SHIFT] + [D] - курс правее if (Key.A) then var.TrimYaw := (var.TrimYaw - var.KeySensYaw); if (Key.D) then var.TrimYaw := (var.TrimYaw + var.KeySensYaw); if (var.TrimYaw < -180.0) then var.TrimYaw := (var.TrimYaw + 360.0); if (var.TrimYaw > 180.0) then var.TrimYaw := (var.TrimYaw - 360.0); // [SHIFT] + [W] - тангаж выше // [SHIFT] + [S] - тангаж ниже if (Key.W) then var.TrimPitch := (var.TrimPitch + var.KeySensPitch); if (Key.S) then var.TrimPitch := (var.TrimPitch - var.KeySensPitch); if (var.TrimPitch < -180.0) then var.TrimPitch := (var.TrimPitch + 360.0); if (var.TrimPitch > 180.0) then var.TrimPitch := (var.TrimPitch - 360.0); // [SHIFT] + [Q] - угол обзора шире // [SHIFT] + [E] - угол обзора уже if (Key.Q) then var.TrimZoom := (var.TrimZoom + var.KeySensZoom); if (Key.E) then var.TrimZoom := (var.TrimZoom - var.KeySensZoom); if (var.TrimZoom < -1.0) then var.TrimZoom := -1.0; if (var.TrimZoom > 1.0) then var.TrimZoom := 1.0; // [SHIFT] + [Q] + [E] - центовка по курсу и тангажу трекира if ((Key.Q) and (Key.E)) then begin var.TrimYaw := 0.0; var.TrimPitch := 0.0; var.TrimRoll := 0.0; end; // Используем текущее затриммированное положение трекира var.JoyU := var.TrimZoom; var.ViewYaw := var.TrimYaw; var.ViewPitch := var.TrimPitch; var.ViewRoll := var.TrimRoll; // Если отжата клавиша [SHIFT] на клавиатуре, // то выполняем быстрый осмотр направлений с клавиатуры (с автовозвратом) end else begin // Выполняем автовозврат в затриммированное положение трекира var.JoyU := var.TrimZoom; var.ViewYaw := var.TrimYaw; var.ViewPitch := var.TrimPitch; var.ViewRoll := var.TrimRoll; if (Key.W) then begin // [W] + [Q] + [E] - влево 0, вверх 67 if ((Key.Q) and (Key.E)) then begin var.ViewYaw := 0.0; var.ViewPitch := 67.5; // [W] + [Q] - влево 45, вверх 45 end else if (Key.Q) then begin var.ViewYaw := -45.0; var.ViewPitch := 45.0; // [W] + [E] - вправо 45, вверх 45 end else if (Key.E) then begin var.ViewYaw := 45.0; var.ViewPitch := 45.0; // [W] + [A] + [D] - влево 0, вверх 90 end else if ((Key.A) and (Key.D)) then begin var.ViewYaw := 0.0; var.ViewPitch := 90.0; // [W] + [A] - влево 180, вверх 45 end else if (Key.A) then begin var.ViewYaw := -179.0; var.ViewPitch := 45.0; // [W] + [D] - вправо 180, вверх 45 end else if (Key.D) then begin var.ViewYaw := 179.0; var.ViewPitch := 45.0; // [W] + [S] - влево 0, вверх 45 end else if (Key.S) then begin var.ViewYaw := 0.0; var.ViewPitch := 45.0; // [W] - вправо 0, вверх 90 end else begin var.ViewYaw := 0.0; var.ViewPitch := 90.0; end; end else if (Key.S) then begin // [S] + [Q] + [E] - влево 0, вверх 0 if ((Key.Q) and (Key.E)) then begin var.ViewYaw := 0.0; var.ViewPitch := 0.0; // [S] + [Q] - влево 22, вверх 45 end else if (Key.Q) then begin var.ViewYaw := -22.5; var.ViewPitch := 45.0; // [S] + [E] - вправо 22, вверх 45 end else if (Key.E) then begin var.ViewYaw := 22.5; var.ViewPitch := 45.0; // [S] + [A] + [D] - влево 0, вниз 22 end else if ((Key.A) and (Key.D)) then begin var.ViewYaw := 0.0; var.ViewPitch := -22.5; // [S] + [A] - влево 90, вверх 0 end else if (Key.A) then begin var.ViewYaw := -90.0; var.ViewPitch := 0.0; // [S] + [D] - вправо 90, вверх 0 end else if (Key.D) then begin var.ViewYaw := 90.0; var.ViewPitch := 0.0; // [S] - вправо 0, вверх 22 end else begin var.ViewYaw := 0.0; var.ViewPitch := 22.5; end; // [Q] + [E] - влево 0, вверх 67 end else if ((Key.Q) and (Key.E)) then begin var.ViewYaw := 0.0; var.ViewPitch := 22.0; // [A] + [D] - влево 0, вверх 0 end else if ((Key.A) and (Key.D)) then begin var.ViewYaw := 0.0; var.ViewPitch := 0.0; end else if (Key.A) then begin // [A] + [E] - влево 90, вверх 45 if (Key.E) then begin var.ViewYaw := -90.0; var.ViewPitch := 45.0; // [A] - влево 180, вверх 0 end else begin var.ViewYaw := -179.0; var.ViewPitch := 0.0; end; end else if (Key.D) then begin // [D] + [Q] - вправо 90, вверх 45 if (Key.Q) then begin var.ViewYaw := 90.0; var.ViewPitch := 45.0; // [D] - вправо 180, вверх 0 end else begin var.ViewYaw := 179.0; var.ViewPitch := 0.0; end; // [Q] - влево 90, вверх 22 end else if (Key.Q) then begin var.ViewYaw := -90.0; var.ViewPitch := 22.5; // [E] - вправо 90, вверх 22 end else if (Key.E) then begin var.ViewYaw := 90.0; var.ViewPitch := 22.5; end; end; // ============================================================ // Вспомогательный режим (клаводжойстик + мышь) // ============================================================ end else begin // Во вспомогательном режиме клавотрекир не используется, // поэтому используем текущее затриммированное положение трекира var.JoyU := var.TrimZoom; var.ViewYaw := var.TrimYaw; var.ViewPitch := var.TrimPitch; var.ViewRoll := var.TrimRoll; // ============================================================ // Эмулируем джойстик клавиатурой (клаводжойстик) // ============================================================ // В режиме полета задом наперед инвертируем управление элеронами и РВ var.ScaleXY = 1.0; if (var.Mode = 2) then var.ScaleXY = -1.0; // Если зажата клавиша [SHIFT] на клавиатуре, // то плавно дублируем мышеджойстик с клавиатуры (без автовозврата) if (Key.Shift) then begin // [SHIFT] + [A] - крен левее // [SHIFT] + [D] - крен правее if (Key.A) then var.TrimX := var.TrimX - var.KeySensX * var.ScaleXY; if (Key.D) then var.TrimX := var.TrimX + var.KeySensX * var.ScaleXY; if (var.TrimX < -1.0) then var.TrimX = -1.0; if (var.TrimX > 1.0) then var.TrimX = 1.0; // [SHIFT] + [W] - тангаж ниже // [SHIFT] + [S] - тангаж выше if (Key.W) then var.TrimY := var.TrimY - var.KeySensY * var.ScaleXY; if (Key.S) then var.TrimY := var.TrimY + var.KeySensY * var.ScaleXY; if (var.TrimY < -1.0) then var.TrimY = -1.0; if (var.TrimY > 1.0) then var.TrimY = 1.0; // [SHIFT] + [Q] - рысканье левее // [SHIFT] + [E] - рысканье правее if (Key.Q) then var.TrimRZ := var.TrimRZ - var.KeySensRZ; if (Key.E) then var.TrimRZ := var.TrimRZ + var.KeySensRZ; if (var.TrimRZ < -1.0) then var.TrimRZ = -1.0; if (var.TrimRZ > 1.0) then var.TrimRZ = 1.0; // [SHIFT] + [Q] + [E] - центовка элеронов, РВ и РН if ((Key.Q) and (Key.E)) then begin var.TrimX := 0.0; var.TrimY := 0.0; var.TrimRZ := 0.0; end; // Используем текущее затриммированное положение джойстика var.JoyX := var.TrimX; var.JoyY := var.TrimY; var.JoyZ := var.TrimZ; var.JoyRZ := var.TrimRZ; // Если отжата клавиша [SHIFT] на клавиатуре, // то выполняем быстрое дерганье осей джойстика (с автовозвратом) end else begin // Выполняем автовозврат в затриммированное положение джойстика var.JoyX := var.TrimX; var.JoyY := var.TrimY; var.JoyZ := var.TrimZ; var.JoyRZ := var.TrimRZ; // [A] - крен влево // [D] - крен вправо if (Key.A) then var.JoyX := -1.0 * var.ScaleXY; if (Key.D) then var.JoyX := 1.0 * var.ScaleXY; // [W] - тангаж вниз // [S] - тангаж вверх if (Key.W) then var.JoyY := -1.0 * var.ScaleXY; if (Key.S) then var.JoyY := 1.0 * var.ScaleXY; // [Q] - рысканье влево // [E] - рысканье влево if (Key.Q) then var.JoyRZ := -1.0; if (Key.E) then var.JoyRZ:= 1.0; end; end; // ============================================================ // Добавляем автоматический сдвиг головы в сторону поворота // ============================================================ // Сдвигаемся влево-вверх-вперед при выглядывании влево if (var.ViewYaw < -30.0) then begin var.ViewShift := MapRange(var.ViewYaw, -30, -180, 0, -1); var.ViewHeight := MapRange(var.ViewYaw, -30, -180, 0, 1); var.ViewDist := MapRange(var.ViewYaw, -30, -180, 0, 1); // Сдвигаемся вправо-вверх-вперед при выглядывании вправо end else if (var.ViewYaw > 30.0) then begin var.ViewShift := MapRange(var.ViewYaw, 30, 180, 0, 1); var.ViewHeight := MapRange(var.ViewYaw, 30, 180, 0, 1); var.ViewDist := MapRange(var.ViewYaw, 30, 180, 0, 1); // Сдвигаемся вниз-вперед при заглядывании под прицел end else if (var.ViewPitch < -10.0) then begin var.ViewShift := 0.0; var.ViewHeight := MapRange(var.ViewPitch, -10, -30, 0, -1); var.ViewDist := MapRange(var.ViewPitch, -10, -30, 0, 1); // Сдвигаемся вверх-вперед при выглядывании над прицелом end else if (var.ViewPitch > 10.0) then begin var.ViewShift := 0.0; var.ViewHeight := MapRange(var.ViewPitch, 10, 30, 0, 1); var.ViewDist := MapRange(var.ViewPitch, 10, 30, 0, 1); // Сдвигаемся по центру при взгляде на прицел end else begin var.ViewShift := 0.0; var.ViewHeight := 0.0; var.ViewDist := 0.0; end; // ============================================================ // Обновляем состояние джойстика // ============================================================ // Переводим в новое положение первые 5 осей джойстика PPJoy1: // X (элероны), Y (РВ), Z (РУД), RZ (РН), U (скольжение) PPJoy1.Analog0 := var.JoyX; PPJoy1.Analog1 := var.JoyY; PPJoy1.Analog2 := var.JoyZ; PPJoy1.Analog3 := var.JoyRZ; PPJoy1.Analog4 := var.JoyU; // ============================================================ // Обновляем состояние трекира // ============================================================ // Переводим оси поворота трекира в новое положение за одну итерацию // (точное позиционирование без задержек на сглаженное сведение) FakeTrackIR.Yaw := var.ViewYaw; FakeTrackIR.Pitch := var.ViewPitch; // Ил-2 кратковременно (буквально на секунду) отвязывает обзор от мыши // (при сохранении мышиного управления турельными пулеметами) после каждого // изменения состояния трекира, поэтому при постоянном обновлении состояния // трекира можно отвязать обзор от мыши (сохранив управление турелями). // Выполняем ненулевые микроизменения оси Roll около нулевого значения, // чтобы эмулятор трекира постоянно обновлял состояние трекира даже при // визуально неизменной позиции всех осей if (FakeTrackIR.Roll < var.ViewRoll) then begin FakeTrackIR.Roll := var.ViewRoll + 0.000001; end else begin FakeTrackIR.Roll := var.ViewRoll - 0.000001; end; // Переводим оси сдвига трекира в новое положение за несколько итераций // (плавный сдвиг, чтобы избежать заглючивания в промежуточном положении) FakeTrackIR.X := (FakeTrackIR.X + 0.2 * (var.ViewShift - FakeTrackIR.X)); FakeTrackIR.Y := (FakeTrackIR.Y + 0.2 * (var.ViewHeight - FakeTrackIR.Y)); FakeTrackIR.Z := (FakeTrackIR.Z + 0.2 * (var.ViewDist - FakeTrackIR.Z)); end; 1 1
=BW=777 Опубликовано: 18 апреля 2024 Опубликовано: 18 апреля 2024 Граждане мышеводы активно вербуют потенциальных вирпилов в свою секту извращенцев), предлагая сменить нормальную ориентацию человека, стремящегося, хотя бы в компьютере насладиться полетом, и частично почувствовать себя на месте пилота ЛА, на задрота тыкающего мышкой, елозящей по столу. Отговорки про "хороший" и "плохой" джойстик - это не более, чем попытка самооправдания, своей лени натренировать осознанное управление ЛА, на режимах, позволяющих одержать победу в виртуальной схватке. При этом скучно осознавать себя маргиналом променявшего весь смысл данного жанра, на убогую замену нормального, аутентичного способа управления ЛА. Напоминает наркош, стремящихся вовлечь в свой порочный круг новых адептов. Нью вирпилам же хочу пожелать любознательности, трудолюбия, увлеченности и последовательности, в освоении любого в хорошем смысле слова авиасимулятора. Нет волшебных скриптов, или супердорогих девайсов, которые позволят овладеть виртуальным ЛА на продвинутом уровне. Только собственные мозги и упорство. Избавьте себя от соблазнов гуру "доброхотов", которые делятся с вами "секретам" своего якобы успеха. Это ущербность, стремящаяся одеть себя в приличное платье, чтобы скрыть свою уродливую суть. Тем самым лишая людей радости освоения аутентичных органов управления самолетом, так и радости усовершенствования и конструирования оных. 1
gfdtk62 Опубликовано: 18 апреля 2024 Опубликовано: 18 апреля 2024 Анекдот, может несколько богохульственный, но тем не менее: Собралась толпа побить камнями блудницу, тут выходит Иисус и говорит: - Кто сам без греха, пусть бросит в неё камень! Из толпы выходит пожилая женщина и бросает камень, Иисус: Мама! Ну сколько можно просить, сидите дома и не мешайте работать! Саня привет! Ты прочитал текст в свою сторону, лично я считаю, что джойстик (желательно хороший) который не колбасит и который живёт долго, более подходящий инструмент для полёта чем мышь, особенно для воздушного боя. В противном случае вся современная авиация летала бы на мышах. Но вопрос то стоял о приобщении людей к симу через мышеджой, как наиболее простой и доступны инструмент, всего то на всего. Если человеку понравиться, то потом будет и нормальный джой, и как показывает практика, педали, и устройства обзора. Да и в отрыве от домашнего кокпита или в случае поломки, иметь что то в запасе, не помешает. Разговоры о преимуществе мышеджоев от лукавого, о дешевизне, да, но о каком преимуществе может идти речь например в сталлфайте на нулях, где вся моторика на инстинктах, у а мышеджоя нет опорной точки вокруг которой строятся эти движения? Бум зум и догонялки - убегалки его стихия, ну может повиражить ещё. Но летать то попробовать на нём лучше чем на клаве. С этим тоже согласен: Цитата Нью вирпилам же хочу пожелать любознательности, трудолюбия, увлеченности и последовательности, в освоении любого в хорошем смысле слова авиасимулятора. Нет волшебных скриптов, или супердорогих девайсов, которые позволят овладеть виртуальным ЛА на продвинутом уровне. Только собственные мозги и упорство. Единственное положительное наследие мышеджоя для меня, это скрипты, которые запросто заменяют софт на джоях или создают его, если разработчики не позаботились о его создании, очень полезная вещь для любых девайсов, да и создание их увлекательное дело. _Х_ 1
=BW=777 Опубликовано: 20 апреля 2024 Опубликовано: 20 апреля 2024 Паша привет. Извини, не узнал, дай бог, чтобы это было к прибавлению твоего бюджета. Рад что ты в добром здравии. Если человек освоит мышь - на джой он не перейдет, с вероятностью на мой взгляд 80-90 процентов. Причины: ему жаль будет по сути впустую потраченного времени, на более менее приличное освоение мыши; ему будет морально дискомфортно быть в шкуре новичка, осваивающего джойстик, которого окучивают все кому не лень, не все могут выдержать это; уверенность, в мифическом превосходстве мыши над джоем; отсутствия желания глубоко погружаться в тему, когда можно пойти по легкому пути, сделать пиу-пиу, как в любой банальной стрелялке. Оправдание использования мыши финансовой несостоятельностью того или иного человека, в наше время не актуально. Это было бы справедливо, в начале 2000-х, но не сейчас, когда на рынке есть любые джойстики, крупносерийные, мелкосерийные, самоделки кустарей одиночек, рецепты самостоятельного изготовления, на любой вкус и бюджет. Чтобы получить первоначальные навыки, неофиту достаточно на авито купить даже б\у джой в приличном состоянии, для кобры, или 16000 -цена вопроса 2-3 тыс. рублей. Цена той же мыши. Сейчас в умирающем старичке летают считанные десятки вирпилов, например на Алексе из них постоянно человек пять (о которых я знаю из их собственного признания) летают на мышке. По причинам - смотри выше, и на джояе они летать не будут. Даже если им подарят кабана в пленке, например. 1
gfdtk62 Опубликовано: 21 апреля 2024 Опубликовано: 21 апреля 2024 20.04.2024 в 13:09, =BW=777 сказал: Если человек освоит мышь - на джой он не перейдет, с вероятностью на мой взгляд 80-90 процентов. Причины: ему жаль будет по сути впустую потраченного времени, на более менее приличное освоение мыши; ему будет морально дискомфортно быть в шкуре новичка, осваивающего джойстик, которого окучивают все кому не лень, не все могут выдержать это; уверенность, в мифическом превосходстве мыши над джоем; отсутствия желания глубоко погружаться в тему, когда можно пойти по легкому пути, сделать пиу-пиу, как в любой банальной стрелялке. А вот этот аспект мне как то в голову не пришёл, а ведь действительно, по собственному опыту так и есть. Я то летать начинал на джойстике,( да и продолжаю), но мышеджой осваивал из любопытства, ну и для того, что бы не было по принципу: "Не читал, но осуждаю". Так вот у меня для того, что бы приблизиться к уровню пилотирования в воздушном бою как на джойстике, на мышке ушло лет пять. И это уже при том, что я далеко не был новичком. Мышь в это плане реально сложнее и что ещё интересно, если на джойстике не полетать с полгода, то максимум за три часа навык восстанавливается, на мышке это уже дня три, что бы уверенно себя чувствовать. Джой от Дениса даёт точность при прицеливании ничуть ни хуже, да и естественность движений не мало значит, но мышеджой в запасе есть.
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас