Моддинг

Использование редуктора H-shifter

основы

Подставка H-shifter предназначена для использования с Logitech G27 и совместимыми колесами. Он не будет работать с обычными кнопками!

Сдвиги, которые входят в состав обычных коммерческих гоночных колес, предназначены для имитации расположения ручных переключателей в автомобилях, которые обычно имеют до шести передач для движения вперед. С другой стороны, грузовики имеют гораздо больше передач. Наличие отдельного положения для каждой передачи было бы непрактичным, поэтому для выбора активного набора передач используется дополнительное управление. Затем одна шестерня из набора выбирается стандартным рисунком H-shifter. Для получения дополнительной информации о доступных шаблонах см.

Коробка передач, смоделированная в игре, имеет двенадцать передних передач и одну передачу заднего хода. В конфигурации по умолчанию встроенная коробка передач H-shifter ведет себя как «передача диапазона» (см. Ссылку выше), где кнопка «Shifter Toggle 1» переключается между зубчатым колесом 1-6 и комплектом передач 7-12. (см. параметры контроллера в игре, на G27 он по умолчанию отображается на самую красную красную кнопку на H-shifter).

Пример переключения передач

У вас есть шестерня 6, и вы хотите переключиться на передачу 7 - вам нужно нажать кнопку «Shifter Toggle 1», чтобы переключиться на шестерню 7-12, а затем переместите рукоятку H-shifter в положение 1.

Аналогичным образом, чтобы перейти от шестерни 7 к шестерне 6, нажмите «Shifter Toggle 1», чтобы переключиться на шестерню 1-6 и переместите рукоятку H-shifter в положение 6.

Подготовленные макеты

В игре предусмотрены три макета, которые можно выбрать из экрана опций «Контроллеры» в игре, используя опцию «Shifter layout».

Передача диапазона

Это стандартная конфигурация, используемая в игре. «Shifter Toggle: 1» выбирает между передачами 1-6 и шестерней 7-12.

Передача сплиттера

«Shifter Toggle: 1» выбирает между шестернями нечетного номера (1,3,5,7,9,11) и четными (2,4,6,8,10,12) передачами.

Передача диапазона-сплиттера

Эта конфигурация пытается подражать макету реального Scania H-shifter. Обратите внимание, что игра не моделирует вторую передачу заднего хода и две ползунки, поэтому соответствующие позиции не используются.

Этот случай представляет собой комбинацию обоих предыдущих типов передачи, в которых переключатели Shifter Toggle: 1 переключаются между диапазонами передач и переключателем Shifter Toggle: 2 между раздробленными передачами.

Расширенная конфигурация

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

Файлы конфигурации коробки передач для отдельных предопределенных макетов можно найти в каталоге вашего профиля (не забудьте заменить PROFILE_ID на ваш реальный идентификатор профиля):

Мои документы \ Euro Truck Simulator 2 \ profile \ PROFILE_ID \ коробка передач * .sii

Файлы содержат список записей, которые отображают состояние триплет (положение переключателя h, состояние переключателя 1, состояние переключателя 2) на конкретную передачу.

direct_gearbox_gear: _nameless.0F5B.B220 {gear_impulse_index: 0 selector_1: -1 selector_2: -1 gear: 0}
имя Описание
gear_impulse_index

Определяет, в какую позицию должен находиться H-shifter:

  • 0 - нейтральный
  • 1 - «Положение сдвига: реверс»
  • 2 - «Положение сдвига: 1»
  • 3 - «Положение сдвига: 2»
  • ...
  • N - «Положение сдвига: N»
Будьте внимательны при редактировании конфигурации ввода (см. Ниже ). В игре не проверяется, поддерживает ли ваше оборудование H-shifter позицию, которую вы ввели.
selector_1

Определяет состояние первого селектора:

  • -1 - игнорировать состояние селектора
  • 0 - селектор должен быть выключен
  • 1 - селектор должен быть включен
selector_2

Определяет состояние второго селектора.
См. Selector_1 для списка возможных значений.

шестерня

Механизм переключения, когда выполняются три условия выше.

Пользовательское оборудование

