Current time: 23.03.2024, 13:16 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA II
» WoG Era 2: Русская и Английская версии
Author Message
Berserker Offline
Administrators

Posts: 16449
Post: #1

Image: f09f92a5.png Вышла Эра 2.9.2 Image: f09f92a5.png
Долгое время шла работа над выпуском новой ветки 2.9.х, которая, наконец, закончена. Ключевые особенности обновления:
Image: e2ad90.png Оптимизация скриптового движка ЕРМ позволила ускорить выполнение повторяемого кода в 10 раз! (со 130 тыс. команд/сек до 1.3 млн. команд/сек). Это значит быстрее и плавнее игра, больше тяжёлых модов, больше возможностей для улучшения ИИ.
Image: e2ad90.png Множество улучшений в работе ЕРМ, которые положительно скажутся на лёгкости написания и отладки кода.
Image: e2ad90.png Поддержка новых событий: отрисовка экрана героя, а также обработка мыши в экранах найма монстров, городской ратуши и диалоге обзора королевства.
Image: e2ad90.png Скриптописателям предоставлен интерфейс для работы с диалогом найма отрядов. Стало возможным реализовывать множество идей на его основе: призыв разных существ в бою, перенос армий между героями, удалённая покупка монстров, свои жилища существ и многое другое.
Image: e2ad90.png Эволюция кода Эры. Код Эры 1.9 полностью перенесён на Delphi. Angel.dll — теперь просто заглушка.
Image: e2ad90.png Подарок для антивирусов: старая утилита DEFka, заменена на благоприятную версию 2.0 на другом движке.

Всё остальное читайте в журнале изменений: Help\Era\era ii changelog.txt.
====================
Image: f09f91ac.png Особая благодарность фанатам игры, что поддержали проект материально: Andarium(Image: f09f9491.pngImage: f09f9491.png) и нескольким другим игрокам(Image: f09f9491.png). Просьба писать ники/имена в комментариях к переводам, чтобы вас, дорогие друзья, потом можно было упомянуть в летописях.

Image: f09f92ab.png Отдельная благодарность daemon_n за шефство над самой популярной русскоязычной сборкой Эры и поддержку, неустанно оказываемую игрокам, а также перевод мода Advanced Classes.

Image: f09f92ab.png Благодарность MoP за его плагин Battery.dll, с которого началась разработка программного интерфейса диалога найма существ.

Image: f09f92ab.png Выражаю благодарность igrik за постоянные выпуски и обновления плагинов, советы и помощь.

Скачать актуальную версию
Устанавливать на Полное Собрание или Дыхание Смерти.

Image: f09f9491.png Поддержать выпуск новых версий можно через приложение пожертвований из шапки группы или напрямую на банковскую карту:
4496 5501 6577 3844 (Беларусь, БПС-СБЕРБАНК). Сервис: paysend.com

Благодарности:
Jim Vogan - Улучшение руководства по ERM, перевод руководства по Эре на английский
solitaire345 - Улучшение руководства по ERM
Valery (Salamandre) - Тестирование
Bes, SyDr, gamecreator, baratorch, MOP и ещё десятку отличных ребят.

Русификатор: Скачать (21,5 МБ)
Благодарности: Black Phantom, Sir Four, Qwertyus.
Комментарий: Включено обновление от Qwertyus по исправлению кнопок и многочисленных элементов меню и объектов.


Концепция модов.
Мод - это набор файлов и папок, включая графику, аудио, видео, скрипты, модули, заплатки и пользовательские файлы. Эра вводит папку "Mods", в которой каждая подпапка зовётся модом и обрабатывается так, словно она является корневой папкой игры. Это значит, что файлы и папки в модах должны иметь такую же организационную структуру, как и в самой игре.

Оригинальная игра: Data
Мод: Mods\Название Моего Мода\Data

Содержимое модов.
Содержимое модов не должно меняться во время игрового процесса. Изменяемые файлы (такие как настройки, журналы, временные) следует помещать в реальные игровые папки во время установки. Несколько модов могут одновременно существовать в папке Mods, при условии, что они являются совместимыми. Каждый мод может содержать неограниченно количество игровых ресурсов (snd/vid/pac архивы в Data), которые будут подгружены автоматически.

