Извлечь в GIF я могу, но при открытии этой GIF-ки пишет: "Ошибка при построении изображения". И у меня почему-то последняя версия RC10 виснет сильно....
Help me! Please! Пожалуйста распишите как добавлять в IsoUnit и BatUnit картинки для моего нового юнита.
Кто уже разобрался, подскажите: как в IsoUnit добавить в IndexMap анимацию? То есть, я хочу создать юнита внешнив видом как голем, я извлек картинки голема из пака. Они называются IndexMap#18554-AnimMap#001.png и так-далее, но анимации (например, анимация ходьбы) извлеклась не как анимация а как 15 png картинок. А мне нужно добавить такую-же анимацию только для моего юнита - G000UU8153. Как быть? Мне сначала нужно добавить по одной картинки, а потом их склеить и переименовать в G000UU8153MOVE1 и тп соответственно?
Извлекай в формате анимированного GIF - так проще редактировать и добавлять обратно.
По поводу открытых сырцов Эксплорера. Будут ли они? Я тут пытаюсь написать открытый аналог ScenEdit.exe на Qt/C++. Давайте лучше скооперируемся - быстрее получится
Маловероятно, т.к. всё полезное уже портировано на java в Open D2 (http://sourceforge.net/projects/open-d2
- см. svn)

