(13.07.2020 00:12)XEPOMAHT Wrote: [ -> ]Там деление производится не через ERM. Т.к. ошибка в самом коде игры - расчёте жизни после атаки отряда на поле боя (отсутствует проверка на 0 после получения максимального здоровья отряда - программисты из NWC даже в страшном сне не могли такое предугадать).
Да всё правильно, я когда эксперементировал с кодом убийстива стека в какой-то момент пробовал поставить ему 0 жизней и забыл, в обычной битве это ни на что не влияло. Странно что в быстрой битве на такой стек кто-то пытается напасть ведь он помечен мертвым через
Code:
!!UN:C6919200/4/?y10; [y10 combat manager]
!!VRy1:Sx1 *1352 +21708 +y10; [y1 adddress of x1 stack struct]
!!VRy3:Sy1 +234; !!UN:Cy3/1/1; [y3 TMP set stack dead]
Но в любом случае спасибо за помощь, эта проблема с крешем вроде как решена.
Игра без HD-mod'а крашается. Кажется, дело в текстовиках с объектами, так как после того, как я их изменил это стало появляться.
Failed to read data at 0.
EIP: H3era.00600480 (A0_DrawMouseCursor_sub_600430 + 80). Code: C0000005
> Registers
EAX: 00000000 (int: 0)
ECX: 00000780 (int: 1920)
EDC: 00000438 (int: 1080)
EBX: 00000000 (int: 0)
ESP: 02B3F448 (int: 45347912, pint: 0x00000000)
EBP: 02B3F564 (int: 45348196, pint: 0x02B3F5C0 = 45348288)
ESI: 02B3F578 (int: 45348216, pint: 0x00000000)
EDI: 0000000F (int: 15)
> Callstack
H3era.00601E3B (sub_601DE0 + 91)
H3era.004F83B0 (A0_WndProc_sub_4F8290 + 288)
User32.445CB
User32.250DC
User32.39D82
Ddraw.3103D
User32.445CB
User32.250DC
User32.24C7A
User32.2E2CF
Ntdll.7428D
User32.3B5B4
User32.3B424
User32.81F5B
User32.80DF7
User32.817D5
User32.8163B
User32.813EA
H3era.004F3D84 (A0_TerminateGame_sub_4F3D20 + 100)
H3era.00601B5E (sub_601AB0 + 174)
H3era.004F8226 (A0_Create_Main_Window_sub_4F80C0 + 358)
H3era.0061A964 (_WinMainCRTStartup + 224)
Kernel32.16359
Ntdll.67C24
Ntdll.67BF4
> Stack
02B3F434: 00000000 (int: 0)
02B3F438: 00000000 (int: 0)
02B3F43C: 00000000 (int: 0)
02B3F440: FFFFFFFE (int: -2)
02B3F444: 02B3F564 (int: 45348196, pint: 0x02B3F5C0 = 45348288)
02B3F448*: 00000000 (int: 0)
02B3F44C: 00000000 (int: 0)
02B3F450: H3era.006806F6 (unk_680006 + 1776) (int: 6817526, pint: 0x00000000)
02B3F454: 00000000 (int: 0)
02B3F458: 00000000 (int: 0)
02B3F45C: 80006010 (int: -2147459056)
02B3F460: 00000001 (int: 1)
02B3F464: H3era.006806F6 (unk_680006 + 1776) (int: 6817526, pint: 0x00000000)
02B3F468: Coremessaging.20D00 (int: 1692208384, pint: 0x8BEC8B55)
02B3F46C: Win32u.2C0C (int: 1964715020, pint: 0x90001CC2)
02B3F470: 02B3F4D4 (int: 45348052, pint: 0x02B3F530 = 45348144)
02B3F474: User32.464E0 (int: 1965253856, pint: 0x8B55FF8B)
02B3F478: 7D0FE578 (int: 2098193784)
02B3F47C: FFFFFFFE (int: -2)
02B3F480: 02B3F4E4 (int: 45348068, pint: 0x02B3F520 = 45348128)
02B3F484: User32.24C7A (int: 1965116538, pint: 0x64E44589 = 1692681609)
02B3F488: Ddraw.30FC0 (int: 1611993024, pint: 0x8B55FF8B)
02B3F48C: 00000000 (int: 0)
02B3F490: 00000014 (int: 20)
02B3F494: 3D0109C0 (int: 1023478208)
02B3F498: 00000000 (int: 0)
02B3F49C: 00371000 (int: 3608576, pint: 0x00373000 = 3616768)
02B3F4A0: 00000001 (int: 1)
02B3F4A4: 0A94B29C (int: 177517212, pint: 0x00000000)
02B3F4A8: 0000000F (int: 15)
02B3F4AC: Ntdll.88500 (int: 2000913664, pint: 0x116825FF = 292038143)
02B3F4B0: 00000000 (int: 0)
02B3F4B4: 039F2A00 (int: 60762624, pint: 0x006806F6 = 6817526)
02B3F4B8: 0EB64BF8 (int: 246828024, pint: 0x64E09DF0 = 1692442096, str: "рќаdаЩаd\x00")
02B3F4BC: 02B3F4D0 (int: 45348048, pint: 0x02B3F4E0 = 45348064)
02B3F4C0: 00000000 (int: 0)
02B3F4C4: H3era.006806F6 (unk_680006 + 1776) (int: 6817526, pint: 0x00000000)
02B3F4C8: 00000001 (int: 1)
02B3F4CC: 02B3F4A4 (int: 45348004, pint: 0x0A94B29C = 177517212)
02B3F4D0: 02B3F4E0 (int: 45348064, pint: 0xFFFFFFFE)
(14.08.2020 22:29)Grossmaster Wrote: [ -> ]Кажется, дело в текстовиках с объектами, так как после того, как я их изменил это стало появляться.
Судя по логу, у тебя ноль в BackBufferSurface, а там должна быть какая-то структура с адресом другой структуры и вызовом из неё по адресу 80h.
Ребята всем привет)не знаю куда обратится,скачал у вас крутую сборку HoMM3 ERA 3.0.3 + HD-mod 5.0 RC94 + ERA SCRIPTS.Все очень Круто,но минус один, играю в одного против компьютера и часто возникает,такая ошибка,и происходит она из за того,что любой герой ИИ,нападает на монстра,а дальше просто ошибка и все вылетает,дамбы не разобрался где находятся,но просто прикреплю фото

