(06.09.2023 09:16)XEPOMAHT Wrote: [ -> ] (06.09.2023 06:55)Barin Wrote: [ -> ]В чём проблема?
На этом моменте играть дальше невозможно. Окно ошибки так и будет вылазить вместо диалога. Но если полностью выйти из игры - загрузиться и продолжить с того же момента, то диалог как обычно срабатывает.
Твоя проблема в старой версии библиотеки zvslib1.dll. Используй современную платформу ERA, где с помощью плагина wog_native_dialogs.era воговские диалоги выводятся средствами движка самой игры, а не zvslib1.dll.
Да, до сих пор делаю мод на Эре 2.46. Сегодня займусь переносом.
Быть может уйдёт ещё одна давняя проблема: некоторые видеоролики (заставки перед кампаниями) созданные через Smacker Tools - в игре буквально рассыпались и приводили к вылету. А если делал такой ролик без последовательности кадров, т.е 1 картинка как в классических кампаниях - всё работает. Возможно тоже что-то связано с устаревшими библиотеками.
Спасибо!
Code:
class CrExpBon{
static struct CrExpBonStr{
struct {
unsigned Act : 1; // есть/нет
unsigned _un : 31;
} Fl;
char Type; // тип спецспособности
char Mod; // модификатор типа
// char *Descr; // указатель на описание
Byte Lvls[11]; // бонус на уровнях
}Body[MAXCREXPAB][20],Dummy[20];
static struct CrExpBonBFStartStat{
char fA,fD,fH,fm,fM,fS,fO,fP,fR;
int aA,aD,aH,am,aM,aS,aO,aP,aR;
} BFStat[BFNUM];
/// ниже методы...
}
Поле "модификатор типа" может иметь значение >127, например, в самом файле "crexpbon.txt" мы имеем строку:
Code:
151 L #200 0 5 10 15 20 25 30 35 40 45 50 Diamond Dragon: Deflect 100% chance 5%/Rank
где 200 идёт в char Mod.
Т.е. значение > 127 нивелирует способность полностью
Либо ставить лоухук на абилку и проверку значения по адресу 0x71C7AB, либо патчить тип данных в двумерном массиве опыта существ CrExpBon 0x847D98[256][20] - честно, не знаю, как меняется тип данных в exe, так что предложил это. Вероятно, есть решение более элементарное и корректное.
Либо понять, что asm правит миром машин

и
меняем movsx на movzx по адресам:
0071C7A8
0071C7B4
0071C7D3 (ну, мало ли).
-> продолжаем искать баги WoG
по адресу 0075D483 имеем проверку возврата оригинальной ф-ции (004422B0 - int __thiscall BattleStack::GetDefenceAgainst(_BattleStack_ *this, _BattleStack_ *enemy, char includeFrenzy))
если её результат = 0
то в проверке по адресу 0075D483
совершаем прыжок на 0075D564
а там обходим оригинальный возврат ф-ции, прыгая с 0075D565 на 0075D571
Урон Древних Чудищ по копейщикам наносился без бонуса игнорирования защиты, а был даже ниже, чем обычный урон.
Code:
bin patch
0075D565 9090
Code:
с++
_PI->WriteWord(0x75D565, 0x9090);
Очень часто ловлю вылет игры, единственное что смог понять, что это происходит когда идет ход ИИ и когда он нападает на нейтралов. В чем может быть проблема, а главное как её решить?
Berserker, не совсем понял вопрос, я просто нубик не так то и давно играю в Героев) Вообще играю через Heroes Launcher, через который и установил Heroуs era)
Если это не то, то пожалуйста, задайте вопрос по другому чтоб я понял)
Я бы даже скрин ошибки закинул но совсем не понял как это сделать)
(05.02.2025 22:25)ZZIIPP Wrote: [ -> ]Berserker, не совсем понял вопрос, я просто нубик не так то и давно играю в Героев) Вообще играю через Heroes Launcher, через который и установил Heroуs era)
Если это не то, то пожалуйста, задайте вопрос по другому чтоб я понял)
Я бы даже скрин ошибки закинул но совсем не понял как это сделать)
Кажется я тоже словил этот баг, похоже появился около недели назад с последними обновлениями?
Я играю на MacBook Pro 14 M1 Pro в Parallels Windows 11.
Логи закинул в архив:
LOGS
ZZIIPP, нужно упаковать папку Debug в zip/rar и загрузить на любой файловый обменник, вроде dropmefiles.com.
На Discord-сервере есть отдельная ветка с отчётами об ошибках в сборке:
https://discord.gg/9Nkcc8sE
tinkiwinki, спасибо.
Доброго дня!
Огромнейшее спасибо вам за труды и обновления!
Поймал вот такую штуку:
на данный момент играю в WOG
запускаю через лаунчер
версия
HoMM3 HD 5.5 R42 [/align]
h3era hd.exe
суть:
играл в рандомную карту, вышел из игры. На след день зашел, оказалось, что мой капитан числится мертвым. В замке я его восстановить не могу (не предлагает).
Загружая более ранние обновления (и даже самое раннее вообще), капитан везде числится мертвым.
Вы может быть знаете, как это можно исправить?)
Заранее огромнейшее спасибо!
Выберите героя в списке, нажмите TAB и введите: CO-1:D0 E1
Затем Enter.