14.06.2022, 16:34
14.06.2022, 16:37
ZVS, на данный момент ту, которую я должен обновить - именно там я удалил все лишние файлы и поместил нужные скрипты.
Скачать их можно отдельно на git
ZVS, лучше скажи, как мне пропатчить воговскую таблицу заклинаний
а то тут плагин на новые заклинания сделали, но ERM его не видит
_PI->WriteDword(0x687FA8, (int)&Spell); - патч содовской таблицы, но вод где и когда патчить erm?
Скачать их можно отдельно на git
ZVS, лучше скажи, как мне пропатчить воговскую таблицу заклинаний

а то тут плагин на новые заклинания сделали, но ERM его не видит
_PI->WriteDword(0x687FA8, (int)&Spell); - патч содовской таблицы, но вод где и когда патчить erm?
14.06.2022, 16:59
(14.06.2022 16:37)daemon_n Wrote: [ -> ]как мне пропатчить воговскую таблицу заклинаний![]()
а то тут плагин на новые заклинания сделали, но ERM его не видит
Лично я все новые заклинания пишу в оригинальную воговскую таблицу, т.к. в WoG TE (экзешник которой используется в ЭРЕ) эта таблица уже пропатчена и расширена авторами ВоГа. То, что автор плагина тупо скопировал код с аналогичного содовского плагина, забыв о нововведениях ВоГа - проблема автора плагина (у него опыта в написании плагинов уже почти 10 лет, но вот почему-то качество его dll по-прежнему хромает, хотя теоретически он уже вполне должен был работать на уровне Сава или Игрика, но... ему ещё нужно учится и учиться...).
(14.06.2022 16:37)daemon_n Wrote: [ -> ] _PI->WriteDword(0x687FA8, (int)&Spell); - патч содовской таблицы, но вод где и когда патчить erm?
Здесь:
// Spells support
{0x59E467+3,DS(Spells),4},
{0x687FA8,DS(Spells),4},
Т.к. адрес базовый, то и патч крохотный. А ВоГ традиционно использует ПРЯМУЮ адресацию (базовая - только в ассемблерных вставках), поэтому там - уже колбаса.
14.06.2022, 17:08
XEPOMAHT, проблема совместимости здесь в том, что воговская таблица подразумевает использование заклинаний существами, а не героями, а потому последующие изменения и расширения не очень легко устроить
P.S.: за адрес спасибо - попробую сделать
P.P.S.: кажется, не сработало
P.S.: за адрес спасибо - попробую сделать

P.P.S.: кажется, не сработало
14.06.2022, 17:15
daemon_n, "должен обновить" означает, что стоит подождать обновления?
Отдельно я бы не качал, т.к. хотел бы полную сборку.
По поводу правки таблицы заклинаний. Я исходники WoG не видел 18 лет...
Ну так, посмотрел, что с тех пор осталось.
ERM использует копию таблицы из SoD.
Сама таблица находится после строк "{"ZMGC03.def", "MGblock3",1}" (это конец таблицы анимаций магии).
Таблица SoD копируется в таблицу WoG так (первый - адрес таблицы SoD):
{(Byte *)0x6854A0,(Byte *)Spells,sizeof(_Spell_)*SPELLNUM_0}, //
Адреса в памяти SoD таблицы подменяются на адрес WoG таблицы (адреса слева):
{0x59E467+3,DS(Spells),4},
{0x687FA8,DS(Spells),4},
Это по старым исходникам.
Или не эта инфа нужна?
Отдельно я бы не качал, т.к. хотел бы полную сборку.
По поводу правки таблицы заклинаний. Я исходники WoG не видел 18 лет...
Ну так, посмотрел, что с тех пор осталось.
ERM использует копию таблицы из SoD.
Сама таблица находится после строк "{"ZMGC03.def", "MGblock3",1}" (это конец таблицы анимаций магии).
Таблица SoD копируется в таблицу WoG так (первый - адрес таблицы SoD):
{(Byte *)0x6854A0,(Byte *)Spells,sizeof(_Spell_)*SPELLNUM_0}, //
Адреса в памяти SoD таблицы подменяются на адрес WoG таблицы (адреса слева):
{0x59E467+3,DS(Spells),4},
{0x687FA8,DS(Spells),4},
Это по старым исходникам.
Или не эта инфа нужна?
14.06.2022, 17:21
(14.06.2022 17:08)daemon_n Wrote: [ -> ]проблема совместимости здесь в том, что воговская таблица подразумевает использование заклинаний существами, а не героями, а потому последующие изменения и расширения не очень легко устроить
Вроде нет, вот видим, что ВоГ выделает память для таблицы заклинаний согласно структуре:
Code:
extern _Spell_ Spells[SPELLNUM];
Если ты делаешь то же самое в плагине, то работать в купе с воговским кодом уже не будет (т.к. воговский код не использует базовую адресацию и всегда будет читать напрямую из памяти вога, а не твоего плагина).
Лично у меня в Тифоне монстры колдуют из воговской таблицы, куда во время загрузки и пишутся все данные редактора заклинаний, включая новые бланковые заклинания (которые так же видит и редактор монстров для назначения их любым монстрам в игре).
14.06.2022, 17:24
ZVS, да, в ближайшие дни будет обнова
адреса нужны, спасибо - шаманю потихоньку -видимо, надо оба патчить. всё так и сделано - игра вполне справляется с новыми параметрами, а вот ERM - нет
Просто всё ещё сложно понимать всё это, даже освоив с++ базу
XEPOMAHT, тогда придётся идти на радикальны меры и вручную вносить каждый параметр из плагина в новую таблицу через un:c
адреса нужны, спасибо - шаманю потихоньку -

