В общем проделал ещё немного исследований и выяснил, что кампании полностью совместимы, если проделать некоторые изменения:
- сперва разрезать каждую кампанию на 9 частей (ну кроме древа и луны), можно с помощью h3extractor'a, можно ручками найдя гзип сигнатуры;
- распаковать все 9 частей;
- во всех кроме первой заменить первый байт на 1С
- снова запаковать все карты с помощью 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 - в хрониках же наоборот больше портретов или я что-то путаю?