(24.12.2020 07:23)Berserker Wrote: [ -> ]Вылет при переигрывании нужно смотреть igrik-у, скорее всего:
> Callstack
H3era hd.00473AA0
Wog native dialogs.E032 (?CreateNewBattleLogDlg@@YAXPAU_BattleMgr_@@@Z + 1170)
Причем здесь Баттлог, когда вылет внутри функции 473A9B call BattleMgr_PlayWaitAnim()?
К тому же даже с отключенным WND вылет остаётся.
Berserker, ты уверен, что твой лог правильно генерируется?
igrik, смещение 1170 намекает на то, что это конец функции или всё же за ней. Генерируется верно, если Debug-файл актуальный (а он в сборках может быть не актуальный совсем). Но вылет именно на переигровке, которая, как ни крути, не является встроенной механикой.
Вылет не из-за переигровки. Вылет из-за скриптов, которые не поддерживают переигровку. И это факт.
У данных граждан есть 2 выхода на выбор: либо найти бажный скрипт и адаптировать его под плагин, либо не пользоваться плагином переигровки вовсе.
Я не буду лезть в плагин, потому что он работает стабильно (во всяком случае без скриптов уж точно). А что там делают скрипты - я не знаю.
Да, Debug-файл сто процентов не актуальный.
Вылет снова при обращении к дефу одного из отрядов. Как такое выходит, что у отряда отсутствующий деф, я не знаю. Возможно, ему проставлен флаг живого, тип и количество, хотя сам отряд отсутствует. Сложно сказать.
Понял, зря побеспокоил, не поругайтесь только. Там этот персонаж днём еще дебагов накидал, видимо у него там явно где-то что-то не здоровое...
Panda, спасибо за отчёты, все важны.
$ <= $\Mods\BattleQueue [Overwrite = 0, Flags = 0, $ = "C:\Games\HoMM3 ERA"]
$ <= $\Mods\WoG Animated [Overwrite = 0, Flags = 0, $ = "C:\Games\HoMM3 ERA"]
Возможно, стоит попробовать выключить эти мода или один из них. Раз вылет на анимации ожидания, то где-то был плагин на одновременные анимации. Тестировать нужно.
Berserker, я больше не принимаю отчетов, что виноват WND или переигрываемая битва без конкретных аргументов в причине бага. Это был очень показательный пример, и я потратил хреналион времени чтобы найти причину вылета. В следующий раз я этой хернёй заниматься не буду.
Теперь о причине - проблема вылета скрипте "23 wog - enhanced war machines 2.erm"
Решение проблемы - добавить проверку на тактику.
Если копнёшь глубже, то поймешь почему происходит вылет при переигровке.
Короче WoG Scripts как обычно - доставляет.
А ещё махинации с несуществующим монстром 124 - отличное место для потенциальных багов.
(24.12.2020 19:51)Berserker Wrote: [ -> ]Но вылет именно на переигровке, которая, как ни крути, не является встроенной механикой.
А скрипты являются встроенной механикой?
igrik,
Berserker, спасибо за разъяснения. Мне 24 wog - enhanced war machines 1 никогда проблем не доставлял, я не знаю, как получить тот вылет при заходе в город. Сохранения чел не предоставил. С 23 wog - enhanced war machines 2.erm никогда не играл, и даже не заглядывал в этот скрипт. Может позже загляну и добавлю, если настроение будет
Code:
; добавить эту проверку
!!BU:T?y1; !!FU&y1=1:E;
Berserker, вот, очередной отчет+сохранение, говорит, что актуальный: "Еще стабильный вылет если переиграть нападение после пропуска хода".
https://yadi.sk/d/n6hSWHpXs1T3nQ
Panda, такую вот штуку заметил. Из Хелпа:
Quote:В ERM-сообщениях (M- и Q-команды) вы можете использовать специальный синтаксис показа:
“%Dd” → текущий день недели
“%Dw” → текущую неделю
“%Dm” → текущий месяц
“%Da” → текущий день с начала игры
и раньше так и было.
Теперь же “%Dm” - показывает день недели, а “%Dd” - месяц
igrik, я, наверное, не совсем понятно выразился.
Quote:Но вылет именно на переигровке, которая, как ни крути, не является встроенной механикой.
Может быть два источника бага:
1) Гипотетически неучтённый момент в состоянии игры, который проявляется только при повторе битвы.
2) Переменные/события скриптов, не рассчитанных на переигрывание.
Но так как тема не по скриптам или плагинам, а по движку, то я не вижу, что исправлять в движке в этих случаях. Потому ты прав, лучше забить на такие вылеты.
Panda, вылет идентичен предыдущему с той же причиной.
Quote:Если копнёшь глубже, то поймешь почему происходит вылет при переигровке.
Судя по цитате, скрипт не делает отличий между тактической фазой и нетактической или криво определяет тактическую фазу.
SergOz, исправил, спасибо.
Berserker, а я у себя могу иправить, чтобы не переустанавливать?
SergOz, нет пока. Но можешь сам получить нужные значения:
месяц = (день - 1) / 28 + 1
день недели = (день - 1) %7 + 1
Berserker, понял, спасибо, значит отбой.
Сейчас остался только баг с зависанием игры при передаче хода. daemon_n, уже в курсе, и там не только скрипт, но и ядро исправлять надо. Как только он вернется, там уже порешаете эту проблему.