Current time: 04.01.2025, 09:29 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ваши вопросы по ERM-скриптам
Author Message
Archer30 Offline
Moderators

Posts: 1178
Post: #9001

XEPOMAHT, Berserker, thanks.

Well, I think if store the artifact names before executing FU(trainer_ShowAddCheats_battle) and restore after, it should be the safest. Like

  1. !?FU(OnKeyPressed_Battle)&i^key^=(KEY_F3)/i^battle_humanOnly^=(FALSE);
  2. !#VA(key:x) (preventDefault:x) (isDown:x);
  3. !!VR(preventDefault):S(TRUE);
  4. **** Strore Artifact names here ****
  5. !!FU(trainer_ShowAddCheats_battle):P;
  6. **** Restore Artifact names here ****

Sometimes the artifact names can be changed by mods. SN:H^-art^ could break it


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 12.03.2023 18:00 by Archer30.)
12.03.2023 17:58
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #9002

Berserker, Archer30, SN:H^-art^/ doesn't work with emerald.
better use buffer and restore after new name been temporary set
  1. //set New Names for The Artifacts
  2. !#VA(artName[3]:z);
  3. !!re i/0/2;
  4. !!VR(art:y):Si +(ART_BALLISTA);
  5. !!VR(wVar:y):Si +81;
  6. !!SN:H^art^/(art)/0/?(artName[i]) H^art^/(art)/0/^%W(wVar)^;
  7. !!en;
  8. !!SN:T^wog.%(WOG_OPT_ENHANCED_WAR_MACHINES_III).map_info^/?(msg:z)/^hero^/(heroName);
  9. !!IF:Q1/(PIC_TYPE_ART)/(ART_BALLISTA)/(PIC_TYPE_ART)/(ART_AMMO_CART)/(PIC_TYPE_ART)/(ART_FIRST_AID_TENT)/(MSG_TYPE_POPUP)/(msg); [show number]
  10. //restore original Names for The Artifacts
  11. !!re i/0/2;
  12. !!VR(art:y):Si +(ART_BALLISTA);
  13. !!SN:H^art^/(art)/0/(artName[i]);
  14. !!en;


Image: widget.png?style=banner2

Новейший Heroes Launcher
12.03.2023 21:08
Visit this user's website Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 1178
Post: #9003

daemon_n, thanks, I almost forgot the reason I didn't use -art here...


Latest ERA mods and scripts in development - My GitHub
13.03.2023 10:14
Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 1178
Post: #9004

How can I return the lowest value index of an array easily? For example:

  1. !!FU(NewIntArray):P7/?(myArray:y);
  2. !!SN:V(myArray)/0/65/23/45/67/89/123/224;
  3. ; Return the lowest value from myArray
  4. ; The result should be 2 (the index of the lowest value, 23)

And what if I need the index of the lowest 3 items?


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 14.03.2023 22:21 by Archer30.)
14.03.2023 22:17
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4345
Post: #9005

Archer30, clone, sort and take first item)

also you can use new Array_Find function
  1. !?FU(Array_Find);
  2. ; Returns index of the first array item, for which custom callback function returns (TRUE) or -1 in case of failure.
  3. !#VA(list:x); Array ID.
  4. !#VA(callback:x); Callback function F(itemValue, ?result, [listId], [customArg]), where result is (TRUE) or (FALSE). (FALSE) is passed by default.
  5. ; listID is array ID and customArg is anything, specified as custom argument to Array_Find. Zero by default.
  6. !#VA(result:x); Result index or -1 in case of failure.
  7. !#VA(customArg:x); Custom argument to pass to callback as the 4-th parameter.

but actually find the lowest value is just one iteration through the array - the ways above are extra:

  1. !!VR(lowest:y):S0;
  2. !!SN:M(array)/(lowest)/?(lV:y);
  3. !!re i/0/(size)/1/-1;
  4. !!SN:M(array)/i/?(cV:y);
  5. !!if&(cV)<(lv);
  6. !!VR(lv):S(cV);
  7. !!VR(lowest):Si;
  8. !!en;
  9. !!en;

if you need custom number of lowest id the you need another array where you can store indexes of main array and return it
i offer organize that micro search within new array that should be auto sorted by you


Image: widget.png?style=banner2

Новейший Heroes Launcher
15.03.2023 01:10
Visit this user's website Find all posts by this user Quote this message in a reply
fatsawhorse Offline

Posts: 1022
Post: #9006

Здравствуйте XEPOMAHT

