Левый сайдбар Правый сайдбар FAQ / Общение
Показать/Скрыть сайдбар | Тема: Сменить шкрку

Описание игры, торрент, скриншоты, видео

Скачать игру Heroes of Might and Magic 3: ERA 2 v3.9.20 / Heroes of Might and Magic 3: (WoG/Era) - торрент, игра на стадии разработки

Рейтинг: 10.0 (1) | Баллы: 10
Игру добавил Kusko [2514|32] | 2025-02-01 (обновлено) | Стратегии (3620) | Просмотров: 88977

Heroes of Might and Magic 3: ERA 2 v3.9.20 / Heroes of Might and Magic 3: (WoG/Era)

• SGi навигация / Navigation:
• Разработчик / Developer: Инди-игра (14535) от WoG Team (1) и Berserker (2)
• Жанр / Genre: Стратегии (3620); Ретро-игры (DOS, Win 9x) (649); Сетевые / ХотСит (2300)
• Язык: Русская версия (8083)
• Тип игры / Game Type: Beta-версия (игра еще в разработке)
• Размер / Size: 783.40 Мб.
• Оценка игроков / Game Score: 10.0 из 10 (всего голосов: 1)

• Похожие игры:
- Heroes of Might and Magic 3: The Succession Wars v0.8.2
- Heroes of Might and Magic 2
- Heroes of Might and Magic
- Fheroes2 Resurrection v1.1.5
- Heroes of Might and Magic 3: Armageddon's Blade / Герои меча и магии 3: Клинок Армагеддона
- Heroes of Might and Magic III Complete v4.0 / + Heroes of Might and Magic 3: In The Wake of Gods (WoG) v3.58f
- Heroes of Might and Magic 3: Horn of the Abyss (HotA) v1.7.1 / Герои Меча и Магии 3: Рог Бездны
- HoMM3 ERA STALKER v25.09.2024 / Heroes of Might and Magic 3 ERA STALKER
- Warlords Of Arcania v0.1.8

Heroes of Might and Magic 3: ERA 2/WoG - самый популярный мод для Героев 3, который благодаря масштабным улучшениям превращает третью часть игры в Героев 3.5. Каждый аспект игры был обогащен дополнительными элементами. Начиная с новых юнитов; героев; артефактов; городов и возможностью их разрушить; монстров; заклинаний, и заканчивая авторскими кампаниями и локациями.

На русском языке.

Игра обновлена до v3.9.20. Список изменений внутри новости.

Вы можете скрыть всю рекламу на сайте. Как?

Heroes of Might and Magic 3: ERA 2 является мощной платформой для создания модификаций, и в неё уже включен мод Heroes of Might and Magic 3: In the Wake of Gods.
Heroes of Might and Magic 3: ERA 2 Plus - сборник различных модификаций Heroes of Might and Magic 3, объединённых в один мод для платформы ERA. Он содержит такие моды как: Horn on the Abyss портированный на ERA с VCMI, включая Причал и так и не вышедший в рамках AB и HoA Фордж, а ещё некоторые элементы других популярных модификаций - In the Wake of Gods, включая Бастион, и Master of Puppets. Также в эту сборку включены лучшие бинарные патчи и плагины.


• badluck.era - добавляет отрицательную удачу;
• BattleSpeed.era - увеличивает количество скоростей в опциях битвы;
• creature stats texts.era - меняет поле описания монстра (входит больше текста);
• emerald_v202a.era - добавляет новые артефакты;
• Spells_Description.era - конкретизирует описания к артефактам;
• 10Skills.dll - добавляет отображение 2-х дополнительных вторичных навыков в окно героя + герой может их свободно изучить;
• ArtGuard.dll - охрана артефактов;
• Battle_AI.dll - небольшие правки в поведении ИИ во время битвы;
• BattleAIvsAIFix.dll - заменяет теоретические битвы ИИ на быстрые;
• BattleReplay.dll - добавляет переигрываемые битвы;
• InstantAnim.dll - юниты в бою чаще используют анимацию и меньше стоят как истуканы;
• messages.dll - возможность использовать любые def-ы в качестве изображений в диалогах;
• Typhon.dll - ядро ERA PLUS, добавляет тонну всякой всячины;
• Unitdesc.dll - дополнительные весёлые описания для монстров;
• XXL.dll - поддержка безумных размеров карт;
• dismiss last stack.bin, transfer last stack.bin - позволяет находиться герою без армии;
• DwellingsSecurity.bin - охрана в жилищах монстров со 2-го уровня;
• Jeddite_Nagash.bin - убирает воговские описания Джеддита и Нагаша;
• NewTerra.bin - поддержка новых накладных почв;
• no_underground_at_underground.bin - в подземелье учитывается родная почва;
• StartArmyAllSlots.bin - стартовые армии героев максимальны;
• Straker.bin - Стракер некромантит ходячими мертвецами вместо скелетов;
• 4 lines of the creature description.bin - расширяет поле описания просмотра навыков юнитов до 4 строк.

Игровой контент:
• 95 новых артефактов (общее количество = 255)
• 55 новых монстров (общее количество = 237)
• 3 новых города (общее количество = 12)
• 5 новых зданий для строительства в стандартных городах
• 36 новых героя (общее количество = 192)
• 40 новых жилищ монстров (общее количество = 140)
• 30 новых банков монстров (общее количество = 50)
• 2 новые почвы (общее количество = 12)
• 5 новых накладных ландшафта, с запрограммированными на ERM свойствами
• 8 новых вторичных навыка (пока бланковые, но в будущих версиях будут запрограммированы)
• 25 новых заклинаний (пока бланковые, но в будущих версиях будут запрограммированы)
• Эксклюзивные редакторы монстров и заклинаний

