Вход в систему
Информация по игре "Operation Flashpoint: Cold War Crisis"
Название: Operation Flashpoint: Cold War Crisis PC
Версия игры:
Жанр: Action
Мультиплеер: Интернет, локальная сеть
Разработчик: Bohemia Interactive
Издатель: Codemasters
Издатель в России: Бука
Локализатор: Бука
Дата выхода: 22 июнь 2001
Сайты игры:
http://buka.ru/cgi-bin/show.pl?id=93
http://buka.ru/cgi-bin/show.pl?id=93
Объем: Один CD
Минимум: CPU 400 MHz, 64 Мb, 32 Мb Video
Рекомендуем: CPU 1 GHz, 256 Mb, 64 Mb Video
Последние статьи
Самые комментируемые статьи
Военный конструктор. Operation Flashpoint: 1985 Cold War Crisis. Часть шестая: Секрет мастерстваАвтор: Антон Логинов
Полный текст
Где взять: Встроен в игру
Возможности: 40% игровых; после данной статьи: 94% игровых, с учетом предыдущих Сложность освоения: В зависимости от вашего желания. От очень легкого до экстремально сложного. Добро пожаловать на завершающую лекцию по редактированию Operation Flashpoint! Спасибо всем, кто читал прошлые статьи, дотошно разбирался в их содержании и создавал свои маленькие шедевры. Сегодняшняя тема — файл config.cpp, где содержится описание юнита на языке игры (см. предыдущую статью). Этот файл — ключ к созданию собственного аддона. Познай силу config.cpp Сonfig.cpp содержит в себе всю информацию о юните — его класс, параметры. Подобный файл содержится в каждом файле аддона (.pbo), и при создании своего дополнения вам просто-таки необходимо будет его написать. Иначе игра банально проигнорирует плоды ваших трудов. Как я уже говорил в предыдущей статье, создать полностью новый юнит не получится (утилиту для импорта моделей в игру разработчики выдают лишь избранным), а вот изменить текстуры (см. предыдущий номер) и параметры существующих — легко. Как — читайте дальше. Начало Надеюсь, вы уже распаковали какой-нибудь файл с аддоном, посмотрели, что там к
Перед началом написания config.cpp вам нужно вооружиться Command Reference Manual или, попросту говоря, списком команд (см. предыдущие номера). Любой config.cpp начинается с написания так называемых defines. Это как константы в любом языке программирования — повесил на них определенное значение и используешь везде, где заблагорассудится. Вообще, можно особо не вникать в это, так как обычно все просто копируют defines с оригинальных config.cpp. Но несколько необходимых я все же приведу: #define TEast 0 #define TWest 1 #define TGuerrila 2 #define TCivilian 3 #define TSideUnknown 4
#define TEnemy 5 #define TFriendly 6 #define TLogic 7 #define true 1 #define false 0 #define private 0 #define protected 1 #define public 2 Патчи разные бывают После назначения defines приступаем к написанию так называемых CfgPatches. Они служат для описания аддона к игре: class CfgPatches { class имя нового класса { units[] = {имя нового юнита}; weapons[] = {имя нового оружия}; requiredVersion = версия OFP, необходимая для запуска; };
}; Например, мы хотим создать новый юнит со звучным именем "Игроманьяк": class CfgPatches { class Igromanyak { units[] = {Igromanyak}; weapons[] = {}; requiredVersion = 1.75; }; }; Соответственно, если хотим создать новое оружие, то пишем его название в weapons. С версией игры, думаю, объяснять не стоит — и так поймете. Теперь перейдем к спецификации того аддона, который мы только что описали. Для этого существуют специальные классы: CfgAmmo, CfgVehicles, CfgWeapons и т.д. Принцип их написания завязан на так называемом "наследовании" — я объясню на конкретном примере, ниже. Оружие Для создания
class CfgAmmo { class default {}; class LAW : Default {}; class RPG : LAW {}; class IgromanyakRPGammo : RPG { hit=3000; indirectHit=1500; indirectHitRange=15; }; }; Что же означает эта запись? Класс LAW наследует первоначальные установки, затем класс RPG наследует установки LAW, а IgromanyakRPGammo, в свою очередь, перенимает все у RPG. После этого мы меняем некоторые из полученных
class CfgWeapons { class default {}; class LAWLauncher : default {}; class CarlGustavLauncher : LAWLauncher {}; class AT4Launcher : CarlGustavLauncher {}; class IgromanyakRPG : AT4Launcher { model="\IgromanyakRPG\IRPG.p3d"; picture="\dtaext\equip\m\m_at4Launcher.paa"; displayName = Igromanyak RPG Launcher; displayNameMagazine = IgromanyakRPG Ammunition; shortNameMagazine = IgRPGa; ammo = IgromanyakRPGammo; initspeed = 125; count = 1;
maxLeadSpeed=150; }; }; Опять все тот же принцип наследования, но уже не с амуницией, а с самим стволом. Тут мы уже прописываем свою модель (помните, что каждый pbo-файл для игры выглядит как директория) оружия, иконку для отображения в игре и много других параметров, вроде скорости развертывания оружия. Полный список вас ждет на компакте. Завершает же написание config.cpp всегда так называемый class CfgNonAIVehicles. Смысл его так до конца никому и не ясен, но для нашего случая запись будет выглядеть так: class CfgNonAIVehicles { class ProxyWeapon {}; class ProxyIgromanyakRPG: ProxyWeapon {}; }; Помимо стандартных CfgAmmo и CfgWeapons, существует еще один
class CfgRecoils { empty[]={}; riffleSingle[]={0.050000,0.020000,0.040000,0.050000,0,0}; riffleSilenced[]={0.010000,0.004000,0.010000,0.050000,0,0}; }; Чтобы создать собственную отдачу, достаточно записи: class CfgRecoils { IgromanyakRecoil[]={0.4,0.5,0.7}; }; Данная запись будет означать, что за 0.4 секунды ствол сдвинется на 0.5 единиц назад и 0.7 вверх. Но можно еще более гибко управлять отдачей: class CfgRecoils { IgromanyakRPG[]={0.02,0,0.01,0.05,0.07,0.15,0.4,0,0}; };
Получится, что за 0.02 секунды ствол сдвинется на 0.01 вверх, затем за 0.05 секунды брыкнется на 0.07 назад и на 0.15 вверх и вернется в нормальное положение за 0.4 секунды. Как видите, все очень просто. Только не забудьте прописать вашу отдачу в параметрах CfgWeapons: recoil=IgromanyakRecoil. Техника Все, детство кончилось. Одного взгляда на config.cpp какого-нибудь "Апача" достаточно, чтобы раз и навсегда отказаться от идеи хоть в чем-то здесь разбираться. Ничего — прорвемся! Начнем с простого — нарастим броню "Хаммеру": class CfgVehicles { class All {}; class AllVehicles: All {}; class Land: AllVehicles {}; class LandVehicle: Land {};
class Car: LandVehicle {}; class Jeep : Car {}; class HMMWV: Jeep { displayName= $STR_DN_HMMV; model=\humr\HMMWV.p3d; picture=\humr\ihmmwv.paa; armor = 80; type=VArmor; cost=100000; dammageHalf[]= { ... }; dammageFull[]= { ... }; armorGlass=0.5; armorWheels=0.1;
soundEngine[]={\humr\HMMWVengine,db-25,1.25}; typicalCargo[]={Soldier, Soldier, SoldierLAW, Officer}; }; }; Здесь все очень близко к тому, что мы видели в CfgWeapons. Но "Хаммер" — простой транспорт и не имеет всяких там радаров с башнями. DisplayName — имя юнита в файле stringtable.csv (о нем мы рассказывали в предыдущих номерах). Type — это тип брони (бывают еще VSoft и VAir). В данном случае у машины имеются бронированное стекло (armorGlass) и колеса (armorWheels). DammageHalf — список текстур, которые появятся после нанесения 50% урона, dammageFull — соответственно. SoundEngine — параметры звука мотора. Ну а с typicalCargo и объяснять не стоит. Разберем более сложный пример — Vulcan. Этот зенитный комплекс имеет и радар, и башню: class CfgVehicles { class All {}; class AllVehicles: All {}; class Land: AllVehicles {}; class LandVehicle: Land {};
class Tank: LandVehicle { class TurretBase {}; }; class APC: Tank {}; class M113: APC {}; class Vulcan: M113 { displayName=$STR_DN_VULCAN; picture=\vulcan\ivulcan.paa; icon = antiAC.paa; armor=180; cost=1000000; model=\vulcan\m163a1vulcan; irScanRange = 4000; irScanGround = false;
gunnerCanSee = CanSeeOptics+CanSeeEar+CanSeeCompass+CanSeeRadar; weapons[]={VulcanCannon}; magazines[]={VulcanCannon}; class Turret: TurretBase { minElev=-3; maxElev=+70; }; threat[]={0.5, 0.5, 1}; gunnerOpticsModel = "optika_zsu_gunner"; commanderOpticsModel = "optika_tanke_auxiliary"; gunnerAction = ManActVulcanGunner; gunnerInAction = ManActVulcanGunner;
// outGunnerMayFire = true; forceHideGunner = true; viewGunnerInExternal = true; transportSoldier = 0; }; }; Сразу отмечаем появление class TurretBase — запись станет понятна чуть позже.
Class CfgVehicles для Vulcan разобран, но в config.cpp еще много чего интересного ( CfgWeapons, CfgVehicleActions, CfgMovesMC) — смотрите оригинал. Вообще, изменяя параметры или создавая новый юнит, вы по-любому будете обращаться к оригиналу — моя задача состоит лишь в том, чтобы вы поняли, что там написано. Разберем еще один пример — на этот раз возьмем какое-нибудь воздушное судно. Например, официальный аддон Су-25. Амуницию и оружие опять опускаем (там ничего нового, а если интересно, то смотрите оригинал) и разбираем класс CfgVehicles: class CfgVehicles { class All {}; class AllVehicles: All {}; class Air: AllVehicles {}; class Plane: Air {}; class Su25: Plane { ... crew = SoldierEPilot; ... weapons[]={Ch29TLauncher,
magazines[]={Ch29TLauncher, Rocket57x64, MachineGun30A10}; fov=0.5; type=VAir; threat[]={0.1, 1, 0.7}; class Reflectors { class Reflector { ... }; }; class IndicatorAltRadar { ... }; class IndicatorAltRadar2 { ... }; class IndicatorSpeed { ...
}; class IndicatorVertSpeed { ... }; class IndicatorVertSpeed2 { ... }; }; }; Сразу отмечаем параметр crew = SoldierEPilot — он означает, что SoldierEPilot изначально появится в самолете. Далее видим уже знакомые type и threat — как с ними оперировать, тоже понятно. А вот дальше идут характеристики приборов: задаются цвет огней самолета, его "потолок", скорость и т.д. Запомните: вместе с изменением скорости полета винтокрылой машинки нужно изменить и показания ее приборов. Кстати, максимальный "потолок" для юнитов типа Air составляет 1000 футов — учтите это при редактировании. Без лица Я знаю, вам всегда хотелось поместить свое лицо в игру... Сделать это просто — достаточно создать соответствующий аддон! Для этого нам понадобятся
class CfgPatches { class Faces { units[] = {}; weapons[] = {}; requiredVersion = нужная версия; }; }; class CfgFaces { class Имя класса { name="Имя лица"; texture="\имя файла аддона.pbo\имя файла.jpg"; east=1; west=1; }; }; East/west=1/0 делает доступным/недоступным ваше лицо для определенной стороны. Вместо эпилога Все, пора
Flashpoint-сообщество постоянно расширяется, вместе с ним увеличиваются и масштабы раскопок внутренностей игры. Уже созданы утилиты, многократно облегчающие редактирование, пачками выходят аддоны (некоторые умельцы даже сделали гоночную трассу и спортивный Jaguar к ней!), в разработке находится уйма модов, появляются полноценные редакторы... Взять хотя бы отечественный сайт Project OFPinternals (www.ofpinternals.megaforums.ru), где все желающие могут заполучить бета-версию редактора островов WrpEdit для Flashpoint. Кстати, те же
P.S. Как вы уже знаете, два месяца назад вышел аддон для Flashpoint под названием Resistance. В нем разработчики немного усовершенствовали редактор — советую ознакомиться. Также, в связи с выходом Resistance, BIS выпустили новую версию Operation Flashpoint Scripting Reference, с новым набором команд, — ищите на диске. И еще, в Сети появился новый аддон под названием Kegetys Editor Addon, который добавляет в редактор объекты из Resistance, а их там, как вы знаете, очень много. В общем, тоже ищите на нашем диске. Всего обоев: 2 Новостей: 1 Все новости по игре Статей: 10 Все статьи по игре 07.04.2003 - Киберспорт. Quake III Arena07.04.2003 - Киберспорт. Operation Flashpoint05.11.2002 - Военный конструктор. Operation Flashpoint: 1985 Cold War Crisis. Часть шестая: Секрет мастерства11.07.2002 - Краткие обзоры. Локализация игры “Операция Flashpoint: Холодная Война“16.05.2002 - Руководство и прохождение по "Operation Flashpoint: Cold War Crisis"08.04.2002 - Operation Flashpoint: Red Hammer18.03.2002 - Лучшие игры 2001 года08.02.2002 - Коды по "Operation Flashpoint: Cold War Crisis" (ресурсы)26.12.2001 - Военный конструктор. Редактор Operation Flashpoint: 1985 Cold War Crisis. Часть вторая: Справочник генерала, раздел "Как инструктировать подчиненных"02.11.2001 - Коды по "Operation Flashpoint: Cold War Crisis" (hex-коды)
|