Star Wolves 3: Civil War

Star Wolves 3: Civil War

32 ratings
Моддинг от Shadow Vinyl
By Alex Scratch
Моддинг данной игры представляет собой написание lua-скриптов (версия lua 4.0.1). Понимая, как работать с механиками движка, можно написать неплохой мод, что я и сделал с модом New Civil War для ЗВ:ГВ. Если вы хотите начать пробовать изменять логику игровых скриптовых механик, то данное руководство для вас.

Данное руководство будет постепенно обновляться.

И на будущее копирастам: я хоть и приветствую, что вы публикуете копии моих трудов у себя с указанием авторства, но мне всё же неприятно, что это делается без моего ведома. Официальные источники распространения мода - сообщество Steam. Автор не следит за сторонними площадками и не несет ответственности за них.
   
Award
Favorite
Favorited
Unfavorite
О звуковых файлах
Все звуки расширения .wav в игре хранятся в следующих каталогах:

Data/Sound
Data/LocData/English*/Voice


Чтобы игровой движок воспринял ваш новый звуковой файл .wav, вам необходимо конвертировать его следующим пресетом:
PCM WAVE 16-bit Mono

Убедитесь, что ваш аудиопоток является моно сигналом, в противном случае - не воспроизведется. Разрядность также важна, выше 16 бит игровой движок также не воспроизводит.

Все звуки расширения .ogg в игре хранятся в следующих каталогах:

Data/Music
Data/LocData/English*/Trade
Data/LocData/English*/Quests


Чтобы игровой движок воспринял ваш новый звуковой файл .ogg, вам необходимо конвертировать его в расширение OGG Vorbis.
При этом качество особой роли не играет, чем больше - тем лучше. При этом, в этом случае можете использовать стерео поток.

* - может быть другой каталог, в зависимости от локализации, в большинстве случаев - Russian

