Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(14.06.2022 17:51)daemon_n Wrote: [ -> ]размер таблицы не так интересен, покуда плагин корректно добавляет новые заклинания для героя и замков, но вот WoG, как я понял, копирует таблицу до хука на изменение таблицы, а потому и эффекта на erm нет
Можешь бинарным патчем увеличить размер данных для копирования из таблицы, дело-то совсем плёвое. У Алекса там памяти на 128 заклов выделено, поэтому можешь копировать все 128, а можешь только реальные, без бланковых. Например в Тифоне у меня 95 заклов всего - хватило за глаза и то, чтобы сделать минимум патчей в коде игры. Но смотри - плагин Алекса переносит функции целиком, т.е. все воговские хуки на магию полетят в тар-тарары.

В Тифоне я сохранил работоспособность воговских хуков, т.к. сам код практически не меняю.
Вместо кода:
_Spell_ Spell[SPELLS_MAX];
нужно написать:
_Spell_ *Spell;
И вместо кода:
// Spell Table
for (int i = SPELL_SUMMON_BOAT; i <= SPELL_ACID_BREATH; ++i)
Spell[i] = o_Spell[i];
надо написать:
Spell=(_Spell_ *)*((int *)0x687FA8);
Это только для начала. Дальше остальное нужно смотреть, в частности, не вылезает ли SPELLS_MAX за границы таблицы WoG.
ZVS, SPELLS_MAX = 96
(14.06.2022 18:05)ZVS Wrote: [ -> ]Вместо кода:
_Spell_ Spell[SPELLS_MAX];
нужно написать:
_Spell_ *Spell;
так дальше всё равно по ссылке передача аргумента
хотя меня смутило, почему там не указатель, ведь в игре именно он и используется
Вопрос был как к реальной таблице WoG обращаться, а не к неработующей с ERM таблицей мода.
В ответ на это - мой код.
Однако, судя по словам XEPOMAHT, там еще куча чего патчится в SoD, а это отдельная история - надо проверять и, возможно, править код и функций тоже.
"так дальше всё равно по ссылке передача аргумента" - где дальше.
Код использования Spell дальше практически не меняется, т.к. адрес статического массива (что сейчас) и указатель на такой же массив где угодно с т.з. C++ практически не отличимы на уровне исходного кода (генерируются инструкции, естественно, различные).
ZVS, на строке 372
Code:
_PI->WriteDword(0x687FA8, (int)&Spell);
в общем, в новом исполнении заклинания не добавляются вообще
daemon_n, это нужно закомментировать.
Посмотрел я DllMain. Там много чего наверняка патчится в SoD поверх WoGовских патчей. Возможно этот мод не очень вообще совместим с WoG (я не в курсе что это за мод и для чего писался).
Есть еще один вопрос. Как подгружаются DLL сейчас. Есть 2 варианта - прописанные в таблице импорта, тогда подгружаются загрузчиком и DllMain вызывается ДО вызова кода WoG (и в памяти еще адрес таблицы SoD) или с помощью LoadLibrary (или аналогов), тогда код DllMain вызывается ПОСЛЕ стартового кода WoG (и в памяти уже адрес таблицы WoG). Почти уверен, что тут второй вариант, но это вопрос к Берсеркеру.
ZVS, тот же эффект: не добавляются спеллы - каким образом плагин сообщает, что заклинания изменены?
daemon_n, это вопрос не ко мне. Системы плагинов не было в WoG, когда я над ним работал.

ZVS, ахахах - я понял: в целом, это и был основной вопрос, когда и что срабатывает - тем не менее сам плагин работает отлично ещё до наших изменений объекта на указатель, но вот erm измененеия не видит, потому и страдает мой мод на исследование заклинаний - буду пока вручную задавать параметры из ini-файла самим же erm, эмулируя тем самым работу плагина.

На всякий случай. Закомментировать нужно обе строчки:
_PI->WriteDword(0x687FA8, (int)&Spell);
_PI->WriteDword(0x59E467 + 3, (int)&Spell);
Ну и я весь код не смотрел - он сильно большой. Может еще что насмотрю - напишу.
(14.06.2022 18:48)ZVS Wrote: [ -> ]На всякий случай. Закомментировать нужно обе строчки:
_PI->WriteDword(0x687FA8, (int)&Spell);
_PI->WriteDword(0x59E467 + 3, (int)&Spell);
Ну и я весь код не смотрел - он сильно большой. Может еще что насмотрю - напишу.
да, это я понял) в общем, предлагаю тебе и Alex'у скооперироваться на
http://heroescommunity.com/viewthread.ph...2929#focus
или в Дискорде - будет универсальный мод на новые заклинания

(14.06.2022 18:25)ZVS Wrote: [ -> ]Есть еще один вопрос. Как подгружаются DLL сейчас.
Либо загрузчиком HD-мода (плагин, о котором мы говорим, рассчитан на загрузку именно им, т.к. его автор - ярый фанат SoD, увы), который грузит пользовательские dll сразу после бараторческих dll, любо загрузчиком эры в середине инициализации самой эры (функция LoadPlugins('dll') с системным вызовом Windows.LoadLibrary). Т.е. примерно время подзагрузки плагинов и там и там не сильно отличается, поэтому некоторые простые содовские плагины работают на эре без перекомпиляции.
(14.06.2022 18:45)daemon_n Wrote: [ -> ]тем не менее сам плагин работает отлично ещё до наших изменений объекта на указатель, но вот erm измененеия не видит, потому и страдает мой мод на исследование заклинаний
Он для СоД отлично написан и отлично там работает, Алекс всё-таки профи в этом деле. Но обо всём, что присутствует в ВоГе по части заклинаний при этом можно благополучно забыть, сам плагин не рекомендуется использовать в ЭРЕ, т.к. он написан совершенно не под ЭРУ (с той же era.dll у него совместимости нет, да и сторонние плагины не увидят новые заклинания и могут при их использовании вылетать). Маячок возможно всё же когда-нибудь додумается его адаптировать под ВоГ (но с той скоростью, с которой он адаптировал Аметист и Эмералд с его безконечными обновлениями и костылями, произойдёт это лет через 10 наверное).
(14.06.2022 18:52)daemon_n Wrote: [ -> ]предлагаю тебе и Alex'у скооперироваться на http://heroescommunity.com/viewthread.ph...2929#focus
или в Дискорде - будет универсальный мод на новые заклинания 
Не, сейчас между русскими и украинцами не самые тёплые отношения. Там уже много раз предлагалось портировать плагин на ЭРУ, но Алекс категорически против участия в этой авантюре (плюс к этому, исходники последней версии своего плагина он выкладывать не хочет - в данный момент заниматься адаптацией старой версии бессмысленно, т.к. она содержит ошибки, исправленные в новой).
XEPOMAHT, в сообщении на HC, ссылку на которое я кинул, содержатся самые последние исходники, так что властью, данной мне мной, я отменяю последний аргумент. Что era, что sod не имеют (явных) политических нарративов. А если человек не хочет, то это только его дело, я считаю.
daemon_n, а можно уточнить, что такого особого в этом моде есть, чего не хватает сейчас и что нельзя уже реализовать?
ZVS, возможность получать из ГМ заклинания существ, колдовать их.
Добавлено несколько новых заклинаний в книгу и прочие объекты
Призывы всех существ флакса, яд, болезнь, облако смерти, страх, абилка вампира, абилка игнора защиты, добавить очков передвижения, взрыв (другой), старение, двойной удар, что-то массовое, неприкасаемость... в общем, новые спеллы, графика и звуки

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15