Приоритеты.
Если в каком-либо из модов есть файл с таким же именем, как и в оригинальной игре, то он используется вместо оригинального. Если в нескольких модах имеется файл с одним и тем же именем, то используется мод с наибольшим приоритетом. Чтобы назначить приоритет моду, нужно добавить число к началу его имени, отделив число пробелом от остального текста. Чем больше число - тем больше приоритет. Например: "100 МойМод". Если приоритет не указан, то он равняется 0. В случае равных приоритетов сравниваются даты создания папок модов и наиболее "свежей" папке отдаётся предпочтение при поиске. Такой механизм гарантирует, что моды, которые устанавливаются позже, будут иметь приоритет над теми, что были установлены ранее.

Подсказка, как задать папке текущее время в качестве даты создания.
Выполните "Tools\installmod.exe" с именем мода в качестве единственного аргумента.

Оригинальные snd/vid архивы грузятся в следующем порядке:
  • heroes3.vid с CD
  • video.vid
  • h3ab_ahd.vid
  • heroes3.snd с CD
  • heroes3.snd
  • h3ab_ahd.snd

Мод ВоГ.
ВоГ теперь распространяется в качестве обычного мода и, таким образом, не заменяет игровые файлы. Большая часть воговских ресурсов расположена в архиве "Data\hmm35wog.pac". Все диалоги ВоГ читают этот архив напрямую, игнорируя другие моды. Единственный, не рекомендуемый способ, как исправить такое поведение - это импортировать новые диалоговые данные в hmm35wog.pac. ВоГ содержит исправленный деф палатки первой помощи, что должно избавить игроков от зависаний.

Дополнительные опциональные изменения:
  • Быстрая анимация в бою. Для отключения удалите файл "Data\cranim.txt".
  • Нет предбитвенных мелодий. Для отключения удалите файл "Data\wog - no prebattle music.snd".
  • Анимированные объекты Героев 3. Для отключения удалите файл "Data\wog - animated objects.pac".
  • Анимированные деревья. Для отключения удалите файл "Data\wog - animated trees.pac".
  • Украшения (препятствия) в боях. Для отключения удалите файл "Data\wog - battle decorations.pac".

Мод Yona.
Yona - это мод с открытым исходным кодом, написанный на чистом Delphi с использованием Era SDK. Его идеологией являются полная опциональность ("Data\Yona\settings.ini"), родная поддержка всех нововведений игрой, ИИ и многопользовательский код. Мод совместим с другими модами, не хранит данных в сохранениях и не изменяет ERM скрипты. Для удаления мода удалите папку "Mods\Yona".

Свойства:
Новая подсказка в журнале боя покажет в геройском стиле вероятное число убитых противников, средние значения, смертельные значения и новые способности при выбранной атаке.

Новые способности:
  • Копейщики/Алебардщики игнорируют кавалерийских бонус и наносят 200% урона кавалерии:
    • Кавалеристам
    • Чемпионам
    • Кентаврам
    • Капитанам Кентавров
    • Единорогам
    • Боевым Единорогам
    • Чёрным Рыцарям
    • Рыцарям Смерти
    • Кочевникам
    • Сильванским Кентаврам
    • Пожарам
    • Кошмарам
  • Кавалеристы / Чемпионы получают 20% бонус к урону за каждую пройденную клетку вместо оригинальных 5%. Бонус складывается с другими, например модификатором параметра "Атака" или навыка "Нападение".
  • Рыцари/Крестоносцы игнорируют 50% физического урона в состоянии обороны.
  • Урон Орков/Орков-вождей (метание топоров) зависит квадратично от расстояния до цели.
    Формула: Базовый урон * (19 - расстояние)^2 / 100.

Мод "Прокрутка вторичных навыков".
Добавляет кнопки прокрутки справа от списка вторичных навыков в окне героя, позволяя просматривать и оперировать более чем восемью навыками.


Изменения.

Переносимость.
Игра стала полностью переносимой. Все игровые настройки хранятся в файле "heroes3.ini". Родной механизм сканирования CD-дисков отключён. Эра автоматически загружает файлы ".\Heroes3\Data\heroes3.vid" и ".\Heroes3\Data\heroes3.snd" при их наличии. Если опция "LoadCD" (Загружать CD) в "heroes3.ini" установлена в 1, то Эра сканирует все CD-приводы в поисках папки "Heroes3". Если вышеописанные snd/vid архивы не найдены в игровой папке, Эра попытается подгрузить их с CD-диска при условии, что опция "LoadCD" включена.

Отладочный режим.
Для включения отладочного режима установите опцию "Debug" в 1. Файл "eralog.txt" будет автоматически создан при старте игры.

