IPB

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику Soul Reaver. Спасибо сказали: 9
Дата поста: В теме: За сообщение: Спасибо сказали:
28 Jan 2009, 21:26 [Флуд] Разговоры ни о чём :)
[Flood] Tell about nothing :)
Просто это проект для приятной, но уже во многом мертвой игры. Лично мне о Heroes 3 сейчас приятно вспоминать, но совсем не тянет играть. Ну и кроме того мало осталось человек тут кто ERM хорошо знает чтоб дотянуть этот проект. Разбираться в коде Снорта - черт ногу сломит. Начинать с начала - жалко. Единственный шанс заставить это карыто двигаться - спихнуть в парочку ещё активных проектов (Horn of the Abyss например). Но Horn of the Abyss своих проблем хватает, да и хз когда он ещё выйдет и выйдет ли вообще. Ну и кроме того нужны ли эти боги им?

Короче это очередной проект о котором приятно думать, что когда-то ты к нему вернёшься, и обязательно его доделаешь, но при этом отлично понимаешь что это никогда не произойдет smile.gif.
hippocamus
23 Aug 2006, 14:01 Обучение ERM
ERM для чайников :)
Вот решил наскоро объяснить переменные. Они уже конечно были объяснены, но всё же этого не достаточно. Так что такое переменные? Это числа которые могут менять своё значение. Если вы читали мои уроки в самом начале темки, то уже знаете основы. Есть условия при выполнении которых выполняются команды. Возьмём к примеру простенький диалог.

!?OB#/#/#;
!!IF:M^Текст.^;

Это означает что при посещении объекта в точке #/#/#, выдать сообщение с надписью «Текст». Вроде всё просто. А если вам хочется чтоб после посещения этого объекта, и посещении его повторно выдавалось другое сообщение? Как это сделать? Вот тут нам и помогут переменные. Как уже было сказано переменные это числа которые могут менять своё значение. Так сделаем так чтоб в зависимости от значений переменной выдавались разные сообщения. Сразу скажу что «целые» переменные обозначаются маленькой буквой v. В данный момент существует 10000 переменных (вроде, если нет то модеры подправят) Остальное объясню на примере.

!?OB1/1/0;
!!IF&v1=0:M^Текст.^;

Вот она переменная! Сначала о способе записи. Разберу всю команду. !! – реактор, & - после этого знака как правило идут переменные, v – знак переменной, 1- номер переменной, =0 – значение переменной. Остальное вроде понятно. Как видите переменные могут иметь разные значения. К тому же они являются дополнительным условием для команды (помимо триггера). В данном случаи сообщение будет выдаваться только если переменная 1 будет равна 0. Так как с самого начала игры все переменные всегда = 0. То сообщение будет выдаваться. Теперь объясню пример сложнее.


!?OB1/1/0;
!!IF&v1=0:M^Текст.^;
!!IF&v1=1:M^Текст 2.^;
!!VRv1&v1=0:S1;

Как видите добавилось 2 новые строчки. Объясняю четыертую. !!VRv1&v1=0:S1;
!! – реактор (ресивер), VR – приемник операций с переменными (это значит что строка будет посвящена переменным), v – знак целых переменных, 1 – будем править переменную 1,
&v1=0 – условие ( если переменная 1=0), S1 – установить переменную в 1. Прочитаем строку.

Если переменная 1 равна 0, то установить её значение в единицу (1).

Третья строка практически не отличается от то второй, за исключением того что теперь сообщение будет выдаваться если переменная 1=1. Всё это означает что при втором посещении объекта будет выдаваться второе сообщение. Прочитаем всё это вместе.

При посещении объекта в точке B1/1/0, выдать сообщение «Текст», при условии что переменная 1=0, и после выдачи сообщения если переменная 1=0, то установить её в 1. Если посетить этот объект второй раз, то так как переменная 1уже равна 1 (1=1) выдать сообщение «Текст 2».

