Первые шаги

Среда

Размещение файлов, общая структура каталогов, каталоги пользователя missions, scripts, dtaext, каталоги миссий.

Вначале кратко разберемся со средой в которой нам предстоит работать. Нас в первую очередь будет интересовать каталог UserName находящийся в папке Users (UserName — ваш ник в игре). Перейдите в указанный каталог:

/path/to/Operation Flashpoint/Users/UserName

Вот как может выглядеть его организация:

[DtaExt]этот каталог можно создать ручками — он аналогичен каталогу dtaext кампании
[Missions]здесь лежат созданные вами миссии, этот каталог будет существовать если вы сохраняли их в редакторе
[MPMissions]здесь лежат созданные вами сетевые миссии, этот каталог будет существовать если вы сохраняли их в редакторе
[Saved]это ваши сэйвы
[Scripts]этот каталог необходимо создать ручками — здесь лежат скрипты доступные из любой миссии. Он аналогичен каталогу scripts кампании.
UserInfo.cfgфайл с вашими настройками
description.extэтот файл можно создать ручками. Он аналогичен файлу description.ext кампании.

Как можно заметить, о некоторых каталогах сказано, что они соответствуют тем же каталогам кампаний — этим можно воспользоваться при запуске миссий из распакованных кампаний, часто проще распаковать всю кампанию в директорию «Users» и скинуть туда ваши настройки. Этот способ хорош тем, что теперь все звуки из «\DtaExt\Sound\» и классы прописанные в description.ext будут доступны из загружаемых миссий. К примеру вы распаковали оригинальную кампанию «CWC» от BIS в каталог «Users» — теперь можно зайти в редактор под юзером «1985» и быть спокойным относительно того, что игра не найдет вдруг какой либо ресурс.

Естественно все это важно учитывать и при создании своих собственных кампаний. Любой проект который возможно вырастет в пусть даже небольшую кампанию имеет смысл начинать с создания нового пользователя — это позволяет удобно разделить работу над миссиями и повседневные эксперименты в редакторе. Старайтесь не дублировать разделяемые ресурсы — пусть звуки будут размещены в «DtaExt\Sound», а скрипты — в «Scripts».

Далее перейдем в Missions — здесь находятся сами каталоги миссий. Имена каталогов состоят из непосредственно имени миссии (имя которое вы дали миссии при сохранении её в редакторе) и расширения состоящего из внутриигрового названия острова.

Например миссия с именем "my_mission" на Авероне будет лежать в папке "my_mission.Eden".

Примечание: для справки — «внутренние» имена осторовов: Малден — Abel (Авель), Аверон — Eden (Эдем), Кольгуев — Cain (Каин), Ногова — Noe (Ной); такие вот забавные параллели проводят разработчики.

Редактор

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

Очень кратко пробежимся по основным возможностям редактора, связанными со скриптованием. Первым делом включим режим редактора «Advanced» («Полный» в русской версии, при первом запуске игры он «Easy» или «Легкий»). Жмем «F2» — мы в режиме установки юнитов, двойной клик по карте — перед нами окно параметров помещаемого на карту юнита. Нас будет интересовать лишь одно поле: «initialization» — здесь можно разместить любое скриптовое выражение. Название поля — «инициализация» не случайно, оно предназначено для задания начального состояния юнита и выполняется непосредственно перед началом миссии. В контексте этого поля доступна переменная _this — это ссылка на помещаемый юнит. Поместим на карту юнит с типом «man» и введем в поле инициализации следующий текст:

hint ( name _this )

Поясним: hint — команда выводящая подсказку в верхнем левом углу экрана, name — команда возвращающая имя юнита, _this — помещаемый юнит. Это выражение выведет подсказку с именем нашего юнита, запускаем миссию и смотрим.

Другой пример отобразит список оружия юнита:

hint format ["%1",  weapons _this ]

Здесь появилась новая команда format, она преобразует массив возвращаемый «weapons _this» к строке. Мы не будем сейчас вдаваться в объяснения, можно сказать, что эти примеры лишь для разогрева. Все что надо сейчас запомнить — в поле инициализации можно записывать скриптовые выражения.

Пойдем дальше — «F3», даблклик — мы помещаем на карту триггер. Здесь нас будут интересовать три поля: «Condition», «On Activation» и «On Deactivation» («Условие», «По активации» и «По деактивации»)

Поле «Condition» предназначено для корректировки условия выполнения триггера. В тот момент когда выражение указанное здесь станет истинным (вернёт true) — триггер сработает. Это произойдет независимо от состояния некоторых других опций триггера. Предопределенная переменная this, присутстутствующая здесь по умолчанию, постоянно меняет своё значение — в те моменты когда условия триггера выполняются она возвращает true, в остальные — false; именно она и заствляет триггер срабатывать. Естественно, мы можем контролировать этот механизм — например записав в поле:

this && alive Pupkin

мы заставляем срабатывать триггер, только если выполняются его условия и жив некто Пупкин

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

this && alive Pupkin && Pupkin in thisList

С полями «По активации» и «По деактивации» дело обстоит проще — выражения, заключенные в них выполняются в случае активации и деактивации триггера, соответственно; в этих полях также доступна переменная thislist.

Copyright © , 2006–2014.