Для проигрывания звуков в среде движка игры достаточно запустить следующие lua-скрипты:
PlaySound('file_name.wav' [, sound_volume]) PlayMusic('file_name' [, sound_fade_start [, sound_fade_end ]) Для метода PlaySound: sound_volume - громкость звука в пределах [0,1] Для метода PlayMusic: sound_fade_start - задает плавное нарастание громкости от начала трека, в секундах sound_fade_end - задает плавное затухание громкости к концу трека, в секундах

Ну, или из консоли:
runscript PlaySound('file_name.wav') runscript PlayMusic('file_name')
Примечание: для PlayMusic не нужно указывать расширение файла, для PlaySound - нужно.
Об игровых текстурах
Все файлы текстур и иной графики игры расширения .dds хранятся в следующих каталогах:

Data/Texture
Data/LocData/English*/Data/Texture


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

Для того, чтобы игровой движок увидел вашу текстуру, вам необходимо её конвертировать в формат Direct Draw Surface (DDS), при этом выбрав следующий пресет:

DXT3 ARGB 1 bit alpha
DXT3 ARGB explicit alpha
DXT5 ARGB Interpolated alpha


Текстуры объектов желательно конвертировать с применением MIP-mapping, это позволит движку лучше рендерить текстуры на разных расстояниях до камеры. Остальные же текстуры мип-маппинга не требуют.
Конвертацию можно произвести с помощью утилиты от NVIDIA для Adobe Photoshop, подробности см. ниже. Имейте ввиду, что при конвертации может потеряться часть данных изображения.

* - может быть другой каталог, в зависимости от локализации, в большинстве случаев - Russian
Музыкальный плейлист
В оригинальной версии игры (без модов вообще) количество треков равно:
  • 18 треков боевой музыки
  • 26 треков полетной музыки

То есть, заменить максимум треков с помощью такого способа вы сможете такое количество. Есть еще другие файлы, но они в общий плейлист не входят, и проигрываются по моментам игры (например, трек "menu.ogg" играет в главном меню игры)

Для увеличения количества треков вам необходимо зайти в файл:
Data//Scripts//include//PlayLists.script.
Открывать текстовым редактором.
В разных частях волков файл имеет разную структуру, однако в ГВ плейлист представлен, как массив.

Мы видим, что все названия треков записаны в массив:
AmbientList = {"polet","polet2","polet3","polet4","polet5","polet6","polet7","polet8","polet9", "polet10","polet11","polet12","polet13","polet14","polet15","polet16","polet17", "polet18","polet19","polet20","polet21","polet22","polet23","polet24","polet25","polet26"};

Так вот, для увеличения количества треков необходимо добавить новые значения. То же самое с баттл-листом. Например:
AmbientList = {"polet","polet2","polet3","polet4","polet5","polet6","polet7","polet8","polet9", "polet10","polet11","polet12","polet13","polet14","polet15","polet16","polet17", "polet18","polet19","polet20","polet21","polet22","polet23","polet24","polet25","polet26","polet27"};
Новый трек необходимо предварительно добавить в папку Music!
И да, названия могут быть разными. Главное, чтобы они совпали с названиями композиций. Расширение .ogg прописывать не нужно.

Для придания каждой локации своего неповторимого звучания, вы можете добавить конкретные файлы звуков сюда:
Data//Scripts//Locations//(ваша локация)//location.script

Или InitMusic() - случайный выбор из глобальных плейлистов, редактирование которых рассмотрено выше
Или как здесь, с указанием конкретного трека:

AddMusicToPlayList("Ambient2") ; - трек Ambient2 AddMusicToBattlePlayList("Battle1") ; - трек Battle1 и т.д. StartPlayList(); - запуск плейлиста

В скобках необходимо в кавычках указать название трека в Music. Иначе работать не будет.


Изменения в моде New Civil War:
В моде музыкальные плейлисты формируются в файле:
Data//Music//music_cfg.xml.

<MusicCfg> <MusicList name="PlayList1"> <AmbientList> <FileName>polet</FileName> <FileCount>24</FileCount> </AmbientList> <BattleList> <FileName>battle</FileName> <FileCount>16</FileCount> </BattleList> </MusicList> </MusicCfg>

Сама логика формирования имени файла в PlayLists.script переписана. Теперь в плейлист подставляется имя следующего формата: file_nameX, где X - порядковый номер от 1.

Структура файла:
<MusicList name="PlayList1">
Объявляется структура данных MusicList с уникальным имем (PlayList1).

<AmbientList>
<FileName>polet</FileName>
Имя файла(ов) для ambient-листа.
<FileCount>24</FileCount>
Количество файлов для ambient-листа.
</AmbientList>

<BattleList>
<FileName>battle</FileName>
Имя файла(ов) для battle-листа.
<FileCount>18</FileCount>
Количество файлов для battle-листа.
</BattleList>

</MusicList>

Вы можете добавить к существующим плейлистам новые файлы, указав в music_cfg.xml их новое количество. Если же вы хотите сформировать новый плейлист, имя плейлиста необходимо указать в PlayLists.script в функции Init_Music() вручную по аналогии с приведенной логикой:
function InitMusic(index) if (index == 1) then Init_Music("PlayList1") elseif (index == 2) then Init_Music("PlayList2") elseif (index == 3) then Init_Music_Alien() end end index - индекс плейлиста, либо указывается напрямую в location.script локации, либо - в GlobalMap.xml, в тегах <sector> -> <music_index>
Структура XML: Carcasses.xml
Сразу оговорюсь, материал взят с форума Starrover. Подобный мануал есть и на форумах EliteGames. Но все-таки я расскажу по-подробнее, что и как.

ОПИСАНИЕ СТРУКТУРЫ ФАЙЛА CARCASSES.XML

Основной файл, где лежит вся информация о кораблях в xml формате, это Carcasses.xml, лежащий по адресу Папка_с_игрой//Data//Game.

<BigShip name="Mothership">
Тип каркаса (BigShip или Interceptor или Corvette), уникальное имя (Mothership).

<short_name>#M_Name_Mothership</short_name>
Основное название корабля, встречаемое в космосе. Либо указано "как есть", либо сюда можно вставить ссылку на лок-переменную. Локали смотрите в Data/LocData/English, в файлах m_carcasses или s_carcasses.

<hint>#M_Hint_Mothership</hint>
Второстепенное название корабля, встречаемое в окне базы или на торговой станции.

<long_desc>#M_LDesc_Mothership</long_desc>
Полное описание корабля.

<mesh_name>new_mothership</mesh_name>
IMD файл (3D модель). Лежит в Data/OBJECT.

<flat_image>new_mothership_icon</flat_image>
Файлы DDS (картинки корабля) в Data/TEXTURE/Interface/Carcass/32,64,128

<hit_points>2000</hit_points>
Очки брони.

<mass>120000</mass>
Масса. Влияет на маневренность.

<disable_trade>true</disable_trade>
Запрет на продажу в магазине (если true).

<cost>99999</cost>
Истинная цена. В разных магазинах отличается из-за уникальных коэффициентов на цены.

<technology/>
Принадлежность к технологии расы (TECHNOLOGY_BERSERK, TECHNOLOGY_ALIEN, TECHNOLOGY_PRECURSOR, TECHNOLOGY_ANGOR).

<EPR>60</EPR>
Эквивалентная площадь радиоотражения. Насколько хорошо кораблик будет виден на радаре. У истребителей он обычно низкий.

<explosion_script>Big Ship</explosion_script>
Тип взрыва при гибели корабля (Big Ship, Station, Asteroids, Fighter, Transport)

<work_sound/>
Переводится как "рабочий звук". Звук он и есть звук, хз, зачем он :)