Можно использовать специальное аппаратное обеспечение H-shifter при условии, что он сообщает о положении как непрерывном нажатии какой-либо кнопки. С более сложной пользовательской конфигурацией ввода можно также поддерживать позицию, обозначенную как значение оси (например, дроссельная заслонка).

Если аппаратное обеспечение имеет возможность различать оба положения переключателей диапазона или сплиттера, то вместо переключающего могут быть сконфигурированы дополнительные входы gearsel1on / gearsel2on и gearsel1off / gearsel2off , которые недоступны через интерфейс пользователя.

Расширенная конфигурация ввода

Пользовательский интерфейс игры поддерживает использование до трех контроллеров. Сама игра способна одновременно использовать более трех контроллеров, однако такую ??настройку нельзя настроить через пользовательский интерфейс игры, и требуется ручная настройка файлов конфигурации игры.

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

  • Используйте дроссель летучего ящика вместо h-shifter.
  • Используйте кнопку переключения между двумя наборами функций, назначенных другим кнопкам, для использования с контроллерами с ограниченным количеством кнопок.
  • Используйте одну кнопку для переключения между различными страницами в советнике.
  • Обеспечьте независимую чувствительность для вертикального и горизонтального контроля взгляда.
  • Используйте отслеживающий трекер TrackIR для управления движением грузовика для людей с ограниченными возможностями.

Файл конфигурации

Конфигурация контроллера сохраняется в каталоге профиля (не забудьте заменить PROFILE_ID на ваш реальный идентификатор профиля):

Мои документы \ Euro Truck Simulator 2 \ profile \ PROFILE_ID \ controls.sii

Файл создается, когда экран выбора контроллера или клавиатуры открывается впервые и содержит набор строк конфигурации, которые описывают различные компоненты конфигурации.

пример

Это пример того, как использовать педаль акселератора и тормоза от дополнительного контроллера и рупорную кнопку от третьего контроллера без использования внутриигрового интерфейса. Тот же механизм можно использовать, если необходимо использовать более трех контроллеров.

  1. Используя шаги, описанные в разделе идентификации входа, определите идентификацию входа акселератора на вторичном контроллере.
    Пример идентификации: di8.'{C0002222-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000}»у

  2. Определите идентификацию входа педали тормоза на вторичном контроллере.
    Пример идентификации: di8.'{C0002222-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000}»RZ

  3. Определите идентификацию входа кнопки на третьем устройстве.
    Пример идентификации: di8.'{C0003333-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000}»b4

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

  5. Для подключения педали акселератора от вторичного контроллера к входному дросселю в игре:
    Найдите текст "input j_throttle `joy.y`" в файле конфигурации и измените идентификатор ввода, поэтому в нашем примере он так читает
    "input j_throttle` di8. '{C0002222-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000}»y`»

  6. Для подключения педали тормоза от вторичного контроллера к входному тормозному входу:
    Найдите текст "input j_brake `joy.y`" в файле конфигурации и измените идентификатор входа на идентификацию педали тормоза вторичного контроллера, поэтому в нашем примере он читает
    "вход j_brake` di8. '{C0002222-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000} rz`».

  7. В этом случае педали сообщаются как две отдельные оси, поэтому вам нужно отключить объединенную ось, изменив значение в "constant c_jcombined 1.000000" на "constant c_jcombined 0.000000"

  8. В зависимости от устройства вы можете настроить мертвую зону для этих входов, изменив значения в "constant c_throt_dz 0.000000" и "constant c_brake_dz 0.000000"

  9. Чтобы подключить кнопку от третьего контроллера к входному сигналу в игре:
    Найдите текст "mix horn `keyboard.h?0`" в файле конфигурации и изменить идентификатор ввода, поэтому в нашем примере он читает
    "mix horn` di8. '{C0003333-0000-0000-0000-000000000000} |. {00000000-0000-0000-0000-000000000000} b4`».

Входная идентификация

Игра идентифицирует отдельные входы на контроллерах, используя имя, составленное из нескольких частей в следующем формате:

System_id.ИДЕНТИФИКАТОР УСТРОЙСТВА'.INPUT_ID

В ОС Windows SYSTEM_ID почти всегда устанавливается в di8, указывая на то, что используется DirectInput8 .

