Технические вопросы

Все об аддоне - обсуждение, баги, FAQ, список изменений и многое другое.
Post Reply
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Технические вопросы

Post by Accolon »

$) Проявим инициативу (ах, бедные мои перышки). Создадим тему для технических вопросов, не относящихся к багам в моде, но таким, как: "Почему у меня не работает?"; "Где найти?"; "Что там внутри?" и т.п. В принципе, этому можно было бы даже форумную ветку посвятить и перетащить туда все, что накопилось к этому моменту. Как по Экви, так и по всей серии Героев вообще. :)
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

All: Для тех, кому интересно, как организован ресурс-файл Героев 4. Это нужно знать, чтоб напрямую запаковывать свои файлы в ресурс-файл. Буду рад поправкам и уточнениям.

Формат ресурс-файла.
0000h-0003h: маркер ресурс-файла.
0004h-0007h: 4-х байтный абсолютный адрес шапки ресурс-файла.
Шапка.
Первые 4-е байта содержат количество файлов, запакованных в ресурсе. Дальше идут записи с именами объектов.
Поля записей с именами объектов.
Первое (четыре байта): 4-х байтный адрес начала файла в ресурсе
Второе (четыре байта): 4-х байтная длина запакованного файла
Третье (четыре байта): 4-х байтная длина не запакованного файла
Четвертое (четыре байта): Неизвестно. Неиспользуемая сейчас контрольная сумма??
Пятое (два байта): Длина имени объекта.
Шестое (произвольная длина): Имя объекта.
Седьмое (два байта): Длина имени рабочего каталога объекта или для "Nope". Допустимо использовать нулевое значение.
Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

Accolon wrote: Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Это комментарий. Моя программа пишет там Nope чтобы показать что комментария нет.
Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.
Первые 00-00 из этой записи - это длина "символической ссылки". В ресурсах разрешается делать "копии" определенных объектов под другими именами.

Например, объект A - реальный объект (со своей запакованной и распакованной длиной, ссылкой на начало объекта в файле)
А объект B - символическая ссылка на объект А. У него поля размеров и размещение в файле нулевые, а вот те самые два байта перед 03 указывают на длину объекта, на который эта ссылка ссылается

То есть там девятая часть будет примерно такая 01 00 'A' 03 00 00 00, где 'A' - это код буквы А
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Кто хочет поэкспериментировать с "поверхностным" модингом (изменяем табличные данные), для запаковки может использовать Heroes IV resource explorer v.1.4a. Предупреждаю, что плагин редактора таблиц глюкавый и лучше использовать Text Editor For Heroes Of Might and Magic by A_K_ZyZop (Neon Genesis Text Editor и другое)

Инфа с http://heroes.ag.ru/files/, раздел "Утилиты"

Heroes IV resource explorer v.1.4a. Автор: Алексей Белов
http://heroes.ag.ru/files/zip/H4ResEx_1_4a.exe (618 039 bytes)
Для создания ресурс-файла программой нужны плагины:
http://heroes.ag.ru/files/zip/Plugins.zip (996 078 bytes).
Плагин для конвертирования графических файлов:
http://heroes.ag.ru/files/zip/imgconv.zip (309 391 bytes).

Lost: Спасибо. :)
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

1. Рано я радовался. H4ResEx (1.4.0.6) некорректно пакует в ресурс-файл. Я распаковал equi.h4r и стал запаковывать его, добавив музыку на заставку из heroes4.h4r, рус. фонты из new_mod.h4r и измененные таблицы: артефакты, кричи, спеллы. Объекты типа "adv_object" не попали в архив, не смотря на то, что описаны в пресете. Более того, сам ресурс-файл сформировался криво:

Code: Select all

