Теперь перейдем к программированию. Синтаксис я обьяснять не буду, только приемы. Создадим профиль для Ил-2.
Сначала описываем нужные нам команды, в первую очередь режимы. Всего их будет 4:
<SCRIPTLIST>
режим навигации
loadNAV LOADMODE_NAV
режим навигации с нажатым шифтом
loadsNAV LOADMODE_sNAV
боевой режим
loadFIGHT LOADMODE_FIGHT
боевой режим с нажатым шифтом
loadsFIGHT LOADMODE_sFIGHT
Теперь все остальное:
очень полезная команда, очищает кнопку от всех функций
_NULL
# Оружие
стреляем пушками и пулеметами сразу
FireAllp backspace
FireAllr BACKSPACE
кидаем бомбы
Bomb period PERIOD
Тут надо обратить внимание на разницу в описании команд. Смысл в том, что я хочу чтобы стрельба из оружия продолжалась до тех пор пока я не отпущу соответствующую клавишу, а сброс бомб будет происходить по одной на каждое нажатие кнопки.
# Управление
FlapsUp v V
FlapsDown f F
Radiator r R
Engine i I
Gear g G
Breaks b B
WEP w W
# Вспомогательные функции
FastTime rbracket RBRACKET
SlowTime lbracket LBRACKET
Pause p P
# Обзор
Про обзор писать ничего не буду, тут каждый настраивает по-своему - я использую NewView, кто-то мышь, кто-то стандартный тип1 или тип2.
Итак, все команды описаны, начинаем назначать их клавишам. Описываем наши режимы.
<PROGRAM_MODES>
[DEFAULT]
{DEFAULT}
[NAV]
{NAV}
[sNAV]
{sNAV}
[FIGHT]
{FIGHT}
[sFIGHT]
{sFIGHT}
Почему их получилось 5? Режим DEFAULT создается по умолчанию, это тот режим который загружается при инициализации джоя.
Например - в режиме DEFAULT кнопке Триггер назначена клавиша Пробел. Кроме того, обьявлены 3 режима - М1, М2 и М3, переключения которых назначены на кнопки Mode_1, Mode_2 и Mode_3. Причем сейчас этот переключатель стоит в положении Mode_1, в котором на Триггер назначена клавиша Ввод. Что будет при загрузке профиля в джой? Если открыт текстовый редактор, то результат можно увидеть - сначала загрузится режим DEFAULT и будет нажат Пробел, после чего загрузится М1 и будет нажат Ввод (естественно, Триггер в этот момент должен быть нажат).
Для чего можно применить этот режим? Очень просто - если есть функции, которые во всех обьявленных режимах назначаются на одни и те же кнопки (например это может быть управление обзором) то назначать их лучше всего в режиме DEFAULT иначе это придется делать в каждом из обьявленных режимов.
Тут есть некоторые тонкости, возможно в дальнейшем я попробую их обьяснить, но по-моему это бесполезно - тут все надо почувствовать самому.
Итак, начнем раскидывать функции по режимам.
Обратите внимание на реализацию шифта. Как такового шифта в XD-Profile нет, им может быть любая кнопка, я выбрал Пинки. Ну а смысл шифта очень простой - при нажатии загружается новый режим, при отпускании - возвращается старый. Что я и делаю:
[DEFAULT]
Mode1Press = loadNAV
Mode2Press = loadFIGHT
{DEFAULT}
[NAV]
ShiftPress = loadsNAV
ShiftRelease = loadNAV
{NAV}
[sNAV]
{sNAV}
[FIGHT]
ShiftPress = loadsFIGHT
ShiftRelease = loadFIGHT
{FIGHT}
[sFIGHT]
{sFIGHT}
Теперь все остальное:
[DEFAULT]
Mode1Press = loadNAV
Mode2Press = loadFIGHT
FireСPress = Radiator
{DEFAULT}
[NAV]
ShiftPress = loadsNAV
ShiftRelease = loadNAV
ThrottleHat1UpPress = _NULL
ThrottleHat1RightPress = FlapsDown
ThrottleHat1LeftPress = FlapsUp
FireAPress = Engine
FireBPress = Gear
TriggerPress = Breaks
{NAV}
[sNAV]
ThrottleHat1UpPress = Pause
ThrottleHat1LeftPress = SlowTime
ThrottleHat1RightPress = FastTime
{sNAV}
[FIGHT]
ShiftPress = loadsFIGHT
ShiftRelease = loadFIGHT
ThrottleHat1UpPress = _NULL
ThrottleHat1RightPress = FlapsDown
ThrottleHat1LeftPress = FlapsUp
TriggerPress = FireAllp
TriggerRelease = FireAllr
FireAPress = _NULL
FireBPress = WEP
{FIGHT}
[sFIGHT]
FireBPress = Bomb
ThrottleHat1UpPress = Pause
ThrottleHat1LeftPress = SlowTime
ThrottleHat1RightPress = FastTime
{sFIGHT}
Вот и все. С этим профилем уже можно немного летать. Конечно, я взял только несколько основных функций для примера, но остальные добавить труда думаю не составит.
Более сложные возможности я опишу в следующий раз.