Игровой процесс
В качестве одной из новинок игрового процесса Heroes 3: ERA 2 игроку дана возможность оставлять часть армии или имеющийся артефакт своего героя на свободной клетке карты приключений. В случае расформирования армии появляется стандартный диалог обмена — вроде того, что выдаётся в гарнизонах при найме существ. Оставлять на карте можно войска лишь одного вида, при этом такая возможность действует не для всех существ. Армия, оставленная на карте, будет пускаться в бегство при контакте с героями игрока, но станет проявлять агрессию к его противникам.

В дополнении изменены свойства некоторых героев игры. Герой Нагаш из города Некрополис имеет новую специальность — "Вуаль Тьмы". Так же, как и с одноимённым строением в Некрополисе и на карте приключений, благодаря этой специальности Нагаш закрывает область вокруг себя неразведанной для вражеских героев территорией; при этом, радиус тёмной завесы зависит от количества очков заклинаний героя. Герой Джеддит (Подземелье) получил специальность "Строитель", с которой может перестраивать разрушенные города в любой другой тип.

Были введены дополнительные опции и возможности на экране битвы. Если какое-то существо имеет более, чем один вид атаки, можно выбрать предпочитаемое действие этого существа, нажав правой кнопкой мыши по игровой кнопке "защищаться". Выбранное действие будет по умолчанию считаться основным до конца боя. Для существ дальнего боя возможны опции "стрельба"/"рукопашная", для воинов с атакующими заклинаниями — "колдовать"/"рукопашная", а для существ со способностью гарпий — "атаковать и вернуться"/"атаковать без возвращения". Если существо имеет более двух режимов атаки, то, соответственно, вариантов будет больше. Стрелковые башни в бою при осаде города получили возможность зарабатывать опыт, который сказывается на их уроне. Если игрок держит замок в течение недели, башни увеличивают урон пропорционально количеству недель. Если город успешно отражает атаку, это считается за одну неделю. Если город захватывается, весь опыт башен теряется. Центральная башня получает опыт независимо от двух боковых, потому что строится отдельно.

Разрушение городов
В Heroes 3: ERA 2 появилась возможность разрушать города и возводить на их месте новые — в том числе города иного типа.

Процесс проходит постепенно: для полного разрушения города герой должен поочерёдно уничтожить все построенные в нём здания. Каждое разрушение здания забирает часть очков хода героя и требует некоторое количество золота. Если разрушается какое-либо жилище существ, в котором содержатся не нанятые воины, они потребуют золото взамен своего ухода; в противном случае, можно вступить с ними в битву и продолжить разрушение после победы (в то же время, если игрок терпит поражение, он всё равно не лишается своего героя). Последним разрушаемым зданием в городе всегда остаётся Управа; после её уничтожения в пустом городе появляется строение Кузница, в которой обитают призраки. При выходе героя город будет недоступным в течение шести игровых дней, а его гарнизон переходит под управление призраков. Спустя шесть дней город снова становится доступным для посещения и найма призраков из Кузницы. Пока все призраки не будут выкуплены, город остаётся разрушенным и будет считаться нейтральным при выходе из него. После выкупа всех призраков игрок получает возможность перестроить город, если у него достаточно на это опыта и армии. Перестройка возможна либо в тот тип города, которым он был до разрушения, либо в тот, который относится к классу посетившего его героя. Героям же со специальностью Строитель доступна перестройка в любой тип города.

Существа
• Существа 8-го уровня. Каждый из 9 городов Heroes 3 получил своего полубога — существо 8-го уровня, которое представляло собой второе улучшение существ предыдущего, 7-го уровня. По сравнению с ними, эти существа имеют увеличенное в два раза здоровье, увеличенную атаку, защиту и скорость, а также усиленные способности. В оригинале выглядят как перекрашенные улучшенные существа 7-го уровня, но существует множество сторонних перерисованных моделей.
• Эмиссары. В игру было введено 8 видов эмиссаров — посланников богов, которых можно найти лишь в особых зданиях с усиленной охраной. Каждый эмиссар представляет собой воплощение огня, земли, воздуха, воды, войны, мира, маны или любви и дарует герою-хозяину дополнительные очки к его основным параметрам каждую неделю. Сами эмиссары не участвуют в битве, показатель урона у них отсутствует. Один герой может иметь лишь одного эмиссара при себе.
• Нейтральные существа. Появилось 12 новых нейтральных существ. Среди них был заимствован призрак из Heroes 2 со своей способностью превращения всех убитых им существ в себе подобных; появились подобные элементалям посланники огня, воды, воздуха, земли; и др.

Армиям существ в Heroes 3: ERA 2, возглавляемых героем, дана возможность получать свой собственный опыт, продвигаться по рангу от 0 до 10. При победе в бою существа героя получат очки опыта, количество которых равно заработанному опыту героя. Опытные существа с повышенным рангом получают бонусы к своим параметрам, а также новые способности. Все эти бонусы даются и используются только в бою: существа не получают опыта за посещение объектов на карте приключений, вроде камней знаний или сундуков с сокровищами.

Командиры и артефакты
В Heroes 3: ERA 2 появились так называемые командиры. Цель введения в игру командиров — возместить невозможность участия в битве героя. Каждая раса имеет своего собственного командира. Некоторые скрипты позволяют нанимать командиров из других городов. Каждый командир обладает расовыми, первичными и вторичными навыками, а также умеет колдовать и носить несколько артефактов. Расовые способности и заклинания индивидуальны для каждого командира, а первичные, вторичные навыки и артефакты — общие для всех. У каждого героя командиры имеют разные имена и биографии, отражающие их связь с этим героем.

В текущей версии Heroes 3: ERA 2 в игру добавлено 8 новых артефактов, реализованных на скриптовом языке ERM. Как пример особенностей таких артефактов в отличие от оригинальной Heroes 3 можно привести Волшебную Палочку, которая случайным образом превращает одни артефакты в другие. Помимо того, ещё 10 артефактов было введено для нового элемента геймплея Heroes 3: ERA 2 — командиров. К примеру, Шлем Бессмертия способен воскрешать командира после битвы без потери бонусов в случае, если его армия вышла победителем.

