Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по модификации
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
Iv
Очередной вопрос: есть такой деф людской префектуры TBCSHAL2.def
Отличается тем, что в нем только 1ый кадр полный


остальные только анимируют отдельные куски


Вопрос - почему не получается анимировать таким образом объект на карте?
feanor
Ну, потому что города рисуются не так, как объекты на карте.
hippocamus
Это принцип формата Гиф. Может быть, одна из первых спецификаций Деф тоже поддерживала такую возможность, а потом не стали так делать.
Berserker
А разве alpha не выделяет новую память при каждом запросе картинки?
hippocamus
Вот и мне так казалось.

Не хочется, чтобы в моде были утечки памяти - очнь неприятная штука, помню по ранней 4-ке...
Etoprostoya
Альфа-плагин выделяет память только при собственной загрузке, через лесенку процедур в DLLMain(). Больше выделения памяти я нигде не обнаружил.
hippocamus
Надо проверить. самый простой способ - через Диспетчер задач посмотреть. До боя, использовавшего aльфу и после.
Berserker
У кого сорцы сохранились?
feanor
https://dl.dropbox.com/u/61759222/source.rar

оригинальные.
За билд от тоткоторого не скажу - они вообще были?
Berserker
Кажись поновее есть: http://wikisend.com/download/636734/AlphaSource.rar
Sav
Прозрачность хранится в структуре анимации (которая BM:V).

Альфа заменяет не все отрисовки, возможно, там попало на какую-то, которую она не заменяет.
Iv
Вопрос по структуре ZEOBJTS.TXT, хочу добавить новые объекты



Имя def??????Тип территории???ТипПодтип???Размещение
AVA0025.def01111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000011111111100000000152540

Что обозначают столбцы, обозначенные "???"?
hippocamus
Первое - маска проходимости начиная от нижнего правого угла влево. Каждая строка занимает 8 бит.
Второе - маска триггеров (жёлтых клеток).
Третье - вроде маска страниц с почвами, на которых объект появится в редакторе
вот последние знаки вопроса не помню, возможно класс объекта - ресурс, герой, строение...
totkotoriy
Посмотрел сколько примерно занимает памяти alpha.dll, оказалось в 3 раза больше чем вес кадров для полупрозразчности на диске. (оно и понятно, т.к. PNG сжатый формат)
Например в моём моде используется 330 кадров полупрозрачности, это занимает 10 мб, соответственно герои жрут на 30 мб больше.
Так, что это капля в море - не волнуйтесь...

Другое дело - это количество расчетов с использованием alpha.dll и HD мода, но вроде после последних доработак плагина стало нормально...
Вот кстати доработаная версия, должна работать раза в 2 быстрее...

Ещё для информации что альфа длл заменяет только кадры по этим хукам
// Draw0 47BE90 - interface
// Draw1 47C9C0 - adventute map objects
// Draw2 47D660 - terrain
// Draw3 47C300 - monsters
А вот что входит в интерфейс надо разобраться, заклинания точно можно заменить
А вот с кнопками или зданиями не получается сделать, там какой-то другой формат, так что один кадр накладывается на другой, а не заменяется.
Berserker
А откуда SE3 качали? Сорцы есть?
totkotoriy
Цитата(Berserker @ 12 Jun 2012, 13:06) *
А откуда SE3 качали? Сорцы есть?

Я ж и доделывал. Зачем вам сорцы? Дорабатывать будете?
Berserker
Затем, зачем вообще исходники держатся открытыми: для изучения, сохранения и возможного применения huh.gif
totkotoriy
Цитата(Berserker @ 12 Jun 2012, 16:22) *
Затем, зачем вообще исходники держатся открытыми: для изучения, сохранения и возможного применения huh.gif

Хранятся уже давно везде, изучать и применять никто не хочет... Ну кроме меня smile.gif
Berserker
Так а в чём была несовместимость между HD и alpha тогда?
Sav
Тормозило безбожно вроде.
Berserker
Что-то сомневаюсь, что тоткоторый там код оптимизировал.
totkotoriy
Цитата(Berserker @ 12 Jun 2012, 19:22) *
Что-то сомневаюсь, что тоткоторый там код оптимизировал.

Большое спасибо, за доверие
Ты говоришь как будто меня тут нету...
Sav
Там был, с точки зрения моего первого взгляда, дико высокоуровневый код отрисовки. totkotoriy довольно нехитрым действием (убрав из цикла вызовы функции от одного и того же аргумента) увеличил скорость раза в 2 и вроде как остался доволен результатом.
Berserker
Цитата
Ты говоришь как будто меня тут нету...