Так как переменная 1=1, то сообщение «Текст» не будет выдано ( потому что по условию выдачи сообщения переменная 1 должна ровняться 0 (v1=0)).

Видите, ничего сложного. Причём не обязательно чтоб при посещении именно объекта в точке 1/1/0 установить 1 в единицу. Можно сделать и так:

!?OB1/1/0;
!!IF&v1=0:M^Текст.^;
!!IF&v1=1:M^Текст 2.^;

!?OB2/2/0;
!!VRv1&v1=0:S1;

Это означает что при посещении объекта в точке 1/1/0 будет выдаваться сообщение «Текст» до тех пор пока не будет посещён объект в точке 2/2/0 (при посещении этого объекта переменная 1 будет установлена в 1 (1=1)). После посещения объекта в точке 2/2/0, при посещении объекта в точке 1/1/0 будет выдаваться сообщение «Текст 2».

Как видите это очень полезно. Также при записи можно использовать не только знак =. Можно и знаки больше и меньше (< >). То есть 1>1, или 1<1 (если переменная 1 больше 1, или меньше 1).

Но переменные могут использоваться не только для выдачи сообщений. Очень много команд используют переменные. Допустим приведу пример для выдачи артефакта.


!?OB1/1/0;
!!IF&v1=0:M^Текст.^;
!!IF&v1=1:M^Текст 2.^;
!!HE-1&v1=1:A7;

!?OB2/2/0;
!!VRv1&v1=0:S1;

Как видите в наш пример добавилась ещё одна строчка. Разберём её.
!!- реактор, HE-1 – приёмник героя (-1 означает текущего героя, то есть команда будет срабатывать для любого героя), &v1=1 – если переменная 1=1, A7 – дать герою артефакт номер 7 (секира кентавра).

Вот. Это значит что артефакт будет выдаваться только если переменная 1=1(а для этого нужно посетить объект в точке 2/2/0. Правда у этого скрипта есть не большая оплошность. При КАЖДОМ посещении объекта в точке 1/1/0 если переменная 1=1 ВЫДАВАТЬ герою «Секиру кентавра»!!! Вот читерство! Сколько не зайди, столько артов и получишь. Будем исправлять.

!?OB1/1/0;
!!IF&v1=0:M^Текст.^;
!!IF&v1>=1:M^Текст 2.^;
!!HE-1&v1=1:A7;
!!VRv1&v1=1:S2;

!?OB2/2/0;
!!VRv1&v1=0:S1;


Добавилась строчка !!VRv1&v1=1:S2;
Как видите после посещения объекта в точке 1/1/0, а 1=1 поставить переменную 1 в 2, но так как команда о смене значения переменной стоит после команды о выдачи артефакта, то артефакт будет выдан, и только после значение переменной измениться.

Также немного изменена строчка о выдачи сообщения «Текст 2». Теперь сообщение будет выдаваться если переменная 1 больше или = 1. Так как после получения артефакта переменная 1 будет равна 2 (1=2), то старое сообщение переставало бы работать (потому что условием для работы сообщение было значение переменной 1 (1=1)). Теперь сообщение будет работать при любом значении переменной 1 ели это значение больше или ровно 1.

Вообще всё это не очень сложно и быстро запоминается. Если что-то не понятно то спрашиваете. Вот и всё. Там конечно ещё куча всего но основы объяснил. Нужно ещё объяснить флаги. Надёюсь это сделает кто-то другой. Если нет… Эх! Придётся и это объяснять.

[sergroj] Исправил ошибку, которую нашел gamecreator
shalun
16 Jun 2006, 17:36 Обучение ERM
ERM для чайников :)
А откуда ещё? Прикол я бы всё писал это сам? Каждого монстра...

Добавлено ([mergetime]1150468580[/mergetime]):

Ещё одна моя статья с нашего форума WST.


Новый скрипт!!!

Ну? Поняли основы? Надеюсь что да. Переходим дальше.

Вот один простенький, но очень нужный скрипт.