Расширяемость.
Все erm файлы (и ert файлы с такими же именами) автоматически подгружаются из папки "Data\s" при старте карты или нажатии клавиши F12. Диалог ВоГ-опций больше не проверяет наличие файлов на диске. Количество скриптов ограничено только размерами внутренней памяти. Если правильное (положительное или отрицательное) число стоит перед именем файла (например, "50 Проверка.erm"), то оно расценивается как приоритет загрузки (чем выше, тем раньше грузится скрипт). Если файл "load only these scripts.txt" (загружать только эти скрипты) существует в папке "Data\s", то только те скрипты, которые указаны в этом файле (по одному скрипту на строку), будут загружены. В этом случае порядок загрузки скриптов определяется порядком их упоминания в списке. Опция ВоГ-настроек "Alternate_Script_Location" больше не используется.

Многопользовательская игра.
  • Между двумя копиями игры на одном компьютере возможна сетевая игра, если у копий разные значения параметра "Unique System ID" в файле "heroes3.ini". Для того, чтобы сгенерировать новый ID, удалите строку с данной настройкой и запустите игру.
  • Механизм определения внешнего IP адреса был улучшен. Первый адрес не из локальной сети перемешается в начало списка адресов, возвращаемого функцией gethostbyname.

Редакторы.
Оригинальные редакторы (h3maped.exe and h3ccmped.exe) работают хорошо. ВоГ редакторы (h3wmaped.exe и h3wcmped.exe) могут нуждаться в дополнительном исправлении. Воговский редактор правильно открывает карты и загружает моды. Он также применяет все заплатки для памяти и загружает dll-библиотеки из папки EraEditor. Расширенная функциональность редактора, обеспечиваемая патчем от GrayFace требует, чтобы ресурсы были физически расположены в файлах h3sprite.lod и h3bitmap.lod. Воговский редактор кампаний не поддерживает модов. Для того, чтобы MapEdPatch (патч для редактора карт) работал с новыми ВоГ-объектами , а также чтобы заработал редактор кампаний ВоГ, картостроитель должен запустить "Tools\Fix Editor\Fix Editor.bat". Этот пакетный файл импортирует все критически данные в h3sprite.lod и h3bitmap.lod.

Поддержка пользовательских кнопок.
Стало возможным иметь пользовательские кнопки в большинстве игровых экранов. Оригинальный модуль под авторством MoP-а (Buttons.dll) был изменён и теперь является частью Эры. Пользовательские кнопки описываются в *.btn файлах, которые подгружаются из папки "Data\Buttons" при старте игры.

Помощь.
Вся документация, истории изменений, обновлённые руководства по ERM и Эре могут быть найдены в папке "Help".

Улучшения.
  • Совместимость с Windows 7 при запуске без опции "Совместимость с XP".
  • Больше нет ВоГ-инсталлятора.
  • Ускорен вызов всех воговских диалогов, в несколько раз меньше нагрузка на жёсткий диск.
  • Оптимизированы ВоГ-диалоги, значительно снижена нагрузка на процессор. Заплатка "reduce cpu load.bin" была удалена и опция HD-мода "Berserker's CPU patch" тоже должна быть выключена.
  • Запись ini-файлов через функции ERM или Эры теперь приводит к сортированному списку секций и ключей вместо бывшего хаотичного.
  • Генерация случайных карт в игре и редакторе больше не зависит от мусорных snd/vid/lod файлов из Клинка Армагеддона.
  • Игра не требует наличия родных lod-архивов в папке "Data", если все необходимые ресурсы присутствуют в других pac-архивах.
  • Добавлены синхронизированные звуки существ от GrayFace.
  • Script 98 (быстрые и умные сохранения) был переписан, теперь поддерживает опцию в ВоГ-меню, не конфликтует с чатом и совместим с другими скриптами.
  • Все вспомогательные программы были перемещены в папку "Tools", включая новые стандартные:
    lodexport, lodimport, objector.exe, repman.exe, resman.exe, installmod.exe.
  • Обновлены API и исходники.
  • F11 теперь извлекает скрипты из памяти в папку "Data\ExtractedScripts" вместо "Data\s\ExtractedScripts".
  • Удалён дублирующий код ВоГ-инициализации.
  • Исправлены баги Эры 1.9 в области PO/Доп. памяти, которые приводили к неверному размеру сохранённых игр и испорченным данным.
  • Исправлен баг Эры 1.9, при котором модули с расширение ".off" всё равно загружались.

Технические детали.