При всём уважении, я ведь не буду из вас клещами вытягивать, а что, собственно, было изменено? Вопрос про исходники был парирован. Поэтому спрашиваю у тех, кто знает. Ведь, возможно, в будущем и мне нужно будет менять отрисовку. Кто-то это уже делал.
totkotoriy
Цитата(Sav @ 12 Jun 2012, 20:07) *
Там был, с точки зрения моего первого взгляда, дико высокоуровневый код отрисовки. totkotoriy довольно нехитрым действием (убрав из цикла вызовы функции от одного и того же аргумента) увеличил скорость раза в 2 и вроде как остался доволен результатом.

Ну не совсем доволен, просто не знаю что ещё придумать...
Хотя на разрешении даже 1600 и областью, нагруженной полупрозрачными объектами вполне сносно работает... тем более если считать, что на таких разрешениях даже без альфа.длл чуток притормаживает...

Цитата(Berserker @ 12 Jun 2012, 20:20) *
Цитата
Ты говоришь как будто меня тут нету...

При всём уважении, я ведь не буду из вас клещами вытягивать, а что, собственно, было изменено? Вопрос про исходники был парирован. Поэтому спрашиваю у тех, кто знает. Ведь, возможно, в будущем и мне нужно будет менять отрисовку. Кто-то это уже делал.

Я бы его рано или поздно выложил, просто зачем 100 раз выкладывать исходники если еще собираюсь дорабатывать и это никому не надо...

Я всё понимаю, но фраза: я сомневаюсь... тут вообще причем?
Конечно я мало что могу в таких вещах сделать, но оскорблять то зачем?
Berserker
Ну право, где вы уже разглядели оскорбления? Просто умозаключение smile.gif
P.S. Я собирался делать аналог alpha для Эры, чтобы заменять кадры в составных дефах можно было модульно, потому и интересовался.
Etoprostoya
Цитата(Berserker @ 12 Jun 2012, 21:57) *
P.S. Я собирался делать аналог alpha для Эры, чтобы заменять кадры в составных дефах можно было модульно, потому и интересовался.

А известна структура загруженного кадра?
В альфе есть
Код
struct image
{
/* 0*/    void *p1; // for many or all objects this is 0x63D6BC
/* 4*/    char name[12];
/*16*/    void *p2;
/*20*/    int unknown1;
/*24*/    int unknown2;
/*28*/    int unknown3;
/*32*/    int unknown4;
/*36*/    int type; // image type?
/*40*/    vector total_size;
/*48*/    vector size;
/*56*/    vector pos;
/*64*/    int d5; // = m_Size.x
/*68*/    int *pdata; // image data(pixels), format unknown
// may be more data here
};

Вот эта структура вызывается в функции прорисовки. Нужно отловить name[12] заменяемого кадра и заменить как минимум *pdata и vector'ы на данные заменяющего кадра.
Думаю, для этого не надо делать аналог альфа-плагина. Если я правильно понял.
totkotoriy
Цитата(Berserker @ 12 Jun 2012, 21:57) *
Ну право, где вы уже разглядели оскорбления? Просто умозаключение smile.gif
P.S. Я собирался делать аналог alpha для Эры, чтобы заменять кадры в составных дефах можно было модульно, потому и интересовался.

Вот такие умозаключения и оскорбляют, ещё и на вы....
Я то к вам так обращался, потому что думал что ты не один разрабатываешь ЭРУ, а ко мне то так зачем?

И ты не говорил, что собираешься что-то с альфа.длл делать.

Как это модульно? И так уже по кадрам заменяется...
И зачем разрабатывать альфу под ЭРУ если она уже есть? Нужно только доработать...
Berserker
Цитата
А известна структура загруженного кадра?

В pdata сами пикселы экрана. Грузишь картинки, по имени их отыскиваешь и заполняешь матрицу пикселей.

Цитата
Вот такие умозаключения и оскорбляют, ещё и на вы....
Я то к вам так обращался, потому что думал что ты не один разрабатываешь ЭРУ, а ко мне то так зачем?

Разработчик один. Вы - исконно вежливое обращение к незнакомым людям.

Цитата
Как это модульно? И так уже по кадрам заменяется...

