![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#341
|
|
![]() Etoslozhnostatus Сообщений: 8 573 Спасибо сказали: 15946 раз ![]() |
Сегодня решил разобраться отчего HotA во время хода ИИ ставит себе высокий приоритет, из-за которого виснут остальные пользовательские (и не только) процессы, в частности, внешняя музыка сильно заикается. Такое же поведение наблюдалось при создании случайных карт в игре.
Оказалось, что это не HotA, а HD-mod так себя ведёт, который для удобства я всегда ставлю, поскольку вызов функции SetPriorityClass нет ни в одном .exe или .dll от HotA-SoD, зато есть в _HD3_.dll. Зачем это вообще нужно было делать? Может стоит убрать? -------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
![]()
Сообщение
#342
|
|
![]() Сообщений: 2 042 Спасибо сказали: 8098 раз ![]() |
Игра скрашилась сразу после открытия поля боя, когда нажал "переиграть быструю битву":
Или краш связан с HotA, а не HD-модом? |
|
|
![]()
Сообщение
#343
|
|
![]() Immortal Сообщений: 2 768 Спасибо сказали: 959 раз ![]() |
http://youtu.be/-3fV_zn43wQ
https://yadi.sk/d/lHQ2Tx5RaLxDo Цитата(Алгор) Перепроверил: баг действительно только с последними версиями HD. С модом не связан - возникает и на чистом WoG с отключенными паками, расширениями и всем, чем можно в _HD3_.ini
fireman, не отсылал ссылку на видео и лог baratorch'у? Я помню, о его нежелании поддерживать ВоГ, Эру и пр. проекты, но тут уже явная проблема с базовым функционалом, которую он планировал таки оставить для всех. |
|
|
![]()
Сообщение
#344
|
|
![]() Advanced Member Сообщений: 120 Спасибо сказали: 77 раз ![]() |
Изучал вот код спрятанного Heroes3 и нашел вот такую ошибку в коде .
Должен произойти переход на адрес которого нет в программе. Или эта локация которая не используется и ее можно удалить ? Спрашиваю потому что ищу свободное место для процедуры |
|
|
![]()
Сообщение
#345
|
|
Immortal Сообщений: 9 438 Спасибо сказали: 3941 раз ![]() |
^
Код неправильно дизассемблирован. Там команда начинается с адреса 0x617DA1, а не 0x617DA2. А вообще, это код функции memcpy (0x617B50), и используется игрой весьма активно. --- При колдовстве двери измерений та часть карты, которая должна затемняться при игре онлайн постепенно "сгущает" своё затемнение, и через несколько секунд после открытия диалога ДД становится совсем чёрной. В сингле и хотсите такого эффекта нет (но ловится при при тесте с коннектом 2 версий Героев с 1 компа). |
|
|
![]()
Сообщение
#346
|
|
![]() допустим, мяў Сообщений: 24 065 Спасибо сказали: 13375 раз ![]() |
Это ты сам себе пишешь, чтоб не забыть? )
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
![]()
Сообщение
#347
|
|
![]() 😸🧡✊✌️ Сообщений: 16 396 Спасибо сказали: 3231 раз ![]() |
Не, просто эффект прикольный.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#348
|
|
Immortal Сообщений: 9 438 Спасибо сказали: 3941 раз ![]() |
При чём тут я, если это баг HD? Он касается исключительно HD-шного функционала.
|
|
|
![]()
Сообщение
#349
|
|
![]() Etoslozhnostatus Сообщений: 8 573 Спасибо сказали: 15946 раз ![]() |
.text:00617DD6 popa .text:00617DD7 add [esi+edi*2], cl .text:00617DDA popa .text:00617DDB add [esi+edi*2], dl .text:00617DDE popa Эти три попы верно сигнализируют, что что-то не так с дизассемблированием. -------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
![]()
Сообщение
#350
|
|
![]() Advanced Member Сообщений: 120 Спасибо сказали: 77 раз ![]() |
Спасибо за ответы попробовал другим дизассемблером проверить действительно нет перехода , а место я таки нашел
|
|
|
![]()
Сообщение
#351
|
|
![]() Immortal Сообщений: 1 468 Спасибо сказали: 1153 раза ![]() |
Код case LM_ERR_INSTANCE: fprintf(f, "%s\tERROR! Can not create %s at %.8X (%s): Wrong Patcher Instance!\r\n", StrType(p->type), p->address, p->owner->name); break; } Patch* PatcherInstance::Write(_ptr_ address, _ptr_ data, _dword_ size, _bool_ is_code) { HMODULE hm = GetModuleHandleFromAddress(GetFuncReturnAdress(address)); if ( (hm != hmodule) && (hm != Px86.hmodule) ) { if (Px86.logging_on) log.Add(new LogRecord(LM_ERR_INSTANCE, this, address, 0, PATCH_)); return NULL; } Сложно сказать, к чему этот код. Из-за него проблемы. Core.WriteAtCode(Patch.NumBytes, @Patch.Bytes, Patch.Addr); // успех vs Patcher.Write(cardinal(Patch.Addr), cardinal(@Patch.Bytes), Patch.NumBytes, CODE_PATCH); // провал Так что переноса заплаток из файлов на рельсы Patcher не вышло. -------------------- |
|
|
![]()
Сообщение
#352
|
|
Immortal Сообщений: 2 413 Спасибо сказали: 4619 раз ![]() |
Сложно сказать, к чему этот код. Из-за него проблемы. Этот код для того чтобы патч мог быть записан от имени PatcherInstance только модулем создавшим этот PatcherInstance (или самой patcher_x86.dll). Иначе мы бы смогли, например, из ХД вызвать Patcher.GetInstance("HotA") и писать патчи от имени Хоты, а из Хоты вызвать Patcher.GetInstance("HD") и писать патчи от имени хд. (а так мы можем только применять и отменять уже созданные другими модулями патчи). Лог и дамп бы оказались бесполезны из-за такой путаницы. Понятно что никто так делать не будет. Но я приучен делать защиту от дурака на совесть. Возможно здесь нужно что-то изменить. Но почему "провал"? в лог патчера пишется "ERROR! Can not create %s at %.8X (%s): Wrong Patcher Instance!" ? то есть hm получается неравным hmodule в той проверке? На всякий случай напомню что Write является методом TPatcherInstance, а не TPatcher. А то экземпляр в приведенном коде неоднозначно назван Patcher. Вобщем либо патч пытается записать модуль не создавший этот PatcherInstance, либо ошибка в другом (КО) Может быть GetModuleHandleFromAddress(GetFuncReturnAdress(address)) не справляется с поставленной задачей и возвращает не то что задуманно (хэндл модуля вызвавшего функцию), но как это может случиться не представляю -------------------- |
|
|
![]()
Сообщение
#353
|
|
![]() Legendary lover Сообщений: 629 Спасибо сказали: 307 раз ![]() |
Саш, баг в моде, не работает орлоглаз.
http://forum.df2.ru/index.php?s=&showt...st&p=672979 на зф подробнее чуть описано сделай в ближайшем релизе багфикс, пожалуйста |
|
|
![]()
Сообщение
#354
|
|
God Сообщений: 264 Спасибо сказали: 402 раза ![]() |
Несколько пожеланий:
1) Хотелось бы, чтобы не было привязки к армагеддонским архивам. То есть, чтобы можно было недостающие файлы подгружать из основных архивов и избавиться от _ab лодов видов и сндов. 2) По прежнему не работает кнопка Переиграть сценарий в любых кампаниях. 3) Хотелось бы избежать вылетов при блокировании компьютера. Очевидно ошибка связана с тем, что стороннее приложение пытается ввести героев в оконный режим. После разблокирования компьютера кидает ошибку про директыкс и при следующем запуске играется в окне. -------------------- Не качает с депозита? Используй JDownloader
|
|
|
![]()
Сообщение
#355
|
|
![]() 😸🧡✊✌️ Сообщений: 16 396 Спасибо сказали: 3231 раз ![]() |
Предложения, наверное, лучше туда писать.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#356
|
|
Immortal Сообщений: 2 413 Спасибо сказали: 4619 раз ![]() |
Цитата 3) Хотелось бы избежать вылетов при блокировании компьютера. Очевидно ошибка связана с тем, что стороннее приложение пытается ввести героев в оконный режим. После разблокирования компьютера кидает ошибку про директыкс и при следующем запуске играется в окне. Играйте в GDI режимах, они застрахованы от подобных вещей (32-bit True (stretchable) GDI, 32-bit GDI). А пытаться исправить это в остальных режимах не вижу смысла (т.к. я вообще не вижу смысла во всех режимах кроме 32-bit True (stretchable) GDI). Тем более многие, даже новейшие, игры на директХ ведут себя так же (крашатся при просыпании после гибернации, при переключении на другие фуллскрин директХ игры и в др. подобных случаях ) Цитата Саш, баг в моде, не работает орлоглаз. У себя уже исправил. Но нужно время чтобы подготовить релиз (несколько дней, я полагаю). Пока можно играть с выключенным HD+ - бага не будет. -------------------- |
|
|
![]()
Сообщение
#357
|
|
![]() Immortal Сообщений: 2 768 Спасибо сказали: 959 раз ![]() |
При попытке запустить игру в 1920x1080 32 stech gdi вылетает. Разрешение экрана 1920x1080. По идее вылетов быть не должно.
https://onedrive.live.com/redir?resid=4B791...hint=file%2czip |
|
|
![]()
Сообщение
#358
|
|
![]() Immortal Сообщений: 1 468 Спасибо сказали: 1153 раза ![]() |
На мой взгляд, указанная тобой, Бара, проверка, неэффективна. Мало ли из какого кода какого модуля вызывается запись патча? Из ЕРМ? Из сгенерированного в оперативной памяти обработчика? Из модуля, который использует функционал другого?
Patcher := Core.GlobalPatcher.CreateInstance(pchar(GetUniquePatchName(BinPatchSource))); Я создавал по экземпляру патчера для каждого файла-заплатки под уникальным именем и тут же пробовал через этот объект вносить изменения в цикле: Patcher.Write(cardinal(Patch.Addr), cardinal(@Patch.Bytes), Patch.NumBytes, CODE_PATCH); В итоге ошибки и, как следствие, вылеты. -------------------- |
|
|
![]()
Сообщение
#359
|
|
Newbie Сообщений: 4 Спасибо сказали: 0 раз ![]() |
Играем через 3G модем, связь не всегда отличная. Если играть с HD модом, при начале игры или загрузки сейва почти всегда возникает ошибка передачи данных. Насколько я понимаю, наступает таймаут. Если играть без мода, ошибки случаются очень редко. Было бы очень хорошо это преодолеть как-нибудь.
|
|
|
![]()
Сообщение
#360
|
|
![]() Immortal Сообщений: 1 259 Спасибо сказали: 189 раз ![]() |
-------------------- Нет войне
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 27 July 2025 - 08:09 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|