Поддержка пользовательских кнопок.
Каждый *.btn файл (чистый txt-формат) содержит строки (по одной на кнопку) в следующем формате:
[Экран кнопки];[Уникальное имя кнопки];[DEF кнопки;[X];[Y];[Ширина];[Высота];[Длинное описание];[Короткое описание],
где "Экран кнопки" может принимать одно из следующих значений:
  • Advmap (для карты приключений)
  • Town (для города)
  • Hero (для экрана героя)
  • Heroes (для экрана встречи героев)
  • Battle (для битвы)
  • Dummy (если кнопка не используется)
Каждой кнопке автоматически назначается уникальный идентификатор (ID), который можно получить через вызов stdcall функции "GetButtonID" из библиотеки Era.dll с именем кнопки в качестве единственного аргумента. Если указанное имя не было зарегистрировано, то функция вернёт -1.

Виртуальная Файловая Система (Поддержка папки "Mods").
Поддерживается следующий набор функций, работающих с именами в файловой системе:
  • CreateFileA
  • GetFileAttributesA
  • FindFirstFileA
  • FindNextFileA
  • FindClose
  • LoadLibraryA
  • DeleteFileA
  • CreateDirectoryA
  • RemoveDirectoryA
  • GetPrivateProfileStringA
  • LoadCursorFromFileA
  • PlaySoundA
  • GetCurrentDirectoryA
  • SetCurrentDirectoryA

Новое событие "OnStackToStackDamage" (!?FU77012). (При расчёте урон типа "отряд-по-отряду")
Аргументы:
  • Атакующий отряд (0..41) или -1
  • Защищающийся отряд (0..41) или -1
  • Конечный урон (НЕ МЕНЯТЬ!)
  • Конечный урон (ИЗМЕНЯЕМЫЙ)
  • Базовый урон
  • Бонус урона
  • Дальняя атака? (если не 0 или 1, то содержит мусор)
  • Расстояние (только для теоретических атак установлено)
  • Теоретическая атака? (расчёт для подсказки или ИИ)
Событие возникает, когда один отряд атакует или стреляет в другой.

Новое событие "OnAICalcStackAttackEffect" (!?FU77013). (ИИ расчитывает эффект от атаки на отряд)
Аргументы:
  • Атакующий отряд (0..41)
  • Защищающийся отряд (0..41)
  • Значение эффекта (ИЗМЕНЯЕМОЕ)
  • Значение эффекта (НЕ МЕНЯТЬ)

Новое событие "OnChat" (!?FU77014). (При чате)
Первый аргумент определяет тип события и остальные аргументы.
  • 0 (Вход в чат)
  • Запретить вход? (0..1)
  • 1 (Ввод)
  • Строка ввода
  • Действие: 0 (очистить панель), 1 (закрыть панель) или 2 (по умолчанию)
  • 2 (Выход из чата)
Разное.
  • Добавлена функция "ApiHook". Она определяет минимальный размер заплатки самостоятельно, в отличие от функции "Hook".
  • И "ApiHook" и "Hook" функции теперь возвращают новый адрес затёртого кода в режиме моста (BRIDGE), что позволяет вызывать также и оригинальные функции, минуя установленные перехватчики.
  • v1 содержит описатель библиотеки Era dll во время загрузки *.era модулей.
  • Эра автоматически вызывает функцию DisableThreadLibraryCalls для всех загружаемых *.era модулей.
  • ExecErmCmd больше не убивает игру при ошибке.
  • Событие "OnNameColors" было переименовано в "OnAfterCreateWindow"

Версия 2.3 от 10-го июня.
----------------------
Code:
[+] Добавлена поддержка отрицательных z, e, y переменных всем командам Эры.
[+] Добавлен редактор DL-диалогов от GrayFace. Программа #16 в Стартовом Меню Эры.
[+] Добавлены исправленные снежные объекты для карты приключений.
[+] Добавлены улучшенные озёра от Darkloke.
[+] Добавлена поддержка заплатки "no secondary skills limit" ("нет предела на количество вторичных навыков")
скриптам "battle academy" ("боевая академия") и "school of wizardry" (школа волшебства). Автор: majaczek.

[*] Стартовое Меню Эры теперь отображает номер текущей страницы в заголовке.
[*] В случае обнаружения дубликатов в файлах zeobjts, редактор карт вместо вылета сообщает об ошибке.
[*] Модуль "all war machines in blacksmith.dll.off" ("все машины в кузницы") устарел и был удалён.
[-] Исправлен файл avwattak.def, вызывающий редкие вылеты.


Версия 2.2 от 29-го мая.
---------------------
Code:
[+] Добавлена утилита "Стартовое Меню Эры" (Tools\Era Start Menu\start.exe). Она позволяет открывать наиболее
часто используемые запускные файлы, полезные программы и руководства через одиночные щелчки мышкой.
[+] Добавлены функции для перенаправления файлов в игровых ресурсах (fnt, pcx, txt, def, etc.). Местные перенаправления
сохраняются в файлах при записи игр на диск и применяются при загрузке. Всеобщие перенаправления воздействуют на игру до перезапуска приложения.

Era.dll
  RedirectFile        (СтароеИмя, НовоеИмя); STDCALL; // Местное перенаправление файла
  GlobalRedirectFile  (СтароеИмя, НовоеИмя); STDCALL; // Всеобщее перенаправление файла

Используйте пустой аргумент НовоеИмя, чтобы удалить перенаправление. Передайте оба аргумента пустыми, чтобы удалить
все перенаправления.

[+] Добавлена поддержка для сборок объектов для карт. Вместо включения всего zeobjts.txt в сборку создайте новый txt файл, содержащий лишь добавленные объекты, и поместите его под уникальными именем в папку "Mods\YourMod\Data\Objects".
  Пример:
    Mods\YourMod\Data\Objects\сборка новых объектов.txt

[+] Реализовано перенаправление блоков памяти. Модулям Эры, расширяющим оригинальные структуры игры, следует регистрировать каждое перемещение, используя следующую функцию:
  "RedirectMemoryBlock (СтарыйАдрес, РазмерБлока, НовыйАдрес)".
Чтобы получить реальный адрес блока памяти, вызовите функцию "GetRealAddr (СтарыйАдрес)". Команда UN:C была изменена и
теперь автоматически работает с перенаправлениями, так что отсутствует необходимость в ручном вызове GetRealAddr из ERM.

[+] Добавлена поддержка китайского загрузчика. {~color}...{~} преобразуется в {...} до передачи текста
китайскому обработчику.

[+] Добавлена опция "CPUPatch" ("Заплатка на загрузку процессора") в heroes3.ini в связи с редкими жалобами по этой
функции (замедлялась реакция интерфейса).

[+] Добавлены Копейщик, Орк, Дендроид-Солдат и метки пути из проекта HotA.
[+] Добавлен альтернативный редактор шрифтов. Авторы: forum.gamevn.com.
[+] Добавлена утилита Autoit3 (Tools\Autoit\autoit.exe) и shortcut.bat ("создание ярлыков") для инсталляторов.
[+] Добавлена серия исправленных файлов от Bes в hmm35wog.pac.
[+] Добавлен файл apply.bat ("применить") для BinMagic. Аргументы: [Заплатка], [Файл, к которому применить].

[*] cranim.txt был переделан с нуля для более плавной анимации и перемещён в отдельный мод с названием
"Fast Battle Animation" ("Быстрая анимация в бою"). Мод также содержит изначально долгие звуковые файлы, которые
были укорочены.

[*] Заплатка от Jim Vogan для отображения первичных навыков за 99 была изменена. Теперь предел составляет: +127.
[*] Ошибки в файлах *.btn теперь не ведут к вылетам, а вместо этого генерируют уведомительные сообщения.
[*] Era SDK для Паскаля был изменён для лучшей совместимости с компилятором FreePascal. Автор: AVS.
[*] В SDK добавлена функция SaveIni, так как все операции записи в ини кэшируются..
[*] Улучшена поддержка функции FindClose. Больше не будет висячих описателей, созданных FindFirstW.

[-] Журналирование больше не потребляет памяти.
[-] Исправлен баг с сохранением ини-файлов. ERM команды обновляли значения только в памяти.
[-] Исправлена порча отрицательных y-переменных, вызываемая движком Эры.
[-] Исправлены 4 скрипта WoG 3.58f. Авторы: Jim Vogan, SyDr.
[-] Исправлен файл zmess00.txt из оригинальной сборки WoG.
[-] Исправлен баг Эры в команде HE:A3.


Версия 2.1 от 2-го апреля.
----------------------
Code:
[+] Добавлен обновлённый деф катапульты от Валерия. Исправляет вылеты при использовании катапульты
в битве в роли машины войны.

[+] Добавлены исправленные анимированные и обычные WoG-объекты от totkotoriy.
[+] Добавлено "Управление Заплатками" от SyDr. "Tools\Plugins Manager".
[+] Добавлено "Управление Модами" от SyDr. "Tools\Mods Manager".
[+] Исправлен урон башен (бонусы защиты, окаменения и воздушного щита).
"Mods\WoG\EraPlugins\AfterWoG\fix towers damage.bin".

[+] Добавлена заплатка на отображение значений первичных навыков больше 99 от Jim Vogan.
"Mods\WoG\EraPlugins\AfterWoG\display primary skills over 99.bin".
[+] Добавлены 2 функции Эры для проверки присутствия модулей/заплаток:
  FUNCTION PluginExists (Имя: СТРОКА): ЛОГИЧЕСКОЕ; STDCALL; // Присутствует ли модуль
  FUNCTION PatchExists  (Имя: СТРОКА): ЛОГИЧЕСКОЕ; STDCALL; // Присутствует ли заплатка
  
  Пример:
    !!SN:L^era.dll^/?y1 Ay1/^PluginExists^/?y2 Ey2/1/^yona^;
    !!IF&v1=0:M^Заплатка "yona" не загружена!^;

[*] Заплатка "no real time trigger" ("выкл. событие реального времени") теперь отключена по умолчанию.
[*] Мод прокрутки вторичных навыков теперь прокручивает навыки до верхнего предела при выходе из Экрана Героя.
[*] Эра не будет загружать модули и заплатки с размерами <= 4.
[-] Исправлены ошибки в списке событий. SDK/API/Исходники Эры были обновлены.

http://heroescommunity.com/viewthread.ph...5006#focus



ERA 2.46f
Версия, которая работает со старыми модами из коробки, включая большинство модов от Valery/Salamandre.
Отличия от ERA 2.46:
Code:
- Добавлен ERM Hooker 2.0
- Добавлены плагины Pandora/Seer huts последних версий от gamecreator.
- Добавлен Fix EA:E плагин.
15.06.2011 20:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #2
Радуга 
История изменения версий 2.4 - 2.7.7
15.06.2011 22:40
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #3
Радуга 
История изменения версий 2.8.0 - 2.9.5
15.06.2011 23:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #4
Радуга 
История изменения версий 2.9.6 - 2.9.14
23.06.2011 16:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #5
Радуга 
-) Минимум изменений в исполняемом файле на жёстком диске. Два необходимых патча применяются: отмена CRC-проверок и загрузка era.dll. Все остальные изменения вносятся подгружаемыми модулями (плагинами) и динамическими заплатками.
Статус: готово.

