Page 1 of 26

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

Posted: Fri Jun 16, 2006 20:12
by Accolon
$) Проявим инициативу (ах, бедные мои перышки). Создадим тему для технических вопросов, не относящихся к багам в моде, но таким, как: "Почему у меня не работает?"; "Где найти?"; "Что там внутри?" и т.п. В принципе, этому можно было бы даже форумную ветку посвятить и перетащить туда все, что накопилось к этому моменту. Как по Экви, так и по всей серии Героев вообще. :)

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

Формат ресурс-файла.
0000h-0003h: маркер ресурс-файла.
0004h-0007h: 4-х байтный абсолютный адрес шапки ресурс-файла.
Шапка.
Первые 4-е байта содержат количество файлов, запакованных в ресурсе. Дальше идут записи с именами объектов.
Поля записей с именами объектов.
Первое (четыре байта): 4-х байтный адрес начала файла в ресурсе
Второе (четыре байта): 4-х байтная длина запакованного файла
Третье (четыре байта): 4-х байтная длина не запакованного файла
Четвертое (четыре байта): Неизвестно. Неиспользуемая сейчас контрольная сумма??
Пятое (два байта): Длина имени объекта.
Шестое (произвольная длина): Имя объекта.
Седьмое (два байта): Длина имени рабочего каталога объекта или для "Nope". Допустимо использовать нулевое значение.
Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.

Posted: Fri Jun 16, 2006 20:53
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' - это код буквы А

Posted: Fri Jun 16, 2006 21:09
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: Спасибо. :)

Posted: Sat Jun 17, 2006 07:31
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

Posted: Sat Jun 17, 2006 19:29
by Lost
Accolon wrote: 2. На этом беды не кончились. Я запустил редактор с таким кривым файлом "equi.h4r" не проверив, как его сформировал H4ResEx. Редактор вылетел так, что даже переустановка Экви не помогла ему восстановится. При этом стандартный редактор запускается и вроде как работает (с фишками аддонов). Что вылетело в редакторе и можно ли это исправить?
Ну во первых, запаковывать надо в new_mod.h4r
Во вторых - вылетело из-за того, что новые объекты (появившиеся в Экви) не могут прочитаться из equi.h4r
Решение:
удалить equi.h4r и equi.aop, переустановить Экви.

Posted: Sun Jun 18, 2006 12:47
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)

Posted: Sun Jun 18, 2006 14:23
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).

Posted: Sun Jun 18, 2006 18:10
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:

Posted: Sun Jun 18, 2006 18:41
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, соответствующий тому, что с сайта.

Posted: Sun Jun 18, 2006 19:41
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 байт.

Posted: Sun Jul 09, 2006 22:44
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 обломилась (картинки для суммона демонов хотел передать смерти).

Posted: Thu Oct 05, 2006 07:15
by Name
Хотелось бы установить редактор на работе (ибо свободное время у меня только там :D ), но целиком герои не влазят (винт ~ 500мб). Наверняка можно его отдельно из игры выдрать, кто знает подскажите плиз.

Posted: Thu Oct 05, 2006 08:17
by Speakus
никак - без heroes4.h4r (646 мб) просто не запустится. Хотя теоретически можно было бы повырезать из heroes4.h4r лишнее, однако проще будет какой-нить 4-х гиговник раздобыть.

Posted: Thu Oct 05, 2006 09:55
by Shash
вопрос пользовательский но с техническим уклоном ;-)
потребуется ли каким нибудь образом апгрейдить апгрейдить версию TGS до WoW для игры в ЭКВИ 1 и ЭКВИ 2 (с картами для экви)
может монстряков добавить надо будет или построек каких ?

Posted: Thu Oct 05, 2006 11:57
by Dalai
Shash wrote:вопрос пользовательский но с техническим уклоном ;-)
потребуется ли каким нибудь образом апгрейдить апгрейдить версию TGS до WoW для игры в ЭКВИ 1 и ЭКВИ 2 (с картами для экви)
может монстряков добавить надо будет или построек каких ?
Сейчас установка ВоВ даст фигурки монстряков. Об этом мы в будущем позаботимся сами, и вообще ничего не надо будет искать самим. А об "Экви 2" пока не беспокойтесь, это идея еще более абстрактная, чем "Сталкер-2"

Posted: Thu Oct 05, 2006 12:48
by Name
2 Speakus
Раздобыл гиг, больше нету :( Если не трудно, напиши, что необходимо для автономной работы редактора

Posted: Fri Oct 06, 2006 02:12
by Speakus
exe редактора (c_e_mod.exe? или campaign_editor.exe)
data\current.aop
data\*.h4r кроме movies.h4r и music.h4r

Posted: Wed Oct 31, 2007 16:13
by Univanger
Повторю свой вопрос: все новые или изменённые файлы, которые я решил добавить/изменить, кидать в одну кучу и назвать её new_mod.h4r, так?

Posted: Wed Oct 31, 2007 18:10
by Dalai
Что именно ты повторил? Перед тобой пост был больше года назад.

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

Некоторые измененные файлы надо назвать "Годовой отчет - версия Петрова 2а.xls" и отправить по почте своему начальнику.