То же самое и нужно, только с определёнными изменениями. Например, навешиваемыми фильтрами.
totkotoriy
Цитата
Разработчик один. Вы - исконно вежливое обращение к незнакомым людям.

smile.gif Только пишется с большой буквы и не применяется если уже давно перешли на ты... а то действительно как то не по себе...

Цитата
То же самое и нужно, только с определёнными изменениями. Например, навешиваемыми фильтрами.

Ниче не понял... что за фильтры?
Вот сурс:

Надеюсь, что доработаете...
Нужны ещё библиотеки libpng 1.2.44 и zlib 1.2.3 - а то ещё пол года мучаться будете smile.gif
Потому как в более новых библиотеках формат команд изменился.
Berserker
Фильтры - это возможность через ЕРМ код или плагин привязать новое свойство к отрисовке картинки на лету. Например, серые тона или горизонтальное обращение. В частности, без них не сделать свой аналог окаменения монстра в бою.
totkotoriy
Цитата(Berserker @ 12 Jun 2012, 22:38) *
Фильтры - это возможность через ЕРМ код или плагин привязать новое свойство к отрисовке картинки на лету. Например, серые тона или горизонтальное обращение. В частности, без них не сделать свой аналог окаменения монстра в бою.

Хм, а ведь и вправду... Я об этом не подумал....
Но мне почему-то кажется, что всё это будет работать, как с обычными пикселями игнорируя альфа канал...
Щас кстати и проверю...
Berserker
Фильтры должны понимать прозрачность и применяться к копии картинки до её наложения на холст. Тогда проблем не будет.
feanor
Цитата
А известна структура загруженного кадра?

У Бараторча есть.
totkotoriy
Действительно, все эффекты такие как окаменение, жажда крови и т.д. не проявляются на полупрозрачном кадре ...
Еще не забудьте о многократной прорисовке одного кадра и изчезании альфа слоя при сближении существ, а то потом будет очень обидно...

Вот кстати, давно хотел заснять такой момент и показать чтоб понятно было...

Специальные цвета не берите в расчет, просто такие оставил (хотя и они должны были быть полупрозрачными)
На области выделенным красным пропал альфа канал...
Это происходит и с обычными тенями в героях (если замечали) при сближении существ...
Etoprostoya
Цитата(totkotoriy @ 12 Jun 2012, 22:35) *
Нужны ещё библиотеки libpng 1.2.44 и zlib 1.2.3 - а то ещё пол года мучаться будете smile.gif
Потому как в более новых библиотеках формат команд изменился.

У меня работает с libpng 1.5 и zlib 1.2.5. Правда, у меня плагин немного переработан, но не в частях работы с этими библиотеками.
feanor
Чорт, надо общий репозитарий, точно.
totkotoriy
Цитата(etoprostoya @ 12 Jun 2012, 22:13) *
У меня работает с libpng 1.5 и zlib 1.2.5. Правда, у меня плагин немного переработан, но не в частях работы с этими библиотеками.

На сколько я помню, я пытался скомпилировать взяв самую новую версию и по убыванию... пока не нашёл нужную.
Интересно если с новыми библиотеками скомпилировать, мож че лучше станет? smile.gif

А что кстати ты изменял в альфа.длл? Что нибудь улучшить получилось?
Etoprostoya
Цитата(totkotoriy @ 12 Jun 2012, 23:35) *
А что кстати ты изменял в альфа.длл? Что нибудь улучшить получилось?

