Wake of Gods Forum | Форум Во Имя Богов

Full Version: ERA III
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(12.02.2021 14:28)Raistlin Wrote: [ -> ]Единственное, в новый ехе придется ведь подгрузить era.dll и еще пару библиотек? Если да, то как это сделать? Вот так получится?
Code:
call loadlib
db "mydll.dll", 0
Code:
loadlib:
call LoadLibraryA
jmp OriginalEntryPoint


Имелось в виду, что они будут работать из одной папки с разных exe. Но сама ЭРА написана под адресное пространство WoG 3.59 TE. В последнем WoG 3.59 адреса будут совершенно другими, поэтому просто так "на халяву" ничего не заработает - для объединения ERA и WoG 3.59 придётся основательно и мучительно повозится с исходными кодами обоих проектов (плюс к этому отвалится поддержка HD-мода и почти всех эровских плагинов, поэтомы смысла в этом нет абсолютно никакого).
Я когда то пробовал ставить эру II на 3.59, ничего хорошего не вышло. Думаю, с эрой III тем более не должно пойти
Благодарю за ответы, вероятно, все действительно так и будет.
Да, либо 3.59 допиливать, либо Эру. 3.59 по исходникам перспективнее, Сергей по сути колоссальный объём работы сделал.
Но ведь и Вы тоже... Как по мне, ни то, ни другое не должно пропадать, может быть есть возможность, например, несколько изменить код Сергея, чтобы он работал в условиях Эры в форме отдельных плагинов? Насколько это сложно, как бы Вы оценили?
Hi, Berserker, I want to ask for your help with a question from a mapmaker.

For some reasons, loading any save game from his map results in CTD with the latest ERA. You can easily reproduce the issue by saving at day 1 and loading after.

Map + debug

I believe the debug info is very straight forward, only I could not read it. Could you advise what might be wrong?
Raistlin, я глубоко не копал, возможно, тебе удастся. Нет времени/ресурсов.

Archer30, ---------------------------
Heroes of Might and Magic® III Map Editor
---------------------------
Invalid or corrupt map file.

I cannot advice anything. Crash is on regular H3 function.
Thank you Berserker, I understand that Yes
Berserker, я думаю, многое можно обратить в плагины и использовать таким образом. Кстати, не могли бы Вы подсказать мне, как правильно записать данные в сохранение? У меня есть некий двумерный массив, я вызываю функцию "WriteSavegameSection" в событии "OnBeforeSaveGame" и передаю ей в качестве параметров размер, имя массива (пробовал ссылку, но не помогло) и строку с названием секции. В "OnAfterLoadGame" у меня вызывается "ReadSavegameSection", аргументы такие же. Результата, к сожалению, нет.
Raistlin, в событии OnSavegameWrite нужно вызывать WriteSavegameSection с указанием адреса массива (в С++ — как раз просто имя) и размером массива в байтах.
Рекомендую иметь свою секцию/ии с уникальными именем. Первое поле писать uint32 с размером массива, затем сам массив.

В OnSavegameRead делаешь так:

Code:
int arraySize;

if (ReadSavegameSection(sizeof(arraySize), (void*) &arraySize, 'section name')) == sizeof(arraySize) && arraySize = макрос_получения_размера_массива(...)) {
  Так, всё верно:
  1) Плагин ранее записал данные, поскольку мы прочитали заголовок в 4 байта
  2) Записанный размер массива равен реальному размеру, значит плагин не устарел, та же версия
}
Мои секции называются в стиле Era.PO, Era.Triggers и т.д.
Если сохраняешь строки, то сперва пиши int32 длину строки, затем её содержимое. Читай также. В Эре есть высокоуровневая обвязка с функциями вида ReadInt, ReadStr, ReadByte.
Berserker, я понял, большое спасибо! 132
Читать/писать в секцию можно много раз, порциями. Это как файл с отслеживаемой позицией.
Berserker, это важная деталь, буду иметь ввиду. Еще раз спасибо!
Пожалуйста Ab
A strange bug report here:

Building Wall of Knowledge for Sandro results in a CTD. If Sandro is not in the town, then everything works fine.

debug+save

I removed all mods and refreshed with F12. Problem persisted. What could be wrong 105
Reference URL's