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

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

Posts: 16657
Post: #3841

daemon_n, попробуй pri/print для !!IF:M^^; или du/dump для !!IF:M^%^;

Image: update-sm.jpg

Version 2.9.6

[+] SN and RD receivers syntax was improved. Now any command can use string concatenation (like d&z2),
    integer modification (like d*5), SN:W string variable in the form of [?]s^var name^, SN:W integer
    variable in the form of [?]i^var name^.

    Examples:
    - Concatenate string with existing variable and display result.
    !!SN:W^report^/^Today we met a few strangers. They were^;
    !!SN:W^report^/d&^ orcs^;
    !!IF:M^%S(report)^; Today we met a few strangers. They were orcs

    - Get current MP3 theme into named variable
    !!MP:C?s^theme^;
    !!IF:M^Current theme is %S(theme)^;

    - Multiply number of creatures in the first slot of recruit dialog by 10 and display it
    !!RD:C0/?t/d*10; type not changed, number multiplied by 10
    !!RD:C0/?t/?i^numMons^;
    !!IF:M^There are %I(numMons) creatures to hire^;

[+] Added support for SN:W variables interpolation inside ^...^. %S(var_name) for string values, %I(var_name)
    for integer values. The total length of interpolated string must not exceed 1 MB.

[+] Replaced Heroes 3 random generator routine with world-wide known Mersenne Twister, generating
    qualitative uniformly distributed sequences with huge periods.

[+] Added new ERM command BM:U6/?$, returning stack actual speed, including slow spell effect.
    Note, BM:S always returns speed without slow spell effect.

[*] VR:T is deprecated and is equal to VR:R now. To get current time in milliseconds the following code can be used:
    !!UN:C6529876/4/?t; t = timeGetTime function address
    !!SN:Et/1; v1 = result
    Use VR:R0/#new_seed to reseed random number generator.

Скачать


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

Posts: 3881
Post: #3842

Berserker, а можно 2.9.5 до 2.9.6 обновить не устанавливая заново на чистый SoD, а просто заменив пару файлов новыми?
Или там слишком много файлов задействовано?


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
28.01.2020 00:49
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #3843

(27.01.2020 22:16)Berserker Wrote:  +F8 разве не уровень существа?

Уровень - +78h. По крайней мере в MoP так.

(27.01.2020 22:53)Berserker Wrote:  возможно, какой-то скрипт в этом событии меняет x1. Можешь проверить с одним тестовым скриптом?

Вряд ли: из скриптов используется только ERA Scripts. В ERA+ скрипт в этом событии встроен в Тифон и к x1 он не адресуется. Больше нечему.

(27.01.2020 23:27)igrik Wrote:  Названия у плагинов одинаковые, но тот плагин, который в оригинальном установщике ЭРЫ имеет 10% функционала от моего.

Да, всё забываю, что в оригинальной ЭРА лежит версия 3-х летней давности. А в сборке от daemon_n и у меня - последняя.

(28.01.2020 00:49)Algor Wrote:  можно 2.9.5 до 2.9.6 обновить не устанавливая заново на чистый SoD, а просто заменив пару файлов новыми?

Можно обновлять вручную (практикую такое начиная с ЭРА 2.46), т.к. у меня ЭРА установлена поверх WoG 3.58f с сохранением полной функциональности и вога и эры. Файлы - dll-шки, очень редко - бинарные патчи. Остальное - можно не заменять (да простит меня Берсеркер), но вроде бы работает.
(This post was last modified: 28.01.2020 01:11 by XEPOMAHT.)
28.01.2020 01:02
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #3844

(27.01.2020 23:52)Berserker Wrote:  [+] Added new ERM command BM:U6/?$, returning stack actual speed, including slow spell effect.
    Note, BM:S always returns speed without slow spell effect.
а чего не стал просто BM:S саму корректировать под получение реальной скорости стека? или там в коде проще новую команду делать, чем фиксить имеющуюся?
28.01.2020 03:09
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3845

Algor, можно, только библиотека обновлена и пара файлов редактора. Да, лучше папку своего редактора переименуй, если что-то правил!
XEPOMAHT, понял.

Bes, мне показалось, что скорость с учётом артефактов без замедления тоже может где-то пригодиться, раз игра хранит её. Потому лучше добавть, чем заменить.


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

Posts: 16657
Post: #3846

https://dropmefiles.com/gtoZ9