Объекты на карте
Среди объектов на карте в Heroes 3: ERA 2 включён Сфинкс, идея которого восходит к сфинксу из греческой мифологии. Сфинкс предлагает отгадать его загадку, ответ на которую игроку необходимо ввести в специальном окне. Ответ обычно состоит из одного слова. Сфинкс проверяет ответ и, в зависимости от правильности, наказывает или благословляет героя игрока. В обоих случаях проклятья и благословения можно просмотреть в окне героя. Каждое из них имеет два параметра — количество (к примеру, получаемого золота) и длительность.

К присутствующим в оригинальной Heroes 3 хранилищам существ были добавлены новые — "Трансильванская таверна", охраняемая вампирами, "Потерянная бутыль", охраняемая джиннами, и другие, содержащие новые вознаграждения.

Город Бастион
Бастион был задуман как город, вдохновлённый древнеегипетской цивилизацией и мифологией. На поздних этапах создания в его армию были утверждены скарабеи, надсмотрщики, пустынные странники на верблюдах, жрицы Сехмет, аматы, боевые слоны и воплощения Анубиса. Родной землёй для существ Бастиона был песок — в Heroes 3 это был единственный, не считая воды, ландшафт, не ассоциирующийся ни с одним типом города. Герои Бастиона подразделялись на номархов (герои меча) и жрецов (герои магии). Бастион имел нейтральное мировоззрение; основной упор в развитии города был сделан на экономику. Сюжет кампании, посвящённой Бастиону, задумывался как прямое продолжение кампаний "Клинок Армагеддона" и "Кровь дракона" из Heroes 3: Armageddon’s Blade и Heroes Chronicles: Clash of the Dragons. По сюжету пустынные жители, ассоциирующиеся с городом Бастион, оказывались ввязаны в войну между Эрафией и Нигоном и, не покорённые этими королевствами, образовали собственное независимое государство Акмон

Другие новые города
Помимо Бастиона, существует ещё множество сторонних проектов по созданию новых городов для Heroes 3. Одним из выпущенных и активно обновляющихся проектов является пользовательское дополнение Horn of the Abyss, которое вводит в игру пиратский город под названием Причал. Разработка некоторых городов начиналась специально для Heroes 3.5: In the Wake of Gods версии 3.59. Один из таких городов — Гавань, где преобладают различные морские существа, такие как люди-рыбы и тритоны. Экран города представляет собой побережье с большим количеством рифов. Родной ландшафт Гавани — вода. Город начал создаваться примерно через год после Бастиона. Другой город, Кремль, основан на русском фольклоре. В Кремле обитают в основном персонажи русских народных сказок; архитектура состоит из построек городского типа времён Киевской Руси. Родной ландшафт города — болото.

Также в сборку включен аддон HoMM3 HD, который позволяет запускать игру в Full HD разрешении, а не только в родном (800x600). HoMM 3 HD не влияет на оригинальный геймплей и улучшает функциональность интерфейса, делает игру более комфортной и исправляет некоторые ошибки оригинальной игры.

[+] Added support for logging random number generations to log.txt. This feature is controlled by "Debug.Rng" option in "heroes 3.ini".
[-] Fixed bug introduced in 3.9.16: CombatManager::CastSpell improvement used to check stack spell level instead of spell duration.

[+] Added automatic grid and selection redraw after using BM:Q on inactive stack.

[+] Added the following functions to Era Erm Framework:

!?FU(EmptyIniCache);
; Replaces ini file cache in memory with an empty one. Use it for recreating ini files from scratch, when you don't need previously cached data and original file on disk
!#VA(filePathPtr:x); Absolute or relative path to ini file

!?FU(MergeIniWithDefault);
; Loads two ini files and merges source ini entries with target ini entries in cache without overwriting existing entries
!#VA(targetPathPtr:x); Absolute or relative path to destination ini file (main settings)
!#VA(sourcePathPtr:x); Absolute or relative path to source ini file (default settings)

[+] Refactored and improved ini handling API. The following functions were exported/updated:

(* Forgets all cached data for specified ini file. Any read/write operation will lead to its re-reading and re-parsing *)
procedure ClearIniCache (const FileName: pchar); stdcall;

(* Forgets all cached data for all ini files *)
procedure ClearAllIniCache; stdcall;

