Current time: 10.04.2025, 14:04 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 325
Post: #3436

Berserker, кто по Era Scripts Rus может изменения вносить?
опция 790 mana arrow
строка 23:

  1. !!HEy1:I?y2 Fd/d/?y3/d;

Разве должно быть не:

  1. !!HEy1:I?y2/1 Fd/d/?y3/d;

Без второго параметра при касте вылезает часть интерфейса.


The dreams you kill will break your heart
23.08.2019 23:06
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4356
Post: #3437

ElfbI, для этого мода есть одноименная тема. Поскольку он включен в сборку, которой также принадлежит тема, можно (желательно) отписывать и там -- внесу правки.


Image: widget.png?style=banner2

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

Posts: 325
Post: #3438

daemon_n, хорошо, учту.


The dreams you kill will break your heart
24.08.2019 01:18
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #3439

Собираюсь приравнять отрицательные y/e переменные к положительным, полностью убрав разницу в их значении. В результате вызов любой функции/триггера будет обходиться без сохранения/восстановления лишних 1600 байт памяти. В основном используют в одном триггере или те, или другие. Есть возражения?

Взамен положительные e-переменные будут сохраняться/восстанавливаться всегда, а не только при вызовах функций.


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

Posts: 2819
Post: #3440

Возражений то нет. Наоборот было бы отлично.
Но масса оригинальных воговских скриптов завязаны на одновременном использовании y-1 и на y1. Не поломаются ли они?


game bug fixes extended.dll || My Plugins || My GitHub
03.09.2019 17:12
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #3441

igrik, обе группы временные. На вскидку не удалось найти место, где использовались бы в одном триггере и те, и другие. Если кто найдёт — буду благодарен.


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

Posts: 460
Post: #3442

Enhanced Warmachines I

  1. !?BG&v591=1; get before action
  2. !!FU900:P;
  3. !?FU900&v591=1;
  4. !!BG:N?y1 E?y3 D?y4 H?y5 Q?y6 A?y7;
  5. !!FU&y1<0|y1>41:E; exit if no stack
  6. !!BMy1:T?y2 I?y8 N?y9 L?y10 F?y-1; y-1 - moster flags (132165 = catapult if not siege)
  7. *
  8. !!FU925&y2=145/y-1=132165:Py6/y1/y7/y8; catapult first stage
  9. !!FU901&y2=45/y-1=132165/v2059=1:P1/y1/y7/y8/y5/y9; catapult second stage
  10. *
  11. !!FU902&y2=146/y7=7:P0/y3; ballista
  12. * first aid tent actions *
  13. !!FU919&y2=173/v2056=1:P2/y7/y1; first aid other action
  14. !!FU922&y2=147/v2056=0/y7=11:P0/y3;
  15. !!FU903&y2=147/v2056=0/y7<>11:Py8/y5/y1/y7/y3; first aid start

apart from that I found no other, but I will keep looking, I think there are some more
03.09.2019 20:40
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #3443

