Vadzra 
Новости по просьбам )) ковыряюсь одновременно с дебагером и компилятором. Для того, чтобы код скомпилить его нужно руками поправлять, что нетривиально. Дебагер пока тоже неработает. В дебагере дело в обработчике исключений. Исключения обрабатываются под дебагером некорректно. Правда с VS ситуация немного лучше - там можно приаатачиться к процессу дебагером. В Олли и ИДА этого не получается. Так что, если заставить компилятор заработать, то жить будет можно.

Нашел несколько мест в коде, где нужно прописывать новую расу. Но без решения вопросов выше, это пока чисто теоретическое знание.
Dreher 
Vadzra, огласи новости плиз :)
Dreher 
Сергей, большое спасибо за версию RC11! Теперь гораздо проще стало добавлять анимации и программа заметно быстрее стала работать.
Vadzra 
Нашел почему память не читалась и что за процедура, на которой все останавливается. Процедура занимается выгрузкой dll. Похоже, что если какой-то процесс занял память по конкретному адресу, то выгрузить dll неполучается. Я выгрузил из памяти практически все и дебагер прошел дальше и ругался на другой адрес (что кстати не показатель, если они динамически присваиваются). Но все равно он остановился в определенный момент. В дебагере в окне dll каким-то образом отображалась как загруженная dll антивируса, хотя сам антивирус я остановил и процесс его убил. Правда, я это сделал уже после того, как дебагер начал работать. В общем, нужно заставить его как-то заработать ибо иначе будет не посмотреть в реальном времени на изменения в коде.

Кстати, Дисы запускаются, но потом вылетают на первом экране.
Vadzra 
Хорошая новость - я нашел где выбираются расы в коде. Действительно, менеджмент рас прошит в коде, но все не так страшно. Можно проследить, где расы выбираются, где новая раса могла бы быть добавлена и т.д.

Не очень хорошая новость - похоже, что при чтении компилированного кода IDA потеряла кое-какие куски. Ибо имена некоторых фунцкий она не распознает. Это можно будет посмотреть позже. Вообще же ошибок компиляции немного, возможно удастся пофиксить.

Вопрос - как блин править read-only доступ в ассемблере? Т.е. если запускать Дисы под дебагером, то он ругается, что память по определенному адресу доступна только для чтения. Я точно знаю процедуру, которая пытается в память писать. Но дело кажется не в этом, а может быть в том что для этой dll (Shw32.dll) segment permissions по какой-то причине: read. Хмм, это где-то можно поменять?
P.S. Адрес, где программа пытается писать в память - A93B395 если что.
Vadzra 
Понял, спасибо. Нашел где прописаны ярлыки для кнопок в редакторе, про которые я говорил ниже. Теперь могу визуально заменять например Империю на Зеленокожих :) Также при выборе расы на экране компании могу теперь сделать так, что вместо Империи или любой другой расы будут Зеленокожие. Кстати вся эта информация содержится в папке Interf, что логично. ;) Там еще есть два .dlg файла, это просто парсеры, которыми определяется интерфейс, насколько я вижу.

Нашел файл, где прописаны столицы разных рас - в папке Imgs. Файл Capital.dat. Надо будет попробовать вставить туда столицу. Но сначала, основное, что хочу найти, как происходит выбор количества рас на экране их выбора для конкретной компании.
Vadzra 
Пара находок по поводу новой расы - почти уверен, что старую расу можно заменить на новую. Что касается возможности вставить новую расу в добавок к существующим, то пока не получилось и похоже, что количество рас забито где-то на програмном уровне. К этому выводу приводит экран Scenario Editor(a). Когда выбираешь, какие расы должны присутствовать в новом квесте, то там есть 5 кнопок, по одной на каждую из рас. У меня описания стоят русские в игре, но эти кнопки не переведены и я не смог их найти в ресурсах игры. Похоже, что они зашиты где-то. Аналогично в игре на экране выбора рас выбор происходит по тому же принципу. Сейчас ковыряю все это дебагером.

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

Да, последняя версия RC10 стала дольше обрабатывать запросы.
Dreher 
Извлечь в GIF я могу, но при открытии этой GIF-ки пишет: "Ошибка при построении изображения". И у меня почему-то последняя версия RC10 виснет сильно....
Dreher 
Help me! Please! Пожалуйста распишите как добавлять в IsoUnit и BatUnit картинки для моего нового юнита.
Dreher 
Кто уже разобрался, подскажите: как в IsoUnit добавить в IndexMap анимацию? То есть, я хочу создать юнита внешнив видом как голем, я извлек картинки голема из пака. Они называются IndexMap#18554-AnimMap#001.png и так-далее, но анимации (например, анимация ходьбы) извлеклась не как анимация а как 15 png картинок. А мне нужно добавить такую-же анимацию только для моего юнита - G000UU8153. Как быть? Мне сначала нужно добавить по одной картинки, а потом их склеить и переименовать в G000UU8153MOVE1 и тп соответственно?
HSerg
Извлекай в формате анимированного GIF - так проще редактировать и добавлять обратно.
XVilka 
По поводу открытых сырцов Эксплорера. Будут ли они? Я тут пытаюсь написать открытый аналог ScenEdit.exe на Qt/C++. Давайте лучше скооперируемся - быстрее получится
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 и вообще все изображения пропадут ;)

Какой идентификатор у нового юнита?