на главную страницу
Крупнейший сайт о стратегиях. Обзоры новинок.Активный ФОРУМ и встречи с разработчиками. Большая качалка МОДов для RTW и не только. Родной дом «Империи» и «Бонапарта».
На internetwars.ru


ЭНЦИКЛОПЕДИЯ МОДЕЛИРОВАНИЯ

 

Вернуться к оглавлению

КАК ИЗВЛЕЧЬ ТЕКСТУРЫ, МОДЕЛИ И СПРАЙТЫ ЮНИТА

 

ИНСТРУМЕНТАРИЙ

xpak (42 КБ)


НАШ ФОРУМ

Здесь можно задать вопрос по этому тутору. м

Активно обсуждаем военные игры, историю, МОДы, и новинки
игрового мира.

В этой инструкции рассказывается как извлекать текстуры, модели и спрайты пехотных юнитов и внедрить их в новый мод.

Прежде всего, требуется выудить  запакованные архивы.
Качаем из левой колонки файл xpak. Раскрываем его, копируем фалы xpak.bat и xpak.exe в папку Data\packs и запускаем xpak.bat
После распаковки скрытых архивов удаляем файлы ui_1.pak и models_unit_textures.pak (как и xpak.bat и xpak.exe)
Далее заходим в появившуюся папку DATA (Rome-Total War/Data/packs/DATA) переносим всё содержимое (Items,Models_building и так далее) в папку Data находящуюся в корневом каталоге игры. На вопрос "заменить?" отвечаешь "для всех".

Шаг первый
Выбираем понравившегося нам юнита, например в РТР император 2, мне понравился Легион XIII Fretensis.
Открываем в корневом каталоге игры IMP\data\text (IMP в данном случае папка мода, многие моды ставятся поверх самой игры в этом случае в корневом каталоге игры следует открывать Data\text или bi\data\text в зависимости от того на что установлен мод.)
Находим и открываем файл export_units, затем открываем Правка – Найти пишем Легион XIII Fretensis
Обнаруживается следующая надпись
{fretensis_legionary_cohort} Легион XIII Fretensis "Охраняющий пролив"
{fretensis_legionary_cohort_descr}описание юнита
{fretensis_legionary_cohort_descr_short} краткое описание юнита
Всё это копируем в RTW\Data\text в самый низ страницы файла export_units
Это будет описание нашего нового юнита.

Далее в моде открываем data\export_descr_unit , затем снова Правка – Найти пишем fretensis_legionary_cohort - это как вы заметели первая строчка из описания юнита.
Обнаруживаем следующие строки:
type fretensis legionary cohort
dictionary fretensis_legionary_cohort
category infantry
class heavy
voice_type Heavy_1
soldier roman_legionary_cohort_iii, 40, 0, 1.3
officer roman_late_centurion
officer roman_standard1
mount_effect horse -1, camel -1,
attributes sea_faring,hide_forest,can_sap,very_hardy
formation 1, 2, 2, 3, 5, square,shield_wall
stat_health 1, 0
stat_pri 12, 6, pilum, 38, 2, thrown, blade, piercing, spear, 20 , 1
stat_pri_attr prec,thrown,thrown ap
stat_sec 12, 2, no, 0, 0, melee, simple, piercing, sword, 0 , 0.3
stat_sec_attr no
stat_pri_armour 10, 17, 9, metal
stat_sec_armour 0, 1, flesh
stat_heat 4
stat_ground 0, 1, -1, 0
stat_mental 14, disciplined, highly_trained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 820, 480, 154, 162, 750
ownership romans_julii, romans_scipii
Важнейшим из всего этого текста для нас является содержание строки -
soldier это - roman_legionary_cohort_iii - выписываем или запоминаем.

Далее открываем в оригинальным RTW - RTW\Data файл export_descr_unit и находим наиболее похожего по типу на нашего, юнита . В данном случае это легионер (если бы это был лучник, копейщик или пельтаст то мы находили бы соответственно описания этих юнитов):
type roman legionary cohort ii
dictionary roman_legionary_cohort_ii ; Legionary Cohort
category infantry
class heavy
voice_type Medium_1
soldier roman_legionary_cohort_ii, 40, 0, 1.3
officer roman_standard
attributes sea_faring, hide_forest, can_sap, hardy
formation 1, 2, 2, 3, 4, square, testudo
stat_health 1, 0
stat_pri 13, 3, pilum, 35, 2, thrown, blade, piercing, spear, 25 ,1
stat_pri_attr prec, thrown ap
stat_sec 9, 3, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 12, 5, 5, metal
stat_sec_armour 0, 1, flesh
stat_heat 5
stat_ground 2, 0, 0, 0
stat_mental 10, disciplined, highly_trained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 740, 210, 80, 120, 740
ownership romans_julii,romans_brutii,romans_scipii,romans_senate