PerryR, argh, thank you very much. Bad example of script writing (though, it's really a mess with variables in ERM).


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

Posts: 2819
Post: #3444

(03.09.2019 19:58)Berserker Wrote:  igrik, обе группы временные. На вскидку не удалось найти место, где использовались бы в одном триггере и те, и другие. Если кто найдёт — буду благодарен.
Для более простого понимания примем что y-1 это y-1 ... y-100, а y1 это y1...y100
Разве y-1 временная?
На сколько я знаю y-1 это глобальная переменная для данного для неё скрипта (т.е. в одном файле скрипта она будет иметь одинаковое значения для всех триггеров. А в разных файлах скриптов она будет разная). А y1 временная, которая будет иметь свои значения для каждого триггера.

UPD: ага, простейший тест показал, что это уже не так. Хм. Буду знать. Давно ли уже y-1 стала временной переменной?


game bug fixes extended.dll || My Plugins || My GitHub
04.09.2019 13:28
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Online
Moderators

Posts: 2418
Post: #3445

(04.09.2019 13:28)igrik Wrote:  Для более простого понимания примем что y-1 это y-1 ... y-100, а y1 это y1...y100

Тогда уж сделайте наконец-то нормальный диапазон от у-100 до у100. Чтобы люди не путались. Например у себя я по-прежнему не использую отрицательные "у", считаю положительные "у" более безопасными, т.к. точно известно, когда они обнуляются в ERM.
04.09.2019 13:51
Find all posts by this user Quote this message in a reply
PerryR Offline

Posts: 460
Post: #3446

What would happen with the spell function?

  1. ********************************************************************************
  2. *** Generate Random Spell Number by Fnord ***
  3. !#MCv3500:S@spell@;
  4. !#VR$spell$:S7777;
  5. Syntax:
  6. * FU$spell$:P#1/#2/#3/#4/#5/#6/#7/#8/#9/#10/#11/#12/#13/#14/#15;
  7. * Spell Number is returned in y-99, value is -1 if no spell exists.
  8. #1 = minimum spell level: 0=any, or 1..5
  9. #2 = maximum spell level: 0=any, or 1..5
  10. #3 = type: 0=any, 1=adventure, 2=combat
  11. #4 = element: 0=any, 1=air, 2=earth, 4=fire, 8=water. Add numbers for multiple elements.
  12. #5 = banning: 0=ignore spell banning, 1=skip banned spells
  13. #6 = exclusions: 0=no exclusions, 1..9=number of specific spell exclusions (#7..#15)
  14. #7..#15 = specific spell exclusions: 0..69 for spell number, anything else is ignored
  15. and only exclusions up to the number in #6 are used, so if #6 is 0, all
  16. specific exclusions will be ignored.
  17. Example:
  18. To generate a random Level 3 Combat Fire or Air spell excluding all Banned
  19. spells and excluding the Misfortune (spell #52), use:
  20. * !!FU$spell$:P3/3/2/5/1/1/52;
  21. A subfunction of this function may be used to determine the level, element and type
  22. (combat or adventure) of any given spell:
  23. Syntax:
  24. FU7779:P#;
  25. #=spell number being checked (0..69).
  26. Returned Values:
  27. y-96 : Level (1..5)
  28. y-97 : Type (1=Adventure, 2=Combat)
  29. y-98 : Element (1=air, 2=earth, 4=fire, 8=water, 15=all elements)
  30. --------------------------------------------------------------------------------

any script that uses this function expects y-99 to hold the spell :/ not sure if it would also work with y99.
(This post was last modified: 04.09.2019 14:02 by PerryR.)
04.09.2019 13:57
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #3447

igrik, ЕРМ руководство всегда было точно в отношении отрицательных y-переменных:
y-1...y-100 Trigger-based local variables. Integer vars
y1 through y100 Function local variables (unique for each function)

То есть, локальные для триггеров переменные.
А y1+..y+100 — локальные для триггеров-функций.

Этот бардак — рассадник багов. Поскольку функции не считались триггерами, а значит в них нет сохранения/восстановления отрицательных y-переменных. С другой стороны, в обычных триггерах не сохранялись/восстанавливались положительные y-переменные. То есть функция рассчитывает, что её y-переменные никто не тронет, генерирует событие !?BA, где переменные спокойно портятся.

Было принято стратегическое решение для ВСЕХ событий/триггеров/функций сохранять и восстанавливать положительные y-переменные, сделав их всегда локальными.
А отрицательные y-переменные предать анафеме.

Воговская FU$spell$ рассматривает отрицательные y-переменные как принадлежащие триггеру, который вызвал функцию (так и есть!), и использует их как глобальную память для возвращения результата.

Это ещё не всё.
z-1 through z-10 Function string variables (unique to each function)

То есть нельзя в обычном триггере использовать z-1..z-10!

И это не всё.
e1..e100 Function floating point variables
e-1...e-100 Trigger-based local variables. Floating point vars

То есть с e-ками такая же проблема. Обычные триггеры и триггеры-функции могут портить переменные друг друга.

По=хорошему разницы между !?XX и !?FU быть не должно. Отрицательные переменные не нужны (кроме z-1..z-10, которые долны быть локальными везде). Вопрос, как быть с обратной совместимостью.


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

Posts: 2819
Post: #3448

Эх. Что делать с обратной совместимостью - ума не приложу.
Видимо нужно сделать решение через опцию (пока что), например в heroes3.ini сделать твик, чтобы можно было в случае чего отменить решение - как временный испытательный костыль для проверки на бажность/безопасность такого кардинального для ERM изменения.
В любом случае нужно делать изменение и испытывать его. Самые конфликтные скрипты в любом случае придется править. Надеюсь их не слишком много.


game bug fixes extended.dll || My Plugins || My GitHub
05.09.2019 17:33
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4356
Post: #3449

Hd mod 4.208 rc 4 heroes3.ini

[Era]
CpuTargetLevel=50 - именно на моем ноуте(i5 3230m 2.6Ghz up to 3.1) смена значения на 100 вызывает странный баг - при закрытии игры на "крестик" выхода не происходит, но окно зависает. Подобный баг рапортуют пользователь Win 10 и win 8.1, но со значением "50", если они его не меняли.
Так понимаю, это связано с конфликтом с HD mod 4-ой версии?


Image: widget.png?style=banner2

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

Posts: 16733
Post: #3450

daemon_n, убедитесь, что в hd-моде отключён патч на процессор. При CpuTargetLevel=100 Эра не делает ничего.
При меньшем — перехватывает функцию получения сообщения окну игры, в которую грамотно вставляет паузы.


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