Просто всё ещё сложно понимать всё это, даже освоив с++ базу

XEPOMAHT, тогда придётся идти на радикальны меры и вручную вносить каждый параметр из плагина в новую таблицу через un:c

14.06.2022, 17:29
(14.06.2022 17:24)daemon_n Wrote: [ -> ]тогда придётся идти на радикальны меры и вручную вносить каждый параметр из плагина в новую таблицу через un:c
Нет. Повторяю ещё раз для тех, кто не понимает: в плагине на новые заклинания используй ВОГОВСКОЕ АДРЕСНОЕ ПРОСТРАНСТВО. Там памяти выделено на 200 заклинаний - неужели тебе этого мало???
14.06.2022, 17:35
XEPOMAHT, всё ещё не понимаю - в какой именно момент я должен переадресовать туда?
и "туда" это "куда"?
начнём с того, что в городах и у героя используется таблица по адресу 0x687FA8
и "туда" это "куда"?
начнём с того, что в городах и у героя используется таблица по адресу 0x687FA8
14.06.2022, 17:40
Таблица SoD копируется в таблицу WoG при старте игры (запуск exe). После этого таблица SoD никак не используется - все внесенные в нее изменения после копирования будут проигнорированы. Изменения надо делать прямо в WoG таблице.
"Туда" (адрес WoG таблицы) найти можно, например, по адресу 0x59E46A или 0x687FA8. По этим адресам будет адрес таблицы заклинаний WoG сразу после ЗАПУСКА. В образе файла на диске (вне запуска) там будет адрес таблицы SoD.
Это если ЭТОТ код WoG не менялся с момента моего отхода от дел.
"Туда" (адрес WoG таблицы) найти можно, например, по адресу 0x59E46A или 0x687FA8. По этим адресам будет адрес таблицы заклинаний WoG сразу после ЗАПУСКА. В образе файла на диске (вне запуска) там будет адрес таблицы SoD.
Это если ЭТОТ код WoG не менялся с момента моего отхода от дел.
14.06.2022, 17:42
ZVS, ааа, вот теперь дошло - то есть надо делать намного раньше?
или поместить плагин в "beforeWog"?
или поместить плагин в "beforeWog"?
14.06.2022, 17:44
(14.06.2022 17:35)daemon_n Wrote: [ -> ]всё ещё не понимаю - в какой именно момент я должен переадресовать туда?
и "туда" это "куда"?
У тебя сейчас в плагине такая запись:
Code:
_Spell_ Spell[SPELLS_MAX];
Для ВоГа её быть НЕ ДОЛЖНО. Просто избавься от неё (правда, плагин придётся переписать чуть ли не весь). Если не понятно, что это вообще такое и с чем это едят, то... придётся учится кодингу. Просто знания Си++ тебя не спасут.
(14.06.2022 17:35)daemon_n Wrote: [ -> ]начнём с того, что в городах и у героя используется таблица по адресу 0x687FA8
Начни с учёбы по кодингу. Ты совершенно не понимаешь, что "по адресу 0x687FA8" нет никакой таблицы. Там обычный dword и ничего более.
Учиться, учиться, учиться и ещё раз учиться, а не пытаться что-то сделать в готовом си-шном коде методом научного тыка.
14.06.2022, 17:50
C и C++ достаточно низкоуревневы. Там не трудно написать любые преобразования адресов, не хуже чем на asm.
Я могу посоветовать что-то с настройкой кода, но где плагин посмотреть весь?
Я могу посоветовать что-то с настройкой кода, но где плагин посмотреть весь?
14.06.2022, 17:51
XEPOMAHT, размер таблицы не так интересен, покуда плагин корректно добавляет новые заклинания для героя и замков, но вот WoG, как я понял, копирует таблицу до хука на изменение таблицы, а потому и эффекта на erm нет
ZVS, ссылка на плагин и ресурсы для игры
Или ссылка на оригинальный код от AlexSpl
ZVS, ссылка на плагин и ресурсы для игры
Или ссылка на оригинальный код от AlexSpl
14.06.2022, 18:03
XEPOMAHT, я понимаю, что по адресу 0x687FA8 указатель на таблицу, которая лежит по адресу 0x6854A0
И процесс обучения подразумевает ошибки и консультации с теми, кто понимает
Так что за незнание и непонимание я себя не корю, а лишь ищу возможность разобраться
И процесс обучения подразумевает ошибки и консультации с теми, кто понимает

Так что за незнание и непонимание я себя не корю, а лишь ищу возможность разобраться
