Operation Flashpoint. Создание модификаций

Posted by AlexS on мая 31, 2005 - 00:00

OFP вышла уже достаточно давно, но до сих пор очень популярна благодаря правдоподобности и реальному отражению войны. Но проходить игру снова и снова со временем надоедает, какой бы захватывающей она ни была. Вы спросите, почему Operation Flashpoint еще дышит? Да потому, что успех игры определяется количеством игровых серверов в Интернете и еще одним немаловажным фактором — количеством любительских модификаций. Чтобы создать модификацию, нужен продвинутый редактор, способный подойти и новичку, и профессионалу. В данном случае Bohemia interactive создала настолько понятный и простой конструктор, что простенькие мультиплеерные и одиночные карты может создать даже десятилетний ребенок, и количество выпускаемых карт и модов стало просто огромным. Я предлагаю вам изучить редактор и научиться создавать профессиональные, отлично
сбалансированные карты.

Глава 1. С чего-то ж надо начинать!

Тех, кто сразу ринулся в бой, спешу охладить — сначала следует разобраться с основными функциями редактора. Замечу, что в изучении будет использоваться полная (Advanced) версия редактора. Чтобы переключиться в этот режим, нажмите на кнопку "легкий" (Easy) на панели редактирования справа, и она измениться на кнопку "полный".

Итак, для начала разберем эту самую панель редактирования. В самом верху вы видите небольшое окошко с изображением тучи или солнца и указанием времени. Оно называется "разведка". В нем можно установить:
1. Время — определяет, когда происходит действие миссии.
2. Погода — естественно, погода в вашей миссии.
3. Прогноз — указывает, как будет меняться погода на протяжении суток.
4. Дата — меняет дату миссии; актуально, если вы создаете кампанию — не может же весь сюжет проходить в "Пятницу", установленную по умолчанию. 5. Брифинг — делится на два подпункта: название и описание. Первый подпункт устанавливает название, которое будет отображаться на экране выбора одиночных миссий, второй — определяет описание, которое будет отображаться на экране выбора одиночных миссий (справа).
6. И, наконец, последний пункт — сопротивление на стороне — указывает, как будет относиться сопротивление к безобразиям на острове: - СССР — сопротивление не будет стрелять в войска СССР.
- НАТО — сопротивление положительно настроено по отношению к НАТО.
- Никого — сопротивление стреляет во все, что движется (за исключением гражданских).
- Всех — сопротивление настроено нейтрально ко всем.

Далее клавиша "сохранить" позволяет сохранить ваш прогресс. Содержит следующие подпункты:
- Пользовательская миссия — позволяет сохранить текущий прогресс в редактируемый файл миссии .sqm.
- Одиночная миссия — сохраняет файл с запакованной .pbo миссией, созданной вами.
- Мультиплеерная миссия — сохраняет файл с запакованной .pbo миссией для сетевой игры, созданной вами.
- Переслать по почте — открывает вашу E-mail программу и создает новое письмо с уже прикрепленным запакованным файлом миссии.

Следующая клавиша, предназначенная для загрузки миссии, находится чуть ниже клавиши загрузить и называется "загрузка".
Помните "Блицкриг"? Там была возможность переносить солдат и технику из одной миссии в другую. Во Flashpoint можно делать то же самое. Это удобно, если вы хотите создать кампанию, повествующую о буднях, скажем, диверсионного подразделения, которое действует в тылу врага и отрезано от своих и где игрок должен будет беречь каждого своего подопечного. Для этого предназначена кнопка "собрать". Позже, после изучения скриптов, мы научимся переносить юнитов из миссии в миссию, наращивая их опыт.

Кнопка "очистить" позволяет стереть с лица земли все юниты, вэйпоинты и маркеры.

Чего недостает многим редакторам, так это возможности протестировать в нем свою карту, не сохраняя ее. Благо в данном редакторе существует кнопка "превью", которая дает возможность протестировать ваше творение в режиме редактора, не сохраняя файл с миссией. Ну а кнопка "далее" позволит вернуться в тот момент миссии, в котором вы вышли обратно в редактор.

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

Глава 2. Мастер-ломастер
Вот и разобрались с панелью функций. Пора переходить к главной части нашего редактора — мастеру редактирования. Грозное название обозначает всего лишь панельку вверху окна редактора. Она позволяет управлять основными функциями редактирования — расстановкой юнитов, вэйпоинтов, маркеров заданий, триггеров. Остановимся подробно на каждом пункте этого списка.