(* Replaces ini file cache in memory with an empty one. Use it for recreating ini files from scratch, when you don't need previously cached data and original file on disk *)
procedure EmptyIniCache (const FileName: pchar); stdcall;

(* Reads entry from in-memory cache. Automatically loads ini file from disk if it's not cached yet *)
function ReadStrFromIni (const Key: pchar; const SectionName: pchar; FilePath: pchar; out Res: pchar): boolean; stdcall;

(* Writes and entry to in-memory cache. Automatically loads ini file from disk if it's not cached yet *)
function WriteStrToIni (const Key, Value, SectionName: pchar; FilePath: pchar): boolean; stdcall;

(* Loads and parses ini file. Creates in-memory cache for it to prevent further disk accesses. Returns true only if file existed, was successfully read and parsed.
Creates empty cache entry in case of any error *)
function LoadIni (FilePath: pchar): boolean; stdcall;

(* Saves cached ini to the specified file on a disk. Automatically recreates all directories in a path to the file. Loads file contents from disk if it was not cached earlier. *)
function SaveIni (FilePath: pchar): boolean; stdcall;

(* Loads two ini files and merges source ini entries with target ini entries in cache without overwriting existing entries *)
procedure MergeIniWithDefault (TargetPath, SourcePath: pchar); stdcall;

[+] Included Era B2 library source code in "Tools/Era/Sources/Era B2 Library".
[*] "OnRemoteEvent" is not triggered for FU:D call anymore. Era now uses FireRemoteEvent to synchronize the creation of objects on adventure map in multiplayer.
[*] Updated Era API in "Tools/Era/SDK".
[*] Included zdraw.dll and patched h3era.exe to allow game to be run in a windowed mode with 32 bit colors depth and without HD-mod.

[+] Added "Tools/UN C to bin" utility for conversion of UN:C ERM commands into binary patches.
[+] Implemented automatic shadow/grid/selection border redraw after calling BM:C.
[*] Updated Era and VFS sources in "Tools/Era/Sources.
[-] Fixed bug, introduced in 3.9.16 version: global scripts used to be loaded and parsed during savegame loading.

[*] Updated C++ Era SDK ("ConnectEra" function now accepts up to 2 arguments).
[-] Fixed IF:D command: parameters 3 and 4 were mixed up in places.
[-] Restored "HookCode" and "ApiHook" functions for legacy plugins.

[+] Добавлена поддержка IME (Input Method Editor), используемого азиатскими языками (китайским/японским/корейским).
[+] Добавлена поддержка каталога "Lang/*" для zip-архивов в Data.

[+] Добавлен еще один каталог для скриптов глобальной библиотеки ERM: "Data/s/lib_end". Скрипты из этого каталога будут загружаться после всех других скриптов map/global/library.
Аналогично каталогу "lib", эти скрипты не зависят от состояния параметра UN:P5 WoG.

[+] Улучшена функция CombatManager::castSpell (используемая также в BM:C), временно переведя CombatManager->ControlSide в режим управления стеком заклинаний.
Стек приведения может отличаться от активного стека (это может быть контратака или произвольная логика скрипта). В нативной игре стек приведения - это всегда текущий активный стек.
"Огненная стена", "наземные мины", "зыбучие пески", "силовое поле" и многие другие заклинания зависят от того, какая сторона считается дружественной (текущая). Также, похоже, исправлена ошибка с дружественными мастерами-гремлинами, которые бросали "наземные мины" со стороны вражеского героя.

Если стек загипнотизирован, то его эффективная сторона - это сторона управляющего (гипнотизирующего) героя.

[+] Переписаны команды IF:D, IF:F, IF:E (многоцелевая диалоговая реализация). Особенности:

-) Всякий раз, когда в качестве параметра принимается строка, это может быть любая строка или строковый литерал. Значение будет скопировано в глобальные настройки, больше не будет зависеть от z-переменных.
-) Идентификаторы диалоговых окон полностью игнорируются (для удобства чтения лучше использовать 0 или -1). В памяти сохранена только одна копия настроек диалога.
-) Настройки диалога полностью удалены до выполнения IF:D и после выполнения IF:E.
-) Исправлены ошибки с фантомными пустыми строками вместо путей к изображениям или подсказок.
-) IF:F принимает параметры 0..6. Пустой параметр означает "удалить подсказку".
-) IF:E принимает следующие синтаксисы: IF:E(индекс var для хранения результата) или IF:E?(любая целочисленная переменная для хранения результата).

[+] Расширенная команда VR:R с дополнительным 4-м параметром: VR:R(фиктивный)/(минимальный)/(максимальный)/(free_param);

В сетевых сражениях используется детерминированный генератор случайных величин, который генерирует значения, используя текущий идентификатор действия, идентификатор раунда и идентификатор битвы. Попытка сгенерировать несколько случайных величин в одном действии приводит к получению одинаковых значений, таких как 44 44 44. Чтобы решить эту проблему, передайте уникальное значение 4-му параметру для каждой итерации. Это может быть идентификатор стека или счетчик циклов, но лучше преобразовать его с помощью предварительно сгенерированной константы int32, уникальной для эффекта/заклинания/функции, которую вы реализуете. Например, хорошим выбором является идентификатор стека XOR 1833290248.

Пример:

!?ФУ(щелчок мыши на экране битвы);
; Эффект будет заметен только в сетевых сражениях и не повлияет на одиночную игру
!#VA(v[3]:y);
!!VR(effectId:y):S1833290248; // Уникальное сгенерированное значение int32 для нашей последовательности, используйте любой автономный/онлайн-генератор

!!re i/0/(v[РАЗМЕР])/1/-1;
!!VR(свободный параметр:y):S(идентификатор эффекта) Xi;
!!VR(v[i]):R0/1/100/(Свободный параметр);
!!ru;

!!ЕСЛИ: L^%(v[0]) %(v[1]) %(v[2])^;

[+] Добавлена поддержка Воскрешения Феникса и смертельного взгляда в сетевых PvP-сражениях.

[+] Обновлена "Платформа Erm Era".:

-) Добавлена поддержка локального отстрела существ в функции BattleStack_Shoot.
-) Синхронизирован с версией лаунчера "Era Erm Framework".

[+] Добавлены следующие типы экспорта и функции в era.dll:

(*
Настраиваемый диалог с 4 внешними/внутренними изображениями (bmp/jpg/png /pcx/pcx16, def?), дополнительным полем ввода и 4 кнопками выбора с флажками.
Все указатели могут быть пустыми. Все поля должны быть доступны для записи процедурами обработки диалога и должны считаться "грязными" после обработки диалога, за исключением поля, в которое записываются значения результата
.
*)
PMultiPurposeDlgSetup = ^TMultiPurposeDlgSetup Многопользовательская настройка;
TMultiPurposeDlgSetup = упакованная запись
Заголовок: pchar; // Заголовок верхнего диалогового окна
InputFieldLabel: pchar; // Если указано, пользователь сможет ввести произвольный текст в поле ввода
ButtonsGroupLabel: pchar; // Если указано, будет отображена группа правых кнопок
InputBuf: pchar; // OUT. Поле для записи указателя на временный буфер с помощью пользовательского ввода. Немедленно скопируйте этот текст в безопасное место
SelectedItem: integer; // OUT. Поле для записи индекса выбранного элемента (0-3 для кнопок, -1 для отмены)
ImagePaths: массив [0..3] из pchar; // Все пути относятся к корневому каталогу игры или пользовательским абсолютным путям
ImageHints: массив [0..3] из pchar;
ButtonTexts: массив [0..3] из pchar;
ButtonHints: массив [0..3] из pchar;
ShowCancelBtn: TInt32Bool;
конец;

