Задача: написать скрипт, выводящий в виде чат-сообщения 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. Заметьте, что писать первую букву в верхнем регистре более не обязательно и не поощряется.