Пункт 1 — юниты
Во-первых, что такое юниты? Это все солдаты, техника, объекты, декорации. На них вообще-то и строится миссия. Для их добавления на карту существует раздел "юниты", вызывающийся клавишей F1. Для этого дважды щелкните на карте в том месте, где вы хотите расположить юнит. При выполнении этих действий всплывет окошко "добавить/редактировать юнит". Здесь содержится большое количество опций, и мы остановимся на них подробнее.
Первым пунктом, конечно же, идет выбор типа юнитов:
- СССР — войска советского союза.
- НАТО — войска НАТО.
- Сопротивление — отряды сопротивления.
- Гражданские — простой народ, ничем не вооружен.

Каждый тип содержит подтипы. Это пехота, воздушные силы, бронетехника, транспорт. Отдельными пунктами идут "на усмотрение игры" и "нет", которые появляются после создания игрока в меню основных сторон. Первый устанавливает игровой объект на усмотрение игровой логики, а второй устанавливает на карте пустой объект из подпунктов сторон, т.е. дает возможность разместить на вашей карте пустые самолеты, технику, машины. Переходим к рангу. Он указывает, какой статус занимает солдат в миссии. Например, солдат, у которого высший ранг, всегда по умолчанию будет занимать место водителя или пилота в технике. Персонажу высокого ранга всегда будет отдаваться право командования при гибели командира отряда. К тому же различие в званиях (рядовой, капрал, сержант, лейтенант, капитан, майор, полковник) добавляет реалистичности. Сторона, в которую будет повернут юнит, задается параметром "азимут", который, как и угол, измеряется в градусах. Изменить азимут можно также следующим образом: зажать shift и кликнуть на юните, после чего повернуть его в нужную сторону. У юнитов есть еще такие атрибуты, как: в воздухе (относится ко всем юнитам подпункта "воздух"), в строю (задает группу для солдата), в кузове (помещает солдата в кузов транспорта).

Действительно, во Flashpoint очень крепкие замки — если его поставить, ваш любимый танк не взломает никто. Ставятся замки атрибутом "доступ". Существует три варианта:
- заперта — не залезешь, как ни старайся!
- не заперта — заходит, кто хочет, берет, что хочет.
- по умолчанию — по умолчанию выставляется значение "не заперта".
Важной деталью является строка инициализации. Она находится под панелью свойств и позволяет вводить скрипты, относящиеся непосредственно к созданному вами юниту и активирующиеся при инициализации объекта (в данном случае юнита). Примеры простейших скриптов:
Removeallweapons this — забрать у юнита все оружие.
this addrating (1000) — добавить юниту игровые очки.
Подробней на init-строке мы остановимся при изучении сложных программных скриптов.

Пункт 2 — группы
Есть хорошая поговорка — "один в поле не воин". Так вот, она как раз для OFP. Действительно, будь вы хоть "супер-люты-бог" в кваку, "мега- хедшотник" в контр-страйк, но во Flashpoint'е в одиночку вы не уничтожите даже двух групп врага. Специально для командных действий и предназначены отряды с командирами, солдатами, техникой. Конечно, вы можете собрать нужную группу, выбирая солдат из пункта "юниты", но если вам нужна стандартная военная группа, обратите внимание на пункт "группы".
Стандартная группа пехоты состоит из 12 солдат, группа бронетехники — из 4 бронемашин. Меню групп очень простое. Вы можете только установить тип юнитов в группе и азимут.
ВНИМАНИЕ: все параметры, относящиеся к определенным юнитам, вы можете редактировать, только выделяя нужного юнита из группы.

Пункт 3 — Триггеры
Ни одна одиночная миссия не может обойтись без триггеров. Это может быть триггер победы, триггер проигрыша, триггер условий. Для установки триггера, как и юнитов, кликните дважды в рабочем окне редактирования, предварительно указав пункт "триггеры" (или нажав F3). Появится окошко, похожее на "добавить/редактировать юнит". Разоберемся с его содержимым, так как оно содержит большое количество опций.