-) Не всегда удобно применять заплатки после выполнения стартового вог-кода. То же самое касается и плагинов. Кроме того, подгрузка библиотек, создание потоков и прочие важны вещи в DllMain зачастую приводят к багам и сбоям, что описано в официальной документации. Следовательно и Эра и её плагины должны инициализироваться уже после загрузки библиотек.

Решение:
Эра загружает плагины до выполнения ВоГ-кода и извещает о событии OnBeforeWoG. После установки ВоГ-заплаток генерируется событие OnAfterWoG. Патчи расположены в двух папках Before/After+WoG. Таким образом сохраняется частичная совместимость со старыми плагинами, если они не вносят изменения в те части кода, которые модифицирует код ВоГа.
Статус: готово.

-) Система плагинов ранее представляла собой просто механизм автоподгрузки библиотек. Теперь каждый плагин получает извещение о каждом новом событии Эры, если экспортирован соответствующий обработчик в формате "OnXXX". Более того, каждый плагин может сам генерировать события и устанавливать для них данные. Эра также использует внутримодульную рассылку сообщений, что унифицирует её дальнейшее развитие. Новые модули просто подписываются на получение определённых событий подобно плагинам.

Статус: готово.

-) Многие плагины устанавливают свои перехватчики кода. Традиционно оправданный подход: низкоуровневый перехватчик на ассемблере, являющийся переходником к высокоуровневой функции. Этот переходник может быть сгенерирован автоматически. Требования к идеальному переходнику:
  • Высокоуровневая функция получает один параметр - контекст:
    Code:
    PHookHandlerArgs = ^THookHandlerArgs;
    THookHandlerArgs = PACKED RECORD
      EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX: INTEGER;
      RetAddr: POINTER;
    END; // .RECORD THookHandlerArgs
  • Регистры и адрес возврата могут быть изменены. Функция возвращает флаг EXEC_DEF_CODE? (выполнять ли затёртый код).