TShowMultiPurposeDlgFunc = процедура (настройка: PMultiPurposeDlgSetup); стандартный вызов;

(* Отображает настраиваемый многофункциональный диалог и возвращает идентификатор выбранной кнопки (1..4) или -1 для отмены *)
функция ShowMultiPurposeDlg (настройка: PMultiPurposeDlgSetup): целое число; стандартный вызов;

(* Заменяет текущий универсальный обработчик диалоговых окон/разработчик. Возвращает старый обработчик, если таковой имеется *)
функция SetMultiPurposeDlgHandler (NewImpl: TShowMultiPurposeDlgFunc): _BOS_n} TShowMultiPurposeDlgFunc; стандартный вызов;

(* Создает новый экземпляр API плагина для конкретного плагина библиотеки DLL. Передает реальное имя библиотеки dll с расширением. Возвращает экземпляр плагина или значение NULL, если плагин уже создан *)
функция CreatePlugin (имя: pchar) : {On} TPlugin; stdcall;

(* Устанавливает новый hook по указанному адресу. Возвращает указатель на bridge с исходным кодом, если таковой имеется. При необходимости укажите адрес указателя для записи структуры примененного исправления
указатель на. Это позволит позже откатить исправление. MinCodeSize указывает размер исходного кода, который должен быть удален. В большинстве случаев используйте значение 0. *)
функция перехвата (Addr: указатель; HandlerFunc: THookHandler; {n} AppliedPatch: ppointer; MinCodeSize, HookType: целое число): _BOS_n} указатель; stdcall;

(* Возвращает значение true, если примененный патч был перезаписан *)
функция IsPatchOverwritten (AppliedPatch: указатель): TInt32Bool; stdcall;

(* Возвращает размер примененного исправления в байтах (количество перезаписанных байт) *)
функция GetAppliedPatchSize (AppliedPatch: указатель): целое число; стандартный вызов;

(* Генерирует случайное значение в заданном диапазоне с дополнительным пользовательским параметром, используемым только в детерминированных генераторах, для получения различных выходных данных для последовательности генераций. Например, если вам нужно генерировать случайное значение в бою для каждого вражеского стека, вы можете использовать stack ID или переменную цикла для FreeParam. Но для лучшего качества генерации используйте (stackId XOR UNIQUE_ACTION_MASK) и определите константу UNIQUE_ACTION_MASK как уникальное предварительно сгенерированное значение int32. В сетевых битвах несколько генераций случайных значений с одинаковыми параметрами выдают один и тот же результат до тех пор, пока не будет выполнено следующее действие. Эта функция позволяет вернуть случайность нескольким поколениям в одно и то же время. *)

функция RandomRangeWithFreeParam (MinValue, MaxValue, FreeParam: integer): целое число; стандартный вызов;

[+] Добавлено "Отладка.Опция "LogWindowMessagesOpt" заменена на "heroes 3.ini", что позволяет регистрировать сообщения в главном окне и их параметры.

[+] Добавлены следующие переводимые строки в "era.json".:

- 'era.debug.game_saving_exception_warning': отображается при исключении записи сохраненной игры
- 'era.debug.debug_dump_confirmation': отображается при любой ошибке ERM
- "era.incompatible_savegame_version_warning": отображается, если сохранение игры было выполнено на слишком старом движке Era.

[*] Отныне Era всегда запрашивает разрешение на загрузку глобальных скриптов при запуске карты или перезагрузке скриптов, если на карте есть внутренние скрипты. По умолчанию текст разрешения был изменен с "пропустить" на "загрузить". Следующий языковой ключ должен быть переведен заново: "era.global_scripts_vs_map_scripts_warning". Для параметра WoG 5 всегда устанавливается значение 3 (запрос на загрузку глобальных скриптов, если на карте есть внутренние скрипты) перед загрузкой любых скриптов, поэтому больше нет необходимости сохранять его в настройках WoG. UN:P5/# инструкция во внутренних скриптах карты определяет, принудительно ли автор карты загружает глобальные скрипты или нет.

[+] Добавлены обновленные исходные коды для следующих плагинов: "Buttons", "Erm Hooker", "WoG Native Dialogs", "Game Bug Fixes Extended". Спасибо baratorch и Hota team за то, что поделились своими заголовочными файлами.

[+] Включены переработанные Delphi и C++ Era SDK (файлы API).
[+] Включены последние исходные тексты Era (Tools/Era/Sources/Era 3.9.16) и исходные тексты виртуальной файловой системы.
[*] Восстановлена функциональность чит-кодов WoG в Easy Cheats mod, исправлены опечатки в документации и добавлено отображение размеров массива данных.
[*] Обновлен плагин "erm_hooker.era", отражающий изменения в движке Era.
[*] Обновлен плагин "buttons.era", отражающий изменения в движке Era.
[*] Обновлен плагин "wog native dialogs.era", который более терпим к неподдерживаемым типам изображений для диалогов IF:E.
[*] Повышена стабильность обработки snd/vid-ресурсов (с использованием сплайс-хуков вместо патч-хуков).
[*] "загружайте только эти файлы scripts.txt" поддержка файлов устарела. В версиях Era 4.X она будет удалена. Повторяющиеся записи в этом файле отныне игнорируются.
[*] Обновлен модуль "Era Erm Framework", позволяющий использовать каталог "lib_end" для некоторых скриптов.
[!] Изменен формат файла сохраненной игры. Добавлена проверка формата. Старые сохраненные игры будут загружаться без данных скриптов/плагинов.
[-] Удалены следующие функции из era.dll: "CalcHookPatchSize", "ApiHook", "HookCode".
[-] Исправлен сбой в сетевой игре в диалоге сохранения игры: ошибка в некоторых элементах диалога приводила к недопустимой попытке обновить ScreenLog без инициализации поля TextWidget.
[-] Исправлено неправильное сообщение о версии ERA.

