Технические вопросы
Технические вопросы
Проявим инициативу (ах, бедные мои перышки). Создадим тему для технических вопросов, не относящихся к багам в моде, но таким, как: "Почему у меня не работает?"; "Где найти?"; "Что там внутри?" и т.п. В принципе, этому можно было бы даже форумную ветку посвятить и перетащить туда все, что накопилось к этому моменту. Как по Экви, так и по всей серии Героев вообще.
All: Для тех, кому интересно, как организован ресурс-файл Героев 4. Это нужно знать, чтоб напрямую запаковывать свои файлы в ресурс-файл. Буду рад поправкам и уточнениям.
Формат ресурс-файла.
0000h-0003h: маркер ресурс-файла.
0004h-0007h: 4-х байтный абсолютный адрес шапки ресурс-файла.
Шапка.
Первые 4-е байта содержат количество файлов, запакованных в ресурсе. Дальше идут записи с именами объектов.
Поля записей с именами объектов.
Первое (четыре байта): 4-х байтный адрес начала файла в ресурсе
Второе (четыре байта): 4-х байтная длина запакованного файла
Третье (четыре байта): 4-х байтная длина не запакованного файла
Четвертое (четыре байта): Неизвестно. Неиспользуемая сейчас контрольная сумма??
Пятое (два байта): Длина имени объекта.
Шестое (произвольная длина): Имя объекта.
Седьмое (два байта): Длина имени рабочего каталога объекта или для "Nope". Допустимо использовать нулевое значение.
Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.
Формат ресурс-файла.
0000h-0003h: маркер ресурс-файла.
0004h-0007h: 4-х байтный абсолютный адрес шапки ресурс-файла.
Шапка.
Первые 4-е байта содержат количество файлов, запакованных в ресурсе. Дальше идут записи с именами объектов.
Поля записей с именами объектов.
Первое (четыре байта): 4-х байтный адрес начала файла в ресурсе
Второе (четыре байта): 4-х байтная длина запакованного файла
Третье (четыре байта): 4-х байтная длина не запакованного файла
Четвертое (четыре байта): Неизвестно. Неиспользуемая сейчас контрольная сумма??
Пятое (два байта): Длина имени объекта.
Шестое (произвольная длина): Имя объекта.
Седьмое (два байта): Длина имени рабочего каталога объекта или для "Nope". Допустимо использовать нулевое значение.
Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.
Это комментарий. Моя программа пишет там Nope чтобы показать что комментария нет.Accolon wrote: Восьмое (произвольная длина и может отсутствовать): рабочий каталог объекта или "Nope" (для Экви?).
Первые 00-00 из этой записи - это длина "символической ссылки". В ресурсах разрешается делать "копии" определенных объектов под другими именами.Девятое: последовательность байт "00 00 03 00 00 00" - либо резервные поля, либо признак конца записи с именем объекта.
Например, объект A - реальный объект (со своей запакованной и распакованной длиной, ссылкой на начало объекта в файле)
А объект B - символическая ссылка на объект А. У него поля размеров и размещение в файле нулевые, а вот те самые два байта перед 03 указывают на длину объекта, на который эта ссылка ссылается
То есть там девятая часть будет примерно такая 01 00 'A' 03 00 00 00, где 'A' - это код буквы А
Кто хочет поэкспериментировать с "поверхностным" модингом (изменяем табличные данные), для запаковки может использовать 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: Спасибо.
Инфа с 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: Спасибо.
1. Рано я радовался. H4ResEx (1.4.0.6) некорректно пакует в ресурс-файл. Я распаковал equi.h4r и стал запаковывать его, добавив музыку на заставку из heroes4.h4r, рус. фонты из new_mod.h4r и измененные таблицы: артефакты, кричи, спеллы. Объекты типа "adv_object" не попали в архив, не смотря на то, что описаны в пресете. Более того, сам ресурс-файл сформировался криво:
Количество файлов 59. В пресете - 64 (5 "битых" по имени), но в ресурс-файл упаковалось только 52. При этом реальное расположение первого файла находится по адресу 130C:
2. На этом беды не кончились. Я запустил редактор с таким кривым файлом "equi.h4r" не проверив, как его сформировал H4ResEx. Редактор вылетел так, что даже переустановка Экви не помогла ему восстановится. При этом стандартный редактор запускается и вроде как работает (с фишками аддонов). Что вылетело в редакторе и можно ли это исправить?
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
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+??;???
Code: Select all
ntdll.DbgBreakPoint:
7c901250 int 3
7с901231 ret
EAX 7ffdf000
EBP 014afff4
ESP 014affcc
14affcc: 7c9507a8
14affcc: 014afff4
Ну во первых, запаковывать надо в new_mod.h4rAccolon wrote: 2. На этом беды не кончились. Я запустил редактор с таким кривым файлом "equi.h4r" не проверив, как его сформировал H4ResEx. Редактор вылетел так, что даже переустановка Экви не помогла ему восстановится. При этом стандартный редактор запускается и вроде как работает (с фишками аддонов). Что вылетело в редакторе и можно ли это исправить?
Во вторых - вылетело из-за того, что новые объекты (появившиеся в Экви) не могут прочитаться из equi.h4r
Решение:
удалить equi.h4r и equi.aop, переустановить Экви.
1. Почему не в equi.h4r? Для подстраховки или для корректной работы редактора и игры? Просто хотелось бы запихать в equi.h4r музыку для заставки и русские фонты, чтоб больше его не трогать. А в new_mod.h4r пихать исключительно измененные таблицы.Lost: Ну во первых, запаковывать надо в new_mod.h4r
2. Кривую работу H4ResEx (1.4.0.6) это не поправит: похоже, он обрезает длинные имена объектов. Придется вставлять hiew-ом.
Дело в том, что я возвращал equi.h4r, не изменяя equi.aop. Поэтому новые объекты должны были прочитаться. Либо редактор меняет equi.aop "на лету", а не просто использует его, как данные.Lost: Во вторых - вылетело из-за того, что новые объекты (появившиеся в Экви) не могут прочитаться из equi.h4r
До тех пор, пока переустанавливал Экви без удаления equi.aop, редактор вылетал. Это недоработка инсталлятора (существующий equi.aop не убивается) или система не позволила инсталлятору убить испорченный equi.aop? Решение сработало так: редактор не вылетает, но объекты Экви из редактора исчезли. Ставил русскую версию.Lost: Решение: удалить equi.h4r и 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)
Чтобы в дальшейшем при обновлении Экви не надо было перепаковывать.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).Решение сработало так: редактор не вылетает, но объекты Экви из редактора исчезли. Ставил русскую версию.
Т.е., 3.6 будет требовать установленный 3.51? А я то думал, что инсталятор собирает equi.h4r при установке: ведь есть файлы, одинаковые для любых языков. Примерно так:Lost: Чтобы в дальшейшем при обновлении Экви не надо было перепаковывать.
1. Выбор языка, пути к Героям 4 и прочих опций.
2. Определяем, есть ли equi.h4r. Если есть, то распаковываем его во временную директорию.
3. Перезаписывая, распаковываем во временную директорию (ту же, что и в п.2) все данные, не зависящие от выбранного языка; все те данные, которые используют выбранный язык.
4. Формируем equi.h4r и грохаем (если не указано обратное) временную директорию.
5. Настраиваем экзешники, dll-ки и другое (например, equi.aop).
6. Сообщаем об успешной/ неуспешной установке Экви. В любом случае: даем возможность просмотра и копирования в файл лога подробной работы инсталятора.
Это же каким макаром я его сделаю супернавороченным? Чем кормите, то и едим.Lost: Это фича - а вдруг ты свой супернавороченный equi.aop сделал, а инсталлятор его без спросу прибьет? Сам же ругаться будешь.
Файл-планет аккаунт требует. А ссылка в личной инфе Далая на Гуголке уже не работает. Так глупо потерять файл.Lost: Попробуй скачать equi.aop с сайта.
Нет, он просто заменит файл equi.h4r на свой.Т.е., 3.6 будет требовать установленный 3.51?
Нет, до 3.6 было несколько equi.h4r, по одному для каждого языка.А я то думал, что инсталятор собирает equi.h4r при установке: ведь есть файлы, одинаковые для любых языков.
В 3.6 сделан файл equi_text.h4r, содержащий все таблицы.
Объекты можно добавлять вручную. Собственно, так и делается equi.aop.Это же каким макаром я его сделаю супернавороченным? Чем кормите, то и едим.
Сотри equi.aop и переустанови мод. Должен появиться новый equi.aop, соответствующий тому, что с сайта.
Ясно. Жаль, что не так, как предлагается. Но ничего - перепакуем еще раз.Lost: Нет, он просто заменит файл equi.h4r на свой.
Так и делал. И для рус и для англ версий. Объекты Экви в редакторе Экви не появляются...Lost: Сотри equi.aop и переустанови мод. Должен появиться новый equi.aop, соответствующий тому, что с сайта.
default.aop (165 549 bytes)
equi.aop (167 197 bytes)
Размер equi.aop на FP: 179 282 байт.
All: Есть проги, позволяющие редактировать меню кузниц?
1. Хотел изменить спеллбук у Evil Sorceres, но облом: не смог найти, где в экзешнике прописаны ее спеллы. Эта инфа есть:
Первые 2 байта - количество фреймов.
Вторые 2 байта - кол-во цветов в палитре.
Третьи 2 байта - не знаю.
Далее идет палитра - 3 байта на цвет.
Далее подряд идут картинки: начинаются с длины заголовка (2 байта); заголовок; 3 непонятных байта; таблица с отн. адресами строк или столбцов картинки; сами строки или столбцы с графикой. Попытка напрямую вставить картинки из layers.icons.spells.nature.52 в layers.icons.spells.death.52 обломилась (картинки для суммона демонов хотел передать смерти).
1. Хотел изменить спеллбук у Evil Sorceres, но облом: не смог найти, где в экзешнике прописаны ее спеллы. Эта инфа есть:
2. Фомат файлов layers. Предположение.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 байта - количество фреймов.
Вторые 2 байта - кол-во цветов в палитре.
Третьи 2 байта - не знаю.
Далее идет палитра - 3 байта на цвет.
Далее подряд идут картинки: начинаются с длины заголовка (2 байта); заголовок; 3 непонятных байта; таблица с отн. адресами строк или столбцов картинки; сами строки или столбцы с графикой. Попытка напрямую вставить картинки из layers.icons.spells.nature.52 в layers.icons.spells.death.52 обломилась (картинки для суммона демонов хотел передать смерти).
Сейчас установка ВоВ даст фигурки монстряков. Об этом мы в будущем позаботимся сами, и вообще ничего не надо будет искать самим. А об "Экви 2" пока не беспокойтесь, это идея еще более абстрактная, чем "Сталкер-2"Shash wrote:вопрос пользовательский но с техническим уклоном
потребуется ли каким нибудь образом апгрейдить апгрейдить версию TGS до WoW для игры в ЭКВИ 1 и ЭКВИ 2 (с картами для экви)
может монстряков добавить надо будет или построек каких ?
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Что именно ты повторил? Перед тобой пост был больше года назад.
О чем вообще речь?
Некоторые измененные файлы надо назвать "Годовой отчет - версия Петрова 2а.xls" и отправить по почте своему начальнику.
О чем вообще речь?
Некоторые измененные файлы надо назвать "Годовой отчет - версия Петрова 2а.xls" и отправить по почте своему начальнику.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch