Игровые Форумы - Показать сообщение отдельно - Я хочу сделать мод к Медивалу 2 научите!!!
Показать сообщение отдельно
Старый 11.02.2007, 10:56   #5
Экс Администратор
 
 Аватар для Flint
 
Отсутствует :(

Регистрация: 12.11.2006
Адрес: Киев
Сообщения: 2,101

Репутация: 2060   Добавить отзыв для Flint

Отправить сообщение для  Flint с помощью ICQ
По умолчанию

Итак, здесь перед вами Тутор по внедрению юнита в МТВ2, на базе существующей меш-модели. Оригинально авторство принадлежит Musashi из тоталвар.орг.

Процесс внедрения нового юнита нам обещают долгий и мучительный, но возможно его сделают проще, если СА выпустит пару новых тулзов для МТВ2. Но, на данный момент это единственный метод как внедрить новый юнит.

Данный Византийский драгун – что-то среднее между Рейтарами и стрелками на верблюдах, но помните –что это всего лишь авторская фантазия на тему.
Внимание! Прежде чем начать не забудьте распаковать паки!

Шаг первый: файл юнитов.

В паке дата откройте export_descr_unit.txt и добавьте вот такой текст:

Так как мы создаем юнит похожий на рейтаров, то проще будет начать с блока описания рейтар:
Код:
type Reiters
dictionary Reiters ; Reiters
category cavalry
class missile
voice_type Heavy
banner faction main_cavalry
banner holy crusade_cavalry
soldier Reiters, 32, 0, 1
mount heavy horse
mount_effect elephant -4, camel -4
attributes sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge, cantabrian_circle, gunpowder_unit, start_not_skirmishing, guncavalry
formation 2, 4.4, 3, 6, 4, square
stat_health 1, 0
stat_pri 20, 3, pistol_bullet, 45, 20, missile, missile_gunpowder, piercing, none, musket_shot_set, 25, 1
;stat_pri_ex 0, 0, 0
stat_pri_attr ap
stat_sec 11, 5, no, 0, 0, melee, melee_blade, piercing, spear, 25, 1
;stat_sec_ex 0, 0, 0
stat_sec_attr no
stat_pri_armour 7, 6, 0, metal
;stat_armour_ex 7, 8, 0, 0, 6, 0, 0, metal
stat_sec_armour 0, 0, flesh
stat_heat 5
stat_ground 0, -2, -4, 0
stat_mental 9, normal, trained
stat_charge_dist 45
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 920, 250, 120, 95, 920, 4, 230
armour_ug_levels 3, 4
armour_ug_models Reiters, Reiters_ug1
ownership hre
era 2 hre
;unit_info 11, 20, 13


Так что все, что нам нужно сделать это скопировать этот кусок, и подредактировать.

Первое, что меняем – это переменную типа. Это ссылка для движка, которая будет использоваться для связи с другими файлами в игре. Самое главное помнить, что игра будет пытаться использовать это ссылку для связи с иконкой юнита.

Code:
type GR_Dragoons

Потом нужно установить «Dictionary» запись. Это ссылка на запись в файле export_units.txt.bin, где игра хранит запись об имени и описанию юнита. Внимание здесь не должно быть никаких пробелов в этой записи. Так как юнит назван «Byzantine Dragoons», то используем для словаря "Byzantine_Dragoons".
Далее идет:
category cavalry
class missile
voice_type Heavy
banner faction main_cavalry
banner holy crusade_cavalry

Ничего здесь менять не надо, так как рейтары – кавалерия, притом стрелковая. И менять нам нужды по описанию баннеров нам не надо.

Опыт редактирования model db файла позволяет сказать, что тип солдата определяет анимацию и скелет, в тоже время как модель и текстура берутся из записи «armour_ug_models». Технически мы можем оставить запись « soldier», так как используем модельку рейтаров, но для целостности картины изменим на:

soldier GR_Dragoons, 32, 0, 1
Также было изменено запись «mount», для того, что бы наш драгун ездил на восточной бронированной лошади.

Также меняем «stat_pri», - набор параметров для главного оружия, в данном случае – мушкета. Так как мы делаем стрелком-мушкетером, то копируем запись от Camel Gunners.

Внимание! Важно! «armour_ug_models» используются для поиска текстур!!! И если не сменить эти строчки, то игра будет упорно искать текстуры в записи рейтаров!!! И мы вместо наших драгун увидим призраков на поле боя, даже если сделаем все правильно для Model DB.
Вот так должна выглядеть новая запись для драгун после редактирования (рекомендую сделать вручную описанное выше, а потом просто свериться, так сказать набить руку). Код:
type GR_Dragoons
dictionary GR_Dragoons ; Byzantine Dragoons
category cavalry
class missile
voice_type Heavy
banner faction main_cavalry
banner holy crusade_cavalry
soldier GR_Dragoons, 32, 0, 1
mount eastern armoured horse
mount_effect elephant -4, camel -4
attributes sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge, cantabrian_circle, gunpowder_unit, start_not_skirmishing, guncavalry
formation 2, 4.4, 3, 6, 4, square
stat_health 1, 0
stat_pri 16, 3, musket_bullet, 180, 20, missile, missile_gunpowder, piercing, none, musket_shot_set, 25, 1
;stat_pri_ex 0, 0, 0
stat_pri_attr ap
stat_sec 11, 5, no, 0, 0, melee, melee_blade, piercing, spear, 25, 1
;stat_sec_ex 0, 0, 0
stat_sec_attr no
stat_pri_armour 7, 6, 0, metal
;stat_armour_ex 7, 8, 0, 0, 6, 0, 0, metal
stat_sec_armour 0, 0, flesh
stat_heat 5
stat_ground 0, -2, -4, 0
stat_mental 9, normal, trained
stat_charge_dist 45
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 920, 250, 120, 95, 920, 4, 230
armour_ug_levels 3, 4
armour_ug_models GR_Dragoons, GR_Dragoons_ug1
ownership byzantium
era 2 byzantium
;unit_info 11, 20, 13

Шаг второй: Клятый Model DB…

Ну вот самый тяжелый и ответственный шаг. Редактирования файла data/unit_models/battle_models.modeldb вряд-ли когда-либо подразумевалось вручную, но ничего прорвемся.

ВНИМАНИЕ! ЭТОТ файл работает ТОЛЬКО в оригинальной data/unit_models и не будет работать в ПАПКЕ МОДА. Так что опять ждем исправлений косяков от СА. Главный недостаток в том, что юзер не сможет одновременно юзать несколько модов, что используют один и той же файл моделей.

ВНИМАНИЕ!!! Для получения работоспособных изменений добавить --io.file_first в бат файл.

«Все» что нам надо – это открыть файл в блокноте (видать вордом автор не юзает за ненадобностью, работоспособность файла после правки в Ворде не проверялась!!!). Выглядит файл в блокноте как… Ну скажем несколько безобразно…

Так как мы юзамем модель от рейтара то для начала копируем запись от них:
7 reiters 1 4 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod0.mesh 121 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod1.mesh 900 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod2.mesh 2500 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod3.mesh 6400 1 3 hre 73 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_hre.texture 76 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_normal.texture 35 unit_sprites/hre_Reiters_sprite.spr 1 3 hre 65 unit_models/AttachmentSets/Final European CB Gun_hre_diff.texture 65 unit_models/AttachmentSets/Final European CB Gun_hre_norm.texture 0 1 5 Horse 14 MTW2_HR_Pistol 13 MTW2_HR_Spear 1 22 MTW2_HR_Pistol_Primary 1 21 MTW2_HR_spear_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 11 reiters_ug1 1 4 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod0.mesh 121 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod1.mesh 900 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod2.mesh 2500 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod3.mesh 6400 1 3 hre 73 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_hre.texture 76 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_normal.texture 39 unit_sprites/hre_Reiters_ug1_sprite.spr 1 3 hre 65 unit_models/AttachmentSets/Final European CB Gun_hre_diff.texture 65 unit_models/AttachmentSets/Final European CB Gun_hre_norm.texture 0 1 5 Horse 14 MTW2_HR_Pistol 13 MTW2_HR_Spear 1 22 MTW2_HR_Pistol_Primary 1 21 MTW2_HR_spear_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002
Так что мы здесь имеем в итоге:

Первое что стоит запомнить раз и навсегда – это то, что формат каждой записи в файле имеет вид "n xxxxx", где n – длина строки в СИМВОЛАХ, что идет после числа.
Наша запись "7 reiters". Так число 7 длина строки "reiters", потом само слово reiters.

Потом «1 4» - обычно строка из одного символа, что представляет количество лодов, что гейма будет пытаться загрузить. (ну да кому в голову стрельнет грузить 10-20 лодов к модельке?).

Следующие три записи:
53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod0.mesh 121 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod1.mesh 900 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod2.mesh 2500 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod3.mesh 6400
Меши, что игра будет использовать на разных дистанциях от юнита. Запомните – сначала строка с Мешем, потом дистанция, на которой будет использован Меш. Все просто.

Итак, блок текстуры:
1 3 hre 73 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_hre.texture 76 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_normal.texture 35 unit_sprites/hre_Reiters_sprite.spr
1 - количество блоков текстур, что гейма должна попытаться загрузить, если проще – количество фракций, что юзают сию модель (хотя вполне может быть что модель одна, но референсов на модель несколько на одну фракцию, но с разными текстурами). В случае с рейтарами – только HRE может использовать модель рейтара, поэтому только один блок текстур.

3 – длина строки-названия фракции – для блока текстуры. В данном случае hre. Потом длина строки самой текстуры, пробел – длина строки для карты нормалей. (Более детально можно почитать, как редактировать текстуру и карту нормалей в гайде от Заруса на главной страничке).
Последняя срока – спрайт для модели, если удаление больше чем самый низкий ЛОД модели.

Следующий блок кода:
1 3 hre 65 unit_models/AttachmentSets/Final European CB Gun_hre_diff.texture 65 unit_models/AttachmentSets/Final European CB Gun_hre_norm.texture 0 1 5 Horse 14 MTW2_HR_Pistol 13 MTW2_HR_Spear 1 22 MTW2_HR_Pistol_Primary 1 21 MTW2_HR_spear_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002
Лист атачментов, которые использует юнит. Вообще на 100% автор не уверен, что к чему, кроме того, что нужно начинать также как и для блока текстур. То есть 1 – количество блоков-описаний, 3 – длина названия фракции, потом длина следующей строки и так далее…
Потом тоже самое повторяется для модели-апгрейда.

Вот так это должно выглядеть для нового юнита. (Автор предлагает все это копировать в отдельное окно блокнота, там редактировать, а потом вставлять в конец последнего блока, так что бы был только один (!) пробел)

Вот так выглядит уже отредактированный блок:
11 GR_Dragoons 1 4 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod0.mesh 121 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod1.mesh 900 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod2.mesh 2500 53 unit_models/_Units/RN_Half_3Q_Plate/reiters_lod3.mesh 6400 1 9 byzantium 79 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_byzantium.texture 76 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_normal.texture 41 unit_sprites/byzantium_Reiters_sprite.spr 1 9 byzantium 65 unit_models/AttachmentSets/Final European CB Gun_hre_diff.texture 65 unit_models/AttachmentSets/Final European CB Gun_hre_norm.texture 0 1 5 Horse 14 MTW2_HR_Pistol 13 MTW2_HR_Spear 1 22 MTW2_HR_Pistol_Primary 1 21 MTW2_HR_spear_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 11 reiters_ug1 1 4 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod0.mesh 121 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod1.mesh 900 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod2.mesh 2500 57 unit_models/_Units/RN_Half_3Q_Plate/reiters_ug1_lod3.mesh 6400 1 9 byzantium 79 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_byzantium.texture 76 unit_models/_Units/RN_Half_3Q_Plate/textures/rn_half_3q_plate_normal.texture 45 unit_sprites/byzantium_Reiters_ug1_sprite.spr 1 9 byzantium 65 unit_models/AttachmentSets/Final European CB Gun_hre_diff.texture 65 unit_models/AttachmentSets/Final European CB Gun_hre_norm.texture 0 1 5 Horse 14 MTW2_HR_Pistol 13 MTW2_HR_Spear 1 22 MTW2_HR_Pistol_Primary 1 21 MTW2_HR_spear_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002
Как ведете, было изменено название модели (Вообщем-то моделей, так как апгрейнутая модель – это уже новая модель), фракции и названия текстур.

Шаг третий: редактируем текстуры
Как открыть – читай Заруса. (Моя технология), или использовать конвертер.

Шаг 4: делаем иконку.

Так в data/ui/units/hre копируем #reiters.tga в data/ui/units/byzantium и переименовуем в #gr_dragoons.tga. Если надо – делаем свою, или редактируем в фотошопе.

Редактируем описание.

Все что осталось – отредактировать текст:
Код:

{Reiters} Reiters
{Reiters_descr} Reiters derive their name from the German word reiter, meaning horseman. Generally from German states, Reiters are armed with a pistol and spear, and well protected by plate armour. They often employ the shooting circle tactic to create a continuous cycle of firing and reloading. Once the enemy are softened up by this treatment, they charge in and finish them off the old fashioned way.
{Reiters_descr_short} Effective gunpowder units, Reiters are armed with a pistol and spear, and protected by plate armour.

Копируем и изменяем на что-то в этом вроде:
Code:

{GR_Dragoons} Reiters
{GR_Dragoons_descr} Reiters derive their name from the German word reiter, meaning horseman. Generally from German states, Reiters are armed with a pistol and spear, and well protected by plate armour. They often employ the shooting circle tactic to create a continuous cycle of firing and reloading. Once the enemy are softened up by this treatment, they charge in and finish them off the old fashioned way.
{GR_Dragoons_descr_short} Effective gunpowder units, Reiters are armed with a pistol and spear, and protected by plate armour.

Вот и все. Ничего сложного, если знать как…

Замечания если кто будет делать свои модельки (ВАЖНО):
1. Все текстуры должны лежать в родной папке геймы.
2. Модель ДБ – должен быть также, находиться в родной папке.
3. Если кто-то напишет свой мод и заменит только 1 (!) текстурку, то Ваш мод будет неработоспособен.
   
__________________
Чрезмерное злоупотребление компьютерными играми сносит башню.
Доказано минздравом.


Ответить с цитированием