Как создать свой MPQ.

Добавлен , опубликован
Раздел:
Работа с MPQ и импортом

Вступление

Каждый из нас хоть раз хотел сделать свой В3, но не знал как это
сделать. Или импортировать в карту больше 8ми метров моделей.
Радуйтесь теперь все просто. Описываю как импортировать.
Первое нужно:
прога распаковки MPQ в моем случае MPQmaster
прога просмотра моделей в моем случае War3ModelEditor 1.05 Rus
Microsoft EXEL
Блокнот
Руки
мозг
World Editor
Куча, ну просто прорва времени.
И так начнем, в директории игры есть war3.mpq war3x.mpq war3patch.mpq и war3xlocal.mpq. Из всех нам нужен
war3patch.mpq т.к. в нем файлы имеют приоритет перед остальными. Создаем папку в которой будем
импортировать\экспортировать.
.Открываем war3patch.mpq MPQmaster*ом находим папку Units нам нужны
все .slx и .txt файлы. Сохраняем их в папку.
Так же если вы незнаете что означают величины в файлах, открываем WE редактор объектов *вид показывать названия переменных* ставим галочку и теперь все названия предметов, способностей, юнитов, характеристик, и т.д. станут как в файлах.

I. Операции с предметами

Нам для этого потребуются следующие файлы:
ItemData.sl - содержит инфу о предметах какие способности и какая модель.
ItemFunc.txt - содержит иконку предмета и ее положение
ItemStrings.txt - содержит название и описание предмета
ItemAbilityFunc.txt - содержит инфу о иконке способности чем стреляет, где находится эффект, куда попадает эффект.
ItemAbilityStrings.txt - содержит описание предмета.

=== 1. Импорт нового предмета
  • 1.1. Запускаем MPQmaster открываем war3patch.mpq находим папку Objects создаем
в ней папку и назовем ее (как угодно) допустим Items импортируем будущую
модель предмета допустим HorseRidish в итоге путь выглядит
так: Objects\Items\HorseRidish.mdx запоминаем.
  • 1.2. Импортируем иконки:
нормальный вид по пути - ReplaceableTextures\CommandButtons\BTNxxx
затенённую ПО пути - ReplaceableTextures\CommandButtonsDisabled\DISBTNxxx,
Где xxx название картинки.
  • 1.3. Открываем предварительно сохраненный на жестком, файл ItemData.sl
подробно о структуре:
itemID- порядковый номер предмета(не должен повторяться)
comment- название предмета
scriptname- скриптовое название (должно быть такое же как и в comment но без пробелов)
class- клас предмета. «артефакт», «только для компании» или «прочее», и т.д
Level- уровень предмета
abilList- способность предмета
cooldownID- время отката
uses- используется ли как книга или зелье
usable- используется ли вообще, если нет то в uses ничего не ставить.
droppable- выпадает ли
sellable- можно ли продать
drop- падает
stockMax- кол-во зарядов
stockRegen- откат после покупки
stockStart- откат после начала игры
goldcost- стоит золота
lumbercost- стоит дерева
HP- жизни
file- путь к файлу
scale- размер
colorR- цвет предмета красный
colorG- цвет предмета зеленый
colorB- цвет предмета синий
  • 1.4. Делаем наш предмет поставим ему индентификатор допустим puki и называете его допустим *Demon
Figu* запоминаем его идентификатор. Идем до столбика file и вставляем ранее запомненный путь к модели
нашего предмета, сохраняем.
  • 1.5. Открываем ItemFunc.txt мы должны вставить конструкцию:
[puki] - в скобках наш ID предмета
Art=ReplaceableTextures\CommandButtons\BTNxxx - путь к нашей иконке
  • 1.6. Возвращаемся к ItemData.sl а конкретно к столбику abilList, в него надо вставить
будущую способность нашего предмета. посмотреть все способности можно в AbilityData.slk и
AbilityBuffData.slk. если непонятно что за непонятные буквы то запускаем WE открываем редактор
объектов, выбираем вкладыш способности, теперь под шапкой есть меню, нас интересует вид\показать
название переменных. Ставим галочку и вуаля теперь нам все понятно. Выбираем понравившуюся
способность в нашем случае это AIob. Вставляем, сохраняем.
  • 1.7. Открываем ItemStrings.txt опять идем в низ и вставляем такую конструкцию.
[puki]
Name=Демон Фига - название предмета
Hotkey=R- горячая клавиша
Tip=Демон Фига (cffffcc00Rr)- название предмета в краткой подсказке подсказке
Ubertip="При каждой атаке герой замораживает
противника, нанося ему <AIf2,DataA1> ед. урона
и снижая скорость его перемещения и боя. Кроме
того, герой получает возможность атаковать
воздушные цели." - описание
Description=При атаке герой замораживает - подсказка подробная
противников.
  • 1.8. Сохраняем, импортируем все измененные файлы в war3patch.mpq. И сидим наслаждаемся своим
