Current time: 23.03.2024, 05:41 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 16449
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: 16449
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 Offline

Posts: 604
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: 16449
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: 5422
Post: #5

Quote:Для ... строк — z-1..z-10 переменные.
а если я более 10ти раз закажу получение в строковую переменную, какие z-переменные начнут выделяться?
05.07.2020 17:20
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #6

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


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
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: 16449
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: 5422
Post: #8

Berserker, а чего ты z1-z10 сюда же не завёл? тем более постоянно их для временных в скриптах ранее использовали Unsure
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: 16449
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: 5422
Post: #10

указание точной переменной так не работает?
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: 16449
Post: #11

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


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

Posts: 5422
Post: #12

(06.09.2020 02:16)ElfbI Wrote:Следующий вопрос, новые глобальные вида
только под ZVSE2 ?

на 2.9.14 только для SN/RD/MP
06.09.2020 02:20
Visit this user's website Find all posts by this user Quote this message in a reply
ElfbI Offline

Posts: 325
Post: #13

Bes, я сейчас пишу под последнюю эру, все вопросы по синтаксису для неё

Так новые глобальные вида
только для движка ZVSE2 ?


The dreams you kill will break your heart
(This post was last modified: 06.09.2020 02:45 by ElfbI.)
06.09.2020 02:23
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #14

ElfbI, ZVSE2 не запрещает тебе частично писать в старом стиле, просто открывает новый функционал.
Конкретно глобальные i/s переменные и без него должны работать.

Смотри, можно писать так:
Но через год в этих иероглифах устанешь рыться.

А можно так:


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

Posts: 325
Post: #15

Berserker, за десять лет привык уже к старому коду, для меня второе значительно дольше прочитать будет (и написать). Вот новые глобальные именованные реально удобно, удобнее SN:W, поэтому и вопрос появился


The dreams you kill will break your heart
06.09.2020 02:51
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