Итоговая реализация функции перехватчика поддерживает как традиционные перехваты простым call/jmp методом с затиранием NOP-ами мусора, так и новый универсальный перехватчик типа "Мост".

Статус: готово.

-) Отладка ЕРМ долгое время была головной болью: постоянные перезагрузки карты после внесения изменений сильно понижали КПД скриптописца. DEE позволяет изменять скрипты в памяти, после чего необходимо произвести сохранение и загрузку, чтобы изменение вступили в силу. Это тоже несколько неудобно и невозможно, если нельзя покидать экран боя, например.

Решение:
Функция ReloadErm перезагружает все скрипты и ert-файлы, проводит повторную компиляцию ЕРМ. Поскольку вызывать из ЕРМ такую функцию нельзя, планируется повесить её на клавишу F12. Из известных ограничений: в карте не должно быть встроенных скриптов или ЕРМ-скрипта с именем карты в папке Maps. Картоделам рекомендуется выкладывать карты в установочных пакетах с полноценными Data\s скриптами.

Статус: готово, но необходима привязка к клавише позже.

-) Разработчикам DL-диалогов тоже приходится несладко. А всё потому, что однажды загруженные txt-файлы кэшируются. Более того, у каждого ресурса есть счётчик ссылок. Код ВоГа при каждой необходимости вызывает функцию загрузки, но никогда не освобождает ресурс. Таким образом счётчик ссылок лишь растёт.