Quote:Не представляю, как Вы играете, что приходится проверять это дело каждую секунду. Лично я при игре и 99 набрать не успеваю, т.к. на обычных картах нет столько повышателей атаки/защиты/магсилы/знания. Читами я тоже не пользуюсь и ИИ у меня таким читерством так же не обладает. Для SoD-а разработчиками был установлен лимит в 99, с которым вообще никто не парился, даже HotA Crew не трогали этот лимит.

Не играйте с модами на читерные повышения первичных навыков и будет вам счастье.
- нет. Так не интересно. Хочется героя по максимуму развить. Я бы прокачал и 500 если бы было! Мне 125 мало! Точно также со всем остальным. На карте 252 х 252 набрать это легко, особенно если сам её создавать буду и то только на одной поверхности. Я уже молчу про подземный мир.

Quote:Да, там куча старых кривых скриптов начинают работать с ошибками и вылетами, т.к. требования к синтакису повышены. А в ERA+ добавлены собственные скрипты, т.к. старые воговские просто не работают. Для старых скриптов/модов требуется старая версия ЭРЫ (вплоть до версии 2.46, на которой например до сих пор функционирует легендарный H3:SW, авторы которого категорически против новых версий ЭРЫ). Старые версии ЭРЫ давно не поддерживаются и можно играть в них так как есть - ошибки в них никто исправлять не станет. Ну а костыли, которые Вы предлагаете - не выход.
- ну 3.0.5 не такая древняя как 2.4.6, но она и то лучше всех тех эр которые были выше 3.3.5 и я уже говорил почему:

Минусы новой эры из-за которых я на неё не пойду никогда
1. Сетевая игра там убита (самое основное, с чем нельзя смириться)
2. Удалены все опции стартовые (не отключены, а удалены)
3. Иконки способностей существ однотипного мотононного цвета (убраны первичные старые, удобные)!

   Что-то было и четвёртое, но сейчас на скидку не вспомню.. Только припоминаю, было 4 пункта с недостатками!

Да, не спорю, там возможно новые существа, замки и все ошибки устранены (которые иногда бесят в эре 3.0.5), но почему то нынешние разработчики главное также не правят! Я, видя эти ошибки не могу с ними играть и тестить скрипты!

Я бы давно уже был на современной эре и говорил всем тем, кто с ней работал и всё устранил благодарности, но не могу это сделать! Там есть недостатки и я их выше описал (те что помню)

Quote:Вы можете переписать свои скрипты под последнюю версию ЭРЫ. Другого решения тут наверное нет.
- там сложное написание на ЕРМ2. Я его не знаю даже на 1% к сожалению.. Bad Вряд ли это у меня получится!
(This post was last modified: 15.03.2023 04:34 by fatsawhorse.)
15.03.2023 04:32
Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 1178
Post: #9007

daemon_n, thanks, I ended up using Clone/Sort/Revert/Pop/IndexOf almost one third of the array functions...

____


Does declaring an array with VA initialize the variables of each item?

For example, is there any difference between these two?
  1. !#VA(myArray[2]:y);
  2. ; or
  3. !!VR(myArray[2]:y):C0/0;

____


Is there any trigger between OnBattlefieldVisible and tactics phase?


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 15.03.2023 12:23 by Archer30.)
15.03.2023 09:19
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2366
Post: #9008

(15.03.2023 04:32)fatsawhorse Wrote:  1. Сетевая игра там убита (самое основное, с чем нельзя смириться)

Напишите о своих проблемах с сетевой игрой: http://wforum.heroes35.net/showthread.ph...854&page=1

В лобби HD-мода, по слухам, как-то играют на последней версии ЭРЫ.

(15.03.2023 04:32)fatsawhorse Wrote:  2. Удалены все опции стартовые (не отключены, а удалены)

Не удалены, а перенесены (зачем-то) в отдельный мод - WoG Scripts. Т.е. чтобы воговские опции вернуть, необходимо установить данный мод.

(15.03.2023 04:32)fatsawhorse Wrote:  3. Иконки способностей существ однотипного мотононного цвета (убраны первичные старые, удобные)!

У меня по-прежнему старые воговские. Устанавливайте мой мод.

(15.03.2023 04:32)fatsawhorse Wrote:  Я, видя эти ошибки не могу с ними играть и тестить скрипты!

У нас нехватает людей, чтобы переписать все скрипты одним махом под новые версии ЭРЫ. У меня сейчас есть возможноть переписывать только 1 скрипт в месяц, т.к. с каждым скриптом выявляются куча недостатков в ERM, что приходится постоянно улучшать и дополнять ERM чем-то новым.
15.03.2023 09:45
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16679
Post: #9009