<silence/>
"Тишина", что типа расстояния с которого будет не слышен звук. Наверное.

<max_energy>250</max_energy>
Очки щитов.

<energy_restore>3</energy_restore>
Скорость восстановления щитов ( + показатель за секунду).

<max_speed>9</max_speed>
Макс. скорость, значение*100.

<maneurability>2</maneurability>
Маневренность , значение*10.

<steering_power>11000</steering_power>
Сила разворота. Чем выше, тем больше маневренность.

<sensor_resolution>0.38</sensor_resolution>
Разрешающая способность радара (чем меньше, тем лучше обнаруживает малозаметную цель).

<sensor_length>140</sensor_length>
Дальность радара (в кликах).

<threat>3.5</threat>
Очки опыта за сбитие данного корабля (будут начислены пилоту, который убил).

<mapping_name>new_mothership_icon</mapping_name>
Картинка DDS со слотами. Лежит в Data/TEXTURE/Interface/Carcass/Slots.

Подраздел вооружения:
Примечание: Больше пушечно-ракетных слотов, чем имеется в IMD, нельзя добавить. Лишние будут нерабочими. Имейте это в виду.
<HolderProperties>
  • <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>
    ГК турели.
</HolderProperties>

<engine_sound>Engine-Bigship.wav</engine_sound>
Файл звука двигателя.

<engine_start_sound/>
Файл звука, проигрываемый при начале движения корабля (рядом с двигателями).

_____________________________________________
ТЕГИ, КОТОРЫЕ ЕСТЬ ТОЛЬКО У БИГШИПОВ И СТАНЦИЙ:

<destroyed_mesh_name/>
Файл IMD (3D модель) разрушенного (сбитого корабля).

<cargoCapacity>3000</cargoCapacity>
Объем трюма. В ГВ значения не играет. Актуален для ЗВ2.

_____________________________________________
ТЕГИ, КОТОРЫЕ ЕСТЬ ТОЛЬКО У БИГШИПОВ:

Подраздел ангаров:
<BigShipHangar>
  • <hangar_count>6</hangar_count>
    Количество ангаров.

  • <max_hangar_count>6</max_hangar_count>
    Максимальное количество ангаров (в чем разница с верхним тегом - без понятия).