Summary:

- new mod for easy cheats and ERM execution
- new release of ERM hooks plugin
- ERM engine numerous improvements and bug fixes
- new SDK and exported functions
- enhanced ERM library
- new functionality development is freezed, moving towards 4.x Era branch

Tags: #mods #sdk #events #debug #erm #fixes

Details:

[+] Released new mod "Easy Cheats" with really easy to type and remember cheats and built-in ERM console. Type "help" in chat input for details.

[+] Updated erm_hooker.era plugin to version 3.0.

- Switched to modern patching API from era.dll.
- Implemented protection from overlapping patches.
- Implemented protection from patch restoration if patched code was changed by third-party code.
- Improved patch bridge code.
- Added version reporting (RMB on Credits in game menu).
- Patch report file (Debug/Era/erm hooks.txt) uses human readable ERM function names instead of numeric IDs now.

[+] Added support for ERM script libraries. Scripts, located in "Data/s/lib" directory are considered library scripts. They are loaded before other global scripts and before all map scripts (both internal and external). Such scripts must be propertly written, use only named variables and functions with prefixes. They must not influence the gameplay, interface or other scripts. They should be treated as a callable collection of functions, together with related constants and data structures.

Era Erm Framework scripts are moved to "Data/s/lib" and can be used in maps now, even in maps, disabling global ERM scripts.

[+] Fixed DL:H command. Any string is accepted as hint. The hint is copied to a dialog internal location and automatically freed on dialog closing. No more need to use global z-variables for custom dialog hints. Hints are not interpolated at show time anymore.

[+] Modified "IF:L" command to allow any string as argument and automatically escape '%' character. Previously strings with '%' led to garbage results or even crashes.
[+] Modified "HE:B0", "HE:B1", "HE:B3" commands to allow any string as argument.

[+] Rewritten WoG "ApplyString" and "NewMesMan" functions, allowing any string in multiple ERM commands (CA, LE, GE, etc).

Disabled syntax of setting event message to the one from event with given ID (ex, "GE:M30" for event with ID 30).
Deprecated syntax of using -1 instead of empty string.

[+] Extended SN:K(str)/(ind)/[?](strchar or char code) syntax. If result is integer variable, char code is returned instead.

[+] Extended 'VR:F' command with the 4-th parameter.

VR(intVar):F(minValue)/(maxValue)/(showErrors)/(defaultValue);

If (defaultValue) is specified and variable does not fit (minValue)..(maxValue) range, it will be set to (defaultValue).

[+] Improved stability of dynamic ERM commands execution using 'ExecErmCmd' API. Added support for all ERM 2 variables in command parameters.
[+] Extended ERM fast memory buffer for string literals and string arguments in ERM commands and triggers from 1 MB to 3 MB.

[+] Added possibility to increase buffer size for compiled erm scripts using heroes3.ini setting. The default value is 128 MB. Single ERM command need ~0.5 KB.

CompiledErmBufSize = 134217728; maximum size of a buffer for compiled erm scripts (does not influence dynamic compilation on the fly using PersistErmCmd or ExecErmCmd)

[+] Disabled ERM tracking for Era Erm Framework mouse and keyboard handling code.
[+] Improved ERM tracking report formatting.

[+] Added new event "OnBeforeLoadGame" for plugins. It occurs right after old game leaving and before new game loading.

TOnBeforeLoadGameEvent = packed record
FileName: pchar;
end;

[+] Added new option "Debug.CopySavegameOnCrash" to heroes3.ini. The option is on by default and enabled copying of last used savegame to debug directory on crash, which may be useful for crash investigation.

[+] Moved a few messages from code into era.json for further localization:

- era.no_memory_for_erm_optimization;
- era.game_crash_message;

[+] Refactored and updated Era SDK files in "Tools/Era/SDK". For C++ use "era.h" and "era.cpp". For Delphi use "era.pas".

[+] Added the following functions to Era Erm Framework:

!?FU(Interpolate);
; Interpolates ERM variables inside given string (%v1, etc). Can be used for nested translation strings like %T(...) is json.
!#VA(strPtr:x); Source string.
!#VA(resultPtr:x); OUT. Result string.

Example:

!!VRi^edu_age^:S33;
!!VRs^edu_name^:S^Xeon^;
!!VR(templateStr:z):S^%%s(edu_name) is %%i(edu_age) years old^;
!!IF:M(templateStr); displays "%s(edu_name) is %i(edu_age) years old"
!!FU(Interpolate):P(templateStr)/?(interpolatedStr:z);
!!IF:M(interpolatedStr); displays "Xeon is 33 years old"

!?FU(Trim);
; Trims #0..#32 characters (space and control characters) from both sides of the string.
!#VA(strPtr:x); Source string.
!#VA(resultPtr:x); OUT. Result string.

Example:

!!VR(text:z):S^ Hello World ^;
!!FU(Trim):P(text)/?(text);
!!IF:M^%(text)^; displays "Hello World" without leading and trailing spaces

!?FU(StrPos);
; Finds the first occurance of needle string in the haystack string. Returns offset from string start or -1 for faulure
!#VA(haystackPtr:x); String to search in
!#VA(needlePtr:x); String to seacrh for
!#VA(result:x); Result offset in the haystack string or -1.
!#VA(offset:x); Zero-based offset in haystack string to start search from. Default: 0.

Example:

!!VR(text:z):S^Hello World^;
!!FU(StrPos):P(text)/^World^/?(substrPos:y);
!!IF:M^%(substrPos)^; displays "6"


!?FU(StrReplace);
; Replaces all occurencies of Pattern string in the Source string with Replacement string. Returns final string.
; Can be used inside triggers only.
!#VA(sourcePtr:x); Original string to perform replacements in
!#VA(patternPtr:x); What string to replace
!#VA(replacementPtr:x); Replacement string
!#VA(result:x); Result string index

Example:

!!VR(text:z):S^You should cast the spell. Spell casting increases your intelligence^;
!!FU(StrReplace):P(text)/^cast^/^learn^/?(text);
!!IF:M^%(text)^; You should learn the spell. Spell learning increases your intelligence

[+] Added the following constants to Era Erm Framework:

CHAT_EVENT_TYPE_XXX for 'OnChat' event subtype
CHAT_EVENT_RESULT_XXX for 'OnChat' event result

[+] Added the following exported functions to era.dll:

(* Compiles single ERM command without !! prefix and conditions and saves its compiled code in persisted memory storage.
Returns non-nil opaque pointer on success and nil on failure. Trailing semicolon is optional *)
function PersistErmCmd (CmdStr: pchar): {n} pointer; stdcall;

(* Executes previously compiled and persisted ERM command. Use PersistErmCmd API for compilation *)
procedure ExecPersistedErmCmd (PersistedCmd: pointer); stdcall;

(* Translates given string. Returns static translated string address, which will never be deallocated *)
function trStatic (const Key: pchar): pchar; stdcall;

(* Translates given string. Pass parameters as pairs of (key, value). Returns temporary string address, which must be immediately copied to a safe location *)
function trTemp (const Key: pchar; Params: pointer to array of pchar; LastParamIndex: integer): pchar; stdcall;

(* Returns human readable string for ERM event ID. Usually it's ERM trigger human readable name or ERM function name.
The caller MUST free returned memory block using MemFree from era.dll *)
function GetTriggerReadableName (EventId: integer): {O} pchar; stdcall;

(* Installs new hook at specified address. Returns pointer to bridge with original code. Optionally specify address of a pointer to write applied patch structure pointer to.
It will allow to rollback the patch later.
Handler function must use stdcall convention. It receives hook context pointer and must return non-zero value in order to execute overwritten code. *)
function HookCode (Addr: pointer; HandlerFunc: THookHandler; {n} AppliedPatch: ppointer): pointer; stdcall;

type
PHookContext = ^THookContext;
THookContext = packed record
EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX: integer;
RetAddr: pointer;
end;

THookHandler = function (Context: PHookContext): LONGBOOL; stdcall;

(* Calculates number of bytes to be overwritten during hook placement *)
function CalcHookPatchSize (Addr: pointer): integer; stdcall;

(* The patch will be rollback and internal memory and freed. Do not use it anymore *)
procedure RollbackAppliedPatch ({O} AppliedPatch: pointer); stdcall;