Quote:daemon_n, thanks, I ended up using Clone/Sort/Revert/Pop/IndexOf almost one third of the array functions...
Mine God!!! ))))

Write simple helper function edu_Array_min instead like 9-liner from daemon-n) Tell me if you need those two functions in standard library.


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

Posts: 1317
Post: #9010

А возможно как-то отследить продажу игроком в торговцах определённого арта?
Или только в таймере отслеживать его наличие?
не имеется ввиду OnEveryXSecond)))


Карта-мод "Война на Холсте"
15.03.2023 21:33
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2366
Post: #9011

(15.03.2023 21:33)SergOz Wrote:  А возможно как-то отследить продажу игроком в торговцах определённого арта?

Из оригинального - только добавлением триггера в код игры сразу после продажи. Но там проще собственный диалог продажи артефакта на !!DL написать. В ERA+ есть готовый диалог на любые манипуляции с рюкзаком - есть возможность на ERM продавать кому-то артефакты прямо от туда. Диалог на любые манипуляции с куклой героя на ERM увы пока никто за 20 лет так и не сделал.

(15.03.2023 21:33)SergOz Wrote:  Или только в таймере отслеживать его наличие?

Это кастыли. При этом герой может просто выбросить артефакт, отдать его другому герою/монстру, улучшить у ремесленника и т.д.
15.03.2023 22:17
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1317
Post: #9012

XEPOMAHT, спасибо.
У меня на этапе, когда нужен контроль этого действия, активен только один герой, а выброс артов запрещён вообще.
Так что костыль в виде таймера, пожалуй, сгодится. 113


Карта-мод "Война на Холсте"
15.03.2023 22:34
Find all posts by this user Quote this message in a reply
Archer30 Offline
Moderators

Posts: 1178
Post: #9013

Berserker,
Quote:Write simple helper function edu_Array_min instead like 9-liner from daemon-n) Tell me if you need those two functions in standard library.

something like this?
  1. ; Get the indexes of minimum value items from the array
  2. !?FU(WOG_Array_IndexOfMinimumValues); [by Archer30]
  3. !#VA(list:x); [Id of Array to find the index of minimum values]
  4. !!VR(firstItem:x); [OUT. Up to 15 indexes of minimun values]
  5. ; Check if requesting more items than size of the array
  6. !!SN:M(list)/?(size:y);
  7. !!FU:A?(numArgs:y);
  8. !!VR(maxIndOut:y):S(numArgs) -1;
  9. !!if&(maxIndOut)>(size);
  10. !!SN:F^ShowErmError^/^WOG_Array_IndexOfMinimumValues: invalid arguments number. Expected at most %(size) arguments^;
  11. !!FU:E;
  12. !!en;
  13. ; Initialization
  14. !!VR(minValues[15]:y):C(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX)
  15. /(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX)
  16. /(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX)/(INT_MAX);
  17. !!VR(maxValueFromMins:y):S(INT_MAX);
  18. !!VR(maxIndexFromMins:y):S0;
  19. ; Loop through the array
  20. !!re i/0/(size)/1/-1;
  21. !!SN:M(list)/i/?(value:y);
  22. ; If the value of the array is smaller than (or equals to) the biggest number from the mins, update the output value
  23. !!if&(value)<=(maxValueFromMins);
  24. !!VR(minValues[maxIndexFromMins]):S(value);
  25. !!VR(index:y):S(maxIndexFromMins) +(@firstItem);
  26. !!VRx(index):Si;
  27. ; Update max value / index from the minimum values
  28. !!VR(maxValueFromMins):S(INT_MIN);
  29. !!re j/0/(numArgs)/1/-2; [-2: -1 -@list]
  30. !!if&(minValues[j])>(maxValueFromMins);
  31. !!VR(maxValueFromMins):S(minValues[j]);
  32. !!VR(maxIndexFromMins:y):Sj;
  33. !!en;
  34. !!en;
  35. !!en;
  36. !!en;


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 16.03.2023 05:54 by Archer30.)
15.03.2023 22:37
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16679
Post: #9014

Archer30, I thought about much simplier variant, returning the first item with minimal value (both index and value). Why do you need to get all minimal values?


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

Posts: 1178
Post: #9015

Berserker, well.
Quote:Resistance I (Option 216)

Reduces 1-3 enemy stacks to non-upgraded form.
Here we choose the stacks with minimum prices reduced (instead of random) to make the option slightly balanced.


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 17.03.2023 13:34 by Archer30.)
17.03.2023 13:34
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group