Current time: 17.07.2025, 21:23 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA PLUS
» 10-й город для ЭРА и не только...
Author Message
XEPOMAHT Offline
Moderators

Posts: 2462
Post: #1381

(20.06.2025 14:37)daemon_n Wrote:  wog native dialogs.era
game bug fixes extended.dll

Проверил. С предыдущей попытки ничего не поменялось. Оба плагина по-прежнему не подгружаются на Windows 2003.

Image: image.png

Хотя сама ЭРА запускается без проблем, и даже bik-видео плагин работает без косяков. Но 2 нерабочих на Windows 2003 плагина не оставляют выбора - возможно, igrik их сможет отлучить от функции кернела, которой нет в старых виндовозах, а может и нет. 105
20.06.2025 22:04
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4363
Post: #1382

XEPOMAHT, это очень странно.. я использую тулзы для поддержки windows XP
попробую ещё пошаманить.. в худшем случае поставлю студию более старой версии


Image: widget.png?style=banner2

Новейший Heroes Launcher
21.06.2025 01:56
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2821
Post: #1383

Ну, что я могу сказать - адаптировать плагины я не смогу (либо это слишком трудозатратно, а мне это не интересно).
Причина - используются многие "уфь какие новые фичи" (сарказм), которые не поддерживаются в MSVC 2008 (C++03):

Code:
auto       (min C++11)      Нет в C++03
nullptr    (min C++11)      Нет в C++03
Лямбды     (min C++11)      Нет в C++03
constexpr  (min C++11)      Нет в C++03
<cstdint>  (min C++11)      Только <stdint.h> в некоторых SDK

Все свои версии плагинов я намеренно держал в "Microsoft Visual C++ 2008 Express Edition" для поддержки древних машин.

Так что XEPOMAHT, извини. Но я попытался

Подробнее о поддержке C++11 в разных версиях MSVC (Click to View)
А вообще, реально давно пора бы обновить машину. Хошь, безвозмездно отправлю тебе планку DDR3 8GB и проц Ryzen 1500X. Всё равно они без дела валяются


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 24.06.2025 21:58 by igrik.)
24.06.2025 21:33
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4363
Post: #1384

igrik, так вот именно это и должно решаться тулзами для поддержки win xp.
Поставлю 2019 студию, наверно, или просто заменю "новые фичи" на оригинал. Хотя проблема может быть в ещё в era.cpp. 102


Image: widget.png?style=banner2

Новейший Heroes Launcher
24.06.2025 22:00
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2821
Post: #1385

У Хероманта ругается на функцию "InitializeCriticalSectionEx".
Вот нужно сюда копать, вроде как. А для неё минимальная версия Windows: Vista+ (_WIN32_WINNT >= 0x0600)

Code:
#if (_WIN32_WINNT >= 0x0600)
    InitializeCriticalSectionEx(&cs, 2000, 0);
#else
    InitializeCriticalSectionAndSpinCount(&cs, 2000);
#endif

Но тут я уже не очень хорошо волоку...

Quote:Поставлю 2019 студию, наверно, или просто заменю "новые фичи" на оригинал. Хотя проблема может быть в ещё в era.cpp
Так что 2019-я студия тебе не поможет


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 24.06.2025 22:56 by igrik.)
24.06.2025 22:16
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2462
Post: #1386

(24.06.2025 21:33)igrik Wrote:  Все свои версии плагинов я намеренно держал в "Microsoft Visual C++ 2008 Express Edition" для поддержки древних машин.

Твои оригинальные исходники можно пересобрать под последнюю версию era.dll?
24.06.2025 23:14
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2821
Post: #1387

В текущий момент времени я не знаю, что там были за изменения в era.dll.
Ранее, плагины не были привязаны к версии era.dll 2.8.7 и выше.

Поэтому, мои версии по идее должны работать и с текущей версией эры.
А если не работают, то значит ответ на твой вопрос таков - мои версии уже нельзя пересобрать.


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 24.06.2025 23:59 by igrik.)
24.06.2025 23:59
Visit this user's website Find all posts by this user Quote this message in a reply
myoffice91 Offline
Moderators

Posts: 92
Post: #1388