!#OW:D1/254 D-2/254; Он позволяет не умирать после истечения 7 дней без замка. Объяснять что где не буду, ибо что где не помню. Да и надо ли?

Далее идёт симпатичный скрипт. При загрузке вашей карты появляется сообщение. Какое уже ваше дело. Можно написать благодарность, описание карты, просто что-то от вас. Также скрипт проверяет версию WoG и может указать если ваша версия для него не подходит.

ZVSE

!#MA:P7/?v100;

!#UN:V?v1/?v2;
!#IF&v1<357:V4/1;
!#IF&v1<250:V4/1;
!#IF&4:M^{ВНИМАНИЕ!} Эта карта создавалась с использованием WoG 3.58f и ERM 2.50! Поскольку у вас обнаружена более ранняя версия, то во время игры возможны ошибки!

{(Ваша версия WoG - %V1, ERM - %V2)}^;
!#IF:M^{Название карты } - © 2006-02 by {Имя автора карты }

{Примечания автора:}
{Само примечание автора .}
{Версия карты:} 1.0 (10.01.2006)^;

Далее… Поговорим о переменных. Я конечно надеюсь что о них расскажут или SnoRT или Fly так как вних я меньше всего и смыслю. Но пока расскажу о текстовых переменных. Переменные обозначаются приёмником VR. Переменные делятся на несколько видов. Сейчас поговорим о текстовых переменных. Они обозначаются буквой «z». Помните наш прошлый скрипт о телепортации? Давайте немного его модифицируем.
Добавим в него несколько новых строчек.

ZVSE

!#VRz1:S^Портал ^;

!?OB5/28/0;
!!IF:Q1^Хотите телепортироваться? ^;
!!HE-1&1:P48/58/0;

Разбираемся: !# - инструкция. Она работает с самого начала карты. VR – приёмник переменной. z – текстовая переменная. 1 – записать в текстовую переменную 1:S. ^Портал^ - описание. Мы записали этот текст в переменную 1. Это что-то типа карты памяти. Текст «портал» будет храниться в ней. Идём дальше. Добавим в наш скрипт ещё одну строчку.
ZVSE

!#VRz1:S^Портал ^;
!#OB5/28/0:H1;

!?OB5/28/0;
!!IF:Q1^Хотите телепортироваться? ^;
!!HE-1&1:P48/58/0;

Разбираемся: !# - инструкция. OB5/28/0 – объект в точке 5/28/0 (наш телепортёр). :H1 – дать объекту описание из переменной 1. Как вы поняли у объекта теперь будет название «портал». Если раньше в игре наш телепортёр назывался просто «объект», то теперь он носит гордое название «портал»! Сохраните карту и вернитесь в игру. Наведите курсором на наш объект и взгляните на его название. Круто? Текст может быть любой. Но если у вас на карте будет несколько объектов с названиями то всегда создавая новую переменную меняйте её номер. То есть 2, 3, 4…

Также можно интегрировать текст переменной прямо в сообщение. Давайте сделаем это.

ZVSE

!#VRz1:S^Портал ^;
!#OB5/28/0:H1;

!?OB5/28/0;
!!HE-1:R2/?v32;
!!VRz50&v32=1:S^Парень^;
!!VRz50&v32=0:S^Девушка^;
!!IF:Q1^Хотите телепортироваться %Z50? ^;
!!HE-1&1:P48/58/0;

Разбираем всё новое: Чтоб наглядно показать зачем это может пригодиться определим пол героя !!HE-1:R2/?v32; !! –реактор. HE – приёмник героя. -1 текущего героя. :R2/?v32; - определить пол героя и записать в переменную 32. Мы в первый раз сталкиваемся с логическими переменными. Обозначаются они буквой v. У них может очень много значений. Но о них потом. Я в этом к сожалению не очень понимаю. Может другие объяснят… Идём дальше.

!!VRz50&v32=1:S^Парень^;
!!VRz50&v32=0:S^Девушка^;