Первый пункт — зона действия. Она бывает двух видов: прямоугольник и овал. Размер задается в соответствующих полях и измеряется в метрах. Чуть ниже находится меню "условия активации". С его помощью вы можете определить, кем именно будет активироваться этот триггер:
- НАТО — триггер активируется войсками НАТО.
- СССР — триггер активируется войсками СССР.
- Сопротивление — триггер активируется силами сопротивления.
- Гражданские — триггер активируется гражданскими юнитами.
- Кто-либо — триггер активируется любой из перечисленных сторон.
- Альфа — триггер активируется отрядом с позывным Альфа.
- Браво — триггер активируется отрядом с позывным Браво.
- Чарли — триггер активируется отрядом с позывным Чарли.

Еще вы можете сделать так, чтобы триггер активировался только вами и никем другим. Для этого нажмите F2 (меню группы) и перетащите синюю полоску связи от себя к нужному триггеру.

Рассмотрим меню "тип триггера". Оно служит для того, чтобы выбрать условия, для которых создавался триггер. Из выпадающего списка можно выбрать, будет ли этот триггер создавать победу, проигрыш или просто отображать какой-нибудь логотип или текст из меню эффектов. Вот на нем стоит остановиться подробнее. Чтобы попасть в меню эффектов, кликните на кнопке "эффекты" в левом нижнем углу меню установки триггеров. Теперь можно добавить на триггер интересные видеоэффекты, музыку (позже мы научимся вставлять в этот список свои композиции), отобразить на экране нужный текст или задать звук окружения.

Ну и, на мой взгляд, самая важная деталь меню триггеров — это строка "при активации", в ней прописываются скрипты, которые срабатывают при активации того или иного триггера.

Пункт 4 — Точки маршрута
Итак, вы закончили создание окружения, используя предыдущие три пункта. Но почему солдаты стоят, как болваны, на одном месте и не хотят идти совершать великие подвиги во имя своей родины? Правильно, надо написать для них вэйпоинты. Нажмем F4 и приступим к работе. Для установки вэйпоинта один раз кликните по солдату (если это группа, то по командиру) и два раза в том месте, куда вы хотите поставить вэйпоинт. Отобразится стандартное окно редактирования, в котором можно установить тип точки, скорость перемещения, статус солдата во время перемещения и эффекты (все, как в меню триггеров).

Пункт 5 — Синхронизация
Пункт синхронизации — очень полезная штука. С его помощью вы можете синхронизировать два вэйпоинта, не прописывая скриптов. Просто кликните на одном из вэйпоинтов и перетащите линию синхронизации к другому. Например, вы хотите создать миссию с засадой на какой-нибудь грузовик. Мы синхронизируем два вэйпоинта, и когда вы прибываете в точку засады, грузовик начинает к вам двигаться (но не раньше!).

Пункт 6 — Маркеры
И, наконец, последний, шестой пункт — "маркеры". Он существует, чтобы делать пометки на карте, которая вызывается в игре клавишей "м". Вы можете отметить места заданий (и подписать их), точки эвакуации, сделать необходимые записи на карте.

Вот мы и разобрали основное меню редактирования. Теперь знаний хватит не только на то, чтобы создавать примитивные миссии типа "добеги до точки А, пока не застрелили", но и достичь цели — разрабатывать карты, ничем не отличающиеся от оригинальных миссий, а в чем-то даже и лучше них, поэтому продолжим.

Глава 3. Солдатский дневник

Вы заметили, что при испытании миссии не появляется блокнот с заданиями и инструктажом, как в оригинальных работах? Его нет потому, что он пуст. Непорядок — пора заполнить его полезной информацией, заданием на миссию и вырезками из солдатского дневника.
Сохраним нашу миссию в виде пользовательской. А пока время выйти из редактора и создать два файла: briefing и overview. Эти файлы создаются отдельно. Их формат — HTML. Надеюсь, многие умеют создавать странички в таком формате, но если нет — не беда, научим.
Нам не нужно впихивать на страничку кучу графики или стилей. Достаточно простой конструкции для файла briefing.html:

<html>

<head>
<meta http-equiv=”Content-Type”
content=”text/html
; charset=windows-1250”>
<meta name=”GENERATOR” content=”Microsoft FrontPage Express 2.0”
>

<title>Titulek</title>
</head>

<body bgcolor=”#
FFFFFF”>
<h2><a name=”Main”></a></h2>