В основном большинство изменений относилось к адаптации кода к MSVS VC++. Ну и немного оптимизации:
CODE
for( int y = 0; y < Size.y; y++ )
{
for( int x = 0; x < Size.x; x++ )
{
if( ( *pNew & 0xFFFFFF ) == 0xFFFF ) // color for replacement
{//эта часть кода никогда не запускалась в моих тестах
color16 New = pInfo->color;
if( New )
{
uint a = GetAlpha(*pNew);
uint r = GetRed(*pOld);
uint g = GetGreen(*pOld);
uint b = GetBlue(*pOld);
*pOld = MakeColor16( r + (a*(GetRed (New) - r)>>8),
g + (a*(GetGreen(New) - g)>>8),
b + (a*(GetBlue (New) - cool.gif>>8) );
}
}
else
{
if((*pNew)&0xff000000)
{
uint a, r, g, b;
a = GetAlpha(*pNew);
r = GetRed(*pOld);
r += (a*(GetRed(*pNew) - r))>>8;
g = GetGreen(*pOld);
g += (a*(GetGreen(*pNew) - g))>>8;
b = GetBlue(*pOld);
b += (a*(GetBlue(*pNew) - cool.gif)>>8;
*pOld = MakeColor16(r, g, cool.gif;
}
}
pOld++;
if( pInfo->horz_invert )
pNew--;
else
pNew++;
}

pOld += screenW - Size.x;
if( pInfo->horz_invert )
pNew += pNewImage->size.x + Size.x;
else
pNew += pNewImage->size.x - Size.x;
}

Хотел ещё оптимизировать под MMX и\или SSE, но пока руки не дошли smile.gif
Sadness
         Доброго времени суток, товарищи. :-)

         Замечу сразу, если я нафлудил не куда нужно — убейте тред, а мне в личку галочку, куда это дельце создать. Ну или перенесите, если возможно: я всего лишь пару часов на форуме, не обессудьте! Суть треда описана ниже после маркера (вариант для тех, кто не любит многобукав).

         Собственно какого я тут: я планирую начать делать свою модификацию. Разумеется, всё на эмбриональном уровне, однако я хотел бы отметить, что это даже толком модификацией не назвать, поскольку я не собираюсь ничего привносить в игру. Моя цель — создать простой SoD, с дополнением и/или вырезанием нужного и ненужного соответственно. Насколько мне известно, был некий TE-лайт, но не прижился. И так же знаю точно, что очень-очень неплохо HotA написан без особого затрагивания привычного сюжета игры. Вот мне нужна будет именно такая, SoD-овская модификация. Как это сделать я, к сожалению, пока что не знаю. Перед написанием данного треда, разумеется, я изучил некоторые особенности модостроения, скриптописания и пр. и пришёл к выводу, что так или иначе придётся использовать Era и ERM. Но я хочу полностью избежать WoG-а, как это сделано в HotA (во всяком случае, мне так показалось, это дополнение к SoD, как официально заявлено). Редактирование простеньких текстовых файликов, некоторые графические изменения я осилю. Но я вообще не силён в скриптах, но их можно даже и на заказ сделать, если припрёт — самому научиться, ну или же найти доброго человека, который поддержит данную идею.

Небольшое лирическое отступление.

         Я накачал себе несколько модов, просто поинтересоваться функционалом. Мне никогда не нравился WoG из-за своей лагучести (речь про то время, когда ещё не было никаких 3.58f), поэтому у меня к нему осталось несколько предвзятое мнение, но, несмотря на это, гениальности идеи использовать ERM нужно отдать должное, функционал можно прямо таки в десятки раз увеличить и настроить под себя. Но тем не менее, за всеми модами, патчами, скриптами мы теряем нить игры, ту суть, тот великолепный драйв, который доставляла игра ещё до появления даже первых официальных аддонов AB и SoD (играю я с 1999 года, безумный фанат :-)). Поэтому мне пришла в голову мысль не трогать, так сказать, бедный SoD, который мутузили модами (через WoG или Era), а просто, оставив всё на местах, сделать некоторые косметические улучшения геймплея. Предположительно, данный мод будет предназначен для сетевых игр, а значит и дополнения соответствующие: согласно правилам WT, ТЕ и некоторых, так сказать, местных (a la heroesworld, heroesportal - откуда я и пришёл), что-то нельзя использовать, что-то нельзя строить и т. д. Немного разобравшись в первопричинах таких запретов я понял, что, например, запрет на грейд спрайтов (правила HP) можно ликвидировать, попросту избавившись от безответки. Примеров можно приводить множество. :-)

          Как я уже говорил выше, в своем недопроекте я бы хотел избежать столкновения с WoG. Поэтому первое, что я хотел бы узнать — как это сделать, собственно. Я вполне могу самостоятельно заняться изучением необходимой матчасти, лишь бы хоть где-либо была инструкция. Ну и, в последствие, хотелось бы знать, где и/или кому можно задать вопросы по тем или иным планируемым изменениям.

         Несмотря на количество текста, планируется не титаническая работа, как то HotA, например.

         Спасибо за внимание, модераторов прошу учесть 2 и 3 предложения. И Вам же — отдельное спасибо!