предметом.

2. Замена модели предмета

  • 2.1. Повторяем пункт 1.1.
  • 2.2. Открываем ItemData.sl идем до столбика file. Заменяем путь. Сохраняем.
  • 2.3. импортируем измененный ItemData.sl обратно в war3patch.mpq. и наслаждаемся изменением.
Аналогично с изменение Способности, Характеристики, Иконкой и т.д.

II. операции с юнитом

Нам потребуются следующие файлы:
unitUI.sl - содержит инфу о модели юнита.
UnitData.sl - содержит инфу о юнитах.
UnitWeapons.slk - содержит инфу о оружии юнита(тип, дамаг, каст)
UnitBalance.slk - содержит инфу скока юнит стоит его хп мп а для героев какие характеристики
и на скока повышаются.
UnitAbilities.slk - содержит инфу о какие абилки имеет юнит
XXXUnitFunc.txt - иконка вашего юнита, чем стреляет как, и как дохнет
XXXUnitStrings.txt - описание юнита
(где ХХХ название рассы)

=== 1. Импорт нового юнита
  • 1.1. Запускаем MPQmaster открываем war3patch.mpq и импортируем модель юнита Например *Torchok.mdx* и
тут 2 варианта:

Первый:

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

Второй:

если отображается нормально то открываем папку Units и создаем там путь вида:
Units\ХХХ\Torchok\Torchok.mdx где ХХХ название рассы.
(оба описания нужны только для удобства манипулировании моделями, в первом для отображения модели в
эдиторе, второй чтоб не запутаться в файлах)
И запоминаем путь
  • 1.2. Импортируем иконки:
нормальный вид по пути - ReplaceableTextures\CommandButtons\BTNxxx
затененну ПО пути - ReplaceableTextures\CommandButtonsDisabled\DISBTNxxx,
Где xxx название иконки.
  • 1.3. Открываем предварительно сохраненный на жестком, фаил unitUI.sl
подробно о структуре:
unitUIID - порядковый номер юнита(не должен повторяться. первый символ кода соответствует расе, а
именно h - люди, o - орки, e – ночные эльфы, u - нежить, n – «нейтралы», z – остальные. Также важным
моментом является то, что порядковый номер всех героев начинаются с большой буквы.)
sortUI - столбец категорий. Там вы увидите такие значения, как a1, a2, a3, b1, b2 и т.д.
Всех, как видно, три категории. К категории l1 (l – это первая буква) относятся герои, к категории l2
– обычные юниты, а к категории l3 – здания. Для юнитов из других игр предусмотрена категория z9.
file- путь к модели юнита
unitSound- звук юнита
name- название юнита
unitClass- класс юнита
special- является специальным юнитом (будет отображаться в эдиторе как созданный вами)
campaign- является юнитом компании(будет отображаться в эдиторе как юнит компании)
inEditor- показывается ли в WE
dropItems- падают ли предметы
walk- ходи
run- бегает
modelScale- размер модели
red- цвет юнита красный
green- цвет юнита зеленый
blue- цвет юнита синий
  • 1.4. Делаем нашего юнита поставим ему порядковый номер (порядковый номер всех героев начинаются с большой буквы, порядковый номер обычных юнитов с маленькой) para и назовем его Torchok запоминаем его индентификатор Идем до столбика file и вставляем ранее запомненный путь к модели нашего юнита, сохраняем.
  • 1.5. Откройте сохранённый файл UnitBalance.slk.
о структуре таблицы:
В первом столбце порядковый номер юнита. Аналогично с unitUI.sl.
Второй столбец – столбец категорий. Там вы увидите такие значения, как a1, a2, a3, b1, b2 и т.д.
Всех, как видно, три категории. К категории l1 (l – это первая буква) относятся герои, к категории l2
– обычные юниты, а к категории l3 – здания. Для юнитов из других игр предусмотрена категория z9.
Третий столбец
uher – юнит является героем
xbui – юнит является зданием
sum – юнит является вызванным
art – юнит относится к классу артиллерии
tow – юнит является башней
fly1 – юнит является летающим, и не имеет наездника (исключение – вертолёт)
fly2 – юнит является летающим и управляется наездником
peo – юнит является работником
zz – другое
zzz – юнит взят из другой игры
cas – юнит относится к классу магов
me1 и me2 – к первому классу относятся обычные слабые воины, а ко второму – сильные.
Четвёртый столбец – это уровень юнита. Если он равен 5 и больше, то юнит считается сильным существом
и его нельзя захватить заклинанием «Обладание» у привидения. Как ни странно, башни тоже имеют
уровень, равный одному.
  • 1.6. Откройте сохранённые файлы UnitWeapons.slk и UnitData.sl, и отредактируйте их по анологии.
  • 1.7. откройте UnitAbilities.slk