В общем, напишу еще раз - заработало!! :))
Перевставил анимации для нового юнита и он появился на арене боя. Не нужно никаких переименований в BatUnits.ff. Видимо фикс в 10-ой версии Эксплорера пофиксил и Event.ff и BatUnits.ff.
Ну что. на очереди вставка новой расы и столицы :))
Перевставил анимации для нового юнита и он появился на арене боя. Не нужно никаких переименований в BatUnits.ff. Видимо фикс в 10-ой версии Эксплорера пофиксил и Event.ff и BatUnits.ff.
Ну что. на очереди вставка новой расы и столицы :))
Ура !! :))
Короче говоря, с BatUnits.ff пока не получается.
1. Сначала сделал по аналогии с ISOUnit.ff, где все заработало. ID нового юнита G000UU8151. Ничего на экране боя не появилось.
2. Затем, переименовал все анимации для нового юнита в G000UU8053 - это следующий номер за последним номером анимации в BatUnits. Не сработало.
Если смотреть по аналогии с Events.ff, то мне нужно переименовывать все файлы между последней существующей анимацией и новой анимацией. А это около 400 записей. Но, с другой стороны, в ISOUnit.ff все заработало и без этого, немного непонятно...
1. Сначала сделал по аналогии с ISOUnit.ff, где все заработало. ID нового юнита G000UU8151. Ничего на экране боя не появилось.
2. Затем, переименовал все анимации для нового юнита в G000UU8053 - это следующий номер за последним номером анимации в BatUnits. Не сработало.
Если смотреть по аналогии с Events.ff, то мне нужно переименовывать все файлы между последней существующей анимацией и новой анимацией. А это около 400 записей. Но, с другой стороны, в ISOUnit.ff все заработало и без этого, немного непонятно...
Хмм, а с BatUnits.ff все интереснее. Там анимации находятся посреди файлов с кадрами анимации по алфавиту. А анимации нового юнита добавляются в конец списка. Хмм, что тут на что переименовывать..., чтобы они шли в нужном порядке?
Попробовать что ли поименовать новый юнит сразу за последним по порядку из старых? Но он все равно по индексу будет в самом конце...
Попробовать что ли поименовать новый юнит сразу за последним по порядку из старых? Но он все равно по индексу будет в самом конце...
Заработало!!
Я знаю кунфу! Нет, не так, я знаю как вставлять портреты в Events.ff :) Думаю, что с анимацией в BatUnits.ff что-то похожее. Большое спасибо за помощь!
Я знаю кунфу! Нет, не так, я знаю как вставлять портреты в Events.ff :) Думаю, что с анимацией в BatUnits.ff что-то похожее. Большое спасибо за помощь!
Да, не самая очевидная логика. Спасибо за информацию об экспериментах - без неё бы не разобрался.
Идентификатор: G000UU8251. Причем в ISOUnit.ff анимация для него нормально подцепляется.
Попробуй переименовать ILLUMIELLE в G000UU8100, TORA`ACH в G000UU8101 и т.д. до твоей записи.
Проверил. Все работает, как ты сказал, для существующей записи юнита. Для новой записи вставляю ту же самую картинку (например, охотника на ведьм), ничего в игре не появляется.
Переименуй в IndexMap запись G000UU0001 в G000UU9999 и вообще все изображения пропадут ;)
Какой идентификатор у нового юнита?
Какой идентификатор у нового юнита?
PNG редактора тоже не нашел. Попробовал использовать GIMP, но как-то не очевидно, как там палитры заменять. Тоже использую фотошоп. У меня древняя версия 7.0 стоит.
В новой версии Explorer(а) по-прежнему картинка в Events.ff не появляется в игре для нового юнита.
Я выгружаю картинку из IndexMap для старого юнита, переименовываю, вставляю для нового. При этом автоматически создается запись в MQDB и ImageMap, соотвествующая вставленной картинке. Они ведь соотвествуют по номеру индекса, не по алфавиту? Картинка, которая выгружалась из IndexMap для старого юнита выгружается в 255 цветах. Нехватает розового background(а) (надо посмотреть в фотошопе, как цвет называется). Даже если его добавить и вставить картинку обратно, то все равно ее не видно в игре. Картинка, которая при этом появляется в MQDB - не разбита на куски, а просто копия той, что загружена в IndexMap.
В общем дальше у меня некоторый затык - что еще ей нужно?
В новой версии Explorer(а) по-прежнему картинка в Events.ff не появляется в игре для нового юнита.
Я выгружаю картинку из IndexMap для старого юнита, переименовываю, вставляю для нового. При этом автоматически создается запись в MQDB и ImageMap, соотвествующая вставленной картинке. Они ведь соотвествуют по номеру индекса, не по алфавиту? Картинка, которая выгружалась из IndexMap для старого юнита выгружается в 255 цветах. Нехватает розового background(а) (надо посмотреть в фотошопе, как цвет называется). Даже если его добавить и вставить картинку обратно, то все равно ее не видно в игре. Картинка, которая при этом появляется в MQDB - не разбита на куски, а просто копия той, что загружена в IndexMap.
В общем дальше у меня некоторый затык - что еще ей нужно?
Давай распишу пример модификации сквайра (G000UU0001).
1. Запускаю D2ResExplorer
2. Открываю в IndexMap запись G000UU0004
3. Через контекстное меню "извлекаю файл" IndexMap#8.png.
4. Открываю в IndexMap запись G000UU0001
5. Через контекстное меню "заменяю базовое изображение" на IndexMap#8.png из п.2
6. Проверяю в игре - изображение "сквайра" заменилось на изображение "охотника на ведьм".
1. Запускаю D2ResExplorer
2. Открываю в IndexMap запись G000UU0004
3. Через контекстное меню "извлекаю файл" IndexMap#8.png.
4. Открываю в IndexMap запись G000UU0001
5. Через контекстное меню "заменяю базовое изображение" на IndexMap#8.png из п.2
6. Проверяю в игре - изображение "сквайра" заменилось на изображение "охотника на ведьм".
Да, все понятно теперь, кроме того, почему у меня картинка для уже существующего юнита не встала, когда я ее подставил для нового юнита. Думаю, что это потому, что я начал с того, что уже существующую картинку выгрузил из IndexMap и загрузил ее потом обратно. Но при этом MQDB запись для нового юнита создается не в том формате и не того размера.
Что касается програмки, то я думаю, что вряд ли разработчики каждую картинку вручную резали. Если бы можно было задавать параметры нарезки, то должно было бы заработать. Единственное, что не очень понятно, если эти параметры каждый раз разные, то какие задавать новому юниту?
Что касается програмки, то я думаю, что вряд ли разработчики каждую картинку вручную резали. Если бы можно было задавать параметры нарезки, то должно было бы заработать. Единственное, что не очень понятно, если эти параметры каждый раз разные, то какие задавать новому юниту?
Поправил недоработку - при замене обновлялись не все поля размеров в ImageMap. Выложил новую версию - см. новости.
Так же обратите внимание, что важен алфавитный(!) порядок следования записей в IndexMap в Events.ff, т.е. доп. сортировок в D2 нет и из-за этого записи могут не находиться (отсюда и глюки после переименования).
P.S. Нормального png-редактора с палитрами не нашёл. Придётся таки photoshop ставить или при импорте доп. диалоги добавлять...
Так же обратите внимание, что важен алфавитный(!) порядок следования записей в IndexMap в Events.ff, т.е. доп. сортировок в D2 нет и из-за этого записи могут не находиться (отсюда и глюки после переименования).
P.S. Нормального png-редактора с палитрами не нашёл. Придётся таки photoshop ставить или при импорте доп. диалоги добавлять...
Я просто вытащил png из MQDB, открыл ее в Photoshop, там же открыл картинку Dreher(a) и разбил ее на такие же куски. Заменил, сохранил обратно в png (index, 8bit) и вставил в MQDB.
На счет «программки, которая бы разбивала существующие .png файлы на куски по шаблону» я считаю, что не получится. Там каждая анимация у разных юнитов разрезана по разному, соответственно смещения для каждой анимации разные и они где то хранятся.
Есть вариант вытаскивать наиболее удобные для будущего юнита png из MQDB. Изменить правильно его на своего юнита. Создать новую запись в MQDB и заменить на нашу измененную. Соответственно везде в dbf прописать нового юнита с правильной ссылкой на новую анимацию. Это так, что пришло в голову. Реально, нет – не знаю.
На счет «программки, которая бы разбивала существующие .png файлы на куски по шаблону» я считаю, что не получится. Там каждая анимация у разных юнитов разрезана по разному, соответственно смещения для каждой анимации разные и они где то хранятся.
Есть вариант вытаскивать наиболее удобные для будущего юнита png из MQDB. Изменить правильно его на своего юнита. Создать новую запись в MQDB и заменить на нашу измененную. Соответственно везде в dbf прописать нового юнита с правильной ссылкой на новую анимацию. Это так, что пришло в голову. Реально, нет – не знаю.
Cмотри, ты взял картинку Dreher(a), разбил ее на те же куски, что и картинки для существующего юнита, где - в фотошопе? Затем склеил и подставил в MQDB. Это та последовательность, которую ты использовал или нет? Какую ты программу использовал для склейки, Image Ready, Paint.net? Или я все усложняю?
Сергей, похоже, что нужна программа, которая бы разбивала существующие .png файлы на куски по шаблону, аналогичному тому что используется в MQDB, а потом бы их склеивала. В общем, распаковщик и запаковщик MQDB.
Сергей, похоже, что нужна программа, которая бы разбивала существующие .png файлы на куски по шаблону, аналогичному тому что используется в MQDB, а потом бы их склеивала. В общем, распаковщик и запаковщик MQDB.
Я имел ввиду редактирование уже существующей картинки или анимации. Как вставить что-то новое я не разбирался.
Можешь по-подробнее написать, как менять картинку по кускам после того, как вынимаешь ее из MQDB-контейнера?
Т.е. последовательность такая: вставляешь картинку (с анимацией надо будет отдельно разобраться) в IndexMap, затем эта картинка автоматически появляется в MQDB-контейнере в Explorer(е). Эта картинка из MQDB-контейнера выгружается и приводится к правильному формату. Затем она загружается обратно. Вот здесь хотелось бы понять, как ее править до правильного формата? Какой программой это нужно делать и в чем правильный формат состоит?
Интересно, что с анимациями происходит такая штука: анимации в ISOUnit.ff не требуют правки записей в MQDB-контейнере. ISOUnit.ff отвечает за графику юнита на глобальной карте. При добавлении анимаций нового юнита он там прекрасно у меня появляется.
А вот с BatUnits.ff все по-другому. Там все похоже также, как и в Events.ff, т.е. нужно править MQDB.
Т.е. последовательность такая: вставляешь картинку (с анимацией надо будет отдельно разобраться) в IndexMap, затем эта картинка автоматически появляется в MQDB-контейнере в Explorer(е). Эта картинка из MQDB-контейнера выгружается и приводится к правильному формату. Затем она загружается обратно. Вот здесь хотелось бы понять, как ее править до правильного формата? Какой программой это нужно делать и в чем правильный формат состоит?
Интересно, что с анимациями происходит такая штука: анимации в ISOUnit.ff не требуют правки записей в MQDB-контейнере. ISOUnit.ff отвечает за графику юнита на глобальной карте. При добавлении анимаций нового юнита он там прекрасно у меня появляется.
А вот с BatUnits.ff все по-другому. Там все похоже также, как и в Events.ff, т.е. нужно править MQDB.
Вставить картинку в Events.ff можно, но ее править надо в MQDB-контейнере. Вытаскиваешь оттуда и меняешь по кускам на свою. Вот пример: http://s011.radikal.ru/i318/1110/6d/57aa45c14864.jpg
Так же можно изменить анимацию, ее тоже в MQDB-контейнере надо менять (пробовал - получается), но здесь уже сложнее. Игра из этих кусочков с определенным смещением для каждой анимации каждого юнита составляет полную анимацию. Там определенный размер под каждый кусочек уже определен и в него надо уложиться. Может где это все можно и поменять, но я дальше не копал.
Так же можно изменить анимацию, ее тоже в MQDB-контейнере надо менять (пробовал - получается), но здесь уже сложнее. Игра из этих кусочков с определенным смещением для каждой анимации каждого юнита составляет полную анимацию. Там определенный размер под каждый кусочек уже определен и в него надо уложиться. Может где это все можно и поменять, но я дальше не копал.
Сергей, Я кажется нашел часть проблемы. Попробую описать, что я делал. В файле Events.ff я выгрузил картинку из IndexMap для существующего юнита, переименовал файл под имя нового юнита и загрузил обратно. При загрузке проис ходит создание записи в MQDB и ImageMap, при простом переименовании записи этого не проишодит. Теперь запись, созданная в МЯДБ для нового юнита отличается от записи для ишодного юнита. Она просто содержит в себе такую же картинку, как и в IndexMap (несжатую), только на черном фоне. При этом портрет не появляется в игре. Если выгрузить запись из MQDB для старого юнита и загрузить ее обратно для нового, то IndexMap и ImageMap для нового юнита перестают открыватся. Как сделать так, чтобы при добавлении нового файла в IndexMap, запись в MQDB создавалась бы в правильном формате?
Обнаружил такую штуку: в Events.ff портрет юнита в IndexMap имеет размер 350х450 - у всех юнитов. В ImageMap у старого юнита был размер: 301х364, у нового все те же 350х450. Это правда не совсем объясняет, почему при переименовании портреты не видны ни для старого ни для нового юнитов. В BatUnits.ff эту зависимость сложнее проследить.
Хмм, сделал все переименования:
1. Переименовал анимации существующего юнита G000uu6112 -> G000uu8151 в свой юнит - свой юнит на арене не появился (старый естественно исчез с арены).
2. Переименовал анимации, которые я раньше вставил для своего юнита, в старый юнит G000uu6112 <- G000uu8151 (не те же самые, что выше, а у меня были анимации, которые я специально для нового юнита вставил). Старый юнит на арене не появился.
О чем это нам говорит - какая-то фигня с организацией файла BatUnits.ff. Где-то что-то не прописано. То ли в MQDB не вся информация об анимациях, то ли где-то еще... Информация об индексах в MQDB не совпадает с тем, что есть в IndexMap?
Либо есть две ошибки (что вряд ли), одна с тем, что для моего юнита где-то не стоит нужный флаг, плюс я не так вставил анимации. Этот вариант гораздо менее вероятен.
1. Переименовал анимации существующего юнита G000uu6112 -> G000uu8151 в свой юнит - свой юнит на арене не появился (старый естественно исчез с арены).
2. Переименовал анимации, которые я раньше вставил для своего юнита, в старый юнит G000uu6112 <- G000uu8151 (не те же самые, что выше, а у меня были анимации, которые я специально для нового юнита вставил). Старый юнит на арене не появился.
О чем это нам говорит - какая-то фигня с организацией файла BatUnits.ff. Где-то что-то не прописано. То ли в MQDB не вся информация об анимациях, то ли где-то еще... Информация об индексах в MQDB не совпадает с тем, что есть в IndexMap?
Либо есть две ошибки (что вряд ли), одна с тем, что для моего юнита где-то не стоит нужный флаг, плюс я не так вставил анимации. Этот вариант гораздо менее вероятен.
Ok. Смотрю в чём может быть проблема.