Current time: 25.11.2024, 03:06 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследования игрового формата карт
» технические вопросы
Author Message
AKuHAK Offline

Posts: 116
Post: #31

В общем проделал ещё немного исследований и выяснил, что кампании полностью совместимы, если проделать некоторые изменения:
  • сперва разрезать каждую кампанию на 9 частей (ну кроме древа и луны), можно с помощью h3extractor'a, можно ручками найдя гзип сигнатуры;
  • распаковать все 9 частей;
  • во всех кроме первой заменить первый байт на
  • снова запаковать все карты с помощью gzip -n;
  • открыть первую карту (в редакторе карт) и поменять портрет Тарнуму, сохранить карту
    Вот этого кстати делать не надо - надо менять номера портретов вручную, редактор много отсебятины вносит.

    теперь самое сложное - редактирование собственно свойств кампании, для этого откройте её в гексе
  • первый байт меняем на 06 (07 кампании Хроник, 06 кампании клинка Армагеддона, дальше мне стало лень искать сигнатуры)
  • пятый байт меняем на 0D (это метка кампании Армаггеддон, каждая из стандартных шаблогов кампаний имеет свой номер). Насколько мне известно, только в ней 8 карт. У всех Хроник он равен 0, так как там в принципе нету этих миникарт с захваченными областями.
  • ищем по очереди названия карт (всякие там glory a.h3m), переименовываем наши карты соответственно в порядке распаковки (в принципе необязательный пункт, но желательный для полной идентичности).
  • !!!и наконец самый главный пункт - надо поменять размеры карт. Берём наше название (например glory a.h3m) опять находим его в коде и редактируем следующие 4 байта. Так как после редактирования даже одного байта и упаковки карты обычно меняют размер, то придётся его прописать заново. Например, если новый размер будет 11198 байт, то в гекс вписываем BE 2B 00 00. И так для каждой из карт.
  • сохраняем свойства кампании, упаковываем их с помощью gzip -n.
  • склеиваем все кусочки при помощи
    Code:
    copy /b ... + ... + ... out.h3m
  • Готово!
В принципе игра понимает и распакованные файлы, только тогда надо не забывать про прописывание размеров после названия карты (естественно, что для распакованных карт размеры возрастут). То есть по идее можно вставить и распакованные файлы карт, да и свойства кампании не паковать. Только надо учесть, что кампания хоть и отлично откроется в редакторе карт, но после сохранения свойства кампании сожмутся (карты останутся распакованными).
С Тарнумом вообще дело тёмное. Если открыть первую карту в редакторе и тут же сохранить её, то обнаружится, что 12 байтов связанных с Тарнумом и Рабаком изменились по непонятным причинам. Карта по прежнему не загрузится, поскольку игре нужны не эти непонятные 10 байтов, а "легальный" портрет Тарнума. Портрет вообще хранится в другом месте и занимает ровно два байта, если отредактировать его вручную и не трогать эти непонятные 10 байтов, то карта превосходно загружается. К сожалению надо тестировать не произойдёт ли чего плохого во время геймплея, а это долго и нудно. Так что по идее можно сократить количество изменённых байтов ещё на 12 штук. Итого набирается 12 байтов обязательных и ещё где-то 16 байт на размеры карт.
Вот кому интересно, может глянуть http://zalil.ru/31574865, я пока не нашёл подвоха.
На выходных выложу хроники. Кстати интересно нельзя ли расширить список портретов вместо того чтобы тупо заменять уже существующие?
upd - в хрониках же наоборот больше портретов или я что-то путаю?
(This post was last modified: 11.09.2011 02:10 by AKuHAK.)
19.08.2011 01:22
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #32

Портретов больше, героев меньше?
Тарнум заменяет вроде первого из героев кампании СОД.
Хотя я не уверен.


-= подпись Гиппокамуса =-
19.08.2011 02:01
Visit this user's website Find all posts by this user Quote this message in a reply
baratorch Offline

Posts: 197
Post: #33

AKuHAK, спасибо большое, очень полезная информация. Давно хочу сделать пак для ХД, полноценно добавляющий хроники в СоД.
19.08.2011 08:38
Find all posts by this user Quote this message in a reply
AKuHAK Offline

Posts: 116
Post: #34

http://zalil.ru/31578703
Вот хроники героев практически идентичные, с самыми минимальными изменениями. Номера портретов уменьшены на 0Е. Тарнум в каждой кампании заменяет нового героя (это в хрониках так, это не моё творчество) )) По поводу редактора карт он меняет все карты хроник по одинаковому, так что я менял только портреты. Заголовок кампании распакованный, а карты упакованные.
(This post was last modified: 19.08.2011 21:47 by AKuHAK.)
19.08.2011 21:46
Find all posts by this user Quote this message in a reply
AKuHAK Offline

Posts: 116
Post: #35