<! --- mission p
lan step-by-step>
<p><a name=”plan”></a>
Ждать подкрепления.
<
;br>
</p>
<hr>
<p><a name = “OBJ_1”></a>Держите обор
ону
</p>
<hr>

<! --- plan end>

<! -------------
--------------------->
<! --- Debriefing --->
<! -----------------------------
----->
<hr>
<br>
<h2>
<a name=”Debriefing:End1”>Вы ус
пешно эвакуированы</a>
</h2>
<br>
<p>Вы успешно защитили базу
!</p>
<br>

<! --- debriefing end--->

</body>
</html>

…и для overview.html…

<html>

<head>
<meta http-equiv=”Content-Type”
content=”text/html
; charset=windows-1250”>
<meta name=”GENERATOR” content=”VB”>

<title>
Overview</title>
</head>

<body bgcolor=”#FFFFFF”>

<b
r>
<h2 align=”center”><a name=”Main”>Оборона</a></h2>

<
;p align=”center”><img src=”your picture.paa” width=”170” height=”64”></p>
<B
R>
<p>
Обороняйте базу до последней капли крови.
<br>
</p><
r>

</body>
</html>

Совет: создайте один файл брифинга и один овевью и просто копируйте их, изменяя содержание заданий и описания для своих последующих миссий. Теперь, создав файлы, сохраните их в папке: Disk:\FlashpointFolder\user\userName\MissionName\. Готово!

Наша миссия становится все совершенней и совершенней. Раз уж мы вышли из редактора, займемся и другими внешними файлами. Следующий на очереди description.ext, файл с описанием миссии. Создается в обычном блокноте. Вот возможные команды:
— Надпись, отображающаяся на экране заданий:
onLoadIntro "This is a text"

— Надпись, отображающаяся на экране загрузки вместо "подождите немного":
onLoadMission "This is a text"

— Отображать ли экран результатов миссии:
Debriefing=1 or 0

— Показывать ли компас:
ShowCompass=1 or 0

— Отображать ли часы:
ShowWatch=1 or 0

— Задать лицо игрока:
Face="face20"

— Задать голос игрока:
Speaker="Peter"

Это основные команды файла описания. С их помощью вы сможете установить нужные параметры.

Глава 4. Щас спою

Теперь перейдем к самому вкусному внешнему файлу. Мы добавим новые мелодии и фразы в нашу миссию. Для этого создадим в том же блокноте файл config.cpp. Он служит для введения в игру звука. Вот стандартное содержание этого файла:

class CfgPatches
{

class Music_AddOns
{
units[] = {};
weapons[] = {};

requiredVersion = 1.46;
};
};

class CfgMusic
{
class track1
<
n>{
name="Track 1";
sound[]={"\Track\01.ogg",1.000000,1.000000};
};

Вы заметили, что музыка должна быть в формате .ogg? Для конвертирования музыки в этот формат понадобится программа-конвертер и собственно кодек. На мой взгляд, самая лучшая программа для этого — dbpoweramp. Скачать ее можно по адресу сайт . Там же можно взять и кодек. После того, как вы перевели музыку в нужный формат, пора создать .pbo-файл музыки. Для запаковки подойдет, скажем, pbo packer, который можно скачать с любого сайта Flashpoint тематики. Например, сайт или сайт . Затем помещаем файл .pbo в папку AddOns, а config.cpp запихиваем в папку с вашей миссией. Вот и все.

Глава 5. Сражения не избежать

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

Fxexecution
FxexecutionDead
Fxdismay
FXToKneel
FXInKneel
FXFromKneel
F
XCivilLookaround
FXCivilLookaround2
FXCivilLookback
FXCivilHandMouth
FXCivilFold
OnesArms
FXCivilArmsAkimboR
FXCivilArmsAkimboL
FXFromTable
FXToTable
FXSitL
eftHandDown
FXSitRightHandDown
FXSitHandsOnTable
FXToHand
FXInHand
FXInHand
Stat
FXFromHand
FXNewcivil
FXWomanSur
CivilDead
CivilDeadVer2
CivilDyi
ng
CivilDyingVer2
CivilLying
CivilLyingCrawlF
CivilLyingCrawlL
CivilLyingDy
ing
CivilLyingNoAim
CivilRunF
CivilStillV1
CivilWalkF
CombatDead
Comba
tDeadVer2
CombatDeadVer3
CombatTurnR
CrouchDying
EffectStandSitDown
EffectS
tandSitDownVer1
EffectStandSitDownVer2
EffectStandSitDownStill
EffectStandSalute
EffectStandSaluteEnd
EffectStandTalk
Fxangel
FXangel2
FXStandAtt
FXStandAt
tVar1
FXStandBug
FXStandDangle
FXStandDip
FXStandDropTel
XstandEndTable
<
n>FXStandFromDip
FXStandFromTable
FXStandRotateTable
FXStandShowTable
FXStandStr
aight
FXStandSur
FXStandSurDead
FXStandSurDown
FXStandSurUniv
FXStandToDip<
r>
FXStandToTel
FXStandTelLoop
FXStandToTelHand
FXStandToTable
FXStandUnivTabl
e

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

This exec "scriptname.sqs"

Для скрипта бессмертия создайте в директории с миссией файл с именем god и расширением .sqs. Пропишите в нем следующий текст:

#begin

?(getdammage soldier1 >0.3):soldier1 setdammage 0
~0.00004
goto "
;begin"

После этого активируйте скрипт в игре, прописав в init:
This exec "god.sqs"

Теперь ваш солдафон бессмертен.

Теперь попробуем сделать так, чтобы вы могли перевязывать сами себя.

Создаем новый скрипт с названием firstaid.sqs. Пишем:

hint "Перевязать"
player playMove "CombatToMedic"
player playMove "MedicToCombat"
pla
yer setDammage 0
player removeAction 0

В меню действий появится новый пункт — "перевязать". При его активации вы перевяжете сами себя, тем самым восстановив свое здоровье.
Пришло время завершить статью инструкцией по подготовке мультов. Можно писать скрипт мультика и с нуля, но мы пойдем другим путем. Для начала запоминаем одну-единственную команду:

_cam camcreate[0,0,0]
_cam cameraeffect["internal", "back"]

Затем заходим в игру. Запускаем нашу миссию. Копируем все юниты. Выбираем тип миссии — интро. Теперь пропишем в init любого юнита:

This exec "camera.sqs".

После этого жмем превью и попадаем в окно камеры. Используйте numpad, чтобы установить нужную вам позицию, и жмите Ctrl, чтобы получить координаты. После этого выходите из игры. Загляните в папку Flashpoint'а. Там появился новый файл clipboard.txt. В нем содержатся координаты камеры, только что сделанные вами. Затем создайте новый файл с именем Cam.sqs. Пропишите туда две строчки активации (см. выше) и скопируйте туда ваши координаты. После того, как вы сделаете это, введите следующее:

_cam cameraeffect ["terminate", "Back"]
camdestroy _cam
exit

Сохраните файл скрипта и запустите игру. Замените строку в Init солдата:
This exec "cam.sqs"

А напоследок научу создавать кампании, вернее — связывать миссии в кампанию.

class MissionDefault
{
	lives = -1;

	lost = ;
	end1 = ;
<
tab>end2 = ;
	end3 = ;
	end4 = ;
	end5 = ;
	end6 = ;
};
<
n>
class Campaign
{
	name = "CampaignName";
	firstBattle = int
ro;

	class intro
	{
		name = "Intro";

	cutscene = 00.eden;

		firstMission = 01
		end1 = ;
	<
tab>end2 = ;
		end3 = ;
		end4 = ;
		end5 = ;
		
end6 = ;
		lost = Intro;

		class 01: MissionDefault
		{

			end1 = 02;
			end2 = 01;
			end3 = 01;
<
tab>		end4 = 01;
			end5 = 01;
			end6 = 01;
		lost = 01;
			template = 01.eden;
		};
	class 02: Miss
ionDefault
		{ end1 = 03;
			end2 = 02;
			end3 = 02;

			end4 = 02;
			end5 = 02;
			end6 = 02;
<
tab>		lost = 02;
		};
	};
};

Мой урок по редактированию Operation Flashpoint окончен. Созданные вами карты присылайте мне — посмотрю, оценю. Также направляйте мне свои вопросы — обещаю ответить на все. Успехов!

A.R.T.S, Arts_91@mail.ru

№ 65

Geek Bar Подвал

Перепечатка материалов разрешается только с указанием индексируемой ссылки на первоисточник.

Наши самые актуальные статьи вы найдете в газете "Виртуальные радости".