DEVICE_ID - это строка, идентифицирующая конкретное устройство контроллера. Существует два способа определить идентификацию желаемого устройства. Вы можете выбрать устройство как активное в пользовательском интерфейсе и проверить, что игра хранится в псевдониме устройства "joy" (найти строку, содержащую device joy текстового device joy ) в файле конфигурации. Кроме того, вы можете заглянуть внутрь файла game.log для строк со следующим форматом:

[di8] Инициализация устройства «DEVICE_NAME» как « DEVICE_ID »

Соответствующая идентификация, используемая в файле конфигурации, равна di8. 'ИДЕНТИФИКАТОР УСТРОЙСТВА'

INPUT_ID идентифицирует конкретный вход (например, ось, кнопка) на устройстве. Лучший способ определить это - использовать интерфейс игры для создания привязки с использованием этого ввода и проверить, что игра хранится в файле конфигурации. Для контроллеров обычно b1 - b128 для кнопок, x, y, z, rx, ry, rz для осей, sl1 или sl2 для ползунков и pov_ (1 | 2 | 3 | 4) _ (вверх | вниз | влево | вправо ) для POV

Иногда за входной идентификацией следует дополнительная спецификация компонента входа (например, "di8.rel_position.x" которая представляет собой X-компонент дельта точки мыши). В других случаях определенный псевдоним может использоваться для сокращения части имени ввода.

Типы компонентов

Псевдоним устройства

Формат примера: радость устройства `di8. '{A76B60D0-A8FD-11E1-8002-444553540000} | {C29B046D-0000-0000-0000-504944564944} ' `

Пользовательский: Да

Алиас устройства определяет новое имя («радость»), которое может использоваться в других частях конфигурационного файла как ярлык для ссылки на конкретное устройство ввода без необходимости всегда использовать его полную идентификацию. Определение и использование псевдонима устройства также позволяет просто переключиться на другое совместимое устройство, изменив цель псевдонима, не обновляя остальную часть конфигурации. По умолчанию игра создает три псевдонима клавиатуры , мыши и радости, чтобы идентифицировать устройство клавиатуры, мыши и джойстика, выбранное в пользовательском интерфейсе.

Входной псевдоним

Формат примера: ввод j_steer `joy.x`

Пользовательский: Да

Псевдоним ввода определяет новое имя («j_steer»), которое может использоваться в других частях файла конфигурации как ярлык для ссылки на конкретный вход (ось, кнопка) с устройства ввода без указания более длинного имени. Как и в случае с алиасами устройства, входные псевдонимы также позволяют легко изменять конфигурацию. Пользовательский интерфейс конфигурации игровой оси работает путем изменения входных псевдонимов, чтобы указать на выбранные оси.

постоянная

Формат примера: константа c_steer_dz 0.000000

Пользовательский: Да

Константа определяет числовое значение имени («c_steer_dz»), которое может использоваться вычислениями в других частях файла конфигурации или непосредственно самой игрой (например, сила FF).

Смешивание

Пример формата: mix dsteerleft `keyboard.larrow?0 | keyboard.a?0`

Пользовательский: Нет

Микс определяет выражение, которое используется для вычисления значения одного игрового ввода. Игра может использовать это значение как аналоговый вход (например, долю вращения рулевого колеса) или как логическое значение (например, переключатель стеклоочистителей).

Интерпретация и дополнительная настройка отдельных миксов (в каких ситуациях они оцениваются) жестко закодированы в игре, и в настоящее время невозможно создать дополнительные миксы в файле конфигурации.

В простейшей форме выражение возвращает значение одного входа. Более сложные формы могут использовать несколько математических и логических функций (см. Ниже ) для получения результатов из более чем одного ввода. Обратите внимание, что экраны конфигурации ввода пользовательского интерфейса напрямую поддерживают только очень ограниченное подмножество выражений и отображают сообщение «Complex», если они не могут обрабатывать выражение.

Как правило, существует два типа оценки смешивания.

  • Событие основано - этот микс оценивается всякий раз, когда есть изменения в любом вводе (или другом миксе), от которого это зависит. Обычно такие миксы, которые читаются для отдельных прессов (например, смена передач, any_cmd). Начиная с 1.3.1. эти миксы получают повторяющиеся оценки, когда они реагируют на кнопку, которая генерирует символы (например, символьный ключ на клавиатуре). Хотя обычно это не проблема, это может быть важно при использовании микса в режиме loopback (например, он ссылается на старое значение самого себя).
  • Frame based - эта комбинация оценивается в конце кадра. Обычно такие миксы, которые реагируют на удержание (например, звуковой сигнал) или обеспечивают аналоговые значения (например, рулевое управление).

Пользовательские компоненты

Для некоторых типов компонентов можно создавать дополнительные компоненты, просто используя дополнительную строку определения компонента в файле конфигурации. Названия таких компонентов должны соответствовать следующим требованиям:

  • Должен быть уникальным в файле конфигурации.
  • Должно иметь не более 12 символов.
  • Разрешены только буквенно-цифровые символы и символ подчеркивания.

Выражения

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

  • Ссылка на постоянное значение (например, 2.0)
  • Ссылка на именованную константу (например, c_steer_dz ).
  • Ссылка на вход контроллера с использованием его полного (например, di8.keyboard.space ) или псевдонимы (например, keyboard.space ). В случае некоторых специальных входов может потребоваться дополнительный селектор компонентов (.x, .y, .z, .yaw, .pitch, .roll). В файле конфигурации по умолчанию вы увидите, что альтернативный keyboard.space?0 используется синтаксис. Этот синтаксис указывает, что если вход не может быть найден, подвыражение должно вести себя так, как если бы константа 0 была возвращена с устройства вместо сообщения об ошибке и сбоя всего выражения.
  • Ссылка на какой-либо другой микс (например, dforward ). Обратите внимание, что круговые ссылки не допускаются, однако можно ссылаться на микс, к которому относится это выражение. В этом случае возвращается предыдущее значение. Обратите внимание, что нет никаких гарантий относительно частоты или времени между вызовами, однако он может использоваться для реализации простых счетчиков или переключателей при использовании с миксами, основанными на событиях.
  • Специальное имя unbound, которое разрешает постоянный ноль. Он используется для сохранения информации, если в основной слот привязки не назначен ключ.

Значения могут быть объединены с использованием арифметических (+, -, *, /) и логических (&, |,!) операторы. Обратите внимание, что правила приоритета операторов очень просты, поэтому рекомендуется использовать скобки. Когда значение интерпретируется в логическом контексте (например, во время логических операций OR или AND или когда оно используется как логическое значение в игре), значения, превышающие или равные 0,5, оцениваются как true, а другие значения - false. Логические операторы возвращают 1.0 для true и 0.0 для false и имеют оценку короткого замыкания.

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

функция Описание
макс (1 ..) Возвращает наибольший из параметров.
мин (1 ..) Возвращает наименьший из параметров.
пау (2 ..) (Р0 ^ р1) ^ p2) ...
абс (1) Абсолютное значение параметра.
знак (1) Возвращает -1, если параметр отрицательный, 1, если параметр - положительное число, а 0 - ноль.
GT (2) Возвращает 1.0, если первый параметр больше второго.
GTE (2) Возвращает 1.0, если первый параметр больше или равен второму.
л (2) Возвращает 1.0, если первый параметр ниже второго.
Ге (2) Возвращает 1.0, если первый параметр меньше или равен второму.
Сель (3) Возвращает второй параметр, если первый параметр имеет значение true (см. Выше), для false возвращает третий параметр.
BOOL (1) Возвращает 1.0, если первый параметр равен true (см. Выше) и нулю в противном случае.
нормализации (2-3) Возвращает нормированное положение первого параметра в диапазоне, образованном <вторым параметром, третьим параметром>. Если значение вне диапазона, оно будет зажато на нем. Если третий параметр не указан, будет использоваться 1.0. Если второй и третий параметры не образуют действительный непустой диапазон, то возвращается нуль.
мертвая зона (2-3) Применяет нуль-симметричную мертвую зону. Подобно нормированию, однако он также применяется симметрично к отрицательным значениям. Если второй параметр отрицательный, он устанавливается на ноль.