о структуре:
unitAbilID- порядковый номер юнита
sortAbil - категория юнита
comment(s) - название юнита
auto- автокаст(если стоит то юнит будет кастовать спел постоянно как хиллер у людей или как шаман у орды)
abilList - способность юнита (постоянная абилка)
heroAbilList- способность героя (прокачивающяяся абилка, макс 5)
(название способности смотрим в AbilityData.slk и AbilityBuffData.slk )
ставим сохраняем
1,8.открываем XXXUnitFunc.txt
вставляем конструкцию:
[para]
Builds=unpl,uzig,usep,ugrv,uaod,utod,uslh,ubon,usap,ugol,utom- тут пишется что юнит может построить (необязательно)
Art=ReplaceableTextures\CommandButtons\BTNххх.blp- ставим иконку юнита(обязательно)
Specialart=- спецэфект смерти необязательно)
Requires=- требования(необязательно)
Missileart=- снаряд(необязательно)
Missilearc=- дуга снаряда(необязательно)
Missilespeed= - скорость снаряда(необязательно)
MissileHoming=- самонаводящийся\не самонаводящийся (необязательно)
сохраняем.
  • 1.9. открываем XXXAbilityStrings.txt
вставляем конструкцию:
[para] - id-код юнита
Name=Торчок - название юнита
Propernames=Фебис-Ра,Тигрис-Атон,Эхнамо - имена героя(если юнит, герой то добавляем строчку если нет то нет)
Tip=Торчок - название юнита в краткой подсказке
Hotkey=C - горячая клавиша
Ubertip="Мега юнит дохнущий от ломки" - описание юнита
Revivetip=Воскресить Торчок
Awakentip=Воскресить Торчок
сохраняем.
  • 1.10. Сохраняем, импортируем все измененные файлы в war3patch.mpq. И сидим наслаждаемся своим Персом.

2. Замена модели юнита

2.1 выполняем пункт 1.1
2.2 выполняем пункт 1.3
2.3 открываем WE ставим галку на *показывать названия переменных* и смотрим id-юнита запоминаем, ищем
его в unitUI.sl, ставим путь импортированной модели. Сохраняем.
готово. Аналогично с абилками, иконками, описанием, характеристиками и т.д.

IV Операции со зданиями

Здания импортируются либо заменяются также как и юниты.

V Операции со способностями

Нам для этого потребуются следующие файлы:
AbilitisData.sl - содержит инфу о способностях.
AbilityBuffData- содержит инфу о данных.
XXXAbilityFunc.txt- содержит инфу о иконке способности чем стреляет, где находится эффект, куда попадает эфект.
XXXAbilityStrings.txt- описание способности
(где ХХХ название рассы)

1. Импорт новой способности

1.1 Запускаем MPQmaster открываем war3patch.mpq находим папку Abilities создаем
в ней папку и назовем ее (как угодно) допустим MySpell импортируем будущую
модель спелла, допустим HevenAndHell в итоге путь выглядит
так: Abilities\MySpell\HevenAndHell.mdx запоминаем.
  • 1.2. Импортируем иконки:
нормальный вид по пути - ReplaceableTextures\CommandButtons\BTNxxx
затенённую ПО пути - ReplaceableTextures\CommandButtonsDisabled\DISBTNxxx,
Где xxx название иконки.
  • 1.3. Открываем предварительно сохраненный на жестком, файл AbilitisData.sl
подробно о структуре:
alias- ID нашего спела
code- сюда вставляется 4х значный ID из AbilityBuffData
comments- название спела
useInEditor- используется в редакторе
hero- спел принадлежит герою
item- Спел принадлежит предмету
sort- тут вставляется либо item, либо unit, либо hero. В зависимости от выбранной принадлежности спелла
race- расса спела
levels- уровни прокачки спелла
reqLevel- требуемый уровень для исп спела
levelSkip- через сколько уровней герой может повысить лвл спела
дальше описываются характеристики спела, описывать их не буду посмотрите в редакторе, но
за место (х) надо вставлять число. Т.е. для первого лвла это будет 1, для второго те же характеристики
но с цифрой 2 и так далее.
targsх
Castх
Durх
HeroDurх
Coolх
Costх
Areaх
Rngх
DataAх
DataBх
DataCх
DataDх
DataEх
DataFх
DataGх
DataHх
DataIх
UnitIDх
BuffIDх
EfctIDх
Делаем спел, сохраняем.
  • 1.4. открываем XXXAbilityFunc.txt
