Overview
Данное руководство создано для “мелкого” модифицирования игры, которое вы, игроки, спокойно сможете сделать у себя. Большой (и главное, качественный) моддинг представляет собой написание Скриптового кода на языке программирования Lua версии 4.0.1, на котором написана игра. Этим самым, можно написать неплохой мод, что я и сделал с модом New Civil War для ЗВ:ГВ. Однако мало кому он по силам, и это очень сложный раздел программирования для вас, если вы еще не писали никаких кодов, хотя бы обыкновенных скриптов.Данное руководство будет постепенно обновляться.
Модифицирование музыкального плейлиста.
Нанем с музыки.
Вся музыка записана в игре в формате ogg , и лежит в директории //Папка_с_игрой//Data//Music. Чтобы изменить музыку на свою, вам необходимо вашу композицию сконвертировать в формат ogg через аудиоредактор, поддерживающий этот формат. После конвертации присваиваете имя файла игрового трека к вашему, и заменяете вашим треком уже существующий игровой.
В оригинальной версии игры (без модов вообще) количество треков равно:
- 18 треков боевой музыки
- 26 треков полетной музыки
То есть, заменить максимум треков с помощью такого способа вы сможете такое количество. Есть еще другие файлы, но они в общий плейлист не входят, и проигрываются по моментам игры (например, трек “menu.ogg” играет в главном меню игры)
Для увеличения количества треков вам необходимо зайти в файл “PlayLists.script”, который лежит по адресу //Папка_с_игрой//Data//Scripts//include. Открывать текстовым редактором.
В разных частях волков этот файл имеет разную структуру, однако в ГВ плейлист представлен, как Массив.
Мы видим, что все названия треков записаны в массив:
Так вот, для увеличения количества треков необходимо добавить новые значения. То же самое с баттл-листом. Например:
Новый трек необходимо предварительно добавить в папку Music!
И да, названия могут быть разными. Главное, чтобы они совпали с названиями композиций.
Для придания каждой локации своего неповторимого звучания, прописываете в папках локаций //Scripts//Locations// в файлах location.script (в самом конце файла)
Или InitMusic(); – случайный выбор
Или как здесь, с указанием конкретного трека:
Внимание! Написанные записи выше – условные. Функция называется AddMusicToPlayList() или AddMusicToBattlePlayList() . В скобках необходимо в кавычках указать название трека в Music. Иначе не будет работать.
Описание тегов файла Carcasses.xml (корабли, станции и прочее)
Сразу оговорюсь, материал взят с форума Starrover. Подобный мануал есть и на форумах EliteGames. Но все-таки я расскажу по-подробнее, что и как.
ОПИСАНИЕ СТРУКТУРЫ ФАЙЛА CARCASSES.XML
Основной файл, где лежит вся информация о кораблях в xml формате, это Carcasses.xml, лежащий по адресу Папка_с_игрой//Data//Game.
Тип каркаса (BigShip или Interceptor или Corvette), уникальное имя (Mothership).
Основное название корабля, встречаемое в космосе. Лежит в Data/LocData/English, в файлах m_carcasses или s_carcasses.
Второстепенное название корабля, встречаемое в окне базы или на торговой станции. Лежит там же.
Полное описание корабля. Лежит там же.
IMD файл (3D модель). Лежит в Data//OBJECT.
Файлы DDS (картинки корабля) в Data/TEXTURE/Interface/Carcass/32,64,128[/th] [/tr]
Очки брони.
Масса. Влияет на маневренность.
Запрет на продажу в магазине (если true).
Истинная цена. В разных магазинах отличается из-за уникальных коэффициентов на цены.
Принадлежность к технологии расы (TECHNOLOGY_BERSERK, TECHNOLOGY_ALIEN, TECHNOLOGY_PRECURSOR, TECHNOLOGY_ANGOR).
Эквивалентная площадь радиоотражения. Насколько хорошо кораблик будет виден на радаре. У истребителей он обычно низкий.
Тип взрыва при гибели корабля (Big Ship, Station, Asteroids, Fighter, Transport)
Переводится как “рабочий звук”. Звук он и есть звук. Х.з, зачем он 🙂
“Тишина”, что типа расстояния с которого будет не слышен звук. Наверное.
Очки щитов.
Скорость восстановления щитов ( + показатель за секунду).
Макс. скорость, значение*100.
Маневренность , значение*10.
Мощность разворота. Чем выше, тем больше маневренность.
Разрешающая способность радара (чем меньше, тем лучше обнаруживает малозаметную цель).
Дальность радара (в кликах).
“Страшность” корабля. Чем выше, тем больше очков за сбитие.
Картинка DDS со слотами. Лежит в Data/TEXTURE//Interface//Carcass/Slots.
Подраздел вооружения:
-
<big_guns>0</big_guns>
Большие пушки.
-
<small_guns>0</small_guns>
Малые пушки.
-
<rockets>0</rockets>
Ракетные установки.
-
<systems>4</systems>
Системы.
-
<turrets>5</turrets>
Турели.
-
<gk_guns>0</gk_guns>
ГК орудия.
-
<gk_turrets>0</gk_turrets>
ГК турели.
Конец раздела вооружения.
Звук двигателя.
Звук, проигрываемый при начале движения корабля (рядом с двигателями).
Файл IMD (3D модель) разрушенного (сбитого корабля).
Объем трюма. В ГВ значения не играет. Актуален в ЗВ2.
Подраздел ангаров:
-
<hangar_count>6</hangar_count>
Количество ангаров.
-
<max_hangar_count>6</max_hangar_count>
Максимальное количество ангаров (в чем разница с верхним тегом – без понятия).
Конец раздела ангаров.
Поколение истреба, от 1 до бесконечности (все, что больше 5, скриптами не воспринимается, и пилот не сможет сесть за истреб).
Описание корабля закрыто.
Примечание: Больше пушечно-ракетных слотов, чем имеется в IMD, нельзя добавить. Лишние будут нерабочими. Имейте это в виду.
Добавление своего корабля в игру
У вас должны быть в наличии 3D модельки игровым форматом IMD (он делается так: в программе моделирования (например, 3DS Max) необходимо иметь плагин, который напрямую конвертирует в IMD. Как найду, выложу тут. А так же текстуры (в основном DDS, можно TGA, PNG…) для этой модели, которая уже оптимизирована под эту модель.
Так же нужен инструмент по работе с игровыми моделями – IMD Editor.
Ссылки:
- IMD Editor v3[sites.google.com]
- SW Editor by Star Rover Team[vk.com] (альтернатива с интуитивно-понятным интерфейсом)
- Плагин для 3DS Max для экспорта IMD моделей[sites.google.com]
- Плагин nVidia для фотошопа для DDS текстур[developer.nvidia.com]
- Старый набор от nVidia для работы с текстурами DDS[developer.nvidia.com]
- создаем по вышеизложенному плану описание в carcasses.xml. Вписываем в mesh_name имя файла 3D модели.
- отправляем 3D модель в папку DATAObject и текстуру DATATexture
- используйте всю свою фантазию, чтобы создать описания в файлах m_carcasses.loc или s_carcasses.loc. Заголовки описаний делайте такими же, как вы прописали в carcasses.xml, например, #M_Name_My_Fighter. Что-то не так – в игре увидите сообщение:
Not found string: #M_Name_My_Fighter
- добавьте в DATATEXTUREInterfaceCarcassNNN картинки истребителей в ангаре и магазине, с названиями, указанными во flat_image. Ширина (в пикселях) должна быть равной названию той папки, куда помещаете рисунки. Рисунки должны находиться во всех трех папках, иначе вы можете в разных местах увидеть вместо картинок белые квадраты.
- добавляете в DATATEXTUREInterfaceCarcassSlots DDS-картинку размером 1024*1024, там должна быть схема (или большой рисунок) этого корабля. Чтобы отображались слоты, нужно создать в этой же папке файл с названием, указанным вами в <mapping_name> названием и расширением INI.
Как уже выше сказано, слоты – ячейки для оборудования, куда можно засунуть и вынуть модуль из корабля. В папке slots лежит 2 типа файлов (кроме системного ships.tuv): файлы с расширением dds (рисунки корабля, открывать редакторами с поддержкой данных форматов), и ini (сами слоты в текстовом виде, открываются любым текстовым редактором). Нам понадобятся оба файла, причем ини файл – больше всех.
ВНИМАНИЕ: к ЛЮБОМУ добавленному слоту НЕОБХОДИМО прописать новые ТТХ для корабля в Carcasses.xml!
Для начала, создадим новый текстовый файл, изменив его расширение на ini и обозвав таким именем, чтобы оно совпадало с именем в теге <mapping_name>. Я на примере разберу “Буревестник”:
Открываем его и видим следующие параметры. Основное на скриншоте:
Итак, мы видим необходимую информацию. Для начала определимся с картинкой корабля, вернее, где она указана. По параметру name = ships02 мы можем определить файл dds, где она лежит. Открываем его (открывать редактором, поддерживающим этот формат, или фотошопом с плагином dds от nVidia). Остальная информация на скриншоте.
ВНИМАНИЕ: параметры Y могут отличаться. Это связано с тем, что движок автоматически сам подстраивает размер под данные координаты. Поэтому вы можете откинуть по 100 пикселей, если хотите.
Так вот. Если хотите добавить систему, вам необходимо просто добавить следующие строки:
X1 = порядковый номер слота
X2 = порядковый номер системного рефпоинта
X, Y = соответственно, координаты по горизонтали и вертикали слота/текста
Вот так у меня получилось:
В игре же:
Теперь об оружии и прочем. Нам понадобится ИМД эдитор (или SW editor от команды Star Rover). Кидаем его в папку с игрой (можно в другое место, но в случае со SWE текстуры не прогрузятся и вы будете лицезреть белую модель), открываем ИМД модель (лежат в Data/Object) и смотрим.
Красным цветом отмечена пушка, оранжевым – ракета. Отсюда смотрим соответствие. Если оно есть, то слот будет принимать пушку/ракету и др. Если нет, то в игре будет сообщение: “Монтаж устройства в данный разъем невозможен!”
Добавим пушку на Буревестник раскраски игрока и назовем ее, как CENTER_2 (регистр не имеет значения, но лучше писать в 2х местах одинаково).
ВНИМАНИЕ: если хотите добавлять что-либо в этих редакторах, после КАЖДОГО изменения нажимайте ENTER.
Не забудем прописать новые ТТХ в Carcasses.xml и заходим в игру, чтобы проверить. Сразу скажу: если ошиблись с координатами, то ничего страшного. Но для исправления ошибки вам придется каждый раз перезагружать игру (ini файлы грузятся только один раз при запуске). Все работает.
Проделываете тоже самое со всеми орудиями.
ПРИМЕЧАНИЕ: если вы хотите модифицировать истребитель, который уже находится у вас в ангаре базы, и после изменений его ТТХ в игре они не отобразились, вам необходимо перейти в другую локацию, вынув корабль из ангара и поместив его в трюм. Приведу пример из своего опыта. Я хотел уменьшить у модифицированного под себя Змея mk2 с 4 до 2-ух систем, чтоб типа было, как в оригинале, все дела… Но при изменений его ТТХ я его забыл вынуть из трюма, да еще и забыл убрать с него все системы. В итоге при переходе из локации в другую у меня благополучно вылетела игра. Поэтому, лучше перестраховываться и не наступать на подобные грабли (тоже самое касается всяких бэкапов файлов, если не уверены, что изменения, которые вы вносите, не приведут к таким вот последствиям).
На этом знакомство со слотами завершено. Удачных вам поделок!
Добавление корабля в скрипты игры (его появление в игре)
Добавленный, или существующий корабль необходимо добавить в скрипты игры, чтобы его можно было встретить в космосе. Есть 3 способа это сделать:
- Добавить в трюм базы в начале игры/в какую-нибудь миссию.
- Добавить корабль в магазин(ы).
- Добавить неписишному игроку (в патрули системы, например).
На самом деле, есть много способов добавления, но я разберу основные.
Если хотите добавить корабль в начало игры, идите по пути Data/Scripts в файл InitTeamScript.script. Добавляете туда строки:
ВАЖНО: строку писать ПОСЛЕ строки mothership = CreateCarcass(…) !!!
То же самое с квестами, но тогда придется редактировать файлы script в папке(ах) Quests/mission_x
Разберем ПРОСТОЙ способ добавления корабля в магазин. Более сложный трогать не буду, ибо вам проще юзать этот вариант (иной предполагает редактирование глобальных массивов и соотношение его товаров по количеству, что может понять не каждый).
Идем по этому же пути в файл InitTradeSystem.script и в самом конце добавляем строки
Обычно k_sell существует (исходя из примеров в этом файле) в диапазоне от 1 до 2, k_buy – от 0.8 до 0.2. Если прописать НУЛЕВЫЕ коэффициенты, то цена корабля упадет до нуля (некая халява XD).
ВАЖНО: изменения вступят в силу ТОЛЬКО после начала новой игры.
Тут тоже ничего сложного нет, просто придерживайтесь примеров в файле Create_flight_2.script (лежит в Data/Scripts/include)
Есть массивы кораблей, скажем, Патруля:
Мы видим пример одного из звеньев. Первый параметр, собсно, сам корабль, второй – порядковый номер пилота, который находится в массивах Pat_Pilots, USS_Pilots, Vks_Pilots и т.д, третий параметр – выполняемая задача в звене. Каждая буква расписана в этом же файле, все интуитивно понятно 🙂
Просто меняем один из них на название корабля из Carcasses.xml. Если хотите, вы можете добавить уже оснащенный корабль. Название брать из ShipDescriptions.xml. Например, добавим сюда патрульную пантеру без модулей (Panthera_pat0):
Мы добавили пантеру в состав конкретно ЭТОГО звена. Если хотите, вы можете добавить НОВЫЙ корабль в звено:
Таким образом можно добавить не только истребитель, но и большой корабль. Принцип добавления тот же.
ВАЖНО: самое главное тут – внимательность. Иначе получите ошибку в игре (непрогрузка в локацию, или прочее).
2 способа:
- Добавление базы за место существующей в квесты игры. Миссии, где меняется база:
- mission_2 (Жизнь торговца)
- mission_4_1 (Неожиданная встреча, с наемниками)
- mission_4_2 (Неожиданная встреча, с пиратами)
- mission_4_5 (Аэрография)
- mission_7g (Новая база)
- mission_13a (b, c, d, e) (Спасение друга). ВНИМАНИЕ! Стоит блокировка на мазершип! Если ее не поменять, то при выходе из локации будет гейм овер!
- mission_14a (Серые кардиналы за ВКС)
- mission_15b (Точки над I, возможность сесть на Большой транспорт, затем на Лев)
- mission_15d_1 (Расставляя акценты, в Приене)
- mission_15e (Возвращение Берсерков)
- mission_19a (Обновка)
Менять параметры в строках NewFlight(groub,sign,ship,…), то есть, вместо ship – название базы (в КАВЫЧКАХ!)
- Добавление в генерацию в космосе у патрулей (см. способ для истребителей).
На этом большой раздел по разбору кораблей подошел к концу. Буду очень рад, если данные страницы текста вам помогут с манипуляциями кораблей 😉