Ил-2 Штурмовик: Битва за Британию. Скрипты. Базовые сведения

Материал из АвиаВики
Перейти к: навигация, поиск

Основные понятия

Скрипты для "Ил-2 Штурмовик: Битва за Британию." пишутся на языке программирования C# с использованием подходящих для этого языка редакторов кода - можно пользоваться даже стандартным блокнотом, однако если подойти к вопросу серьезнее, то нужно скачать бесплатную версию Visual Studio 2010 Express. Дополнительно для работы можно использовать Notepad++, который подходит для быстрой правки и просмотра кода.

Файл скрипта

Скрипт представляет собой файл с разрешением .cs. Название скрипта совпадает с названием миссии, вместе с которой он вызывается.

Например:
test.mis
test.cs

Выполнение скрипта

Миссии и подмиссии

Надо сильно забыть концепцию миссии из ила, т.к. тут как таковой миссии (с точки зрения Ила) не существует. Есть "битва", а в ее рамках выполняются различные миссии. Миссия вообще умеет может загружать сама себя. Технически это конечно не так, но выглядит именно так. Т.е. из миссии мы приказываем через GamePlay.gpPostMissionLoad() загрузить в битву еще одну миссию, а что это за миссия - не важно. Каждая миссия загружается под новым номером. Скажем есть одна миссия-хост (так сказать, "точка входа"). По OnBattleStarted() она загружает стартовый набор миссий (скажем одна - красные танки, вторая синие танки, едут навстречу). И в каждой из этих миссий отслеживается OnActorDead(). Если была уничтожена группа (она одна все равно), миссия загружает себя снова, сразу или по таймеру. Если помер танчик, то через несколько секунд убираем его трупик через Destroy(), что бы не мешался. Получается "бесконечная" стенка-на-стенку.

Как запустить подмиссию

Запуск подмиссии осуществляется через GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/ххх.mis")(путь может быть другой). Есть несколько вариантов:

Метод public override void OnBattleStarted()

Позволяет при старте основной миссии-хоста загрузить одну и более подмиссий(в примере blue01.mis и red01.mis):

public override void OnBattleStarted()
   {
       base.OnBattleStarted();
       GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/blue01.mis");
       GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/red01.mis");
    }