See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
ERM — Википедия

ERM

Материал из Википедии — свободной энциклопедии

ERMEvent Related Model — англ. «событийно-связанный модуль» — скриптовый язык для дополнения «Heroes of Might and Magic 3.5: In the Wake of Gods». Название устарело. Первоначально ERM предназначался исключительно для расширения возможности событий — объектов, выполняющих некое действие при попадании на клетку, где они находятся. Позднее ERM был значительно изменён и дополнен. Теперь с помощью скриптов можно контролировать практически весь процесс игры. Было предложено новое название — GRM — Gamer Related Model, но оно не «прижилось».

[править] Структура языка ERM

Скрипт на языке ERM представляет собой совокупность триггерных блоков (trigger blocs), срабатывающих при каком-либо действии игрока, внутри которых находятся блоки команд — приёмники (recievers). Также могут быть инструции (instructions) — блоки команд, выполняемых при загрузке карты. Вот пример скрипта:

ZVSE
!#VRz230:S^Кузница Гарика^;

!?OB63/39;
!!IF:M^Вы в Кузнице Гарика.^ V20/1;

!#HT63/39:T230;

!$OB63/39;
!!IF:M^Вы вышли из Кузницы Гарика.^;

В самом начале скрипта стоит идентификатор ZVSE. Он показывает, что дальнейший текст представляет собой скрипт на языке ERM. Все последующие строки начинаются с восклицательного знака и заканчиваются точкой с запятой. Любой текст вне этих символов рассматривается как комментарий. В данном примере «комментариями» являются знаки перевода строки между строками. Вторым символом в строке стоит один из символов ?,$,!,#. Этот символ определяет тип команды. Вопросительному знаку соответствуют триггеры (triggers), символу доллара — пост-триггеры (post-triggers), восклицательному знаку — приёмники и «решётке» — инструкции.

Триггеры и пост-триггеры определяют границы триггерных блоков и условия их выполнения: триггерный блок включает в себя все приёмники, находящиеся между соответствующим и следующим триггерами (пост-триггерами). Также границей является конец скрипта. Условия выполнения зависят от типа триггера (пост-триггера) и его параметров. Тип триггера записывается двумя заглавными английскими буквами после символов ?,$.После него ставятся параметры (числа от −2³² до 2³²-1 или числовые переменные), разделяемые косой чертой. Количество и значение параметров зависят от типа триггера. В настоящий момент существуют следующие типы триггеров: AE, BA, BF, BG, BR, CM, CO, FU, GE, HE, HL, HM, IP, LE, OB, MF, MG, MM, MR, MW, PI, SN, TH и TM. А также пост-триггеры LE и OB. Принципальной разницы между триггерами и пост-триггерами нет, последние можно считать как ещё два типа триггеров.

В данном примере имеется триггер и пост-триггер OB. соответствующие триггерные блоки выполняются соответственно до и после посещения некоего объекта. В данном случае имеются два параметра 63 и 39, которые показывают, что этим объектом являются все объекты типа 63 и подтипа 39.

Приёмники и инструкции содержат блоки команд скрипта. Инструкции выполняются при загрузке игры, а приёмники при срабатывании соответствующего триггера. За исключением символа типа ! или # их структура идентична. Практически любая инструкция может быть приёмником, и наоборот. После символа типа идёт тип приёмника, состоящий из двух заглавных английских букв. В настоящее время имеются следующие типы приёмников (и инструкций): AI, AR, BA, BF, BG, BH, BM, BU, CA, CD, CE, CH, CM, CO, DW, DO, EA, EX, FR, FU, GE, GD, GR, HE, HL, HO, HT, IF, IP, KT, LE, LN, MA, MC, ML, MN, MF, MM, MO, MP, MR, MT, MW, OB, OW, PO, QW, SC, SG, SK, SN, SP, SR, ST, SW, SY, TM, TR, UN, UR, VC, VR, WG, WH, WM, WT и. Как и триггер, приёмник имеет параметры, общие для всех его команд. После параметров ставится двоеточие и идёт блок команд, разделяемых произвольным количеством знаков, не являющихся цифрами, заглавными английскими буквами или одним из символов *, :, +, -, ;, ^. Обычно принято разделять команды одним пробелом или же не разделять их вовсе. Команда представляет собой заглавную английскую букву, после которой могут быть параметры — числа или переменные, разделяемые косой чертой. Также может быть параметр в виде текстовой строки, ограниченной символами ^ и располагающийся после прочих. Количество параметров, их тип и значение самой команды зависят от её типа (заглавная английская буква в начале команды) и типа её приёмника (инструкции).

В нашем примере имеются две инструкции VR и HT и два приёмника IF. VR командой S устанавливает строковую переменную z230 в значение «Кузница Гарика», а HT командой T связывает название объектов типа 63 и подтипа 39 со строковой переменной номер 230. Оба приёмника IF имеют команду M, выводящую сообщение на экран, а первый из них также имеет команду V, устанавливающую флаг (булеву переменную) номер 20 в значение 1 (истина).

Таким образом, данный скрипт назовёт все объекты типа 63 и подтипа 39 «Кузницами Гарика», а при входе и выходе будет выдавать сообщения. Это простейший возможный пример. В данной статье описана лишь общая структура языка. Не описаны условные блоки, флаги и переменные лишь упоминаются и не дан список всех команд и параметров всех триггеров и приёмников. Ссылки на сайты, где можно получить более подробную информацию, даны в конце статьи.

[править] Файлы и ссылки


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -