Current time: 20.04.2024, 14:19 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERM => Lua FAQ
» Вопросы - Ответы
Author Message
Berserker Offline
Administrators

Posts: 16485
Post: #3

Выполнение ЕРМ команд/ресиверов
Для выполнения ЕРМ кода и доступа к ЕРМ-переменным используется модуль 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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.01.2018 17:04
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
ERM => Lua FAQ - Berserker - 05.01.2018, 15:46
RE: ERM => Lua FAQ - Berserker - 05.01.2018, 16:11
RE: ERM => Lua FAQ - Berserker - 05.01.2018 17:04
RE: ERM => Lua FAQ - Berserker - 06.01.2018, 03:43

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group