Current time: 24.11.2024, 22:20 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 1315
Post: #8236

Elzivir, !?FU(OnAfterErmInstructions) - это аналог !?PI;

http://wforum.heroes35.net/showthread.php?tid=5462


Карта-мод "Война на Холсте"
(This post was last modified: 17.07.2021 14:20 by SergOz.)
17.07.2021 13:47
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #8237

Elzivir, оооо

ну тут точно нужен полный код igrik'a: (Click to View)


Image: widget.png?style=banner2

Новейший Heroes Launcher
17.07.2021 14:21
Visit this user's website Find all posts by this user Quote this message in a reply
Elzivir Offline

Posts: 263
Post: #8238

daemon_n, при загрузке карты вылезает критическая ошибка с надписью "!!EA" - wrong creature type index... Unsure
17.07.2021 21:45
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #8239

Elzivir, исправил скрипт.


Image: widget.png?style=banner2

Новейший Heroes Launcher
17.07.2021 22:02
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1315
Post: #8240

(18.07.2021 01:23)Berserker Wrote:  
Упустил момент, когда стало необязательным писать !!re $1[/#2/#3/#4]:; без :
Я также впервые вижу четвёртый параметр после i, в данном случае это -1. Простой тест
показал что выводятся только 0, 1, 2 и 3, а 4 не показывается.
Вопрос: чем отличается запись !!re i/0/42/1/-1; от !!re i/0/41/1; или !!re i/0/41;


Карта-мод "Война на Холсте"
(This post was last modified: 18.07.2021 05:19 by SergOz.)
18.07.2021 03:29
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #8241

1) Давно уже все :; можно заменить на ; везде, включая if/el/en. С версии 3.0 по факту.
2) Последний параметр складывается с третьим параметром, который может быть переменной.

Чаще всего цикл идёт от 0 до [число объектов] - 1.
Цикл от 0 до 42 - 1 явно даёт понять, что есть 42 отряда на поле боя. Реально здесь лучше константу применить, но просили под древнюю 3.0.5.

Вариант с переменной
UN:U для подсчёта объектов, затем !!re i/0/(numObjects)/1/-1;


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

Posts: 263
Post: #8242

daemon_n, теперь пишет "Era Service Error: Invalid parameters string in a call to !!SN. Context:"... Sorry
(This post was last modified: 18.07.2021 04:56 by Elzivir.)
18.07.2021 04:55
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1315
Post: #8243

Berserker, я не до конца понял.
В том коде используется динамический массив, ячейки которых начинаются с #0. Потому такая запись оправдана. Но, если был подсчёт объектов, то их количество начинается с 1, а потому не проще ли написать после UN:U ->
!!re i/1/(numObjects); ?


Карта-мод "Война на Холсте"
(This post was last modified: 18.07.2021 05:12 by SergOz.)
18.07.2021 05:11
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #8244

Elzivir, попробуй вот так (Click to View)

И если не сработает, то так: (Click to View)

Честное слово, ни разу не приходилось писать на ERM 1 - по-дружески прошу, переходи на ERA 3Rolleyes


Image: widget.png?style=banner2

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

Posts: 16657
Post: #8245

SergOz, не проще. Потому как в программировании почти всё считается с 0-я и многие вещи хранятся в массивах или требуют индекс объекта, начиная с нуля. Потому удобнее и единообразнее писать цикла с 0 до X - 1. Читаются такие циклы также легче.


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

Posts: 2356
Post: #8246

(18.07.2021 15:51)Berserker Wrote:  Потому удобнее и единообразнее писать цикла с 0 до X - 1. Читаются такие циклы также легче.

Человеку всё же привычнее вести отчёт от 1. Лично я всегда пишу "for i= 1 to X do ()". В высокоуровневых языках и индексы массивов начинаются с 1 (а для машины, т.е. на низком уровне, часто будет преобразовано в "for i=X-1 to 0 do ()", т.к. такой код будет работать чуточку оптимальнее для исполняемого кода).

Вообще, ERM - жестокое смешивание низкоуровневых и высокоуровневых принципов программирования, как наиболее правильнее в нём - ооочень спорный вопрос. Отсчёт от 0 - всё же больше к низкоуровневому. Если нужно удобство и большая читаемость человеком, когда производительность не важна, то лучше начинать отсчёт с единицы, как в обычной математике.
18.07.2021 16:13
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1315
Post: #8247

Berserker, спасибо. Я понял. Несомненно этот последний параметр вносит удобство во многих случаях. Я не знал такого и сразу заценил. Но, если мы используем переменную цикла как идентификатор объекта (например, номер города), то тогда старт цикла с 0 мягко говоря неудобна.
Это не спора ради, а для понимания Yes


Карта-мод "Война на Холсте"
18.07.2021 16:56
Find all posts by this user Quote this message in a reply
Elzivir Offline

Posts: 263
Post: #8248

daemon_n, благодарю! Второй вариант скрипта сработал (правда вместе со способностями существ очистил и командирские, которые я им наваял, но с этим жить можно). А по поводу перехода на Era 3... Посмотрим, если с текущей версией зайду совсем в тупик, то вполне возможно когда-нибудь... Yes
18.07.2021 22:24
Find all posts by this user Quote this message in a reply
Elzivir Offline

Posts: 263
Post: #8249

Ребята, хэлпаните, плз! Долго пытался сделать сам, но так и не получилось. Возможно ли реализовать зависимость типа заклинания, кастуемого командиром (присвоенного ему через "!!UN"), от его уровня? Наппример, командир Castle до 5 ур. накладывает "благословение", а начиная с 5-го - "молитву" (т.е. молитва замещает благословение).

Пока что на практике получается, что все хорошо лишь до тех пор, пока не встретятся командиры одного и того же типа. В этом случае "молитву" будут кастовать оба командира, даже если второй из них 1 ур и по идее должен благословлять. Думаю, что здесь не помешало бы сделать проверку на сторону (атакующий или защищающийся), но я не знаю как это сделать.

И второй вопрос по сути то же самое, только касается навыков и способностей (включая флаговые) командиров (блок, двойной удар, безответность, защита от магии, бесстрашие и т.д.), присвоенных им через "!!EA": можно ли их раскидать по уровням таким образом, чтобы при встрече командиров одного типа, но разного уровня, они имели соответствующий своему уровню развития набор навыков и способностей?

P/S: Я совсем запутался в триггерах и командах, приходится тупо загружать и проверять "сработало - не сработало", поэтому буду очень рад хотя бы одному наглядному примеру как это должно выглядеть, если вообще реально это сделать (Era 2.46)... Sorry
(This post was last modified: 20.07.2021 17:43 by Elzivir.)
20.07.2021 17:21
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #8250

Elzivir, BG:Q?(side:y)- 0/1 - разные стороны


Image: widget.png?style=banner2

Новейший Heroes Launcher
20.07.2021 18:28
Visit this user's website 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