(24.06.2025 22:16)igrik Wrote:  У Хероманта ругается на функцию "InitializeCriticalSectionEx".
Вот нужно сюда копать, вроде как. А для неё минимальная версия Windows: Vista+ (_WIN32_WINNT >= 0x0600)

Code:
#if (_WIN32_WINNT >= 0x0600)
    InitializeCriticalSectionEx(&cs, 2000, 0);
#else
    InitializeCriticalSectionAndSpinCount(&cs, 2000);
#endif

Но тут я уже не очень хорошо волоку...
Здравствуйте! Вот самый правильный код:
Пример ассемблер:

Процедура "Инициализации"
Code:
push [Kernel32_dll];String
call dword[LoadLibraryA]
.if eax
    push ebx
    mov ebx,eax
    push [InitializeCriticalSectionEx];String;
    push ebx
    call dword[GetProcAddress]
    .if eax
        mov byte[InitializeCriticalSection_BAPIAHT],1
    .elseif
        push [InitializeCriticalSectionAndSpinCount]; String
        push ebx
        call dword[GetProcAddress]
        .if eax
            mov byte[InitializeCriticalSection_BAPIAHT],2
        .elseif
            pop ebx
            invoke  MessageBox,0,[StringMessageText_InitializeCriticalSectionERROR],dword[StringMessageTitle_InitializeCriticalSectionERROR],0   ; даём о себе знать!
            invoke Exit
            ret
        .endif
    .endif
    pop ebx
.endif

Любая процедура. Пример:
Code:
if (InitializeCriticalSection_BAPIAHT == 1)
    InitializeCriticalSectionEx(&cs, 2000, 0);
else
    InitializeCriticalSectionAndSpinCount(&cs, 2000);
endif

Вот и всё =))).



  1. Heroes 3 MoP Fan-Patch 3.14
  2. MoP Key Delete RandomMap
  3. TavernVideos BIK ASM
(This post was last modified: 25.06.2025 00:12 by myoffice91.)
25.06.2025 00:10
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4363
Post: #1389

(24.06.2025 22:16)igrik Wrote:  
Quote:Поставлю 2019 студию, наверно, или просто заменю "новые фичи" на оригинал. Хотя проблема может быть в ещё в era.cpp
Так что 2019-я студия тебе не поможет

Поможет студия 2019 2017, так как там нормальный Toolset есть в каталоге, который полностью поддерживает winxp - Visual Studio 2017 - Windows XP (v141_xp)
К сожалению, он не заводится на студии 2022.

Я это всё ранее проверял. Остался бы на 2019, но в ней нет поддержки Copilot

Что касается исходников era, то вот что там есть: (Click to View)

Grok Wrote:Подключение toolset v141_xp для Visual Studio 2022 Community, чтобы обеспечить совместимость с Windows XP, действительно представляет проблему, так как Microsoft официально прекратила поддержку этого toolset в новых версиях Visual Studio, и он не включён по умолчанию в установщик VS 2022. Однако, есть несколько путей решения, основанных на доступной информации и технических подходах. Вот пошаговая инструкция:

---

### 1. **Проверка доступности v141_xp в Visual Studio 2022**
Toolset v141_xp (C++ Windows XP Support for VS 2017) официально помечен как устаревший (deprecated) в Visual Studio 2019 и выше, а в VS 2022 он не поставляется по умолчанию. Однако, его всё ещё можно установить вручную через определённые компоненты, если они доступны в установщике.

- **Шаг 1**: Откройте Visual Studio Installer.
- **Шаг 2**: Выберите "Изменить" (Modify) для установленной версии Visual Studio 2022 Community.
- **Шаг 3**: Перейдите на вкладку **"Отдельные компоненты"** (Individual Components).
- **Шаг 4**: В разделе **"Компиляторы, инструменты сборки и среды выполнения"** (Compilers, build tools, and runtimes) найдите компонент **"C++ Windows XP Support for VS 2017 (v141) tools [Deprecated]"**.
    - Если он там есть, отметьте его для установки.
    - Если компонент отсутствует, это подтверждает, что v141_xp не включён в VS 2022 по умолчанию.

**Примечание**: Если компонент не отображается, это может означать, что Microsoft полностью исключила его из установщика VS 2022. В таком случае переходите к следующим шагам.

---