</BigShipHangar>

_____________________________________________
ТЕГИ, КОТОРЫЕ ЕСТЬ ТОЛЬКО У ИСТРЕБИТЕЛЕЙ:

<level>5</level>
Поколение истреба, от 1 (все, что больше 5, скриптами не воспринимается, и пилот не сможет сесть за истреб).

_____________________________________________

</BigShip>


Изменения в моде New Civil War:
В моде добавлены новые теги на корабли:

<poison_resist>false</poison_resist>
Наличие у корабля персональной защиты от ядовитого облака наноторпеды Чужих (true - есть, false - нет).

<Market>
Раздел генерации корабля (товара) в магазинах.
<Shops>
Подраздел, в котором указываются фракционные магазины, в которых товар будет продаваться.
<shop_fraction>Inoco</shop_fraction>
<shop_fraction>Uss</shop_fraction>
<shop_fraction>Triada</shop_fraction>
</Shops>

<fraction>Kfni</fraction>
Имя фракции магазина, в котором товар будет продаваться, если раздел <Shops> не заполнен.
<shop_level>2</shop_level>
Уровень генерации, зависит от пройденности сюжета.
<chance>0</chance>
Шанс появления в магазине. Учтите, что 100% шанс не даст гарантии появления, поскольку действует внутридвижковый рандом.
</Market>
Добавление своего корабля в игру
У вас должны быть в наличии 3D модельки игровым форматом IMD, которые можно получить из импорта obj + mtl с помощью IMDEditor-v3, а так же текстуры (в основном DDS, можно TGA, PNG...) для этой модели, которая уже оптимизирована под эту модель.

Ссылки:
  1. IMD Editor v3[sites.google.com]
  2. SW Editor by Star Rover Team[vk.com] (альтернатива с интуитивно-понятным интерфейсом)
  3. Плагин для 3DS Max для экспорта IMD моделей[sites.google.com]
  4. Плагин nVidia для фотошопа для DDS текстур[developer.nvidia.com]
  5. Старый набор от nVidia для работы с текстурами DDS[developer.nvidia.com]

Основное, чего игре "хватит" для корректной работы
  1. создаем по вышеизложенному плану описание в carcasses.xml. Вписываем в mesh_name имя файла 3D модели.
  2. отправляем 3D модель в папку DATA\Object и текстуру DATA\Texture
  3. используйте всю свою фантазию, чтобы создать описания в файлах m_carcasses.loc или s_carcasses.loc. Заголовки описаний делайте такими же, как вы прописали в carcasses.xml, например, #M_Name_My_Fighter. Что-то не так - в игре увидите сообщение:
    Not found string: #M_Name_My_Fighter
  4. добавьте в DATA\TEXTURE\Interface\Carcass\NNN картинки истребителей в ангаре и магазине, с названиями, указанными во flat_image. Ширина (в пикселях) должна быть равной названию той папки, куда помещаете рисунки. Рисунки должны находиться во всех трех папках, иначе вы можете в разных местах увидеть вместо картинок белые квадраты.
  5. добавляете в DATA\TEXTURE\Interface\Carcass\Slots DDS-картинку размером 1024*1024, там должна быть схема (или большой рисунок) этого корабля. Чтобы отображались слоты, нужно создать в этой же папке файл с названием, указанным вами в <mapping_name> названием и расширением INI.

СЛОТЫ (дополнительно)
Как уже выше сказано, слоты - ячейки для оборудования, куда можно засунуть и вынуть модуль из корабля. В папке slots лежит 2 типа файлов (кроме системного ships.tuv): файлы с расширением dds (рисунки корабля, открывать редакторами с поддержкой данных форматов), и ini (сами слоты в текстовом виде, открываются любым текстовым редактором). Нам понадобятся оба файла, причем ини файл - больше всех.

ВНИМАНИЕ: к ЛЮБОМУ добавленному слоту НЕОБХОДИМО прописать новые ТТХ для корабля в Carcasses.xml!