:-)
Sav
Ты знаком с основами реверс-инженеринга или хотя бы просто с тем, как оно всё примерно устроено на низком уровне? Просто если в Воге для написания скрипта нужно всего лишь базовое осознание, что есть программирование, то, чтобы что-то сделать в Соде нужно приложить усилия по поиску, исследованию и модификации соответствующего участка кода. И даже, казалось бы, маленькая правка может потребовать значительных усилий по поиску и исследованию нужного участка кода.
Docent Picolan
не очень ясна осталась главная мысль - в конечном итоге после всего этого, что должно получиться (в идеале, скажем так) на практике? Сод + какие-то дополнения в духе мультиплеера - это понятно. но какие именно, собственно, дополнения? smile.gif
Sadness
Цитата(Sav @ 18 Jun 2012, 01:48) *
Ты знаком с основами реверс-инженеринга или хотя бы просто с тем, как оно всё примерно устроено на низком уровне? Просто если в Воге для написания скрипта нужно всего лишь базовое осознание, что есть программирование, то, чтобы что-то сделать в Соде нужно приложить усилия по поиску, исследованию и модификации соответствующего участка кода. И даже, казалось бы, маленькая правка может потребовать значительных усилий по поиску и исследованию нужного участка кода.

Смотря насколько глубоко копать, верно? :-) С понятием обратной разработки знаком, с технической стороны довольно вкратце, но ничто не мешает научиться, думаю. В принципе планировал сделать свой экзешник, думаю это и есть реверс-инженеринг. Главное ещё знать, где что лежит, на форуме такая темка есть, буду изучать. Опять же, если железно убедиться в том, что в WoG-е можно отключить вообще всё, оставив лишь палитру для изысканий (я имею ввиду только папку для скриптов, а все остальные приложения вплоть до вшитых в .exe — удалить), то можно использовать и WoG.

План прост: для начала нужно подойти со знанием дела, судя по твоему высказыванию, свой "идеальный" вариант я могу и не получить, поскольку слишком многогранный код у SoD, и даже если где-то что-то удалить, потребуется так же удалить и ссылки на вырезанный код, чтобы игра не выдавала ошибок при соответствующем запросе. Честно признаться, хотелось бы найти и поддержку в своих изысканиях. :-)

Цитата(Docent Picolan @ 18 Jun 2012, 02:08) *
не очень ясна осталась главная мысль - в конечном итоге после всего этого, что должно получиться (в идеале, скажем так) на практике? Сод + какие-то дополнения в духе мультиплеера - это понятно. но какие именно, собственно, дополнения? smile.gif

Просты до безобразия. Приведу пару примеров (они заимствованы из существующих ТЕ и WT, что-то своё быть может и придумаю, к примеру те же спрайты без ответок, гр. вампиры без регенерации):
• Извлечение героев сэр Мюллич, Изра, Видомина из списка выбора и из игры в принципе. Так же возможны изменения их специальностей, дабы не нарушат квоту в 16 героев для каждой расы.
• Изменение некоторых условий для построек: отключить зависимость грейда волков от грейда гоблинов, грейда магов от библиотеки и пр. Поменять цены на некоторые постройки (реализуемо уже сейчас путём нехитрого редактирования текстового файлика).
• Графические изменения не планировал, но вполне можно добавить, думаю на это много ума не нужно, главное найти нужный рисунок/нужного человека, который может нарисовать. В финансовом плане (не все ж энтузиасты) в принципе могу постараться, это вопрос надобности. :-)

Продолжать можно довольно долго. Много что попытаюсь заимствовать у ТЕ и WT, с копирайтами, разумеется. Даже, скорее всего, думаю что придётся использовать WoG, я тут ещё кой-чего почитал и пришёл к выводу, что надо бы подключаться к "свежачку". :-)

P.S. Вообще может получиться бездна, как обычно выходит с теми или иными разработчиками: написал одну фичу, в голову пришли ещё десяток. И так по прогрессии... Но изначальные запросы в принципе невелики, возможно и не понадобится самоубиваться в невозможность что-либо изменить своими руками.
Sav
Что до инфы, то тут есть тема "Инженерный анализ". На wforum.heroes35.net тема "Исследование Героев". Там же есть тема с базой иды от ZVS и Gray Face, наверное, лучше начинать прямо с неё, а не с нуля.
Утилиту, заставляющую героев подгружать твою dll я (ну или кто опередит) завтра откопаю.
Могу дать мой написанный некоторое время назад пример, как можно найти кое-что в коде практически с нуля.
Sadness
Цитата
Могу дать мой написанный некоторое время назад пример, как можно найти кое-что в коде практически с нуля.

