XEPOMAHT
Posts: 2402
|
(25.03.2025 11:33)daemon_n Wrote: интро при старте игры у тебя не отключаются, а ещё игнорируют настройки звука -- имхо, не показывай, если в опциях отключён показа заставки
Где в игре есть такая опция? Насколько помню, чтобы отключить видео, нужно лезть в реестр виндовоза и искать там ключ "Show Intro". Поэтому Тифон перед интро-роликами этот ключ в реестре не проверяет. Могу добавить в ВоГ-опции, если нужно.
Звука на ПК вообще нет, т.к. колонки на работе иметь не разрешают. Но никто вроде не жаловался, в сами настройки звука Тифон не лезет - должно работать как в SoD.
(25.03.2025 12:05)daemon_n Wrote: ты пробовал случайную карту создать? у меня вылетает с твоим модом чистым при генерации объекта свитка заклинаний (деление на 0 по адресу 005353FC)
У меня случайные карты генерируются - свитки появляются. Возможно, что в Сборке ещё с чем-то конфликтует: покажи хотя бы patcher_x86 dump.txt.
|
|
25.03.2025 12:49 |
|
daemon_n
Posts: 4356
|
UPD: причину нашёл -- старая винда не может работать со "static" внутри некоторых хуков/ф-ций. Буду переписывать.
Code:
static Patch* blockScreenUpdate = _PI->CreateHexPatch(0x04AAC21, "90 90 90 90 90 90 90 90 90");
вот даже не знаю, почему так, но этот код добавил я -- да.
ChatGPT Wrote:Ошибка связана с использованием `static` и тем, как происходит инициализация статических переменных в зависимости от версии Windows.
### Разбор ошибки:
1. **Функция `ReleaseSRWLockExclusive`** отсутствует в `KERNEL32.dll` в Windows XP и более старых версиях, так как была добавлена только в Windows Vista.
2. Ошибка `Entry Point Not Found` возникает, если программа пытается вызвать функцию, отсутствующую в загруженной DLL.
3. **Как это связано с `static`?** - `static` заставляет компилятор создать переменную `blockScreenUpdate` с **статическим временем жизни**. - Если объект `Patch` или вызов `_PI->WriteHexPatch` в своем конструкторе (или при вызове) использует API, которого нет в XP (например, `ReleaseSRWLockExclusive`), то программа падает при загрузке, еще до выполнения `main()`. - Без `static` инициализация переменной происходит только при входе в функцию, что позволяет избежать раннего вызова несовместимого API.
### Вывод:
На старых ОС код с `static` может привести к ошибке из-за того, что инициализация статической переменной выполняется **до входа в `main()`**, а значит, загружается код, несовместимый с системой. Убирая `static`, мы отодвигаем инициализацию на момент вызова функции, когда программа уже работает, и можем избежать проблем с несовместимыми API.

Новейший Heroes Launcher
|
|
25.03.2025 13:11 |
|
daemon_n
Posts: 4356
|
|
25.03.2025 13:21 |
|
Grossmaster
Posts: 605
|
|
26.03.2025 15:20 |
|
Panda
Posts: 1029
|
XEPOMAHT,
Сделал на скорую руку, это простой архив версии HoMM3 ERA PLUS HD Rus 3.6.2.0, размер ~ 1 ГБ:
https://disk.yandex.ru/d/7XIDk710drbBlw
Состав:
- Основа: Heroes of Might and Magic III Complete (GOG) вот отсюда: http://wforum.heroes35.net/showthread.php?tid=5995
- ЭРА версии 3.9.21 v1.
- Русификатор для ЭРА версии от 02.02.2025 Panda Edition.
- HD-мод версии 5.4 R84.
- ЭРА Плюс версии 3.6.2.0.
Отличия от оригинала Эра Плюс:
- В сборке есть недостающий файл "H3spriteEraPlus.pac" для исправления ошибки и вылетов во время игры.
- В сборке мод основной ERA+ и мод на ролики H3videos объедены в один мод в составе ERA+.
Номер сборки - v.3.6.2.0.39210.700 (30.03.2025).
Запуск игры, а так же сценариев и рандомок есть. За 15 минут игры, ошибок или вылетов не было. Для более длительных тестов времени нет.
Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
(This post was last modified: 30.03.2025 00:49 by Panda.)
|
|
30.03.2025 00:43 |
|