Записать в переменную 50, значение переменной 32. Если значение 1 то Парень, если 0 то Девушка.


!!IF:Q1^Хотите телепортироваться %Z50? ^;

Тоже сообщение что и раньше, но теперь добавлено %Z50. Тоесть текст в переменной z50 теперь будет в сообщении, но сама строчка %Z50 отображаться не будет. НО УЧТИТЕ!!!! Если вы интегрируете текст в сообщение как в нашем случае, в самом сообщении буква Z пишется с большой буквы!!!

%Z50 – Правильно!

%z50 – Неправильно!

А в коде пишется как обычно с маленькой. Вот мы и познакомились с текстовыми переменными. Надеюсь что всё понятно. Если нет то спрашиваете.

Также меня интересует ваше мнение. А нужна ли эта темка? Учиться писать ERM кто-то будет? Очень хочу знать…


Объясните ктонить как скрипт едитором пользоваться
Bisik, DRONыч, shalun
16 Jun 2006, 15:07 Обучение ERM
ERM для чайников :)
Писал письмо Гудвину. Он просил сделать так чтоб в замке нанимались те существа которых он хочет. Писал письмо а получилась статья. Читайте! Написанно как письмо а не как статья! Сразу извиняюсь за такой ОГРОМНЫЙ пост. Из за таблицы так.

Таблицу обрезал, т.к. ее любой желающий найдет по адресу папки_героев/erm_help
Не знаю как. Я скриптер не такой профессионал как кажется. Но могу сделать так чтоб в жилище (то что на карте), нанимались те существа какие ты хочешь... А в замке вроде тоже можно но мне это никогда небыло нужно. И я в это не влазил. Навсякий случай напишу скрипт чтоб в жилищах нанимались другие существа.

ZVSE

!#DW140/138/0:M0/53/2;

Вот и всё! Одна строчка! Объясняю...

!# - Означает то что строчка будет выполняться с самого начала игры.

DW - инструкция управления жилищем.

140/138/0 - координаты жилища в котором мы хотим установить новых существ для найма.

M0/53/2; - MO (управление монстром, 53(номер монстра который будет наниматься. В данном случаи Эфрит султан.) 2 - (количество эфритов для найма за неделю. В данном случаи 2 штуки). Значит что в жилище 140/138/0 будут наниматься Эфрит султаны по 2 штуки в неделю... Всё. Тут возникает вопрос, а какие номера у других существ? *Ответ: смотри таблицы*

Вот и всё! И ещё. Пока писал письмо разобрался с заменой монстров в замке. Все что ты просил но учти, что если на карте есть другие замки такие-же что и у тебя, то вних будут наниматься те же существа что и в твоём.

ZVSE

!#UN:T0/0/1/172;

Так-же всего одна строчка. Объясняю.

!# - Означает то что строчка будет выполняться с самого начала игры.

UN - Инструкця универсальных команд.

T - Приёмник города (от слова Town).

0 - Номер города (В данном случаи это Замок (люди)).

0 - Уровень жилища в городе.( от 0 до 6. Тоесть 0 - жилище копейщиков. 1 - жилище лучников и. т. п.)

1 - Существо улучшенное или не улучшенное для найма.(0 не улучшенное, 1 улучшенное). Это значит что если улучшить жилище копейщиков, то будут наниматься те монстры которых мы укажем.

172 - Номер существа которое будет наниматься. Таблицу я уже давал. В данном случаи это Кошмары.

Вот таблица городов.

№ Название и комментарии
0 Замок (люди)
1 Оплот (Эльфы)
2 Башня (Маги)
3 Инферно (демоны)
4 Некрополис (нежить)
5 Темница (Подземелье)
6 Цитадель (Орки)
7 Крепость (ящеры)
8 Сопряжение (элементали).
shalun
04 Jun 2006, 09:57 Обучение ERM
ERM для чайников :)
Здесь же будем выкладывать простенькие и не очень скрипты. По этой статье мы напишем простенький, но достаточно нужный скрипт о перемещении. Ну? Начнём?

