Понял, спасибо. Нашел где прописаны ярлыки для кнопок в редакторе, про которые я говорил ниже. Теперь могу визуально заменять например Империю на Зеленокожих :) Также при выборе расы на экране компании могу теперь сделать так, что вместо Империи или любой другой расы будут Зеленокожие. Кстати вся эта информация содержится в папке Interf, что логично. ;) Там еще есть два .dlg файла, это просто парсеры, которыми определяется интерфейс, насколько я вижу.
Нашел файл, где прописаны столицы разных рас - в папке Imgs. Файл Capital.dat. Надо будет попробовать вставить туда столицу. Но сначала, основное, что хочу найти, как происходит выбор количества рас на экране их выбора для конкретной компании.
Нашел файл, где прописаны столицы разных рас - в папке Imgs. Файл Capital.dat. Надо будет попробовать вставить туда столицу. Но сначала, основное, что хочу найти, как происходит выбор количества рас на экране их выбора для конкретной компании.
Пара находок по поводу новой расы - почти уверен, что старую расу можно заменить на новую. Что касается возможности вставить новую расу в добавок к существующим, то пока не получилось и похоже, что количество рас забито где-то на програмном уровне. К этому выводу приводит экран Scenario Editor(a). Когда выбираешь, какие расы должны присутствовать в новом квесте, то там есть 5 кнопок, по одной на каждую из рас. У меня описания стоят русские в игре, но эти кнопки не переведены и я не смог их найти в ресурсах игры. Похоже, что они зашиты где-то. Аналогично в игре на экране выбора рас выбор происходит по тому же принципу. Сейчас ковыряю все это дебагером.
В связи с этим вопрос - Сергей, когда я запускаю Scenario Editor под дебагером в IDA, то он (Editor) зависает на экране, где нужно выбрать, что делать дальше - создавать новый квест, загружать старый и т.д. Если едитор убить из Task Managerа, то в IDA виден exception, что memory ... can''t be read... Как настроить IDA так, чтобы мозно было бы выполнять определенные действия в редакторе и IDA их бы отслеживал?
В связи с этим вопрос - Сергей, когда я запускаю Scenario Editor под дебагером в IDA, то он (Editor) зависает на экране, где нужно выбрать, что делать дальше - создавать новый квест, загружать старый и т.д. Если едитор убить из Task Managerа, то в IDA виден exception, что memory ... can''t be read... Как настроить IDA так, чтобы мозно было бы выполнять определенные действия в редакторе и IDA их бы отслеживал?
Запускай редактор в окне, тогда будет возможность переключиться в IDA и нажать кнопку. Для отслеживания нужно знать функцию или какой-либо ресурс и использовать (напр.) breakpoint-ы.
to HSerg, немог бы ты добавить поиск в редактор анимаций? Ну там где список изображений по алфавиту. Дело в том, что - все анимации в IsoUnit состоят из последовательных картинок: только последовательность эта немного странная. Например, первая картинка анимации называется TCE тогда дальше идет UCE, VCE и тп. Тоесть, у последовательных картинок изменяется не последний символ (как-бы это было логично) а первый. Первая картинка, первый символ A потом все буквы латинского алфавита (последняя Z), потом цифры от 1 до 9 потом 0 и знак "_". Потом изменяется 2 символ (средний), и только потом последний. В последовательных анимациях картинки так-же идут друг за другом в таком порядке. То есть если анимация G000UUXXXXMOVE0 начинается с HBE то закончится она на WBE(в каждой анимации или 16 или 1 картинка). А G000UUXXXXMOVE1 (следующая за ней анимация) будет начинаться на XBE а заканчиваться BCE. Суть в том, что если я хочу повторить уже существующую анимацию (для последующей замены) мне придется вручную искать каждую картинку в разных частях списка (т.к. В списке они все по алфавиту, по первому символу) - а это 272 картинки (я посчитал).
Ok, добавлю фильтр или сортировку.
To Dreher: Ответил о том, как вставлять анимации здесь: http://nevendaar.com/forum/27-1670-2#87813
Да, последняя версия RC10 стала дольше обрабатывать запросы.
Да, последняя версия RC10 стала дольше обрабатывать запросы.
Извлечь в 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.