Копируем описание этого оригинального легионера в самый низ и заменяем содержание строки soldier на ту что о нас в моде (это указание на то какая модель будет использоватся), также переименовываем юнита путем замены оригинальных строк – type и dictionary, на строки от нашего нового юнита. В итоге у нас должно получится так:

type fretensis legionary cohort
dictionary fretensis_legionary_cohort

category infantry
class heavy
voice_type Medium_1
soldier roman_legionary_cohort_iii, 40, 0, 1.3
officer roman_standard
attributes sea_faring, hide_forest, can_sap, hardy
formation 1, 2, 2, 3, 4, square, testudo
stat_health 1, 0
stat_pri 13, 3, pilum, 35, 2, thrown, blade, piercing, spear, 25 ,1
stat_pri_attr prec, thrown ap
stat_sec 9, 3, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 12, 5, 5, metal
stat_sec_armour 0, 1, flesh
stat_heat 5
stat_ground 2, 0, 0, 0
stat_mental 10, disciplined, highly_trained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 740, 210, 80, 120, 740
ownership romans_julii,romans_brutii,romans_scipii,romans_senate

В строке ownership также можно поменять принадлежность юнита к той или иной фракции для этого нужно указать интересующую нас фракцию(фракции) и удалить лишние. Например мне нужно чтобы этот юнит был только у Юлиев и Селевкидов тогда строка ownership будет выглядеть так:
ownership romans_julii,seleucid

После этого открываем в нашем моде
data\descr_model_battle затем опять Правка – Найти пишем roman_legionary_cohort_iii ( т.е. содержимое строки soldier)
Находим следующее:
type roman_legionary_cohort_iii
skeleton fs_javelinman, fs_s1_gladius
indiv_range 40
texture romans_julii, imp/data/models_unit/textures/roma_legionary_hastati.tga
texture romans_scipii, imp/data/models_unit/textures/roma_legionary_hastati.tga
model_flexi_m imp/data/models_unit/roma_legionary_high.cas, 15
model_flexi_m imp/data/models_unit/roma_legionary_med.cas, 30
model_flexi_m imp/data/models_unit/roma_legionary_low.cas, 40
model_flexi imp/data/models_unit/roma_legionary_lowest.cas, max
model_sprite 60.0, imp/data/sprites/legionary_roman_hastati_sprite.spr
model_sprite romans_julii, 60.0, imp/data/sprites/romans_julii_roman_legionary_cohort_iii_sprite.spr
model_sprite romans_scipii, 60.0, imp/data/sprites/romans_julii_roman_legionary_cohort_iii_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f

В оригинальном РТВ открываем RTW\Data файл descr_model_battle, Правка – Найти пишем roman_legionary_cohort_ii (т.е. содержимое строки soldier от описания легионера из оригинала игры) Находим следующее:
type roman_legionary_cohort_iii
skeleton fs_javelinman, fs_slow_swordsman ; throwing javelin
indiv_range 40
texture romans_julii, data/models_unit/textures/unit_roman_legionary_II_julii.tga
texture romans_brutii, data/models_unit/textures/unit_roman_legionary_II_brutii.tga
texture romans_scipii, data/models_unit/textures/unit_roman_legionary_II_scipii.tga
texture romans_senate, data/models_unit/textures/unit_roman_legionary_II_senate.tga
texture seleucid, data/models_unit/textures/unit_greek_legionary_seleucid.tga
model_flexi_m data/models_unit/unit_roman_legionary_high.cas, 15
model_flexi_m data/models_unit/unit_roman_legionary_med.cas, 30
model_flexi_m data/models_unit/unit_roman_legionary_low.cas, 40
model_flexi data/models_unit/unit_roman_legionary_lowest.cas, max
model_sprite seleucid, 60.0, data/sprites/seleucid_roman_legionary_cohort_ii_sprite.spr
model_sprite romans_senate, 60.0, data/sprites/romans_senate_roman_legionary_cohort_ii_sprite.spr
model_sprite romans_scipii, 60.0, data/sprites/romans_scipii_roman_legionary_cohort_ii_sprite.spr
model_sprite romans_brutii, 60.0, data/sprites/romans_brutii_roman_legionary_cohort_ii_sprite.spr
model_sprite romans_julii, 60.0, data/sprites/romans_julii_roman_legionary_cohort_ii_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f