вставляем такую конструкцию:
[ЧЧЧЧ] - ID спела
Art=- иконка спела
Unart= - иконка неиспользуемого\заблокированного спела
Researchart= - иконка спела исследования
Buttonpos=2,2- положение иконки используется
Unbuttonpos=2,2- положение иконки не используется
Researchbuttonpos=2,0- положение иконки исследуется
CasterArt=- модель спела на кастующим юните
Targetattach= - положение модели на юните
TargetArt=- модель спела на атакуемом юните
EffectArt=- Модель спела на области
Animnames= - Анимация юнита при применении спела
Missileart=- снаряд спела
Missilespeed= - скорость снаряда
MissileHoming=- самонаводящийся да\нет
Missilearc=- дуга снаряда
Заполняем, сохраняем.
  • 1.4. открываем XXXAbilityStrings.txt
вставляем такую конструкцию:
[ANic]
Name=- название спела
Tip=- подсказка названия
Researchtip= - подсказка исследования
Ubertip= - подробное описание спела
Hotkey=- горячая клавиша использования спела
Researchhotkey=- горячая клавиша изучения спела
Заполняем, сохраняем. Импортируем И наслаждаемся спелом

2. ​Замена\изменение спела

сначала определимся что мы хотим заменить, ЕСЛИ:
хар-ки то открываем AbilitisData.sl
графику то открываем XXXAbilityFunc.txt
Описание то открываем XXXAbilityStrings.txt

VI Операции с Объектами.

нам потребуется файл Doodads.slk, находится в папке Doodads. Содержит всю инфу о Объектах.
и WorldEditGameStrings.txt, находящийся в UI, содержит название объекта в редакторе.

1. Новый Объект

1.1 Запускаем MPQmaster открываем war3patch.mpq находим папку Doodads создаем
в ней папку и назовем ее (как угодно) допустим MyDoodads импортируем будущую
модель Объекта, допустим shit в итоге путь выглядит
так: Doodads\MyDoodads\shit.mdx запоминаем.
  • 1.2. Открываем предварительно сохраненный на жестком, файл Doodads.slk
подробно о структуре:
doodID- ID объекта
category- категория
tilesets- тип ландшафта
tilesetSpecific- особые данные по типу ландшафта
file- путь к модели объекта
comment- свое название объекта
Name- название предмет должен выглядеть так: WESTRING_DOOD_чччч где чччч ID обьекта заглавными буквами
pathTex- пути.
остальное тупым копипастом.
  • 1.3. открываем WorldEditGameStrings.txt идем в конец строчек
WESTRING_DOOD_хххх и вставляем нашу WESTRING_DOOD_чччч , называем ,
сохраняем. Импортируем И наслаждаемся объектом.
Большинство переменных небыли учтены в написании статьи из-за того что: их можно посмотреть в
редакторе, их необязательности, и копипаста.

Теперь САМОЕ интересное. Импортировали все файлы нормально, А В ИГРЕ НИЧЕГО НЕ ИЗМЕНИЛОСЬ ИЛИ НЕТУ НОВЫХ МОДЕЛЕЙ. Во всем виноваты режимы игры, чтобы все работало корректно нам потребуются заменить файлы по путям:
'Custom_V0\Units\'
'Custom_V1\Units\'
'Melee_V0\Units\'
ВАЖНО: Заменять только файлы которые есть в выше названых папках, только если файл с таким названием там
есть(например фаил ItemData.slk есть в папке Custom_V0\Units, Custom_V1\Units и Melee_V0\Units, удаляем их и импортируем измененный во все папки. И ТАК СО ВСЕМИ ФАЙЛАМИ), *НЕДОБАВЛЯТЬ ЛИШНИЕ*.

Все Вопросы по статье Sergant1000
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
11 лет назад
0
А есть возможность создать новые наборы тайлсетов, не заменяя существующие своими текстурами?
1
17
11 лет назад
1
возможность есть, но я пока что незнаю способов.
1
7
11 лет назад
1
Да уж... Времени действительно потребуется немало...
Но зато какие перспективы :)

Так значит, создать новые наборы тайлсетов все-таки возможно? Это здорово.
1
29
11 лет назад
1
оформление ужасное
поправь, оживи зрителей)
0
17
11 лет назад
0
Msey, данная статья немного спецефична, поэтому не расчитанан на каждого кому захочется покопаться в ресурсах варика.
0
14
11 лет назад
0
Sergant1000, ну это не повод для того чтоб статья выглядела как говно.
да и никаких преимуществ редактирование через блокнот не даёт.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.