Для начала, создадим новый текстовый файл, изменив его расширение на ini и обозвав таким именем, чтобы оно совпадало с именем в теге <mapping_name>. Я на примере разберу "Буревестник":
 
Открываем его и видим следующие параметры. Основное на скриншоте:
 
Итак, мы видим необходимую информацию. Для начала определимся с картинкой корабля, вернее, где она указана. По параметру name = ships02 мы можем определить файл dds, где она лежит. Открываем его (открывать редактором, поддерживающим этот формат, или фотошопом с плагином dds от nVidia). Остальная информация на скриншоте. 
ВНИМАНИЕ: параметры Y могут отличаться. Это связано с тем, что движок автоматически сам подстраивает размер под данные координаты. Поэтому вы можете откинуть по 100 пикселей, если хотите.
 
Так вот. Если хотите добавить систему, вам необходимо просто добавить следующие строки:
[slotX1] type=SystemModule refpoint=systemX2 image_coord=X Y text_coord=X Y text_aligment=RIGHT
X1 = порядковый номер слота
X2 = порядковый номер системного рефпоинта
X, Y = соответственно, координаты по горизонтали и вертикали слота/текста
 
Вот так у меня получилось:
 
В игре же:
 
Теперь об оружии и прочем. Нам понадобится ИМД эдитор (или SW editor от команды Star Rover). Кидаем его в папку с игрой (можно в другое место, но в случае со SWE текстуры не прогрузятся и вы будете лицезреть белую модель), открываем ИМД модель (лежат в Data/Object) и смотрим.
 
Красным цветом отмечена пушка, оранжевым - ракета. Отсюда смотрим соответствие. Если оно есть, то слот будет принимать пушку/ракету и др. Если нет, то в игре будет сообщение: "Монтаж устройства в данный разъем невозможен!"
 
Добавим пушку на Буревестник раскраски игрока и назовем ее, как CENTER_2 (регистр не имеет значения, но лучше писать в 2х местах одинаково).
ВНИМАНИЕ: если хотите добавлять что-либо в этих редакторах, после КАЖДОГО изменения нажимайте ENTER.
 
Не забудем прописать новые ТТХ в Carcasses.xml и заходим в игру, чтобы проверить. Сразу скажу: если ошиблись с координатами, то ничего страшного. Но для исправления ошибки вам придется каждый раз перезагружать игру (ini файлы грузятся только один раз при запуске). Все работает.

Проделываете тоже самое со всеми орудиями.

ПРИМЕЧАНИЕ: если вы хотите модифицировать истребитель, который уже находится у вас в ангаре базы, и после изменений его ТТХ в игре они не отобразились, вам необходимо перейти в другую локацию, вынув корабль из ангара и поместив его в трюм. Приведу пример из своего опыта. Я хотел уменьшить у модифицированного под себя Змея mk2 с 4 до 2-ух систем, чтоб типа было, как в оригинале, все дела... Но при изменений его ТТХ я его забыл вынуть из трюма, да еще и забыл убрать с него все системы. В итоге при переходе из локации в другую у меня благополучно вылетела игра. Поэтому, лучше перестраховываться и не наступать на подобные грабли (тоже самое касается всяких бэкапов файлов, если не уверены, что изменения, которые вы вносите, не приведут к таким вот последствиям).

На этом знакомство со слотами завершено. Удачных вам поделок!

Добавление корабля в игру (его появление в игре)
Добавленный, или существующий корабль необходимо добавить в скрипты игры, чтобы его можно было встретить в космосе. Есть 3 способа это сделать:
  1. Добавить в трюм базы в начале игры/в какую-нибудь миссию.
  2. Добавить корабль в магазин(ы).
  3. Добавить неписишному игроку (в патрули системы, например).

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

Добавляем корабль в трюм базы
Если хотите добавить корабль в начало игры:
Data/Scripts/InitTeamScript.script