Теперь это копируем в самый низ файла т.к. здесь прописаны пути к моделям flexi, текстурам и спрайтам следует заменить указаное на пути к моделям flexi, текстурам и спрайтам нашего нового юнита, а также название в строке type на наше, должно выйти следующее:
type roman_legionary_cohort_iii
skeleton fs_javelinman, fs_slow_swordsman ; throwing javelin
indiv_range 40
texture romans_julii, data/models_unit/textures/roma_legionary_hastati.tga
texture romans_brutii, data/models_unit/textures/roma_legionary_hastati.tga
texture romans_scipii, data/models_unit/textures/roma_legionary_hastati.tga
texture romans_senate, data/models_unit/textures/roma_legionary_hastati.tga
texture seleucid, data/models_unit/textures/roma_legionary_hastati.tga
model_flexi_m data/models_unit/roma_legionary _high.cas, 15
model_flexi_m data/models_unit/roma_legionary _med.cas, 30
model_flexi_m data/models_unit/roma_legionary _low.cas, 40
model_flexi data/models_unit/roma_legionary _lowest.cas, max
model_sprite seleucid, 60.0, data/sprites/ romans_julii_roman_legionary_cohort_iii_sprite.spr
model_sprite romans_senate, 60.0, data/sprites/ romans_julii_roman_legionary_cohort_iii_sprite.spr
model_sprite romans_scipii, 60.0, data/sprites/ romans_julii_roman_legionary_cohort_iii_sprite.spr
model_sprite romans_brutii, 60.0, data/sprites romans_julii_roman_legionary_cohort_iii_sprite.spr
model_sprite romans_julii, 60.0, data/sprites/ romans_julii_roman_legionary_cohort_iii_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f

Важно пути к текстурам и спрайтам должны быть прописаны для всех нужных нам фракций в данном случае это Селевкиды и Юлии (пути к текстурам для них у меня прописаны)

Шаг третий самый важный

Открываем в нашем моде
data\models_unit\textures включаем Поиск файлов пишем название текстуры взятое из файла descr_model_battle в данном случае roma_legionary_hastati.tga, найденный файл
ROMA_LEGIONARY_HASTATI.TGA.DDS
копируем в оригинальный RTW\Data\models_unit в папку textures (предварительно её создав)

Далее открываем в нашем моде
data\models_unit снова Поиск пишем roma_legionary (high, low писать ненужно, чтобы сразу нашлись все модели), найденные 4 модели CAS у меня это
ROMA_LEGIONARY_HIGH.CAS
ROMA_LEGIONARY_LOW.CAS
ROMA_LEGIONARY_LOWEST.CAS
ROMA_LEGIONARY_MED.CAS

копируем в оригинальный RTW\Data\models_unit

Затем заходим в нашем моде в
data/sprites опять Поиск пишем romans_julii_roman_legionary_cohort_iii_sprite, найденные спрайты у меня это
romans_julii_roman_legionary_cohort_iii_sprite.spr
romans_julii_roman_legionary_cohort_iii_sprite_000.tga.dds
romans_julii_roman_legionary_cohort_iii_sprite_001.tga.dds
romans_julii_roman_legionary_cohort_iii_sprite_002.tga.dds
romans_julii_roman_legionary_cohort_iii_sprite_003.tga.dds
копируем в папку sprites оригинального RTW которую предварительно создаем в папке Data

Остались последние штрихи

Последние действия находим иконки для меню и описания юнита.
data\ui\unit_info Поиск - fretensis_legionary_cohort (первая строчка из описания юнита)
находим FRETENSIS_LEGIONARY_COHORT_INFO
Далее
data\ui\units Поиск - fretensis_legionary_cohort , найденный #FRETENSIS_LEGIONARY_COHORT (это у меня).

Теперь создаём папку ui в Data оригинального RTW, внутри этой папки создаем две папки: unit_info и units в каждой из указанных папок создаём папки с названием нужных нам фракций у меня это romans_julii и seleucid.
Соответственно в папки фракций мы и копируем найденные FRETENSIS_LEGIONARY_COHORT_INFO и #FRETENSIS_LEGIONARY_COHORT

И последнее чтобы текстовая информация о нашем юните отображалась в игре необходимо в файле export_descr_unit_enums в папке Data оригинального RTW сделать следующие добавления:

fretensis_legionary_cohort
fretensis_legionary_cohort_descr
fretensis_legionary_cohort_descr_short

Т.е. первая строка это наименование юнита, вторая указание на его общее описание с пометкой _descr и третья строка указание на краткое описание юнита с пометкой _descr_short.

Всё теперь новый юнит доступен в кастом сражениях для соответствующей фракции (фракций).

 

© Автор тутора - Akrit.
©Запрещается любая перепечатка и копирование без согласия  Internetwars.ru .