Выполнение ЕРМ команд/ресиверов
Для выполнения ЕРМ кода и доступа к ЕРМ-переменным используется модуль
era.erm.
Code:
local erm = require('era.erm')
Модуль позволяет использовать себя как функцию, передавая строку ЕРМ команд, разделённых ";" и без ведущих "!!".
Code:
erm('HE-1:C0/0/?y1/?y2; IF:M^Слот 0. Тип: %Y1. Количество: %Y2.^')
Для доступа к ЕРМ-памяти используются таблицы erm.v, erm.z, erm.y, erm.e, erm.f (логические значения). Таблицы ведут себя как обычные индексированные массивы.
Code:
erm.v[7] = 600 -- записали 600 в v7
erm.z[3] = 'Hi, Valery' -- записали строку в z3
print(erm.z[1]) -- отобразили содержимое строки z1
Дополнительно доступен метод :addr(индекс), возвращающий адрес ЕРМ-переменной в виде обычного числа.
Code:
print('Адрес e50: ' .. erm.e:addr(50))
Модуль
erm содержит методы
hero(id) и
currHero() для получения доступа к объектам героя по его ID или текущему герою (полный аналог HE-1). У возвращаемого объекта имеется метод
.w(индекс, значение?) для доступа к w-переменным героя.
Code:
local hero = erm.hero(30) -- получили героя с id = 30
print(hero:w(100)) -- вывели для него переменную w100
hero:w(15, 777) -- установили для него w15 в 777
hero:w(1, hero:w(1) + 3) -- увеличили w1 на 3