Добавляете туда следующие lua скрипты:
mothership:AddShipToInventory(ship,quantity)
  • ship - название корабля в Carcasses.xml (ShipDescriptions.xml). Параметр типа string, не забудьте заключить его в кавычки
  • quantity - количество
(!) Скрипт писать ПОСЛЕ mothership = CreateCarcass(...) !!!

Таким образом, можно также добавить корабль в трюм в любом месте локации/сюжета. Для этого изучите файлы в папках Locations и Quests.

Если хотите добавить корабль из игры через консоль:
runscript mothership:AddShipToInventory(ship,quantity)
(!) В консоли движка:
  • Не должно быть двойных кавычек " ". Используйте либо одинарные кавычки - ' ', либо две квадратные скобки [[ ]].
  • Не должно быть никаких пробелов внутри lua скрипта. Пробел только между командой движка runscript и скриптом lua.

(!) Вообще, таким образом можно вызвать любой скрипт в игре, если он объявлен в подключенных файлах script или если эта команда прописана в движке как экспортируемая.

Добавляем корабль в магазин
Разберем простой способ добавления корабля в магазин. Более сложный трогать не буду, ибо вам проще юзать этот вариант (иной предполагает редактирование глобальных массивов lua и соотношение его товаров по количеству, что на пальцах объяснить трудно, хотя на самом деле там ничего сложного нет, нужна лишь внимательность).

Data/Scripts/InitTradeSystem.script

В самом конце добавляем следующие lua скрипты:
-- обычный магазин local Market=GetWhiteMarket(shop) Market:ShipGoodsState(ship,quantuty,k_buy,k_sell) -- черный рынок / склад ССТ local Market=GetBlackMarket(shop) Market:ShipGoodsState(ship,quantuty,k_buy,k_sell)
  • shop - название магазина, как правило, совпадает с названием локации. Строчный параметр, поэтому в кавычках
  • ship - название корабля в Carcasses.xml. Строчный параметр, поэтому в кавычках
  • quantity - количество
  • k_buy, k_sell - коэффициенты магазина, влияющие на цену покупки/продажи. В движке перемножаются на цену корабля, указанную в теге <cost> в Carcasses.xml.

И да, если два последних параметра будут равны нулю, то корабль в данном магазине будет бесплатным :)

(!) Для InitTradeSystem.script изменения вступят в силу ТОЛЬКО после начала новой игры.

Добавляем корабль в генерацию в космосе
Data/Scripts/include/Create_flight_2.script

В данном файле описаны все типовые звенья в игре.
Есть массивы кораблей, скажем, Патруля:
Pat_Fighters = { { {"Stormcrow_pat1",2,"A"},{"Excalibur_pat1",6,"D"},{"Hatchet_pat1",6,"M"} }, }

Мы видим пример одного из звеньев. Первый параметр, собсно, сам корабль, второй - порядковый номер пилота, который находится в массивах Pat_Pilots, USS_Pilots, Vks_Pilots и т.д, третий параметр - выполняемая задача в звене. Каждая буква расписана в этом же файле, все интуитивно понятно :)

Просто меняем один из них на название корабля из Carcasses.xml. Если хотите, вы можете добавить уже оснащенный корабль (названия лежат в ShipDescriptions.xml). Например, добавим сюда патрульную пантеру без модулей (Panthera_pat0):
{{"Panthera_pat0",2,"A"},{"Excalibur_pat1",6,"D"},{"Hatchet_pat1",6,"M"}},

Мы добавили пантеру в состав конкретно этого звена. Также вы можете её в качестве нового корабля в звено:
{{"Panthera_pat0",2,"A"},{"Stormcrow_pat1",2,"A"},{"Excalibur_pat1",6,"D"},{"Hatchet_pat1",6,"M"}},

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

ВАЖНО: самое главное тут - внимательность. Иначе получите ошибки в игре (от ошибки загрузки уровня до выброшенного исключения = вылета).

