Vadzra 
В общем, напишу еще раз - заработало!! :))

Перевставил анимации для нового юнита и он появился на арене боя. Не нужно никаких переименований в BatUnits.ff. Видимо фикс в 10-ой версии Эксплорера пофиксил и Event.ff и BatUnits.ff.

Ну что. на очереди вставка новой расы и столицы :))
HSerg
Ура !! :))
Vadzra 
Короче говоря, с BatUnits.ff пока не получается.

1. Сначала сделал по аналогии с ISOUnit.ff, где все заработало. ID нового юнита G000UU8151. Ничего на экране боя не появилось.
2. Затем, переименовал все анимации для нового юнита в G000UU8053 - это следующий номер за последним номером анимации в BatUnits. Не сработало.

Если смотреть по аналогии с Events.ff, то мне нужно переименовывать все файлы между последней существующей анимацией и новой анимацией. А это около 400 записей. Но, с другой стороны, в ISOUnit.ff все заработало и без этого, немного непонятно...
Vadzra 
Хмм, а с BatUnits.ff все интереснее. Там анимации находятся посреди файлов с кадрами анимации по алфавиту. А анимации нового юнита добавляются в конец списка. Хмм, что тут на что переименовывать..., чтобы они шли в нужном порядке?

Попробовать что ли поименовать новый юнит сразу за последним по порядку из старых? Но он все равно по индексу будет в самом конце...
Vadzra 
Заработало!!

