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

Post Reply 
Threaded Mode | Linear Mode
Школа ERM для ERA III
Author Message
Berserker Offline
Administrators

Posts: 12789
Post: #1
Лампочка 
Вопрос: как преобразовать скрипт из ERM 1 в ERM 2?
Ответ: Заменить ZVSE на ZVSE2. После чего убедиться, что именованные функции соответствуют указанному ниже стилю.

OnSomeEvent, DoSomeWork — стиль оформления, зарезервированный за Эрой, её событиями и функциями.

mod_OnSomeEvent, MOD_OnSomeEvent, mod_CountHeroes, mod_TeleportStack — так нужно именовать функции вашего мода или библиотеки. Здесь mod/MOD — уникальный префикс.

Примеры возможных префиксов:
acm_ - Advanced Classes Mod.
pm_ - Phoenix Mod.
wog_ - WoG
thu - Third Upgrades


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

Posts: 12789
Post: #2
Баг 
Задача: написать скрипт, выводящий в виде чат-сообщения ID элемента карты приключений, на котором игрок щёлкнул правой кнопкой мыши.

Используем: именованные локальные переменные, интерполяцию строк.

Глоссарий:
Интерполяция — замена имён переменных и макро-имён в строке значениями переменных, например %y1 (переменная) на 7 (значение переменной y1).

Скрипт:


Пояснения:
Используем редактор из папки Tools\Sublime_Erm_Editor.

!?FU(OnAdventureMapRightMouseClick) является человеко-читаемым синонимом для !?CM0. При наборе !?FU(On_ редактор начнёт предлагать варианты имён событий. Вводите логически части английских слов, например OnAdmocl предложит завершить по TAB одно из двух имён событий: OnAdventureMapLeftMouseClick и OnAdventureMapRightMouseClick.

Время жизни локальных переменных можно визуально проследить по коду от !?XX события до следующего !?XX события. Для целых чисел используются y1..y100, вещественных e1..e100, строк — z-1..z-10 переменные.

ERA 3 позволяет давать переменным имена, автоматически выделяя для них индексы. Синтаксис — (имяПеременной). Использование неименованных локальных переменных не поощряется и может приводить к конфликтам, если смешивать одни с другими в рамках одного события.

Имена переменных не могут содержать "_" и должны начинаться с малой буквы. Примеры: heroId, numStacks, maxSkillValue.

При первом использовании переменной не ясно, какого она типа (целое y, вещественное e или строковое z), поэтому его нужно указать через двоеточие: (имя переменной:тип).

!!CM:I?(where:y); скорее всего заменится на этапе компиляции на !!CM:I?y1, сопоставив таким образом имя where с переменной y1.

Для интерполяции, то есть подстановки значения переменной на место её имени, переменных в строках используется синтаксис %(имя переменной). Можно также использовать и переменные ERM 1: %y3, %v7, %z500. Заметьте, что писать первую букву в верхнем регистре более не обязательно и не поощряется.


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

Posts: 218
Post: #3

Perfect! Does this method work for all the old In The Wake of Gods scripts to update them if we want? Yes
05.07.2020 04:51
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 12789
Post: #4

V_Maiko, of course.


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

Posts: 3874
Post: #5

Quote:Для ... строк — z-1..z-10 переменные.
а если я более 10ти раз закажу получение в строковую переменную, какие z-переменные начнут выделяться?



Image: 237506073ac7.gif
05.07.2020 17:20
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Online

Posts: 2100
Post: #6

Berserker, новый ERM2 синтаксис уже поддерживается sublime в Эре 3?Rolleyes


HoMM3 ERA 2.9.14 HD RUS/ENG v1.31 (27.06.20)Yandex/Google
Топ Дискорд Сервер по Эре.
05.07.2020 18:43
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 12789
Post: #7

daemon_n, разумеется.

Bes, объявление 11-й переменной приведёт к ошибке. Нужно освободить одну из предыдущих.
Code:
; (-someStr) удалит переменную someStr.


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

Posts: 3874
Post: #8

Berserker, а чего ты z1-z10 сюда же не завёл? тем более постоянно их для временных в скриптах ранее использовали Unsure



Image: 237506073ac7.gif
05.07.2020 20:00
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 12789
Post: #9

Bes, z1..z10 являются глобальными.


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

Posts: 3874
Post: #10

указание точной переменной так не работает?



Image: 237506073ac7.gif
05.07.2020 22:14
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 12789
Post: #11

Bes, нет. Только автоматическое выделение.


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