Current time: 29.06.2025, 03:43 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 4372
Post: #1396

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: 2823
Post: #1397

У Хероманта ругается на функцию "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: 2468
Post: #1398

(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: 2823
Post: #1399

В текущий момент времени я не знаю, что там были за изменения в 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: 91
Post: #1400

(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: 4372
Post: #1401

(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)


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
daemon_n Offline
Administrators

Posts: 4372
Post: #1402

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 13:10
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2468
Post: #1403

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: 1067
Post: #1404

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: 2468
Post: #1405

(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: 4372
Post: #1406

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: 1067
Post: #1407

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: 4372
Post: #1408

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
Panda Away
Moderators

Posts: 1067
Post: #1409

daemon_n,
На новой Эра, по крайней мере на Эра выше 3.9.21 v1, старта Эры Плюс нет вообще, независимо от этих плагинов. Засунул плагины из сообщения выше, естественно проблемы это не решило. Уже проводили тесты.
Дискорд давно заблокирован и не работает.
В Телегу уже с сегодняшнего дня отписать не смогу. Ночью прилетело очередное сраное обновление (которые естесно никак не отключить) и окирпичило мне телефон, которому чуть больше года. Привет общество потреб****а. Прошел год - меняй телефон. Срал я эти "потифоны". Куплю звонилку за 2000 ре.
Берсу отправлял уже дебаги, ок, сейчас продублирую в тему сборки.


Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
26.06.2025 14:16
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2468
Post: #1410

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

Спасибо огромное, вечером протестирую, как доберусь до домашнего компьютера.


(26.06.2025 13:36)Panda Wrote:  Эти плагины получается старее Эры 3.9.21 v1? Тогда из какой они версии Эра?

Из каких-то старых версий ЭРЫ за 2022 год. Т.к. эти версии были досканально протестированы с ERA+, а в новые не вносились критические изменения, поэтому в ERA+ оставались старые версии как самые надёжные в плане совместимости. С новыми версиями плагинов придётся снова целиком тестировать ERA+ и искать в новых плагинах ошибки и конфликты, добавленные после 2022 года. Т.к. большинство игроков всё же пытаются устанавливать ERA+ на Лаунчер-версию игры, поэтому над совместимостью с ней придётся ещё не один десяток копий сломать (я если честно не поспеваю, т.к. для авторов глобальников на 1 месте всё же важна стабильность платформы, на которой делается мод, а в Лаучер-версии этот базис для сторонних модов постоянно допиливается/перепиливается, включая радикальные изменения).

PS: в ERA+ 3.65 добавилась новая ERM-команда - !!MN:U, позволяющая взаимодействовать скриптёру с неиспользуемым инициализированным байтом из структуры шахт. В ERA+ установка этого байта в -1 выключит доход от шахты, в 0 - включит. Будет использоваться для ERM-опции "Истощающиеся шахты", которая сильно закостылена и поэтому её долгое время в ERA+ не было.
26.06.2025 14:25
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