Current time: 25.11.2024, 14:58 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA / WOG - сетевая игра и проблемы с ней
» Очень актуальная тема на день её создания
Author Message
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #181

(14.06.2022 17:51)daemon_n Wrote:  размер таблицы не так интересен, покуда плагин корректно добавляет новые заклинания для героя и замков, но вот WoG, как я понял, копирует таблицу до хука на изменение таблицы, а потому и эффекта на erm нет

Можешь бинарным патчем увеличить размер данных для копирования из таблицы, дело-то совсем плёвое. У Алекса там памяти на 128 заклов выделено, поэтому можешь копировать все 128, а можешь только реальные, без бланковых. Например в Тифоне у меня 95 заклов всего - хватило за глаза и то, чтобы сделать минимум патчей в коде игры. Но смотри - плагин Алекса переносит функции целиком, т.е. все воговские хуки на магию полетят в тар-тарары. 148 В Тифоне я сохранил работоспособность воговских хуков, т.к. сам код практически не меняю.
14.06.2022 18:04
Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #182

Вместо кода:
_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.
14.06.2022 18:05
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #183

ZVS, SPELLS_MAX = 96

(14.06.2022 18:05)ZVS Wrote:  Вместо кода:
_Spell_ Spell[SPELLS_MAX];

нужно написать:
_Spell_ *Spell;

так дальше всё равно по ссылке передача аргумента
хотя меня смутило, почему там не указатель, ведь в игре именно он и используется


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 18:08
Visit this user's website Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #184

Вопрос был как к реальной таблице WoG обращаться, а не к неработующей с ERM таблицей мода.
В ответ на это - мой код.
Однако, судя по словам XEPOMAHT, там еще куча чего патчится в SoD, а это отдельная история - надо проверять и, возможно, править код и функций тоже.

"так дальше всё равно по ссылке передача аргумента" - где дальше.
Код использования Spell дальше практически не меняется, т.к. адрес статического массива (что сейчас) и указатель на такой же массив где угодно с т.з. C++ практически не отличимы на уровне исходного кода (генерируются инструкции, естественно, различные).
(This post was last modified: 14.06.2022 18:16 by ZVS.)
14.06.2022 18:12
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #185

ZVS, на строке 372
Code:
_PI->WriteDword(0x687FA8, (int)&Spell);

в общем, в новом исполнении заклинания не добавляются вообще


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 18:22
Visit this user's website Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #186

daemon_n, это нужно закомментировать.

Посмотрел я DllMain. Там много чего наверняка патчится в SoD поверх WoGовских патчей. Возможно этот мод не очень вообще совместим с WoG (я не в курсе что это за мод и для чего писался).
Есть еще один вопрос. Как подгружаются DLL сейчас. Есть 2 варианта - прописанные в таблице импорта, тогда подгружаются загрузчиком и DllMain вызывается ДО вызова кода WoG (и в памяти еще адрес таблицы SoD) или с помощью LoadLibrary (или аналогов), тогда код DllMain вызывается ПОСЛЕ стартового кода WoG (и в памяти уже адрес таблицы WoG). Почти уверен, что тут второй вариант, но это вопрос к Берсеркеру.
(This post was last modified: 14.06.2022 18:34 by ZVS.)
14.06.2022 18:25
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #187

ZVS, тот же эффект: не добавляются спеллы - каким образом плагин сообщает, что заклинания изменены?


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 18:30
Visit this user's website Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #188

daemon_n, это вопрос не ко мне. Системы плагинов не было в WoG, когда я над ним работал. Ab
14.06.2022 18:36
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #189

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


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 18:45
Visit this user's website Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #190

На всякий случай. Закомментировать нужно обе строчки:
    _PI->WriteDword(0x687FA8, (int)&Spell);
    _PI->WriteDword(0x59E467 + 3, (int)&Spell);

Ну и я весь код не смотрел - он сильно большой. Может еще что насмотрю - напишу.
14.06.2022 18:48
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #191

(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
или в Дискорде - будет универсальный мод на новые заклинания Spiteful


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 18:52
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #192

(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
или в Дискорде - будет универсальный мод на новые заклинания Spiteful

Не, сейчас между русскими и украинцами не самые тёплые отношения. Там уже много раз предлагалось портировать плагин на ЭРУ, но Алекс категорически против участия в этой авантюре (плюс к этому, исходники последней версии своего плагина он выкладывать не хочет - в данный момент заниматься адаптацией старой версии бессмысленно, т.к. она содержит ошибки, исправленные в новой).
(This post was last modified: 14.06.2022 19:11 by XEPOMAHT.)
14.06.2022 19:06
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #193

XEPOMAHT, в сообщении на HC, ссылку на которое я кинул, содержатся самые последние исходники, так что властью, данной мне мной, я отменяю последний аргумент. Что era, что sod не имеют (явных) политических нарративов. А если человек не хочет, то это только его дело, я считаю.


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 19:25
Visit this user's website Find all posts by this user Quote this message in a reply
ZVS Offline

Posts: 500
Post: #194

daemon_n, а можно уточнить, что такого особого в этом моде есть, чего не хватает сейчас и что нельзя уже реализовать?
14.06.2022 19:36
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #195

ZVS, возможность получать из ГМ заклинания существ, колдовать их.

Добавлено несколько новых заклинаний в книгу и прочие объекты

Призывы всех существ флакса, яд, болезнь, облако смерти, страх, абилка вампира, абилка игнора защиты, добавить очков передвижения, взрыв (другой), старение, двойной удар, что-то массовое, неприкасаемость... в общем, новые спеллы, графика и звуки Yes


Image: widget.png?style=banner2

Новейший Heroes Launcher
14.06.2022 19:37
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group