Вопрос - никто не знает, где хранятся координаты кусочков карты показываемой перед кампанией? Вот например здесь Image: 04611e1cabc6t.jpg
К примеру я узнал, что координаты левого верхнего угла "верхнего" острова 170 пикселей от верхнего края и 55 пикселей от левого, в каком виде это хранится в игре? Мне бы хотя бы гекс отображение.
10.09.2011 22:20
Find all posts by this user Quote this message in a reply
solitaire345 Offline

Posts: 24
Post: #36

(10.09.2011 22:20)AKuHAK Wrote:  Вопрос - никто не знает, где хранятся координаты кусочков карты показываемой перед кампанией? Вот например здесь Image: 04611e1cabc6t.jpg
К примеру я узнал, что координаты левого верхнего угла "верхнего" острова 170 пикселей от верхнего края и 55 пикселей от левого, в каком виде это хранится в игре? Мне бы хотя бы гекс отображение.

The pointers for campaign areas are at 0063BC50. Each entry points to tables for each campaign map. Each table holds n structures, where n is number of scenarios in particular campaign map. The structures are like this:
Code:
00000000 X               dd ?
00000004 Y               dd ?
00000008 Enabled_Red     dd ?
0000000C Enabled_Blue    dd ?
00000010 Enabled_Tan     dd ?
00000014 Enabled_Green   dd ?
00000018 Enabled_Orange  dd ?
0000001C Enabled_Violet  dd ?
00000020 Enabled_Teal    dd ?
00000024 Enabled_Pink    dd ?
00000028 Selected_Red    dd ?
0000002C Selected_Blue   dd ?
00000030 Selected_Tan    dd ?
00000034 Selected_Green  dd ?
00000038 Selected_Orange dd ?
0000003C Selected_Violet dd ?
00000040 Selected_Teal   dd ?
00000044 Selected_Pink   dd ?
00000048 Completed_Red   dd ?
0000004C Completed_Blue  dd ?
00000050 Completed_Tan   dd ?
00000054 Completed_Green dd ?
00000058 Completed_Orange dd ?
0000005C Completed_Violet dd ?
00000060 Completed_Teal  dd ?
00000064 Completed_Pink  dd ?

X and Y are coordinates, other entries are addresses of image file names.
14.09.2011 22:14
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #37

Кто-нибудь знает, что делает воговский хук на адрес 0x04C4141 (вернее, с этого места начинается правка, а сам хук чуть дальше)? Неужели только исключает из списка карт карты с идентефикатором, большим 0x33?
(This post was last modified: 25.09.2011 22:57 by Sav.)
25.09.2011 22:57
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #38

// проверка на защищенную карту
{0x4C4143,0,DP(LoadProtected)}

Содержимое функции - чистый асм. Насколько я помню, кто-то делал прогу для типо-защиты карт от просмотра в редакторе и некорретный тип карты должен правиться на лету для загрузки.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.09.2011 00:36
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #39

Ясно, спасибо.
26.09.2011 02:18
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #40

Ага, там случайное количество мусора вначале вставлялось. Так без хука эти карты не открываются? Тогда всё ясно, а то я в шоке был, когда эти карты увидел, думаю - это ж надо что герои такой эвристикой обладают! И наверное это не просто мусор, а ассемблерный код?


-= подпись Гиппокамуса =-
02.10.2011 15:14
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #41

Я бы предположил мусор с где-то указанной длиной.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
02.10.2011 15:23
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #42

С тех пор, как ХотА сменил идентификаторы своих карт (30 и 32 теперь десятичные, 30 идентично содовскому) - Эра крэшится при входе в меню выбора карт. Раньше они отлично дружили в одной папке, и ничто им не мешает и сейчас мирно сосуществовать, кроме этой реакции. Нельзя ли это исправить? ХотА, например, игнорирует карты ВОГ и МОП, как и любые другие с неизвестным идентификатором.
Боюсь, что та же проблема будет с сохранениями.


-= подпись Гиппокамуса =-
28.11.2013 21:10
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #43

Вылетает никто иной, как СоД. В крайнем случае ВоГ. Прости, Хиппо, но пусть энтузиасты ищут место, где идёт сравнение версий и нехорошие действия. Тут и своих проблем хватает. Если программисты Хоты научили игру не вылетать, пусть они и делятся соответствующими заплатками, чтобы хотовские карты адекватно воспринималиь другими версиями игры.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.11.2013 21:45
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #44

Ясно, спрошу у Сава.


-= подпись Гиппокамуса =-
28.11.2013 21:56
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #45

Сод не вылетает. У Вога изменена проверка версии, которая видимо пропускает хотовскую 32 как допустимую (а там формат изменён и естественно карта корректно не считывается).
Сам искать что-то в воговском коде не буду.
(This post was last modified: 28.11.2013 22:09 by Sav.)
28.11.2013 22:08
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group