Управление. Настраиваем команды на нажатие вместо удержания

По просьбам трудящихся.
У нас имеется проблема следующего характера: Есть команды, которые работают только при удержании копки, а хочется чтобы работали по нажатию, как переключатель.
На форуме есть тема-предложение чтобы исправить это недоразумение и сделать этот параметр настраиваемым. (прошу поддержать). Но пока разработчики соблаговолят это предложение реализовать, рассказываю как сделать посредством костылей (правки конфига)

Итак приступим:

Первое: Выходим из игры.

Второе: Открываем каким-либо текстовым редактором (например Notepad++) файл control.json находящийся по следующему пути: C:\Users\”имя вашей учетки в Windows”\AppData\Local\enlisted\downloads\online_storage\last\enlisted\jupiter
Это и есть файл настроек. В нем имеется 3 блока (С0,С1,С2), которые отвечают за свои настройки. C0-клавиатура,C1-геймпад, C2-клавиатура (альт.вариант)


Внутри этих блоков указаны сами команды.
Для кнопок они могут иметь следующие параметры:

1). Используемое устройство. dev:= (1 -клавиатура, 2-мышь, 3-геймпад и т.д.)

2). Кнопка привязанная к команде. btn:= (каждая кнопка на клавиатуре имеет свой порядковый номер, начиная от тильды. Например “D” это номер 32, “F” =33 и так далее)

3). Способ включения команды. type:= (значения от 0 до 6, определяет способ активации команды: обычное нажатие,удержание, двойное нажатие и т.д.)

4). Принцип работы команды. stickyToggle:b= (yes- работает по вкл/выкл, no- работает по удержанию). Именно этот параметр отвечает за то как работает та или иная команда.

5). Клавиша модификатор mod:= (порядковый номер клавиши, по аналогии с btn:= ). Суть его работы в том чтобы привязывать команды к комбинациям клавиш.

Третье: Правим конфиг и сохраняем его.
Все готово, запускаем игру и не трогаем через меню управления те настройки которые мы меняли (иначе доп.параметры слетят на дефолт). Если какой-то параметр не задан, то игра использует его значение заданное по умолчанию.

Пример использования 1:

Vehicle.Zoom{
  dev:i=2
  btn:i=1
  type:i=5
  stickyToggle:b=yes

Прицеливание в технике будет работать по вкл/выкл

Пример использования 2:

Human.Aim1{
  dev:i=2
  btn:i=1
  type:i=3
  stickyToggle:b=yes
}
Human.Aim2{
  dev:i=2
  btn:i=1
  stickyToggle:b=yes
}
Human.Zoom{
  dev:i=2
  btn:i=1
  stickyToggle:b=yes
}

Прицеливание из ручного оружия будет работать по вкл/выкл.

ВАЖНО!!! На текущий момент в игре имеются некоторые косяки. Например: если у вас было включено прицеливание и вашего бойца убили, при переключении на следующего бойца у него также будет включено прицеливание. И если он в этот момент будет тяжело ранен, то вы не сможете заюзать аптечку, пока не отключите прицеливание (использование аптечки при прицеливании не работает)

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

15 лайков

Спасибо большое, написано вроде понятно, надеюсь, разберусь. Наконец-то я смогу приседать, удерживая кнопку!

2 лайка

Для приседания с удержанием находите в конфиге
Human.Crouch{
dev:i=1
btn:i=“тут ваша кнопка”
}
и переделываете в
Human.Crouch{
dev:i=1
btn:i=“тут ваша кнопка”
stickyToggle:b=no
}
Сохраняете и запускаете игру. Должно работать. (только настройку через меню не трогайте, иначе параметр stickyToggle слетит на дефолт)

3 лайка

Спасибо.
Р.s. это С++ или С#? Или вообще что-то иное?

А если после ручной настройки в ридонли файлик перевести?

Т. е. приседание по нажатию и отмена при отпускании на кнопку “С” должно выглядеть так?

Human.Crouch{
dev:i=1
btn:i=“40”
stickyToggle:b=no
}

Мне кажется это лишнее. Если вы не будете трогать те настройки которые изменили, то они не будут слетать.

Верно (правда мне кажется “C” это не 40). Только проверьте чтобы в других блоках (C1 и C2) не было дублирования Human.Crouch без параметра stickyToggle:b=no Либо добавьте там этот параметр тоже, либо удалите саму команду.

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

1 лайк

Оказывается, вместо того, чтобы взять нормальную таблицу кодов они тупо посчитали клавиши на клавиатуре программиста. И тупо - это в прямом смысле этого слова. :rofl:

Не пойму, если есть тип 1 - нажатие и тип 2- удержание, то зачем еще переключатель stickyToggle:b= кторый дублирует “нажатие/удержание”?

Еще вопрос:
А почему ты здесь используешь 5 - короткое нажатие вместо стандартного -0?
По твоему я сделал, все получилось, спасибо.

Это две разные сущности.
Type - отвечает за то как должно включиться то или иное действие. Например если поставить тип удержание для команды огонь, то выстрел будет срабатывать только если удерживать кнопку, а обычные нажатия будут игнорироваться.
А stickyToggle отвечает за принцип работы, нужно ли для этого действия постоянно посылать сигнал на его выполнение (держать кнопку) или же достаточно послать его один раз (вкл/выкл)

1 лайк

Спасибо
Тогда по смыслу, для Type= “Удержание” больше подходит название “Долгое нажатие”, (Нажатие, Долгое нажатие, Двойное нажатие и тд.)
stickyToggle это “Удержание кнопки = Вкл/Выкл”. Сейчас я правильно понял?

С это 49, судя по всему, но у меня не получилось пока так сделать приседания.
Как точно должна выглядеть вся строчка?

Верно. Type- это как включить, а styckyToggle- как должна работать.

Human.Crouch{
dev:i=1
btn:i=“49”
stickyToggle:b=no
}
Также проверьте чтобы в секциях C1 и С2 вообще не было этой команды. Если она там будет даже бес параметров, то к ней будут применяться параметры “по-умолчанию”, для приседания это
stickyToggle:b=yes
P.S. Вечером если будет время, постараюсь проверить у себя работает или нет с приседанием. Просто мне в данном случае наоборот удобнее по вкл/выкл.

1 лайк

Спасибо, помог. На геймпаде играю, настроил задержку дыхания на нажатие, а не удержание. И зум в танке тоже.

1 лайк

:+1:Не забудьте поставить стрелочку первому посту. Чтобы разработчики реализовали все из коробки и у игроков не было необходимости ковыряться в файлах настроек.

Народ, кто шарит во всех этих настройках, скажите, для наклонов вправо/влево можно сделать по принципу вкл/выкл наклон? Сам пробовал, но что то ничего не работает. Кто поможет, был бы признателен.

Для наклонов это не работает. Наклоны реализованы как ось. То есть эту команду можно завязать на аналоговую ось (мышь, джойстик) или на виртуальную (dev:=31) где отклонение производится кнопками. Можно конечно попробовать вместо команд maxbtn и minbtn задействовать incbtn и decbtn, по аналогии с настройками ручки газа для самолета, но не факт что получится. Вечером гляну, если время будет.

Получилось поставить наклоны по нажатью?

Пока не сподобился попробовать, времени нет.