Я знаю кунфу! Нет, не так, я знаю как вставлять портреты в Events.ff :) Думаю, что с анимацией в BatUnits.ff что-то похожее. Большое спасибо за помощь!
HSerg
Да, не самая очевидная логика. Спасибо за информацию об экспериментах - без неё бы не разобрался.
Vadzra 
Идентификатор: G000UU8251. Причем в ISOUnit.ff анимация для него нормально подцепляется.
HSerg
Попробуй переименовать ILLUMIELLE в G000UU8100, TORA`ACH в G000UU8101 и т.д. до твоей записи.
Vadzra 
Проверил. Все работает, как ты сказал, для существующей записи юнита. Для новой записи вставляю ту же самую картинку (например, охотника на ведьм), ничего в игре не появляется.
HSerg
Переименуй в IndexMap запись G000UU0001 в G000UU9999 и вообще все изображения пропадут ;)

Какой идентификатор у нового юнита?
Vadzra 
PNG редактора тоже не нашел. Попробовал использовать GIMP, но как-то не очевидно, как там палитры заменять. Тоже использую фотошоп. У меня древняя версия 7.0 стоит.

В новой версии Explorer(а) по-прежнему картинка в Events.ff не появляется в игре для нового юнита.

Я выгружаю картинку из IndexMap для старого юнита, переименовываю, вставляю для нового. При этом автоматически создается запись в MQDB и ImageMap, соотвествующая вставленной картинке. Они ведь соотвествуют по номеру индекса, не по алфавиту? Картинка, которая выгружалась из IndexMap для старого юнита выгружается в 255 цветах. Нехватает розового background(а) (надо посмотреть в фотошопе, как цвет называется). Даже если его добавить и вставить картинку обратно, то все равно ее не видно в игре. Картинка, которая при этом появляется в MQDB - не разбита на куски, а просто копия той, что загружена в IndexMap.

В общем дальше у меня некоторый затык - что еще ей нужно?
HSerg
Давай распишу пример модификации сквайра (G000UU0001).
1. Запускаю D2ResExplorer
2. Открываю в IndexMap запись G000UU0004
3. Через контекстное меню "извлекаю файл" IndexMap#8.png.
4. Открываю в IndexMap запись G000UU0001
5. Через контекстное меню "заменяю базовое изображение" на IndexMap#8.png из п.2
6. Проверяю в игре - изображение "сквайра" заменилось на изображение "охотника на ведьм".
Vadzra 
Да, все понятно теперь, кроме того, почему у меня картинка для уже существующего юнита не встала, когда я ее подставил для нового юнита. Думаю, что это потому, что я начал с того, что уже существующую картинку выгрузил из IndexMap и загрузил ее потом обратно. Но при этом MQDB запись для нового юнита создается не в том формате и не того размера.

Что касается програмки, то я думаю, что вряд ли разработчики каждую картинку вручную резали. Если бы можно было задавать параметры нарезки, то должно было бы заработать. Единственное, что не очень понятно, если эти параметры каждый раз разные, то какие задавать новому юниту?
HSerg
Поправил недоработку - при замене обновлялись не все поля размеров в ImageMap. Выложил новую версию - см. новости.

Так же обратите внимание, что важен алфавитный(!) порядок следования записей в IndexMap в Events.ff, т.е. доп. сортировок в D2 нет и из-за этого записи могут не находиться (отсюда и глюки после переименования).

P.S. Нормального png-редактора с палитрами не нашёл. Придётся таки photoshop ставить или при импорте доп. диалоги добавлять...
KDS 
Я просто вытащил png из MQDB, открыл ее в Photoshop, там же открыл картинку Dreher(a) и разбил ее на такие же куски. Заменил, сохранил обратно в png (index, 8bit) и вставил в MQDB.

На счет «программки, которая бы разбивала существующие .png файлы на куски по шаблону» я считаю, что не получится. Там каждая анимация у разных юнитов разрезана по разному, соответственно смещения для каждой анимации разные и они где то хранятся.

Есть вариант вытаскивать наиболее удобные для будущего юнита png из MQDB. Изменить правильно его на своего юнита. Создать новую запись в MQDB и заменить на нашу измененную. Соответственно везде в dbf прописать нового юнита с правильной ссылкой на новую анимацию. Это так, что пришло в голову. Реально, нет – не знаю.
Vadzra 
Cмотри, ты взял картинку Dreher(a), разбил ее на те же куски, что и картинки для существующего юнита, где - в фотошопе? Затем склеил и подставил в MQDB. Это та последовательность, которую ты использовал или нет? Какую ты программу использовал для склейки, Image Ready, Paint.net? Или я все усложняю?

Сергей, похоже, что нужна программа, которая бы разбивала существующие .png файлы на куски по шаблону, аналогичному тому что используется в MQDB, а потом бы их склеивала. В общем, распаковщик и запаковщик MQDB.
KDS 
Я имел ввиду редактирование уже существующей картинки или анимации. Как вставить что-то новое я не разбирался.
Vadzra 
Можешь по-подробнее написать, как менять картинку по кускам после того, как вынимаешь ее из MQDB-контейнера?

Т.е. последовательность такая: вставляешь картинку (с анимацией надо будет отдельно разобраться) в IndexMap, затем эта картинка автоматически появляется в MQDB-контейнере в Explorer(е). Эта картинка из MQDB-контейнера выгружается и приводится к правильному формату. Затем она загружается обратно. Вот здесь хотелось бы понять, как ее править до правильного формата? Какой программой это нужно делать и в чем правильный формат состоит?

Интересно, что с анимациями происходит такая штука: анимации в ISOUnit.ff не требуют правки записей в MQDB-контейнере. ISOUnit.ff отвечает за графику юнита на глобальной карте. При добавлении анимаций нового юнита он там прекрасно у меня появляется.
А вот с BatUnits.ff все по-другому. Там все похоже также, как и в Events.ff, т.е. нужно править MQDB.
KDS 
Вставить картинку в Events.ff можно, но ее править надо в MQDB-контейнере. Вытаскиваешь оттуда и меняешь по кускам на свою. Вот пример: http://s011.radikal.ru/i318/1110/6d/57aa45c14864.jpg

Так же можно изменить анимацию, ее тоже в MQDB-контейнере надо менять (пробовал - получается), но здесь уже сложнее. Игра из этих кусочков с определенным смещением для каждой анимации каждого юнита составляет полную анимацию. Там определенный размер под каждый кусочек уже определен и в него надо уложиться. Может где это все можно и поменять, но я дальше не копал.
Vadzra 
Сергей, Я кажется нашел часть проблемы. Попробую описать, что я делал. В файле Events.ff я выгрузил картинку из IndexMap для существующего юнита, переименовал файл под имя нового юнита и загрузил обратно. При загрузке проис ходит создание записи в MQDB и ImageMap, при простом переименовании записи этого не проишодит. Теперь запись, созданная в МЯДБ для нового юнита отличается от записи для ишодного юнита. Она просто содержит в себе такую же картинку, как и в IndexMap (несжатую), только на черном фоне. При этом портрет не появляется в игре. Если выгрузить запись из MQDB для старого юнита и загрузить ее обратно для нового, то IndexMap и ImageMap для нового юнита перестают открыватся. Как сделать так, чтобы при добавлении нового файла в IndexMap, запись в MQDB создавалась бы в правильном формате?
Vadzra 
Обнаружил такую штуку: в Events.ff портрет юнита в IndexMap имеет размер 350х450 - у всех юнитов. В ImageMap у старого юнита был размер: 301х364, у нового все те же 350х450. Это правда не совсем объясняет, почему при переименовании портреты не видны ни для старого ни для нового юнитов. В BatUnits.ff эту зависимость сложнее проследить.
Vadzra 
Хмм, сделал все переименования:

1. Переименовал анимации существующего юнита G000uu6112 -> G000uu8151 в свой юнит - свой юнит на арене не появился (старый естественно исчез с арены).
2. Переименовал анимации, которые я раньше вставил для своего юнита, в старый юнит G000uu6112 <- G000uu8151 (не те же самые, что выше, а у меня были анимации, которые я специально для нового юнита вставил). Старый юнит на арене не появился.

О чем это нам говорит - какая-то фигня с организацией файла BatUnits.ff. Где-то что-то не прописано. То ли в MQDB не вся информация об анимациях, то ли где-то еще... Информация об индексах в MQDB не совпадает с тем, что есть в IndexMap?

Либо есть две ошибки (что вряд ли), одна с тем, что для моего юнита где-то не стоит нужный флаг, плюс я не так вставил анимации. Этот вариант гораздо менее вероятен.
HSerg
Ok. Смотрю в чём может быть проблема.
Vadzra 
Сергей, в Events.ff и BatUnits.ff тоже зашиты бинарные файлы: Images.opt и Index.opt и еще парочка типа .unk файлов. Их не нужно ли править по аналогии со звуком? Что-то уз очень подозрительно: ISOUnit.ff и Face.ff
прицепились к новому юниту, а эти два нехотят. При этом у меня прописано все в точности также, как у существующего юнита, настройки которого я скопировал. Даже если я переименовываю запись в Events.ff под новый юнит - все равно картинка в игре не появляется. Хотя там она гарантировано правильно вставлена.
HSerg
Нет, править images/index нужды нет - именно их правит D2ResExplorer.
Попробуй для существующего юнита анимацию сменить. Если не сработает, то что-то упускаем.
Vadzra 
To Dreher: А ты не пробовал переименовать любую запись в IndexMap в Events.ff в имя своего юнита? Если после этого портрет будет виден в игре, значит есть проблемы с твоей картинкой, если же портрет виден не будет, то возможно это не потому, что твоя картинка неправильная, а что-то не настроено в учетной записи юнита.
Dreher 
Опять полный ступор. 8 бит то я могу в Paint.NET сохранить (причем D2ResExplorer.RC9 уже пакует эту картинку). Но, что мне указывать в "уровень размывания" и "порог прозрачности"? По умолчанию там стоит "уровень размывания: 7", "порог прозрачности: 37"(у меня так стоит). НО, во первых в D2ResExplorer.RC9 у меня показует что картинка непрозрасная (на самом деле она прозрачная). И во вторых: в игре это изображение не отображается.
HSerg
Лучше таки взять редактор работающий с палитрами напрямую. В D2 прозрачен только первый цвет палитры.

P.S. Посмотри Curtis'' Plugin Pack - там есть редактор палитры, но не факт, что при сохранении она не пересортировывается.
KDS 
Disciples 2 Восстание Эльфов v 3.01 Руссобит-М (пробовал и на акеловской, и на английской).
Нашел такие ошибки:
1. У Сквайра и ему подобных людей звук HIT_A из Battle.wdb выдает ошибку «Argument out of range».
2. Медуза: та же ошибка на все три звука HIT из Battle. wdb.
3. Рух: выдает ошибку анимация атаки сверху.
4. Лакхаан, Темный Лакхаан, Граф Фламел Краули: выдают ошибку, и оказывается, в игре вообще нет никаких звуков у них (или это только у меня?).
5. Злой дух (Wraith): нет HIT-анимации вообще (только тень) и в игре тоже при попадание по нему стоит на месте и все (опять только у меня?).

Очень жду возможность вытаскивать ресурсы с помощью этой программы желательно не по одному, а группой с помощью выделения мышкой, или сразу всех ресурсов одного юнита.
HSerg
1. Да, ссылка на звук есть, но самого файла звука нет. Из текста ошибки это непонятно - исправлю.
2. См. выше.
3. Пока не знаю - надо смотреть подробнее.
4. Аналогично.
5. Аналогично.

Ok, добавлю.