(* Frees applied patch structure. Use it if you don't plan to rollback it anymore *)
procedure FreeAppliedPatch ({O} AppliedPatch: pointer); stdcall;

[*] Modified some exported function signatures. Many of them now use TInt32Bool type (32 bit 0 or 1) instead of boolean for better compatiblity with ERM.

type
TIsCommanderIdFunc = function (MonId: integer): TInt32Bool stdcall;
TIsElixirOfLifeStackFunc = function (Stack: Heroes.PBattleStack): TInt32Bool stdcall;

function IsCommanderId (MonId: integer): TInt32Bool; stdcall;
function SetIsCommanderIdFunc (NewImpl: TIsCommanderIdFunc): {n} TIsCommanderIdFunc; stdcall;
function IsElixirOfLifeStack (Stack: Heroes.PBattleStack): TInt32Bool; stdcall;
function SetIsElixirOfLifeStackFunc (NewImpl: TIsElixirOfLifeStackFunc): {n} TIsElixirOfLifeStackFunc; stdcall;

(* Returns 32-character unique key for current game process. The ID will be unique between multiple game runs. *)
procedure GetProcessGuid: static_pchar; stdcall;

[*] Increase performance of "Substr" function from Era Erm Framework.
[*] Changed unsafe Era hooks with manually specified hook sizes to fully automatical hooks with hook length calculation using integrated disassembler engine.

[-] Fixed bug: "OnWinGame" and "OnLoseGame" events were not executed after "OnGameLeave", because ERM engine was disabled by that time. Now "OnWinGame" and "OnLoseGame" occur right before "OnGameLeave".

[-] Fixed ERM bug. Local array item access by variable index lacked lazy evaluation support. Constructions like "!!if&v1<>v1/(array[hugeValueVar])" used to produce runtime warnings. For now invalid item index is changed into 0, producing runtime error only in case of real item access.

[-] Fixed IsCommanderId function crashing.
[-] Fixed game bug: typing in chat bar produced phantom chat mouse button click events.
[-] Fixed crash, occuring when "Debug.TrackErm" option is disabled. The bug was introduced in version 3.9.14.
[-] Fixed bug: ERM memory context was lost in exceptions because of new fast exit to main menu implementation.
[-] Fixed WoG complete AI battle detection. Autoclosing dialog timer is not compared to 0 anymore. The "gosolo" cheat works in battles again without ERM errors.

[-] Deprecated exported 'ApiHook' and 'Hook' functions. 'Hook' will show error message, while ApiHook is preserved for legacy only. Use 'HookCode' instead or patcher_x86 API directly.

[-] Fixed old event handling bug. Triggering ERM event with disabled ERM resulted in global event not being generated either. For example, Era and plugins could not handle 'OnSavegameRead' event if ERM was disabled at the moment of savegame loading.

Summary:

- added screenshot capturing support
- improved network gaming stability
- improved ERM execution stability
- improved debugging facilities

Tags: #screenshots #graphics #network #debug #erm

Details:

[+] Added support for capturing game screenshots in png/jpg formats. The following function was exported in era.dll:

(*
Captures screenshot and saves it as a file. The format is detected automatically by extension. The following extensions
are supported: 'jpeg', 'jpg', 'png'. By default in-game cursor is also captured. Returns success flag.

'Quality' is used to specify jpeg saving quality (0..100).
'Flags' is a bit mask of function flags.

TS_FLAG_HIDE_CURSOR = 1; // Hide cursor
*)
function TakeScreenshot (FilePath: pchar; Quality: integer; Flags: integer): TDwordBool; stdcall;

[+] Added new option "Debug.CaptureScreenshotOnCrash" to heroes3.ini. The option allows to capture screenshot on crash and save it in "Debug/Era/screenshot.jpg".

[+] Added runtime API for controlling ERM tracking. It can be used to omit well tested library from final ERM tracking log or for tracking particular code units only.

Added new option "Debug.AllowRuntimeErmTrackingControl" to heroes3.ini. The option enables or disables runtime control on ERM tracking. It's enabled by default and should be disabled in case of complex bug tracking, where no code can be trusted.

The following functions were exported in era.dll:

// Pauses ERM tracking. All previously tracked info is preserved.
procedure DisableErmTracking; stdcall;

// Resumes ERM tracking.
procedure EnableErmTracking; stdcall;

// Sets ERM tracking to value, specified in heroes3.ini (the one used before runtime manipulations)
procedure RestoreErmTracking; stdcall;

// Clears all previously recorded tracks.
procedure ResetErmTracking; stdcall;

[+] Added automatical ERM tracking reset and settings restoration on game start or load.
[+] Implemented automatical "Debug/Era" directory cleanup before generating debug files on crash.

[+] Added support for "OnGameEnter" and "OnGameLeave" events in network games. Previously savegame transfer and loading on remote side used to trigger "OnAfterSavegameLoad", but not "OnGameLeave" + "OnGameEnter". That's why using erm_hooker plugin with "OnGameEnter" event resulted in unset hooks after the first end of turn.

In network games the sequence of events after remote side end of turn is the following:

"OnGameLeave" - here were restore UN:C patches and erm_hooker unset hooks
"OnSavegameRead" - reading transferred savegame
"OnAfterLoadGame" - fully loaded trasferred savegame
"OnGameEnter" - install UN:C patches and ERM hooks once again

[!] Warning. Using "OnGameEnter" for ERM hooks in network games does not work in Era < 3.9.14.

[+] ERM execution is disabled after "OnGameLeave" event. MP3 and real time triggers are not executed outside of game main loop anymore. Previously triggers were executed in the context of game main menu.

[+] Updated erm_hooker.era plugin and debug map.
[*] "OnAdvMapTileHint" was renamed to "OnAdventureMapTileHint". The previous name is deprecated, but is kept for compatibility reasons.
[*] Deprecated 'OnAbnormalGameLeave' event. HD mod way to return from combat screen to main game menu is not supported anymore.
[*] Internal settings module refactoring.
[-] IP selection dialog will no be shown in multiplayer setup screen if PC has only one IP address available.
[-] Fixed ERM commands tracking with ';' inside string literals (ex. ^...;...^).
[-] Fixed inaccurate routine and line detection by address in DebugMaps module.
[-] Fixed buttons.dll plugin debug map.

[+] Improved exceptions tolerance for ERM engine (triggers and commands). ERM memory clean up is performed in case of exception, allowing to reuse ERM engine later after recovery. Exceptions may be used, for instance, to trigger fast quit from deeply nested dialogs.

[+] Improved crash/exception handling. HD and WoG handlers are not called at all. Era's handler is called only once. Crash reports become more stable and accurate. Previosly multiple exception could take place and override the same logs.

[+] Added experimental (may be subject of removal) exported function to quit from any dialog to main game menu.

Heroes of Might and Magic III: In the Wake of Gods is a massive modification of HMMIII inventing script language and generally intended to stretch the boundaries of the original game capabilities. HMMIII WoG presents new objects with various properties, drastically changed and improved creature abilities and a wide variety of custom scripts for altering the gameplay.

3 видео, для переключения плейлиста - используйте кнопку меню слева:



Если вы являетесь правообладателем данного материала и вы против размещения информации о данном материале, либо ссылок на него - ознакомьтесь с нашей информацией для правообладателей и присылайте нам письмо. Если Вы против размещения данного материала - администрация с радостью пойдет Вам на встречу!

Чистая версия игры



Ссылок на самом деле больше (всего 1), видно их будет только после регистрации на сайте.

Файл добавил: Kusko [2514|32] | 2022-12-26 20:16:14
Базовая игра дополненная различными модификациями
Скачать .torrent файл (прямая ссылка): heroes_of_might_and_magic_3_e_2.torrent

Если ты нашёл "мёртвую" ссылку - дави значок [X] рядом с ней и ссылка в ближайшее время будет перезалита.

Дополнительные файлы для игры

Если ты нашел новую версию игры Heroes of Might and Magic 3: ERA 2 v3.9.20 / Heroes of Might and Magic 3: (WoG/Era), либо русификатор к ней, патч, левелпак или мод - сообщи об этом редактору новости, он добавит сюда доп. файл.
Отправка личных сообщений доступна только после регистрации.

Комментарии игроков (6 шт.)

От: Juc [4|30] | Дата 2025-02-02 12:21:02

Репутация
4
Легенда, просто легенда.
Игра, в которую я рублюсь уже почти четверть века.
Она будет жить на всех моих компах до скончания веков!
От: CnupT [17|2] | Дата 2025-02-01 22:40:31

Репутация
17
А что ERA за 1,5-2 года вообще не обновлялась?

CnupT думал несколько часов и добавил:

Спасибо за оперативность! ;)
От: Serjminator [1|9] | Дата 2023-08-21 11:27:07

Репутация
1
А почему в этой версии WOG так настроек то мало (считай нет) ?
От: HellRai5eR [2|2] | Дата 2022-12-28 19:47:00

Репутация
2
Какой нафиг самая популярная. Все играют сейчас в Hota
От: Andrew_SV_GAD [29|28] | Дата 2022-12-27 11:42:22

Репутация
29
В этой сборке настроек WoG кот наплакал - две убогих вкладки. Хотя HD версия достойная в плане графики, дополнительный интерфейс и возможности надо вдумчиво поюзать.
От: gay_developer [8|9] | Дата 2021-08-14 00:13:56

Репутация
8
Хм.