Приобретение базы
2 способа:
  1. Добавление базы за место существующей в квесты игры. Миссии, где меняется база:
    • 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 (Обновка)

    Менять параметры в методах lua NewFlight(groub,sign,ship,...), то есть, вместо ship - название базы (в кавычках, опять же)
  2. Добавление в генерацию в космосе у патрулей (см. способ для истребителей).

На этом большой раздел по разбору кораблей подошел к концу.
Вместо заключения
Я физически не могу расписать, что можно конкретно сделать на этом движке. Я лишь хочу подтолкнуть всех заинтересованных к изучению внутренностей игры и её моддингу, и начав с малого, подогрев интерес, вы сможете получше ознакомиться с движком с технической стороны, понять, что можно, а что нельзя. Изучайте, пробуйте, моддинг не так сложен, как вам кажется.

На движок по Звёздным волкам существует неофициальная фанатская документация (папка Google Drive, чтобы стим не ругался и не блочил ссылки):

SW-docs[drive.google.com]

Авторы:
by valv_id:
  • Документация по консоли движка
  • Документация по функциям движка lua
by Lion[MX] (Elite Games Team):
  • Справочник по моддингу скриптов lua, с ред. от valv_id (Guide-script-4)
91 Comments
Alex Scratch  [author] 14 Oct, 2024 @ 8:10pm 
Ну и еще, движок напрямую с кастомными хмл не работает, с хмл могут работать скрипты луа через lua парсер. По крайней мере, я не знаком с modd buddy и не знаю, что он умеет, я опираюсь на свой опыт моддинга.
Alex Scratch  [author] 14 Oct, 2024 @ 7:50pm 
Привет. Для создания мода никакими модмейкерами я не пользовался, все делается вручную, если ознакомиться с движком и как он работает (а работает он довольно просто, все файлы в открытом виде, и логи есть).
Ну и насколько я знаю, для волков никаких модмейкеров не делали, по крайней мере, не выкладывали в открытый доступ. Из инструментов у нас имеется, разве что, imd и sw эдитор, но они по 3д моделям, а не по скриптам.
pancho8 14 Oct, 2024 @ 1:09pm 
Здравствуйте. Я начинающий моддер. Нигде не могу найти точную пошаговую инструкцию по созданию мода с Lua-скриптом в ModBuddy. Когда я вставляю Lua-скрипт напрямую в Lua-файлах игры, то всё работает без проблем. Но когда создаю именно мод в ModBuddy, то он не работает :( мне не понятна сама последовательность действий и что куда в какие окна вставлять. Моды состоящие непосредственно из xml-файлов работают у меня без проблем. Но когда создаю с Lua-скриптом, то НЕ РАБОТАЮТ! Подскажите пожалуйста, буду очень признателен
Ambulance 1 Sep, 2024 @ 1:07am 
Здравствуйте, подскажите в чем дело? Добавил я Раптору зубы в виде больших пушек, все четко. Но на базе, когда начинаю пушки ставить - картинка оружия не отображается.
Еще вопрос, возможно ли добавить слоты на матбазу? Просто один раз я поставил, а потом при переходе на след локацию, игра вылетала.
Lelik-Sk-Minsk 27 Jan, 2024 @ 8:01am 
Жаль, не помнишь как плагин называется?
Alex Scratch  [author] 27 Jan, 2024 @ 7:14am 
Печально, страница удалена, может быть по желанию автора. Можешь попробовать импорт/экспорт делать через obj формат.
Lelik-Sk-Minsk 27 Jan, 2024 @ 6:44am 
Где взять плагин для Макса, ссылка не пашет?
RAiN SHEPARD 21 Oct, 2023 @ 5:21am 
А, все, спасибо. Разобрался)
RAiN SHEPARD 21 Oct, 2023 @ 4:57am 
а как добавить в инвентарь?
Alex Scratch  [author] 21 Oct, 2023 @ 4:31am 
А в чем проблема? Добавляешь слот с рефом TurretGK на модель и в ини, затем добавляешь турель в инвентарь. Всё.