Решение:
Функция силовой отгрузки тхт-файла с игнорированием счётчика ссылок. В этом случае выполнение DL:N приведёт к подгрузке файла с диска заново.

Статус: готово.

-) Можно ли разработать полноценный плагин, без доступа к богатой коллекции ЕРМ-функций? Вряд ли. До текущего дня имелось два решения. Первое использовано в ВоГ 3.59 - клонированная функция FindErm натравляется на строку. Наглядный минус - функция крайне тяжеловесна. Второй вариант - использование плагина ExecErm с хранением команд ЕРМ в скрипте и вызовом их по номеру. Из преимуществ - быстрота вызова. Из минусов - необходимость иметь эти команды в файле и следить за верностью порядковых номеров.

Решение:
Функция ExecErmCmd призвана выполнить команду ЕРМ в урезанном формате: без условий и типа команды. Пример: "HEv1/v2/v3:C0/0/-1/?v4;". Компиляция производится собственными средствами, что даёт выигрыш в скорости по сравнении с полновесным ЕРМ-вариантом. С другой стороны, каждый вызов команды кэшируется в быстром ассоциативном массиве. Последующий вызов приведёт к выполнению готовых данных из кэша. Размер кэша ограничен 16384 командами, после чего кэш очищается. Ограничение искусственное и введено с целью не дать занять слишком много оперативной памяти в случае использования уникальных команд в цикле: "!!VRv1:S1; !!VRv1:S2...".

Ограничения: не работает GE/CЕ команды, привязанные к карте. Их поддержка требует некоторого усложнения в силу того, что ЕРМ запоминает указатели на структуры этих событий.

Статус: готово.

-) Функции из библиотеки zvslib1.dll для работы с ini-файлами известны своей медлительностью. На это есть несколько причин:
  • Потенциально невысокая скорость лексического анализа файла
  • Полные считывание и анализ файла при каждом запросе.
  • Запись служебной информации отдельной операцией при каждом запросе.
Решение:
Все функции перехвачены. Реализация, включая анализ содержимого, своя. Файл кэшируется и все операции по чтению работают с быстрым ассоциативным массивом в памяти. Запись сохраняет файл без служебной информации, но происходит всегда, так как нет гарантии, что игра завершится без сбоев, а данные должны быть сохранены.

Статус: готово.

-) Скорость загрузки игры до показа стартового видео крайне велика и обычно составляет 4 или более секунд. После профилировки выяснилось, что время уходит на код работы с CD, где чётко прописаны задержки в 3 секунды после неудачного вызова функций проверки.

Решение:
Поскольку большинство играют без CD, написан патч для памяти, в результате чего загрузка происходит почти мгновенно.

Статус: готово.

-) Использование более высоких разрешений, чем 800х600 проблематично из-за того, что центрирование DL-диалогов в WoG 3.58 использует константы 800 и 600 и, как следствие, работает неправильно.

Решение:
Перехватчики установки констант получают настоящие размеры клиентской области окна и подменяют ими значения констант.

Статус: готово.

-) Реализация цветных текстов впервые появилась в ЭРЕ 1.5. Однако даже последняя версия обладает существенными недостатками:
  • Нет защиты от ошибок в коде цвета.
  • Необходимо указывать уже переведённый 16-битный цвет вместо привычного 32-битного.
  • Нет строковых синонимов для основных цветов. То есть нельзя писать {red} (красный).
  • Приходится вручную включать опцию цветных диалогов или предварять текст символом "~".
  • Невозможно смешивать цветной текст и обычный.
  • Закрывающий тег не учитывает накопленных открытых и возвращает текст к белому, хотя должен возвращать к предыдущему цвету.