Буду премного благодарен!
Что до остального — уже изучаю темы. Время не поджимает. :-) Спасибо за отзывчивость
Iv
Такой вопрос, вроде бы ещё не поднимавшийся: можно ли заставить генератор генерить подземку по алгоритму поверхности, чтобы было два равноправных мира?
hippocamus
Вряд ли. Скорее всего этот флаг встроен. Потому что зоны не имеют такой настройки. Нужно перехватывать вызов функции и менять аргументы.
Iv
Помнится, некоторое время назад часть форумчан активно обсуждала возможные призывные юниты для НотА, особенный энтузиазм вызывал элементаль света. Его даже выдернули из ММ.

Задумался, а почему никто из этих энтузиастов не сделал простой мод, переделывающий, например, вызов воздушного элементаля в вызов элементаля света?

Абсолютно все компоненты уже есть
1. Деф элементаля света
2. Возможность добавить его хотя бы как пропущенного монстра №122
3. Возможность спустить нужно заклинание вызова на требуемый уровень
4. Возможность поменять вызов монстра в заклинании

Цитата(feanor)
Changing the creatures summoning by the "Summon @#$%^ elemental" spell

!!UN:C5906498/1/<new monster ID> - summonning fire el. sp.
!!UN:C5906519/1/<new monster ID> - summonning earth el. sp.
!!UN:C5906540/1/<new monster ID> - summonning water el. sp.
!!UN:C5906561/1/<new monster ID> - summonning air el. sp.


Недостаток метода только один - вместо 4 практически одинаковых заклинаний вызова останется только 3 smile.gif
feanor
!!UN:C вроде не совсем правильное, нужно еще в районе 005A96EA поправить номера существ, для работы с повторным призывом.

Ну или что-то в духе

Код
int __fastcall ElementalHook_Body(char *combat_manager, int edx, int spell, int creature, int spellpower, int unk)
{
    char* hero = (char*)(*(int*)(combat_manager+0x53CC));

    if (HasArtifact(hero,ARTIFACT_ELEM_FUSION))
    {
        if (creature == CREATURE_AIR_ELEM) creature = CREATURE_STORM_ELEM;
        if (creature == CREATURE_EARTH_ELEM) creature = CREATURE_MAGMA_ELEM;
        if (creature == CREATURE_FIRE_ELEM) creature = CREATURE_ENERGY_ELEM;
        if (creature == CREATURE_WATER_ELEM) creature = CREATURE_ICE_ELEM;
        
    }

    if (HasArtifact(hero,ARTIFACT_ELEM_FUSION))
    {
        combat_manager[0x132A8+ (*(int*)(combat_manager+0x132C0))*4]=creature;

        *(int*)(0x59F898+1) = CREATURE_ENERGY_ELEM;
        *(int*)(0x59F89F+1) = CREATURE_MAGMA_ELEM;
        *(int*)(0x59F8A6+1) = CREATURE_ICE_ELEM;
        *(int*)(0x59F8AD+1) = CREATURE_STORM_ELEM;
    }
    else
    {
        *(int*)(0x59F898+1) = CREATURE_FIRE_ELEM;
        *(int*)(0x59F89F+1) = CREATURE_EARTH_ELEM;
        *(int*)(0x59F8A6+1) = CREATURE_WATER_ELEM;
        *(int*)(0x59F8AD+1) = CREATURE_AIR_ELEM;
    }

    /*if (HasArtifact(hero,ARTIFACT_ELEM_CONJUR))
    {
        spellpower*=2;
    }*/


    return SummonCreature(combat_manager, spell, creature, spellpower, unk);
}


void ElementalHook()
{

    WriteHook((void*)0x5A2047, (void*)(ElementalHook_Body), HOOKTYPE_CALL);
    WriteHook((void*)0x5A205C, (void*)(ElementalHook_Body), HOOKTYPE_CALL);
    WriteHook((void*)0x5A2071, (void*)(ElementalHook_Body), HOOKTYPE_CALL);
    WriteHook((void*)0x5A2086, (void*)(ElementalHook_Body), HOOKTYPE_CALL);

}
hippocamus
Вообще где-то проскакивала идея - соединить все 4 призывных закла в одно - "Призыв элементаля". Призывается наиболее выгодный вариант (с наиболее прокачаной школой, есть сфера у героя, спецтерритория), или случайный, если нет бонусов. Всё равно несколько разных в одном бою использовать нельзя.
А остальные призывные заклы разбросать по разным уровням, и настроить на других существ - например - бесов, волков, ополченцев (улучшенных крестьян).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.