1)Где писать скрипт? Есть два способа: через редактор скриптов (я им пользоваться не умею так что ничего сказать не могу), и собственно в саму карту. Открываем редактор, и открываем меню Инструменты - Спецификация карты. Выбираем вкладыш событие, и создадим новое (добавить). Вот тут то и пишутся скрипты. Начнём писать наш скрипт. Первым делом выбираем английскую раскладку и пишем:

ZVSE

ZVSE? Это что ещё за ерунда? Это что то типа волшебного слова. Это даёт компу понять что это скрипт а не просто сообщение. Запомните его хорошенько. Без него ни один скрипт не пашет!

Идём дальше… Есть 3 вида команд.

!? – триггер

!! – реактор

!# - инструкция

Разбираем по порядку. Триггер – это условия выполнение команды. Реактор – сама команда. Всегда идёт после триггера. Инструкция – тот же реактор, но может стоять где угодно. Триггер для его использования не требуется. Действует с самого начала игры.

Идём дальше. Для создания нашего скрипта нам нужно условие выполнение команды. То есть телепортация будет выполняться только при выполнении этого условия. Одним из этих условий является посещение объекта. Добавим в наш скрипт это условие.

ZVSE

!?OB5/28/0;

Разбираемся … !? – условие выполнение команды. OB – приёмник объекта. Это значит что условие будет связано с объектом. 5/28/0 – точка расположения объекта где 5 число клеток сверху, а 28 слева. 0 означает то что объект на поверхности, а если было бы не 0 а 1 то под землёй. Точки 5, и 28 должны указывать точно в точку входа в объект. Чтобы узнать количество клеток с верху и с лева взгляните на разметку у вас в редакторе.
; - означает конец этой строчки.

Поставьте любой объект не имеющий свойств в эту точку (или в свою но тогда впишите в скрипт новые координаты объекта вместо старых. Например !?OB1/1/0. Не забудьте сохранить скрипт перед тем как выйти в редактор!

Вот и готово. Это означает то что при посещении объекта в точке 5/28/0 будет выполняться команда.
Пришло время написать саму команду. Пишем:

ZVSE

!?OB5/28/0;
!!IF:Q1^Хотите телепортироваться? ^;

Снова разбираемся. !! – реактор, или команда. IF – приёмник вывода сообщений. :Q1 – сообщение с вариантом «Да», «Нет». ^Хотите телепортироваться?^ - само сообщение. ; -конец строчки. Кстати если прописать так !!IF:^Текст^, то просто появиться сообщение без «да», и «нет».

Что у нас получилось теперь? Это означает то что при посещении объекта в точке 5/28/0 выдать сообщение с двумя вариантами «ДА», и «НЕТ»

Теперь нужно прописать саму телепортацию если ответ «ДА».

ZVSE

!?OB5/28/0;
!!IF:Q1^Хотите телепортироваться? ^;
!!HE-1&1:P48/58/0;

Разбираемся: !! – команда. HE-1 – приёмник героя. То есть команда связана с героем ( а -1 означает текущего героя. Тоесть команда произойдёт с тем героем который подошёл к объекту). &1 – сработает если объект «Да». Если нет то вроде 0 хотя не уверен. :P48/58/0; – Телепортация в точку 48/58/0; Вот и всё!

Что у на получилось? ? Это означает то что при посещении объекта в точке 5/28/0 выдать сообщение с двумя вариантами «ДА», и «НЕТ», и если ответ «да», то телепортировать героя в точку 48/58/0: Поставьте день выполнения события 600 внизу окна и нажмите окей. Зачем 600? Чтобы скрипт не появился в первый же день как простое сообщение с текстом. Не забудьте сохранить карту. Готово. Можете тестить. Если что не ясно пишите. Отвечу. Как видите всё очень просто!
DRONыч, DrSlash, shalun

Текстовая версия Сейчас: 19 April 2024 - 17:19
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика