Wake of Gods Forum | Форум Во Имя Богов

Full Version: Школа ERM 2
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Вопрос: как преобразовать скрипт из 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
Задача: написать скрипт, выводящий в виде чат-сообщения 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. Заметьте, что писать первую букву в верхнем регистре более не обязательно и не поощряется.
Perfect! Does this method work for all the old In The Wake of Gods scripts to update them if we want? Yes
V_Maiko, of course.
Quote:Для ... строк — z-1..z-10 переменные.
а если я более 10ти раз закажу получение в строковую переменную, какие z-переменные начнут выделяться?
Berserker, новый ERM2 синтаксис уже поддерживается sublime в Эре 3?Rolleyes
daemon_n, разумеется.

Bes, объявление 11-й переменной приведёт к ошибке. Нужно освободить одну из предыдущих.
Code:
; (-someStr) удалит переменную someStr.
Berserker, а чего ты z1-z10 сюда же не завёл? тем более постоянно их для временных в скриптах ранее использовали Unsure
Bes, z1..z10 являются глобальными.
указание точной переменной так не работает?
Bes, нет. Только автоматическое выделение.
(06.09.2020 02:16)ElfbI Wrote:Следующий вопрос, новые глобальные вида
только под ZVSE2 ?

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

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

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

А можно так:
Berserker, за десять лет привык уже к старому коду, для меня второе значительно дольше прочитать будет (и написать). Вот новые глобальные именованные реально удобно, удобнее SN:W, поэтому и вопрос появился
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Reference URL's