AI attacks enemy leads to crash sounds familiar

teyllor, привет. Скинь сейв
PerryR, you mean trying to play sounds in battle with igrik's plugin on AiVsAi fix on lead to crash?
Say, in !?BG0 script tries to play animation with sound?
teyllor, это было исправлено вчера. Ближе к ночи. Просто перекачай сборку
daemon_n, Большое спасибо все перетестил,все работает)))
Не могу понять, отчего вылетает.
Странная штука, определил, что дело в Волшебницах и Краш при нападении ими на Сокровищницу гномов. В 2.9.14 такого не случалось раньше, моды и скрипты почти одинаковые в использовании были, но в 3.0 началось. При этом на тестовой, если беру волшебниц и нападаю на сокровищницу - нету вылета.
Debug папка, в которой сейв.
Это сохранение в основе которой игра по сети, где краш происходил на первом нападении, но при тесте из сохраненной он происходит только если нажать бой и в бою прожать Q - быстрый бой. Тогда вылетает. Герой - Дракон.
P.S. Вылетает не всегда, 3 из 5 случаев. Если не вылетело сразу - нужно перезагрузить сейв.
По ЕРМ логу не видно проблемы. Ошибка говорит о том, что кончилась оперативная память. Вылет далее связан, видимо, с попыткой записать данные в невыделенную область памяти. Затрудняюсь сказать, где зарыта собака.
Berserker, нет нет. Тут раздельно рассматривать нужно, я наверно неправильно выразился.
В 3.0 просто вылет, когда нападаю на сокровищницу гномов. Сейв и дебаг оттуда.
А скрин - это я ТОТ ЖЕ сейв попробовал запустить на 2.9.14, просто проверить будет ли подобный вылет или нет. Меня просто удивила формулировка при загрузке, я такое впервые увидел. Раньше из более новой версии загружая сейв в старой я такого не встречал.
Night, автобой включён? Вылет до появления поля боя?
Berserker, Да, автобой включён. И вылет до появления. С этим поясню:
Когда играется игра, то вылет происходит прям мгновенно по нападении и если стоит автобой. Потом мы загружались пару раз, убирали авто-бой и снова нападали - также вылетало. Но! Проверяя сейчас скинутый save по ссылке ранее, то я там не могу 100% выловить краш, где-то 3 из 5 при автобое. Не знаю почему так. Возможно вылет на игроке синем, а это у меня брат играет, на втором компе. А я проверяю на своём и спустя перезагрузку Винды.
Чёрт знает, дело в памяти видимо, раз в 2.9.14 сообщение об этом.
Вылет ТОЛЬКО на связке: Волшебницы в армии и Нападение на сокровищницу. Ранее думал проблема в скрипте "Усиленние гномов" из Era Script, но последние 2 игры играем без него...
Berserker, ещё баг нашёл, более явный. Не работает заклинание "
Неудача" от каста комплекта "
Доспехи Проклятого"
Анимация проходит, заклинание исправно накладывается,
но снижение удачи на существе НЕТ. Если самому кастануть заклинание Неудача на таких монстров, то будет исправно
-2 указано.
Проверял в
2.9.14 и в
3.0.4 одинаково.