00000000:  48 34 52 05-08 00 00 00-40 00 00 00-24 18 00 00  H4R??   @   $?
00000010:  24 18 00 00-24 18 00 00-24 18 00 00-24 18 00 00  $?  $?  $?  $?
00000020:  24 18 00 00-24 18 00 00-24 18 00 00-24 18 00 00  $?  $?  $?  $?
00000030:  24 18 00 00-24 18 00 00-24 18 00 00-24 18 00 00  $?  $?  $?  $?
00000040:  B5 14 00 00-81 3A 00 00-00 00 00 00-19 00 66 6F  ¦¶  ?:      ? fo
00000050:  6E 74 2E 50-72 6F 73 65-5F 41 6E 74-69 71 75 65  nt.Prose_Antique
00000060:  2E 31 30 2E-68 34 64 28-00 43 3A 5C-50 72 6F 67  .10.h4d( C:\Prog
Количество файлов 59. В пресете - 64 (5 "битых" по имени), но в ресурс-файл упаковалось только 52. При этом реальное расположение первого файла находится по адресу 130C:

Code: Select all

00001300:  74 61 62 6C-65 5C 00 00-03 00 00 00-1F 8B 08 08  table\  ?   ????
00001310:  00 00 00 00-00 00 66 6F-6E 74 2E 50-72 6F 73 65        font.Prose
00001320:  5F 41 6E 74-69 71 75 65-2E 31 30 00-D5 5B FF 97  _Antique.10 +[ ?
00001330:  1B D5 75 BF-9A D1 68 24-8D 64 0D D8-60 B0 89 3C  ?+u+?-h$?d?+`¦?.
00001340:  60 BE 19 A2-D3 67 CB F6-7A BD 03 08-3B EE 02 E2  `+??+g-?z+??;???
2. На этом беды не кончились. Я запустил редактор с таким кривым файлом "equi.h4r" не проверив, как его сформировал H4ResEx. Редактор вылетел так, что даже переустановка Экви не помогла ему восстановится. При этом стандартный редактор запускается и вроде как работает (с фишками аддонов). Что вылетело в редакторе и можно ли это исправить?

Code: Select all

ntdll.DbgBreakPoint:
7c901250 int 3
7с901231 ret

EAX 7ffdf000
EBP 014afff4
ESP 014affcc

14affcc: 7c9507a8
14affcc: 014afff4
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

Accolon wrote: 2. На этом беды не кончились. Я запустил редактор с таким кривым файлом "equi.h4r" не проверив, как его сформировал H4ResEx. Редактор вылетел так, что даже переустановка Экви не помогла ему восстановится. При этом стандартный редактор запускается и вроде как работает (с фишками аддонов). Что вылетело в редакторе и можно ли это исправить?
Ну во первых, запаковывать надо в new_mod.h4r
Во вторых - вылетело из-за того, что новые объекты (появившиеся в Экви) не могут прочитаться из equi.h4r
Решение:
удалить equi.h4r и equi.aop, переустановить Экви.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Lost: Ну во первых, запаковывать надо в new_mod.h4r
1. Почему не в equi.h4r? Для подстраховки или для корректной работы редактора и игры? Просто хотелось бы запихать в equi.h4r музыку для заставки и русские фонты, чтоб больше его не трогать. А в new_mod.h4r пихать исключительно измененные таблицы.
2. Кривую работу H4ResEx (1.4.0.6) это не поправит: похоже, он обрезает длинные имена объектов. Придется вставлять hiew-ом.
Lost: Во вторых - вылетело из-за того, что новые объекты (появившиеся в Экви) не могут прочитаться из equi.h4r
Дело в том, что я возвращал equi.h4r, не изменяя equi.aop. Поэтому новые объекты должны были прочитаться. Либо редактор меняет equi.aop "на лету", а не просто использует его, как данные.
Lost: Решение: удалить equi.h4r и equi.aop, переустановить Экви.
До тех пор, пока переустанавливал Экви без удаления equi.aop, редактор вылетал. Это недоработка инсталлятора (существующий equi.aop не убивается) или система не позволила инсталлятору убить испорченный equi.aop? Решение сработало так: редактор не вылетает, но объекты Экви из редактора исчезли. Ставил русскую версию.
Редактор:
campaign_editor.exe (версия 3.0.0.0; Heroes of Might and Magic® IV: Winds of War™).
default.aop (165 549 bytes)
current.aop (167 197 bytes)
equi.aop (167 197 bytes)
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

Accolon wrote: 1. Почему не в equi.h4r? Для подстраховки или для корректной работы редактора и игры? Просто хотелось бы запихать в equi.h4r музыку для заставки и русские фонты, чтоб больше его не трогать. А в new_mod.h4r пихать исключительно измененные таблицы.
Чтобы в дальшейшем при обновлении Экви не надо было перепаковывать.
Дело в том, что я возвращал equi.h4r, не изменяя equi.aop. Поэтому новые объекты должны были прочитаться. Либо редактор меняет equi.aop "на лету", а не просто использует его, как данные.
Меняет.
До тех пор, пока переустанавливал Экви без удаления equi.aop, редактор вылетал. Это недоработка инсталлятора (существующий equi.aop не убивается)
Это фича - а вдруг ты свой супернавороченный equi.aop сделал, а инсталлятор его без спросу прибьет? Сам же ругаться будешь.
Решение сработало так: редактор не вылетает, но объекты Экви из редактора исчезли. Ставил русскую версию.
Попробуй скачать equi.aop с сайта. Или стереть equi.aop, и, не запуская редактор, переустановить Экви. Потому что редактор создает equi.aop, если его еще нет (делает копию default.aop).
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Lost: Чтобы в дальшейшем при обновлении Экви не надо было перепаковывать.
Т.е., 3.6 будет требовать установленный 3.51? А я то думал, что инсталятор собирает equi.h4r при установке: ведь есть файлы, одинаковые для любых языков. Примерно так:
1. Выбор языка, пути к Героям 4 и прочих опций.
2. Определяем, есть ли equi.h4r. Если есть, то распаковываем его во временную директорию.
3. Перезаписывая, распаковываем во временную директорию (ту же, что и в п.2) все данные, не зависящие от выбранного языка; все те данные, которые используют выбранный язык.
4. Формируем equi.h4r и грохаем (если не указано обратное) временную директорию.
5. Настраиваем экзешники, dll-ки и другое (например, equi.aop).
6. Сообщаем об успешной/ неуспешной установке Экви. В любом случае: даем возможность просмотра и копирования в файл лога подробной работы инсталятора.
Lost: Это фича - а вдруг ты свой супернавороченный equi.aop сделал, а инсталлятор его без спросу прибьет? Сам же ругаться будешь.
Это же каким макаром я его сделаю супернавороченным? :? Чем кормите, то и едим. :cream:
Lost: Попробуй скачать equi.aop с сайта.
Файл-планет аккаунт требует. А ссылка в личной инфе Далая на Гуголке уже не работает. Так глупо потерять файл.:cry:
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

Т.е., 3.6 будет требовать установленный 3.51?
Нет, он просто заменит файл equi.h4r на свой.
А я то думал, что инсталятор собирает equi.h4r при установке: ведь есть файлы, одинаковые для любых языков.
Нет, до 3.6 было несколько equi.h4r, по одному для каждого языка.
В 3.6 сделан файл equi_text.h4r, содержащий все таблицы.
Это же каким макаром я его сделаю супернавороченным? :? Чем кормите, то и едим. :cream:
Объекты можно добавлять вручную. Собственно, так и делается equi.aop.


Сотри equi.aop и переустанови мод. Должен появиться новый equi.aop, соответствующий тому, что с сайта.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

Lost: Нет, он просто заменит файл equi.h4r на свой.
Ясно. Жаль, что не так, как предлагается. Но ничего - перепакуем еще раз. ::)
Lost: Сотри equi.aop и переустанови мод. Должен появиться новый equi.aop, соответствующий тому, что с сайта.
Так и делал. И для рус и для англ версий. Объекты Экви в редакторе Экви не появляются...
default.aop (165 549 bytes)
equi.aop (167 197 bytes)
Размер equi.aop на FP: 179 282 байт.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

All: Есть проги, позволяющие редактировать меню кузниц?

1. Хотел изменить спеллбук у Evil Sorceres, но облом: не смог найти, где в экзешнике прописаны ее спеллы. Эта инфа есть:
0Dh (ТРИНАДЦАТЫЙ БАЙТ)
01 - mass slow
16h (ДВАДЦАТЬ ВТОРОЙ БАЙТ)
01 - summon imp
10h (ШЕСНАДЦАТЫЙ БАЙТ)
40 - raice vampires
03h (ТРЕТИЙ БАЙТ)
04 - phantom image
08 - cloud of confusion
01h (ПЕРВЫЙ БАЙТ)
20 - banish
09h (ДЕВЯТЫЙ БАЙТ)
02 - implosion
0Bh (ОДИННАДЦАТЫЙ БАЙТ)
02 - mass cancel
2. Фомат файлов layers. Предположение.
Первые 2 байта - количество фреймов.
Вторые 2 байта - кол-во цветов в палитре.
Третьи 2 байта - не знаю.
Далее идет палитра - 3 байта на цвет.
Далее подряд идут картинки: начинаются с длины заголовка (2 байта); заголовок; 3 непонятных байта; таблица с отн. адресами строк или столбцов картинки; сами строки или столбцы с графикой. Попытка напрямую вставить картинки из layers.icons.spells.nature.52 в layers.icons.spells.death.52 обломилась (картинки для суммона демонов хотел передать смерти).
Name
Level 17 Hero
Level 17 Hero
Posts: 643
Joined: Fri Apr 29, 2005 09:50
Location: 71-й регион

Post by Name »

Хотелось бы установить редактор на работе (ибо свободное время у меня только там :D ), но целиком герои не влазят (винт ~ 500мб). Наверняка можно его отдельно из игры выдрать, кто знает подскажите плиз.
Speakus
Equilibris Programmer
Equilibris Programmer
Posts: 532
Joined: Thu May 05, 2005 00:46
Location: Большой Камень
Contact:

Post by Speakus »

никак - без heroes4.h4r (646 мб) просто не запустится. Хотя теоретически можно было бы повырезать из heroes4.h4r лишнее, однако проще будет какой-нить 4-х гиговник раздобыть.
Shash
Level 9 Hero
Level 9 Hero
Posts: 156
Joined: Wed May 03, 2006 10:54
Location: Химки

Post by Shash »

вопрос пользовательский но с техническим уклоном ;-)
потребуется ли каким нибудь образом апгрейдить апгрейдить версию TGS до WoW для игры в ЭКВИ 1 и ЭКВИ 2 (с картами для экви)
может монстряков добавить надо будет или построек каких ?
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Shash wrote:вопрос пользовательский но с техническим уклоном ;-)
потребуется ли каким нибудь образом апгрейдить апгрейдить версию TGS до WoW для игры в ЭКВИ 1 и ЭКВИ 2 (с картами для экви)
может монстряков добавить надо будет или построек каких ?
Сейчас установка ВоВ даст фигурки монстряков. Об этом мы в будущем позаботимся сами, и вообще ничего не надо будет искать самим. А об "Экви 2" пока не беспокойтесь, это идея еще более абстрактная, чем "Сталкер-2"
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Name
Level 17 Hero
Level 17 Hero
Posts: 643
Joined: Fri Apr 29, 2005 09:50
Location: 71-й регион

Post by Name »

2 Speakus
Раздобыл гиг, больше нету :( Если не трудно, напиши, что необходимо для автономной работы редактора
Speakus
Equilibris Programmer
Equilibris Programmer
Posts: 532
Joined: Thu May 05, 2005 00:46
Location: Большой Камень
Contact:

Post by Speakus »

exe редактора (c_e_mod.exe? или campaign_editor.exe)
data\current.aop
data\*.h4r кроме movies.h4r и music.h4r
User avatar
Univanger
Level 20 Hero
Level 20 Hero
Posts: 1109
Joined: Tue Jun 12, 2007 19:59
Location: Гастарбайтерск
Contact:

Post by Univanger »

Повторю свой вопрос: все новые или изменённые файлы, которые я решил добавить/изменить, кидать в одну кучу и назвать её new_mod.h4r, так?
беспокоиться о том, что он находится в недоступном месте.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Что именно ты повторил? Перед тобой пост был больше года назад.

О чем вообще речь?

Некоторые измененные файлы надо назвать "Годовой отчет - версия Петрова 2а.xls" и отправить по почте своему начальнику.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Post Reply