Решение:
Исправить все указанные недостатки, сделав автоматическую обработку цветного текста в любых диалогах игры. С целью полной совместимостью со стандартным оформлением через {...} новые теги имеют вид "{~шестнадцатеричный код или название цвета}...{~}". Поддерживается определение новых синонимов цветов или переопределение старых через специальное АПИ. По умолчанию зарегистрированы 147 названий общепринятых цветов. Поддерживаются DL-диалоги.

Статус: готово.

Демонстрация:
26.06.2011 00:26
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #6

   Перенос закончен. В релиз 1.9 входят вышеуказанные особенности при сохранении полной совместимости с версией 1.8 за исключением цветных текстов (они стали лучше).
   F12 выполняет функцию перезагрузки erm/ert и повторной компиляции на лету.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
29.06.2011 21:17
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #7

Ждём версии 2!!! Нужны плагины до загрузки игры!


-= подпись Гиппокамуса =-
29.06.2011 22:07
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #8

hippocamus, уже в 1.9 плагины с расширением *.era полностью под написанное в первом посте этой темы попадают.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
29.06.2011 23:35
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #9

Осторожно, пол метра трафика! Spiteful


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.07.2011 04:35
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #10

Здорово. Это будет в новой Эре?
01.07.2011 10:47
Find all posts by this user Quote this message in a reply
FallenAngel Offline

Posts: 828
Post: #11

А что там с координатами кнопочек в левом нижнем углу?
01.07.2011 11:00
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #12

Всегда мечтал о показе урона. При подсчете сколько убьет учитываются неполные хп цели?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
01.07.2011 12:12
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #13

Quote:Здорово. Это будет в новой Эре?
Да, в 1.9, которую готовлю к релизу.

Quote:А что там с координатами кнопочек в левом нижнем углу?
Это из-за Феникса, не обращайте внимания.

Quote:Всегда мечтал о показе урона. При подсчете сколько убьет учитываются неполные хп цели?
Конечно. Код на скорую руку:
Code:
!?MM;
!!SN:X?y1/?y2/?y3/?y4;
!!FU&y2=-1:E;
!!BMy2:H?y5 L?y6 N?y7;
!!VRy8:Sy5-y6;
!!VRy9:Sy3:y5;
!!VRy10:Sy3%y5;
!!VRy9&y10>=y8:+1;
!!VRy11:Sy4:y5;
!!VRy12:Sy4%y5;
!!VRy11&y12>=y8:+1;
!!VRy13:Sy5*y7-y6;
!!VRy9&y9>y7:Sy7;
!!VRy11&y11>y7:Sy7;
!!IF:V2/0;
!!IF&y9=y11:V2/1;
!!IF:V3/0;
!!IF&y9=y7:V3/1;
!!VRz2:S^%Y3-%Y4^;
!!VRz2&y3=y4:S^%Y3^;
!!if&3:;
  !!VRz1:S^Damage: %Z2. {~Yellow}FATALITY{~}^;
!!el:;
  !!VRz1:S^Damage: %Z2. Kills: {~Yellow}%Y9-%Y11{~}^;
  !!VRz1&2:S^Damage: %Z2. Kills: {~Yellow}%Y9{~}^;
!!en:;
!!MM:Mz1;


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.07.2011 14:20
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #14

-) Глобальные параметры событий есть зло. Сделаем локальные! Отныне Эра экспортирует две функции SaveEventParams и RestoreEventParams, между которыми должны находится установка параметров события (для SN:X) и генерация ЕРМ события. Все стандартные события уже локальны, так что бояться порчи SN:X параметров больше не нужно.
-) Надоело искать самый свежий сейв при запуске игры вручную? Эра находит и выделяет его за вас. Так что: L-S-Enter и продолжаем играть.
-) Люди жалуются на ошибки в скриптах? Допрос не приносит успеха? Скачайте сейв, нажмите F11 и все скрипты из него у вас в Data\s\ExtractedScripts! А F12 на лету подгрузит скрипты из Data\s и проведёт перекомпиляцию ЕРМ. Продолжайте играть с обновлёнными скриптами!


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.07.2011 16:37
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #15

Quote:Нужны плагины до загрузки игры!
Как раз из-за этой радости придется оставлять 1.8. Если грузить плагин до загрузки воговских патчей, то дллки на артефакты и существа пролетают со свистом.
01.07.2011 18:02
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-2024 MyBB Group