Berserker
发表于 2019-12-15 00:15:55
It's ok. I have just not so much time for testing ))
There is a known and not yet fixed bug: at least some of WoG campaigns are wogified. It will be fixed.
canary
发表于 2019-12-15 05:11:02
Berserker 发表于 2019-12-15 00:15
It's ok. I have just not so much time for testing ))
There is a known and not yet fixed bug: at lea ...
Hi,Bersy.
After i clicked a new button(for new race talent) on hero screen of hero that stayed at town , game crashed.
It make me confused.
Whyonly the rampart race talent make game crash?
Berserker
发表于 2019-12-15 05:17:42
Whenever ERM error occurs, press no (ESC/Cancel), than F11 and upload Debug directory zipped.
In case of crash, upload Debug directory zipped.
canary
发表于 2019-12-15 05:34:16
Berserker 发表于 2019-12-15 00:15
It's ok. I have just not so much time for testing ))
There is a known and not yet fixed bug: at lea ...
mod manager screen
Plugin manager screen
canary
发表于 2019-12-15 05:40:18
本帖最后由 canary 于 2019-12-15 05:45 编辑
Berserker 发表于 2019-12-15 05:17
Whenever ERM error occurs, press no (ESC/Cancel), than F11 and upload Debug directory zipped.
In ca ...
;balu;
I don't know why, this mistake didn't reappear, I'm totally confused.
can you see the gif?
orrin
发表于 2019-12-15 14:54:48
刚刚下完,再等等最终版本再下吧
玄九霄
发表于 2019-12-15 15:30:10
:nianjing::nianjing: 膜拜诸位大佬~
yunings
发表于 2019-12-15 18:56:01
Berserker 发表于 2019-12-15 00:15
It's ok. I have just not so much time for testing ))
There is a known and not yet fixed bug: at lea ...
Hi, Bersy, so pleasure to see you again here! I suggest that you post a new thread abaut ERA, in which you can share the develpment of ERA with us officially. Of cause you can also make this thread to be a Q&A post as well, if you wish. Just enjoy yourself here. In WoG, we trust:hero:
Berserker
发表于 2019-12-15 22:32:16
nabi - HeroExp.erm:456
!!VRz5:S230066;RESOUR58.def
What does 230066 mean? Crash is at invalid address at dialog update.
I would insert !!IF:M^%Z5 %X16^; just after line 456
Last ERM commands:
!?(OnErmFunction 11000); ID:11000, v997 = , flags = , sn:x =
!!VRz5:S230066; in nabi - HeroExp.erm on line 456 at pos 3
!!DL138:Ax16/9/z5; in nabi - HeroExp.erm on line 457 at pos 3
Also !!DL:A supports the forths parameter (redraw dialog). I would write !!DL138:Ax16/9/z5/1 and rechecked.
canary
发表于 2019-12-15 23:45:23
Berserker 发表于 2019-12-15 22:32
nabi - HeroExp.erm:456
!!VRz5:S230066;RESOUR58.def
THX for the reply!
S230066 represents the string in the ERT file
I will check the line 456 and 457 in Nabi - Exp.erm
canary
发表于 2019-12-15 23:54:58
Berserker 发表于 2019-12-15 22:32
nabi - HeroExp.erm:456
!!VRz5:S230066;RESOUR58.def
:good_job:
Good Job!
This bug was already fixed!
Thank you Bersy!;kl;
Berserker
发表于 2019-12-16 02:43:44
Thank you vry much for invitation and efforts, yunings. Ok, will try to create new thread in the future. For now I will try to help people here if you don't mind.
I don't know why, this mistake didn't reappear, I'm totally confused.
Such random crashes are often caused by missing and not described forths !!DL:A parameter. Add it or ask script author to
write DL:Ax/y/z/1 almost everywhere. Yes, I was able to see the gif, thanks.
Berserker
发表于 2019-12-16 04:39:03
You are welcome, canary :-)
xiaoj
发表于 2019-12-16 08:54:28
前两天刚下了2.88,这下又要升级了
北靖仇
发表于 2019-12-17 21:33:18
来看看,谢谢分享
总上所述
发表于 2019-12-19 22:13:52
sdcxb 发表于 2019-12-13 14:06
看来要更新一波了。
我试了,将2.91英文版直接装在你的2.88里就行。
Berserker
发表于 2019-12-20 06:26:21
本帖最后由 Berserker 于 2019-12-20 06:27 编辑
https://mods.hmm35.ru/posters/era-2.9.jpg
https://vk.com/emoji/e/f09f92a5.png Era 2.9.2 is out https://vk.com/emoji/e/f09f92a5.png
I was working on new 2.9.x branch for a long time and it's finally ready. Key features of the update:
https://vk.com/emoji/e/e2ad90.png EPM script engine optimization allowed to speed up the execution of repeatable code by 10x times! (from 130 thousand commands/sec to 1.3 million commands/sec). It means faster and smoother gameplay, more heavy mods, more opportunities to improve AI.
https://vk.com/emoji/e/e2ad90.png Many improvements to the EPM were made, which will have a positive impact on the ease of writing and debugging code.
https://vk.com/emoji/e/e2ad90.png New events support: hero screen rendering, mouse clicks handling in recruit troops screens, city hall and kingdom overview dialog.
https://vk.com/emoji/e/e2ad90.png Script writers are provided with an interface to work with the recruitment dialog. It became possible to implement many ideas based on it: summoning different creatures in battle, transferring stacks between heroes, remote army purchase, new creature dwellings and much more.
https://vk.com/emoji/e/e2ad90.png Evolution of the Era code. Era 1.9 code is fully ported to Delphi. Angel.dll is now just a stub.
https://vk.com/emoji/e/e2ad90.png Gift for antiviruses: the old utility DEFka, replaced by a favorable version 2.0 on another engine.
Read the rest in the changelog: Help/Era/era ii changelog.txt.
====================
https://vk.com/emoji/e/f09f91ac.png Special thanks to the fans of the game, who supported the project financially: Andarium(https://vk.com/emoji/e/f09f9491.pnghttps://vk.com/emoji/e/f09f9491.png) and several other players (https://vk.com/emoji/e/f09f9491.png). Please write you nicknames on/after donations, so that I could mention you in annals.
https://vk.com/emoji/e/f09f92ab.png Special thanks to daemon_n for patronage of the most popular Russian-language Era all-in-one package and support, tirelessly provided to players, as well as the translation of Advanced Classes mod.
https://vk.com/emoji/e/f09f92ab.png Thanks to MoP for its battery plugin.dll, which helped me a lot during recruit dialog API development.
https://vk.com/emoji/e/f09f92ab.png I would like to thank igrik for constant releases and updates of plugins, advices and help.
Download actual Era version
Install over Complete Collection or the Shadow of Death.
https://vk.com/emoji/e/f09f9491.png You can support the release of new versions via donation app or directly to bank card:
4496 5501 6577 3844 (Belarus, BPS-SBERBANK). Service: paysend.com
{{{ CHANGELOG }}}
Version 2.9.2
------------------------
[-] Release building software used to put older angel.dll into installer.
[-] Fixed bug: negative y-variables were reset even in non FU1..FU29999.
Version 2.9.1
------------------------
#small-fixes #antiviruses-heaven
[+] Replaced ToolsDEFka v1.0 with more feature rich DEFka 2.0.
[+] Replaced Virtual Pascal angel.dll stub with Delphi angel.dll stub.
[+] Added "ErmLegacySupport" option in heroes3.ini. If set to 1, compatibility with old ERM scripts will be better
at the cost of ~15% ERM performance decrease. Options forces local variables reset before each !?XX trigger, even
in DO-loops.
[-] Renamed ModsWoGEraPluginserm_hooker.dll to *.era.
Version 2.9.0
------------------------
#performance #erm-speed-up #erm-stability #era-evolution #recruit-dialog
[@] Special thanks to HMM 3 fans, who supported the project with donations: Andarium (++) and a few other players (+).
[@] Special thanks to daemon_n for maintaining main Russian Era all-in-one package, script writers and players support,
Advanced Classes Mod translation and more.
[@] Special thanks to MoP. His Battery.dll plugin was used during Recruit Dialog API development.
[@] Special thanks to igrik for his constant plugins updates, advices and help.
[+] Speeded up ERM triggers in 2-10x times. There is no more performance penalty, depending on total triggers number.
Whether there are 5 total triggers or 5000, trigger search time is almost linear. Triggers location in memory and search mechanism
were optimized.
[!] Backward incompatible change: local variables saving and initialization is performed before the first trigger of particular type (like !?CM2)
and restoration is performed after the last trigger of particular type. It means, that code must not depend on local vars initial zero/empty value.
Some original WoG scripts need corrections.
[+] Rewritten trigger execution procedure. Features:
- Up to 32 nested IFs support.
- Each trigger/function from now has its own local set of y1..y100, e1..e100, z-1..z-10, x1..x16, f996..f1000, v997..v1000 variables.
Flags and v-variables are automatically set before first trigger of the same type execution.
x1..x16 usually hold trigger/function paremeters and should be changed only when you know, what you are doing.
- Optimized !!DO support. Variables saving/restoring is performed only once before !!DO-loop and after.
[+] Rewritten !!DO implementation. Now it's lightning fast (10x), almost same as manual loop with SN:G.
- DO parameters are set only once before the first iteration.
- DO:P? syntax is supported. Get-parameters will have 0 value at first iteration and their final value will be returned after the last iteration.
Example: !!DO(Test)/0/100/1:P?y1; y1 will be set to x1 value after last loop iteration, x1 initial value is 0
- !!DO:P= syntax is not supported anymore.
- Backward iteration is now supported. !!DO(Test)/100/-10/-1; will iterate 111 times from 100 to -10.
[+] v1..v10 and z1 variables are restored after OnKeyPressed event automatically. No keyboard fix scripts is necessary anymore.
Negative y-variables are DEPRECATED and are subject to be removed in the future. Do not use them in new scripts.
They are saved and restored for any event, except !?FU1..!?FU29999. Thus some WoG scripts used them as local variables (positive y-vars are better),
and some scripts used them as return values from FU1..FU29999 functions (like global variables).
[+] SN:E always assigns both v1 and e1. No need to add 4 to calling convention in order to receive float result.
[+] SN:X works directly with x1..x16 now. Parameters for Era triggers are assigned to x1..x16. Thus you can write:
!?FU(OnKeyPressed)&x1=27; handle ESC key (code 27)
!!VRx2:S1; disable default reaction
[+] Era 1.9 was fully ported to Delphi. Angel.dll is left as deprecated stub only. Antiviruses no longer complain on angel.dll.
[+] All SN receiver commands are now handled by Era.
[+] ERM Hooker was updated to 2.1 version and is now part of Era package. Mod makers should not include it in their mods.
[+] Added new event "OnLoadHeroScreen". It occurs just before Hero Screen is drawn for specific hero: after "OnOpenHeroScreen"
event and during each switching in the same dialog between different heroes. Event also occures during RMB on hero in tavern
and in battle (with special plugins). The event can be used to change hero skills/info/troops only for hero screen dialog.
[+] Added "OnRecruitDlgMouseClick", "OnTownHallMouseClick" and "OnKingdomOverviewMouseClick" events. All parameters
can be obtained via !!CM, as usual. Default reaction can be disabled.
[+] Improved SN:S / !?SN pair. Sound name is always copied to a separate buffer before calling PlaySound.
Previously the following code used to produce no sound:
!!VRz1:S^test.wav^;
!!SN:Pz1;
!?SN;
!!VRz1:S^WTF^;
[+] OnBeforeHeroInteraction event has 3-d parameter (x3): "enable interaction". Set it to 0 to disable interaction.
[+] Added SN:F^era.dll or kernel32.dll exported function name^/...function arguments... for executing functions
with STDCALL calling convention. No more need to use SN:L... A... E... in most cases.
Example: !!SN:F^ReadStrFromIni^/^key^/^section name^/^Datatest.ini^/?z2;
!!SN:F^GetButtonID^/^testBtn^;
[+] Added ERM command for dynamical string interpolation (substitution of variables in string).
SN:I(string to interpolate)/?z#.
Command can be used for interpolating strings, obtained from external sources, such as ini-files
and SN:T, though its usage is recommended only for debugging/porting needs.
Example:
Use SN:T, UN:N6 or get input from dialog in z2.
Example z2 contents: '%Y5 %V996 test %Z5'
!!SN:Iz2/?z3; z3 now contains z2 contents with all variables substituted/interpolated
Updated "Quick Savings" mod.
[+] Updated "wog native dialogs" plugin by igrik.
[+] Era.dll now exports 2 additional functions: GetArgXVars and GetRetXVars. Each one returns pointer to int.
The first set of values should be used as parameters for generated events. They are automatically copied to x1..x16
right on trigger execution start. The second array holds copied x1..x16 values after trigger execution and serve
as return values.
Example:
GetArgXVars() = 1; // default reaction is enabled
FireErmEvent(100000); // call trigger 100000
int defReactionEnabled = GetRetXVars(); // get "default reaction enabled" parameter final value
[-] Backward compatibility with plugins, adding new ERM receivers is broken. New API for regestering custom
ERM receiver handler is ready, only docs are missing for now.
[+] Added new receiver !!RD for managing recruit dialog and a few new events.
Whenever recruit dialog is created, an event "OnOpenRecruitDlg" is triggered with the following parameters:
x1 - selected/active monster slot (0..3)
x2 - flags/options. Combination of bits, controlling dialog behavior:
CLOSE_ON_BUY = 1; Dialog should be closed, when buy button is clicked. Used normally in towns
ir when there is only single recruit slot. Unset this flag to force use to manually close dialog.
AUTO_UPDATE_ADVMAP = 2; Adventure map screen should be updated after any recruit is hired (even when dialog is shown).
This flag is used during hiring recruits from adv. map dwellings, allowing player to see
new creature quantities in the right bottom info screen.
x3 - enable dialog = 1. Set to 0 to not show dialog at all.
When recruit dialog is closed, an appropriate "OnCloseRecruitDlg" is trigger without parameters.
When dialog slider is touched or active slot changed, recalculation of number of monsters to hire
and total costs is performed in "OnRecruitDlgRecalc" event. All parameters can be changed.
x1 - creature cost in gold
x2 - resource ID (0..5) or -1
x3 - resource cost
Dialog was modified to allow zero gold/resource cost.
When a few recruits are hired, "OnRecruitDlgAction" is triggered.
x1 - number of hired creatures. Read-only.
!!RD:C#slot/$type[/$num/$sourceId/#0 = use original number]; Configurate dialog
===============================================================================
#slot - dialog slot index (0..3)
$type - creature type to hire in specified slot or -1 for inactive slot.
$num- current number of creatures to hire. If the last parameter is 0, then it's original number
of monsters to hire, remembered right after "OnOpenRecruitDlg" event (get syntax only).
Number of creatures is usually directly binded to some source, like town creature dwelling.
Thus, settings this value in configuration phase, you change real creature quantity.
$sourceId - the source/memory, where available number of creatures is stored.
>> For existing towns on the map the following sourceId formula can be used:
Town ID * 14 + (town creature dwelling 0..6) + (7 for upgraded only), where Town ID is CA:U.
For instance, the source of second town on the map, 3-d upgraded dwelling is: 1 * 14 + 3 + 7 = 24.
>> If dialog is called with special, programmer-defined external sources, they will have the following IDs:
9000, 9001, 9002, 9003. For instance, mod maker implemented custom dwelling in town and has some memory,
where number of creatures for hiring is stored. Script writers will be able to see such sourceId as 9000.
>> Custom source. sourceId >= 10000. User-scripted implementation.
When custom source is used, unique memory block is allocated for it. Do not forget to set initial
value in "OnOpenRecruitDlg" and get final (remaining) value in "OnCloseRecruitDlg".
Same sourceId may be assigned to any number of dialog slots. All those slots will display same
creature quantity and update simultaneously. This is usefull for alternative creatures implementation.
Slots may have different creature types (and costs), but total amount of recuits is shared between all
slots.
SourceId is changed before applying new monsters number. Thus !!RD:C0/13/100/20000 will change
sourceId to 20000 (custom) first and then set monsters quantity to 100 archangels, without changing
original dwelling/object/etc population.
You can set slot 0 and 3 types to some values and slot 1 and 2 types to -1. Free space will collapse and user
will see only two slots.
Dialogs without working slots (creature type <> -1) will not be shown.
Example: !!RD:C2/?y3; y3 is creature type is 3-d dialog logical slot
!!RD:S#offset; Shift slots
===============================================================================
#offset - shift all slots by this value to the right (positive number) or to the left (negative number).
If slot goes outside of 0..3 indexes, it disappears.
Example: given 0..1 slots with normal and upgraded creatures and any sourceIds. Task: prepend two custom slots
with angels/archangels to them.
!!RD:S2 C0/12/2/12345 C1/13/2/54321;
Before:
After:
Shifting is performed will all settings (number, type, sourceId) preserved.
Example 2: remove first slot with upgraded monsters and leave non upgraded only.
!!RD:C0/?t/?t/?y2; y2 is sourceId for slot 0, t - temp global quick var
!!VRy2:%14; y2 - is dwelling index 0..13, 7+ for upgraded
!!RD&y2>=7:S-1; shift one slot to the left if the first slot is upgraded town dwelling
!!RD:F#visualSlot/?$logicalSlot; Convert visual dialog slot index to logical one (used with !!RD:C)
===============================================================================
#visualSlot - visible slot index (0..3)
?$logicalSlot - logical slot index (0..3 or -1)
Command used together with mouse handling in recruit dialog. Visible slot IDs are monotonically
increasing and need to be converted to logical slot IDs.
Example:
is displayed as
, where creature B has visual slot index 1 and logical slot index 3
!!RD:I?$dialogId[/?$townId/?$dwellingId/?$selectedSlot]; Get current dialog Info
===============================================================================
?$dialogId - Unique recruit dialog ID. Used to distinguish between nested dialogs (yep, it's possible). Reusable.
?$townId - ID of town, for which dialog is opened or -1.
?dwellingId - ID of town dwelling, for which dialog is opened or -1. 0..6 non upgraded, 7..13 for upgraded.
Horde buildings (+X population) are treated as dwellings, they influence.
?$selectedSlot - Active logical slot index.
!!RD:M#var/$value; Access current recuird dialog associative memory
===============================================================================
#var - either integer number or unique string. Same as SN:W
$value - get/set/modify variable value
Commands provide fully-featured SN:W equivalent with memory, allocated for each created recruit dialog.
Memory is released after "OnCloseRecruitDlg" for each dialog.
Example:
!!RD:M^acm.mapX^/v998 M^acm.mapY^/v999 M^acm.mapZ^/v1000;
!!RD:M^mithril^/*2;
!!RD:O#townId/#dwellingId/#targetType/#targetId[/#dlgFlags]; Open new recruit dialog (previous dialogs will remain in the background)
===============================================================================
#townId - ID of town to open dialog for or -1. Town will be used as slots source.
#dwellingId - ID of town dwelling (0..13) or -1. Dwelling will be used as slots source.
#targetType - Type of the destination for hired recruits:
RECRUIT_TARGET_TOWN = 0;
RECRUIT_TARGET_HERO = 1;
RECRUIT_TARGET_CUSTOM = 2; Destination will be determined by Lua/ERM script and handled manually
#targetId - ID of target: hero ID, town ID or special value for Lua/ERM script.
#dlgFlags - Combination of CLOSE_ON_BUY and AUTO_UPDATE_ADVMAP flags. See "OnOpenRecruitDlg" event.
Don't set this parameter of using native/default settings.
琭琭有彧
发表于 2019-12-20 10:33:01
本帖最后由 琭琭有彧 于 2019-12-20 13:00 编辑
Berserker 发表于 2019-12-20 06:26
Era 2.9.2 is out
I was working on new 2.9.x branch for a long time and it's finally ready. Ke ...
Hi,bersy.
Thank you for constantly enriching the functions of ERA. I don't have a job yet. I'll try my best to support you.
琭琭有彧
发表于 2019-12-20 11:34:34
本帖最后由 琭琭有彧 于 2019-12-20 13:12 编辑
Berserker 发表于 2019-12-20 06:26
Era 2.9.2 is out
I was working on new 2.9.x branch for a long time and it's finally ready. Ke ...
Hi,bersy. I will be sorry that my bank card does not support Paysend on iPhoned。sorry,It will be solved.
;apso;
sdcxb
发表于 2019-12-20 12:11:18
总上所述 发表于 2019-12-19 22:13
我试了,将2.91英文版直接装在你的2.88里就行。
我发现我太天真了。我当初改了太多底包的东西了,都忘了改了什么了。。。。直接覆盖的话,我之前改的就被覆盖了。我覆盖他也不行,他覆盖我也不行。。。。我打算弃更了。。。