В AEIIRM версии 2.3 присутствует, хотя и не полная, поддержка скриптов для миссий кампании. Это как минимум позволяет свободно изменять карты кампании без необходимости их подгонять под "вшитые" в игру сценарии, например, теперь можно менять положения юнитов, которые раньше должны были оставаться там, куда их поместили разработчики игры. При определенном творческом подходе, однако, можно будет даже создавать свои собственные сценарии для кампании.

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

Пример простейшего скрипта:

@Case 0
NextState

@Case 1
CompleteMission

В этом случае игрок просто выигрывает сражение еще до того, как оно успело бы начаться. Рассмотрим этот простой пример пошагово.

Выполнение скрипта начинается с нулевого состояния, при этом будут выполняться инструкции, находящиеся после метки @Case 0. В данном скрипте инструкция там всего одна - NextState, она переводит скрипт в следующее состояние, то есть первое. Соответственно, при следующем запуске скрипта будут выполняться инструкции после метки @Case 1, то есть CompleteMission. Последняя инструкция завершает миссию - игрок победил.

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

Другой, более полезный с точки зрения практического применения скрипт:

@Case 0

ShowMapName ; показываем название карты
Wait 10 ; ждем немного, чтобы это название не пропало сразу же, едва появившись
NextState ; переходим к следующему состоянию

; задержка, вызванная инструкцией Wait 10, произойдет только при следующем запуске скрипта,
; причем из-за инструкции NextState уже в следующем состоянии.
; инструкции внутри одного состояния выполняются без задержек.

@Case 1

SetFadeValue 16 ; убираем занавес (иначе будет видно только черный экран)
SetCursorVisible true ; показываем курсор
StartPlay ; запускаем игру в обычном режиме
NextState ; переходим к следующему состоянию

@Case 2

Test CountUnits -1 -1 1 = 0 ; проверяем, остались ли еще противники

; если предыдущая проверка выполнится успешно, то есть противников будет 0,
; мы окажемся на следующей строчке скрипта.
; если же проверка провалится (число противников не равно 0),
; выполнение скрипта просто завершится.
; при следующем запуске скрипта эта проверка будет выполнена снова, и т.д.

Test GameState = 0 ; проверяем, что игра работает в обычном режиме

; здесь то же самое, что и в случае с проверкой выше.

Wait 10 ; ждем еще немного, пока отыграются запущенные анимации (например, облако дыма над последним поверженным противником)
NextState ; переходим к следующему состоянию

@Case 3

CompleteMission ; завершаем миссию

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

Ниже приведен список всех реализованных на данный момент инструкций.

Используются технологии uCoz