[+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P.
    New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function.
    This mechanism allows to write functions with optional parameters (parameters with default values) and
    functions with variadic argument number.

    Example 1:
    !?FU(KillHero);
    ; Kills specified hero. Demonstration of optional parameters.
    ; [x1] - hero ID. Optional. -1 by default
    !!FU:A?k;
    !!VRx1&k=0:S-1;
    !!HEx1:K;

    !?CM0;
    !!FU(KillHero):P; kill current hero
    !!FU(KillHero):P155; kill Xeron

    Example 2:
    !?FU(sum);
    ; Calculates sum of all passed arguments.
    ; x1..x[n] - arguments to sum
    ; x[n+1] - result
    !!FU:A?k;
    !!VRxk:S0;

    !!VRi:S1;
    [:for]
    !!VRxk:+xi;
    !!VRi:+1;
    !!SN&i<k:G[for];

    !?CM0;
    !!FU(sum):P100/200/300/400/?s; get 100 + 200 + 300 + 400 into "s" quickvar
    !!IF:M^%Vs^; displays "1000"

[+] Improved MR:N and OnBattleRegeneratePhase:x1. Now stack ID is returned more accuratly. Thanks to Heromant.


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

Posts: 4343
Post: #3847

Berserker, последний файл ныне в Эре 2.9.6(спасибо) или выложен как тест?


Image: widget.png?style=banner2

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

Posts: 2356
Post: #3848

(27.01.2020 22:53)Berserker Wrote:  Можешь проверить с одним тестовым скриптом?

Проверил - отдельно от ERA Scripts скрипт Bug fixes.erm ошибки не вызывает: номер стека в x1 всегда правильный. А с включённым ERA Scripts - x1 в FU77007 где-то портится. В общем, у себя в ERA+ поставил заглушку на Bug fixes.erm для совместимости с ERA Scripts, до лучших времён.
28.01.2020 11:46
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3849

XEPOMAHT, в одном из FU77007 x1 меняется значит.
daemon_n, для пробы. Уже на 2.9.7 будет. Загрузи, пожалуйста, свой Era Scripts Rus. Попробую поискать место.


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

Posts: 4343
Post: #3850

Berserker, ЯДиск. Вытащил просто архив с распакованным модом.


Image: widget.png?style=banner2

Новейший Heroes Launcher
28.01.2020 14:26
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3851

Можно использовать условно именованные массивы.
daemon_n, спасибо. Ничего криминального не нашёл, постараюсь отловить баг.


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

Posts: 16657
Post: #3852

!!VR:C научился работать с y, w и x-переменными. Быстрая инициализация и работа с массивами стали ближе к ЕРМ-пролетариям.


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

Posts: 16657
Post: #3853

XEPOMAHT, отловить ошибку изменения x1 в FU77007 из Era Scripts не удалось. Можешь в начало каждого триггера 77007 поставить IF:M^%X1^?
Нашёл его в этих файлах:
Bug fixes.erm
option 736 - battle experience.erm
option 758 - cutthroats.erm

2.9.7 готова к выпуску, осталось попробовать глянуть ещё пару отчётов о багах.
https://dropmefiles.com/Te1o8

[+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P.
    New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function.
    This mechanism allows to write functions with optional parameters (parameters with default values) and
    functions with variadic arguments number.

    Example 1:
    !?FU(KillHero);
    ; Kills specified hero. Demonstration of optional parameters.
    ; [x1] - hero ID. Optional. -1 by default
    !!FU:A?k;
    !!VRx1&k=0:S-1;
    !!HEx1:K;

    !?CM0;
    !!FU(KillHero):P; kill current hero
    !!FU(KillHero):P155; kill Xeron

    Example 2:
    !?FU(sum);
    ; Calculates sum of all passed arguments.
    ; x1..x[n] - arguments to sum
    ; x[n+1] - result
    !!FU:A?k;
    !!VRxk:S0;

    !!VRi:S1;
    [:for]
    !!VRxk:+xi;
    !!VRi:+1;
    !!SN&i<k:G[for];

    !?CM0;
    !!FU(sum):P100/200/300/400/?s; get 100 + 200 + 300 + 400 into "s" quickvar
    !!IF:M^%Vs^; displays "1000"

[+] VR:C now supports v, y, x and w-variables.
[+] Improved MR:N and OnBattleRegeneratePhase:x1. Now stack ID is returned more accuratly. Thanks to Heromant.
[+] Small improvements of ERM Editor. Better 'for'-loop snippet, syntax fixes, 'iff' for !!IF, etc.
[-] Fixed bug: w-variables in SN/MP/RD were always related to current hero.
[-] VR:R will no more crash on invalid value.


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

Posts: 2356
Post: #3854

(29.01.2020 04:49)Berserker Wrote:  отловить ошибку изменения x1 в FU77007 из Era Scripts не удалось.

Метод научного тыка показал, что x1 перезаписывается где-то в функции по адресу 5A0140h. Скорее всего там какой-то хук от Era Scripts, использующий x1. А может и перехваты от ERA (нет исходников, да хотя бы полный список всех эровских перехватов где-нибудь раздобыть бы...). Воговские перехваты в этой функции x1 вроде не используют (вообще, долговременное хранение данных в x1 - рискованное мероприятие, когда внутри одного триггера могут вызываться другие вог-триггеры, использующие тот же x1 - теоретически, у них должны быть разные адреса, но на практике данные всё равно могут быть испорчены).
29.01.2020 12:45
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3855

XEPOMAHT, обновлённый ERM hooker должен корректно работать с функциями. По F11 заполняется папка Debug в и в Heroes 3\Debug\Era\erm hooks.txt все ЕРМ хуки видны.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
29.01.2020 14:20
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