### 2. **Установка v141_xp через Visual Studio 2017 или 2019**
Поскольку v141_xp изначально был частью Visual Studio 2017 и поддерживался в ранних версиях Visual Studio 2019 (до 16.4), вы можете установить его из этих версий и использовать в VS 2022.

- **Вариант 1: Установка Visual Studio 2017 Community**
    1. Скачайте Visual Studio 2017 Community с официального сайта Microsoft: [Older Downloads](https://visualstudio.microsoft.com/vs/ol...wnloads/).[](https://visualstudio.microsoft.com/ru/vs...ownloads/)
    - Для этого может потребоваться подписка Visual Studio (MSDN), но вы можете создать бесплатную учётную запись Microsoft, если её нет.
    2. В установщике Visual Studio 2017 выберите **"Desktop development with C++"** и убедитесь, что включён компонент **"C++ Windows XP Support for VS 2017 (v141)"**.
    3. После установки проверьте, что v141_xp toolset доступен в папке установки Visual Studio 2017 (обычно в `C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\`).
    4. В Visual Studio 2022 настройте проект для использования v141_xp:
    - Откройте свойства проекта (Project Properties).
    - В разделе **"Configuration Properties > General"** выберите **Platform Toolset** как `v141_xp`.
    - Убедитесь, что пути к библиотекам и заголовочным файлам из VS 2017 указаны в настройках проекта.

- **Вариант 2: Использование Visual Studio 2019 (версия 16.4 или ранее)**
    1. Скачайте Visual Studio 2019 (версия 16.4 или более ранняя) через [Older Downloads](https://visualstudio.microsoft.com/vs/ol...wnloads/).[](https://visualstudio.microsoft.com/ru/vs...ownloads/)
    2. В установщике выберите **"C++ Windows XP Support for VS 2017 (v141) tools"** в разделе **Individual Components**.
    3. После установки скопируйте папку с toolset (обычно находится в `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023`) в соответствующую директорию Visual Studio 2022 или настройте пути вручную в настройках проекта.

**Важно**: Согласно обсуждениям на Stack Overflow и Reddit, более поздние версии VS 2019 (после 16.7) содержат ошибки в v141_xp, из-за которых скомпилированные приложения могут не работать на Windows XP из-за использования API, несовместимых с XP (например, `InitializeCriticalSectionEx`). Поэтому используйте версию 16.4 или ранее.[](https://stackoverflow.com/questions/4951...r-vc-2017)[](https://www.reddit.com/r/VisualStudio/co...41_xp_or/)

---

### 3. **Ручная настройка v141_xp в Visual Studio 2022**
Если вы уже установили v141_xp через VS 2017 или VS 2019, но хотите использовать его в VS 2022, выполните следующие шаги:

1. **Проверка наличия v141 toolset**:
    - Убедитесь, что v141 (не только v141_xp) установлен, так как v141_xp зависит от базового v141 toolset. Без него статически связанные бинарные файлы могут использовать API, несовместимые с XP.[](https://stackoverflow.com/questions/4951...r-vc-2017)
    - Проверьте папку `C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\` или аналогичную для VS 2019.

2. **Добавление toolset в VS 2022**:
    - Скопируйте папку v141_xp (например, `14.16.27023`) из установки VS 2017/2019 в папку `C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\`.
    - В свойствах проекта в VS 2022 выберите `v141_xp` в **Platform Toolset**.
    - Если toolset не отображается, добавьте путь вручную:
    - В **Configuration Properties > VC++ Directories** укажите пути к Include и Library файлам из VS 2017/2019.

3. **Устранение ошибок**:
    - Если возникает ошибка `MSB8020: The build tools for v141_xp cannot be found`, проверьте переменную окружения `VCTargetsPath`. Иногда она может мешать. Попробуйте удалить или исправить её (например, установить в `C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VC\v150\`).[](https://stackoverflow.com/questions/4951...r-vc-2017)
    - Для статической компоновки добавьте флаг `/NODEFAULTLIB` и вручную укажите библиотеки из v141_xp, чтобы избежать включения несовместимых API.[](https://www.reddit.com/r/VisualStudio/co...41_xp_or/)

---

### 4. **Альтернативные решения**
Если установка v141_xp невозможна или слишком сложна, рассмотрите следующие варианты:

- **Использование старых версий библиотек**:
    - Если вы компилируете статически связанные приложения, скопируйте библиотеки из VS 2019 (версия 16.4) и укажите их в настройках проекта с флагом `/NODEFAULTLIB`. Это может помочь избежать несовместимых API.[](https://www.reddit.com/r/VisualStudio/co...41_xp_or/)

- **Компиляция в более старой IDE**:
    - Используйте Visual Studio 2017 или Visual Studio 2019 (16.4) для сборки приложений, совместимых с XP, а VS 2022 — для других задач. Это проще, чем пытаться интегрировать устаревший toolset.

- **Неофициальные методы**:
    - Некоторые разработчики сообщают, что можно настроить MSVC 2022 для работы с Windows XP, используя неофициальные настройки и старые библиотеки времени выполнения (CRT). Например, можно настроить сборку для Windows 98/NT 4.0 с помощью твиков, но это требует глубоких знаний и не гарантирует стабильности.[](https://www.reddit.com/r/VisualStudio/co...41_xp_or/)

---

### 5. **Почему это сложно?**
Microsoft официально прекратила поддержку Windows XP, и начиная с Visual Studio 2019 (после версии 16.7), v141_xp стал ненадёжным из-за изменений в runtime (например, использование `InitializeCriticalSectionEx`, который не поддерживается в XP). В Visual Studio 2022 Microsoft полностью отказалась от поддержки XP, и даже если вы установите v141_xp, скомпилированные приложения могут не работать на XP без дополнительных твиков.[](https://stackoverflow.com/questions/4951...r-vc-2017)[](https://www.reddit.com/r/VisualStudio/co...41_xp_or/)

---

### 6. **Рекомендация**
- **Оптимальный путь**: Установите Visual Studio 2017 Community, включите v141_xp через установщик, и используйте его для сборки приложений, совместимых с Windows XP. Затем, если нужно, интегрируйте toolset в VS 2022, скопировав необходимые файлы и настроив пути.
- **Если нужна помощь с установкой**:
    1. Перейдите на [visualstudio.microsoft.com/vs/older-downloads/](https://visualstudio.microsoft.com/vs/older-downloads/) и войдите в систему с учётной записью Microsoft.
    2. Скачайте Visual Studio 2017 Community и установите компонент v141_xp.
    3. Если возникают ошибки, напишите, какие именно, и я помогу их устранить.

Если у вас есть дополнительные вопросы или проблемы с конкретным шагом, дайте знать, и я разберусь подробнее!


Image: widget.png?style=banner2

Новейший Heroes Launcher
25.06.2025 11:05
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2462
Post: #1390

ERA+ 3.64 стала доступна для желающих протестировать.

Основные изменения:
1. Добавлена ERM-опция "Истощающиеся шахты".
2. Добавлена кампания RoE - "Подземелья и дьяволы".
   
Скачать:
Часть 1: https://vk.com/s/v1/doc/aQscuuNIED2ud7yb...9VFxs-Brf8
Часть 2: https://vk.com/s/v1/doc/6Jydqf-vCbyeNSeX...MaBXhXOSJU
25.06.2025 21:59
Find all posts by this user Quote this message in a reply
Panda Away
Moderators

Posts: 1038
Post: #1391

XEPOMAHT,
В моде в версиях 3.63 и 3.64 отсутствуют "твои" версии "game bug fixes extended.dll" и "wog native dialogs.era", без них старта большинства рандомок и сценариев нет, происходит краш, это на чистой Эра 3.9.21 v1. В версии 3.62 они присутствуют, поэтому там все работает.


Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
(This post was last modified: 26.06.2025 09:20 by Panda.)
26.06.2025 09:19
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2462
Post: #1392

(26.06.2025 09:19)Panda Wrote:  В моде в версиях 3.63 и 3.64 отсутствуют "твои" версии "game bug fixes extended.dll" и "wog native dialogs.era", без них старта большинства рандомок и сценариев нет, происходит краш, это на чистой Эра 3.9.21 v1. В версии 3.62 они присутствуют, поэтому там все работает.

Эти плагины несовместимы с ЭРА 3.9.22 и выше, поэтому они были убраны из ERA+ для того, чтобы у игроков была возможность запускать ERA+ на последней версии ЭРЫ. Игрокам придётся самим искать актуальные версии этих плагинов под конкретные версии ЭРЫ, т.к. Берсеркер не хочет восстанавливать совместимость.

К примеру, в ERA+ "game bug fixes extended.dll" находился именно тот, который был полностью совместим с Тифоном - в нём Игрик добавлял проверки на Тифон и выключал несовместимые и конфликтные багфиксы. В последней ЭРЕ "game bug fixes extended.dll" сильно разросся (там солянище от разных авторов) и похоже написан он уже без учёта Тифона (т.к. Игрик уже отошёл от дел) - я протестировать не могу, т.к. совместимость этого плагина с Windows 2003 никто сделать не может/не хочет.

У меня эти 2 плагина перемещены обратно в папку WoG. Возможно, что в вместе с ERA+ придётся выкладывать отдельный h3era.exe, который будет запускать нужные версии era.dll, vfs.dll, game bug fixes extended.dll, wog native dialogs.era и остальных привызанных к era.dll плагинов (например Берсеркер наглухо привязал к era.dll плагин buttons.era, функционал которого Тифон в памяти игры выкорчёвывает и выпиливает под корень из-за его тотальной несовместимости, а просто выключить его без костылей - нельзя 105 ) конкретно под ERA+, т.к. поддерка глобальных модов в ванильной версии ЭРЫ от Берсеркера похоже скоро будет поделена на ноль окончательно для вытеснения всех выживших глобальников и просто всякого старья и мусора. Мне эта политика "загрязнения" базовой версии ЭРЫ тоже не нравится, но поделать уже ничего нельзя - я и так залолбал Берсеркера своим нытьём. Может быть, пришло время отделяться и запиливать совственную era.dll с блэкджеком и шлюхами, но... думаю, что это уже никому не нужно, даже мне - энтузиазм в этом направлении совсем не лежит...
26.06.2025 11:43
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4363
Post: #1393

XEPOMAHT, обновил плагины (ссылки те же)
wog native dialogs.era
game bug fixes extended.dll

Вот ссылки на файлы .dbgmap:
wog native dialogs.dbgmap
game bug fixes extended.dbgmap

Что было сделано:
- потратил пару ночей на безуспешные попытки удалить остатки старых студий, лишь бы не тратить место для установки MSVS 2017 Community
- расширил сегодня диск, чтобы поставить с нуля 2017-ю и 2022
- случайно нашёл установщик Build Tools от 2017
- установил только Build Tools от Visual Studio 2017 версии 15.9.55
- сменил Toolset на Visual Studio 2017 - Windows XP (v141_xp)
- сменил версию пакета SDK на 7.0
- пересобрал плагины с тем же кодом, что скидывал ранее


Image: widget.png?style=banner2

Новейший Heroes Launcher
26.06.2025 13:20
Visit this user's website Find all posts by this user Quote this message in a reply
Panda Away
Moderators

Posts: 1038
Post: #1394

XEPOMAHT,
Без этих "твоих" плагинов нет старта большинства рандомок и сценариев, даже на Эра 3.9.21 v1.
С другими вариациями нет старта игры.
Значит требования к данной версии Эры 3.9.21 v1 бессмысленно, т.к. те, кто скачает и установит её, не смогут играть в Эра Плюс, поскольку с теми плагинами, что там лежат в дистрибутиве, игра постоянно крашится, а с теми, что были в моде Эра Плюс, их больше там нет. Соответственно те, кто пройдет все этапы и выполнит все инструкции, установив голую Эру 3.9.21 v1, и подключит туда Эра Плюс 3.64, поиграть в неё не сможет.
Эти плагины получается старее Эры 3.9.21 v1? Тогда из какой они версии Эра?


Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
(This post was last modified: 26.06.2025 13:36 by Panda.)
26.06.2025 13:36
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4363
Post: #1395

Panda, новая ERA требует данные плагины исправленными. Так что только их новая версия будет работать на ней.

P.S.: что за краши на новой чистой сборке? Отпиши в телегу, дискорд или в тему сборки, пожалуйста


Image: widget.png?style=banner2

Новейший Heroes Launcher
26.06.2025 13:40
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group