Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ERM: Вопросы и ответы
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52
Aнгeл
/*464F10*/
Выяснение, кто сейчас ходит, идёт после перехватчика ZVS.
major
я в одну e-переменную запоминал одно значение в течение битвы, а потом в конце битвы считывал это значение и нифига оно не обнулялось...
а тут просто хз че такое.
Aнгeл
Читай ЕРМ мануал. e - временные переменные, за которые никто не отвечает. Может мусор совпал...А может никто другой во время битвы не заюзал, мало ли.
sergroj
Положительные e-переменные обнуляются при вызове функции и востанавливаются при выходе из нее. Если ты ее устанавливаешь или читаешь в функции, то она не будет совпадать, иначе быдет.
Кстати, битва может быть вызвана командой HE:T из функции, тогда ты сменишь e-переменную, ей принадлежащую, так что надо бэкапить.
Iv
Есть пара вопросов:
1. Где настраивается для объекта вогификации, например, волшебных грибов (magic mushrooms), список строений которые он должен заменять?
2. Для реализации скрипта выкупа прироста существ о клику на окошке прироста в замке ковыряюсь в скрипте sergroj MouseControl.erm
Насколько понял
!!VRy2&2:Sy1 &4; [Ctrl] - Присвоить переменной y2 значение переменной y1 AND 4
!!IF&2/y2<>0:V2/0;- если переменная y2 <> 0 , то флаг V2=0
но что означает выделенный &2?
hippocamus
1. В скриптевогификаци - script00.erm
2. оператор будет выполнен только "при установленном флаге №2"
Iv
Спасибо!
1. А какой ресивер надо искать?
2. Понял.

Ещё один вопрос:

3. Можно ли научить монаха кастовать блесс/молитву? Нужная анимация у него ведь есть?
Efrit
Да, можно. Это и без этой анимации спокойно можно сделать. Про !?MM слышал?
Правда, ИИ это воспринимать не будет sad.gif
sergroj
Кстати о MouseControl.erm - учти, что в нем я неправильно использовал y-переменные - в триггерах надо было использовать y с отрицательными индексами. В том куске, что ты показывал - !!IF&2/y2<>0:V2/0; - вероятно, можно заменить на FU:E у убрать эти повторяющиеся проверки. Скрипт писался еще когда FU:E не было, да и отрицательных y переменных, кажется, тоже.
Iv
Цитата(sergroj @ 12 Nov 2008, 00:22)
Кстати о MouseControl.erm - учти, что в нем я неправильно использовал y-переменные - в триггерах надо было использовать y с отрицательными индексами. В том куске, что ты показывал - !!IF&2/y2<>0:V2/0; - вероятно, можно заменить на FU:E у убрать эти повторяющиеся проверки. Скрипт писался еще когда FU:E не было, да и отрицательных y переменных, кажется, тоже.

В области скриптописания я нахожусь в эпсилон-окрестности нуля, поэтому для всё это - тёмный лес smile.gif

Просто очень хочется получить скрипт покупки войск (максимального кол-ва) по клику мыши на иконке прироста монстра в углу экрана города без лишних окошек, поэтому сижу и разбираю твой скрипт.

По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?
Сатарыч
Вопрос: Как и когда в битве вычисляются позиции, на которые стек может переместиться (в том числе позиции, которые стек может атаковать) ? Можно ли както повлиять на этот процесс? Если да, то как?
sergroj
Цитата(Ivor @ 12 Nov 2008, 13:54)
По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?

А остальные вещи нужно убрать?

Цитата(Сатарыч @ 13 Nov 2008, 18:15)
Вопрос: Как и когда в битве вычисляются позиции, на которые стек может переместиться (в том числе позиции, которые стек может атаковать) ? Можно ли както повлиять на этот процесс? Если да, то как?

Когда не знаю, а получить эту информацию можно. Позже, наверное, напишу скрипт.
Iv
Цитата(sergroj @ 13 Nov 2008, 22:25)
Цитата(Ivor @ 12 Nov 2008, 13:54)
По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?

А остальные вещи нужно убрать?

Без разницы rolleyes.gif
Куда скупать - в гарнизон или герою тоже, в общем-то, всё равно.
Сатарыч
Цитата(sergroj @ 13 Nov 2008, 23:25)
Когда не знаю, а получить эту информацию можно. Позже, наверное, напишу скрипт.

Ооооочень нужно. Хоть намекни, может сам соображу.
sergroj
Сатарыч, готово: http://forum.df2.ru/index.php?showtopic=6813
Сатарыч
Старый вопрос:
А как позиции можно задать какое-то значение?
SAG19330184
вопрос по ERM: как отобразить в диалоге таблицу текстовых данных с картинками? размерность таблицы 10х9, картинки только в первой строке. Кажется есть такая вещь как шаблоны? Кто может помочь?
DracoLich
Картинки сверху невозможны ::
Aнгeл
Диалог делать, батенька, придётся. Попроси у Сергея его редактор диалогов (пока что сырой, правда) или пиши сам шаблоны. Документация есть в новых ЕРМ хэлпах, что в теме ТЕ. Я с этим делом повозился и бросил.
hippocamus
Цитата(Сатарыч @ 10 Dec 2008, 20:58)
Старый вопрос:
А как позиции можно задать какое-то значение?

У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.
SAG19330184
Цитата(DracoLich @ 12 Dec 2008, 15:58)
Картинки сверху невозможны ::

возможны в PCX и DEF. Я немного разобрался с шаблонами (помогли). Правда пока картинки отображаются только если они присутствуют в LOD а не просто в DATA. Сейчас выясняю как засунуть в LOD свою картинку и поможет ли это в данном случае.
Монца
в одном из лод файлов лежит ехе-упаковщик от создателей, можешь им воспользоваться
SAG19330184
что за упаковщик и как им пользоваться? можно ли будет обратно извлечь файл и каким образом?
я нашел какие то h3bitmap.exe и батники (вроде предназначено для изменения содержимого Лодов), но как пользоваться совершенно неясно.
Помогите!
Монца
примерно так
h3bitmap.exe @EDITOR.TXT

если копируешь в другой lod, то переименовываешь h3bitmap.exe так, что имя файла совпадало с именем lodа


Добавлено ([mergetime]1229336652[/mergetime]):
извлечь можно с помощью других софтин
я пользуюсь плагинами для тоталкоммандера - можно найти на wincmd.ru
Сатарыч
Цитата(hippocamus @ 14 Dec 2008, 19:23)
У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.

Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя? banghead.gif
hippocamus
Ну вот, я вчера писал прогу, она разбирает и заново собирает lod, так что можно добавлять файлы и не в конец алфавита.
http://www.sendspace.com/file/thcs60

А вообще в "Полезных программах" куча разных модификаций и вариаций есть на эту тему.
hippocamus
Цитата(Сатарыч @ 15 Dec 2008, 23:22)
Цитата(hippocamus @ 14 Dec 2008, 19:23)
У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.

Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя? banghead.gif

Где-то я встречал, что через UN:C этим позициям можно менять номер, но при этом ничего не происходит. Но не помню где. Поищи.
sergroj
Цитата(SAG19330184 @ 15 Dec 2008, 16:50)
что за упаковщик и как им пользоваться? можно ли будет обратно извлечь файл и каким образом?

Еще упаковщик - SimpleLod (см. Полезные программы). А для распаковки - ResEdit2 (не знаю, есть ли в Полезных программах).

Цитата(Сатарыч @ 16 Dec 2008, 03:22)
Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя? banghead.gif

Есть еще одно место.

Цитата(hippocamus @ 16 Dec 2008, 06:08)
Ну вот, я вчера писал прогу, она разбирает и заново собирает lod, так что можно добавлять файлы и не в конец алфавита.

Ну это только в ResEdit2 был такой глюк и то, вроде, в старой версии. И, может, в инсталляторе был.
Сатарыч
Цитата(hippocamus @ 16 Dec 2008, 14:03)
Где-то я встречал, что через UN:C этим позициям можно менять номер, но при этом ничего не происходит. Но не помню где. Поищи.

Менять я и сам пробовал с UN:C.

Цитата(sergroj @ 16 Dec 2008, 18:26)
Есть еще одно место.

А можно поподробнее?
hippocamus
А ты что - хочешь искривлённые пространства на поле боя делать?
Сатарыч
А хочу изменить доступность некоторых клеток для некоторых монстров
Хмм..
Попробуй тип монстра и кол-во поставить в -1.
Хмм..
Посмотри флаги монстров (по-моему где-то уже эта проблема обсуждалась) или через UN:C

Добавлено ([mergetime]1229529302[/mergetime]):
Из темы "Флаги монстров". Стоит почитать на будущее
Код
Флаг 29 (0x10000000 = 268435456) показывает на то, что если существо погибнет, то оно исчезнет (но не значит того, что существо исчезнет после боя).
Полагаю так работают GHOST'ы
Монца
Вообще то игра не предполагала, что в нее будут лезть руками и использовать еще какой то ЕРМ, так что это глюк не игры.
sergroj
Это глюк скрипта, а не игры. Устанавливай флаг 0x400000 = 4194304 - тогда все должно быть нормально. Игра его устанавливает при призыве существ. При клонировании ставит флаг 0x00800000 = 8388608, а при воскрешении Пит Лордами демонов не ставит ничего.

Цитата(Master Of Puppets @ 17 Dec 2008, 14:57)
!!BU&y1=-2/y2=-1:S191/1/14/1/-1/1;

чтобы игнорировать трупы, надо проверять y2<>-2. А лучше использовать BU:E. А еще лучше проверять BM(номер):N - у тебя ведь монстры не обязаны стоять на месте.
Mistik-Inc
Я тут новенький всю тему не читал, но у меня есть вопрос как можно в диалоговое окно вставить рисунки ? Например при нажатии правой кнопкой мыши по зданию существ, есть рисунок а у других обьектов нет.
Mikro
Здавсвуйте!
А какая последня версия ERM Scripter?
gamecreator
2004.10.5.945
Tamerlan
А где её можно скачать?
FBX
Она разве с Вогом не идет? Глянь на версию своего.
DracoLich
Скриптер отдельно скачивается wink.gif
Tamerlan
ссылку, ссылку дайте
Mikro
Здравствуйте, уважаемые участники форума, создатели WoG'a и ERM!

Большое спасибо создателям WoG'a за это замечательное продолжение Героев 3!

Я думаю, что главное достижение WoG'a - это открытие обширных горизонтов по изменению и улучшению игры.
Однако, написав несколько ERM-скриптов, я понял, что для меня грамматика языка ERM очень неудобна. Писать скрипты не сложно, но трудоемкость этого процесса очень велика. Очень много времени у меня уходит на поиск и выписку нужных ресейверов и команд ресейверов в хелпе. Неудобно обращаться с числовыми форматами. Трудно запомнить двухбуквенные обозначения ресейверов и однобуквенные - команд, и назначение всех чисел в форматах команд, так что для каждого ресейвера приходится писать подробный комментарий. Кроме того, программист ERM должен сам следить, чтобы использованные переменные не конфликтовали с другими скриптами, что также очень неудобно.
Отсюда, вот лично у меня, энтузиазм при написании скрипта иссякает очень быстро.

Поэтому хочу задать следующие вопросы:
1) Почему создатели ERM выбрали именно такую грамматику языка, какая она сейчас, и отказались от полных ключевых слов и имен команд? Неужели это было бы намного сложнее?
2)Почему не сделали идентификаторы переменных, так чтобы транслятор сам выделял под них память и следил за отсутствием конфликтов?
3)Почему в ERM нет нормальных условного оператора if else и цикла с условием while do?
Aleee
Запминать ресиверы не так уж и сложно, если знать полные английские эквиваленты. UN - universal, HE - hero, MP - mp3, VR - variable, AR - artifact и так до бесконечности.
Команды, конечно, не так хорошо запоминаются, но причиной тому я лишь вижу то, что при создании глобальных скриптов, а тем более карт, где ресиверов и триггеров может быть и тысяча, без сокращений было бы ужасно.
Насколько я знаю, if-else реализован в TE.

Да, и еще одна возможная причина всему этому "безобразию":
>> Писать скрипты не сложно
А точнее, их может писать даже человек, не знакомый с "нормальными" языками программирования, возможность чего, быть может, разработчики хотели дать игрокам.
Mikro
Цитата(Aleee @ 05 Jan 2009, 17:47)
Да, и еще одна возможная причина всему этому "безобразию":
>> Писать скрипты не сложно
А точнее, их может писать даже человек, не знакомый с "нормальными" языками программирования, возможность чего, быть может, разработчики хотели дать игрокам.


А по мне, если бы я не знал программирования, я бы никогда не разобрался в ERM.
gamecreator
по-моему, знакомым с нормальными языками программирования даже труднее научиться писать на ерм.
Aleee
Именно. Труднее, потому что непривычно.
Хотя в ЕРМе от обычного языка осталось мало, по крайней мере синтаксически. Все это потом конечно интрепретируется на уровень си с его же синтаксисом, но на этапе ресиверов и триггеров...

Ну есть кое-какие логические операцие, можно сотворить аналог if/else. Переходящие функции. Переменные регистрируем, устанвливаем. Но если не искать, то и не найдешь. Так что, если пишите на ЕРМ о других языках на время лучше забыть.
FBX
Цитата
Очень много времени у меня уходит на поиск и выписку нужных ресейверов и команд ресейверов в хелпе.


Не надо ничего выписывать! Прочитай один раз справку по ERM с начала до конца (не зубря, а просто), может еще разок для закрепления, и будет основная инфа в памяти надолго. А потом это довольно быстро оперативно находится в хелпе. В других ЯП работа с хелпом даже сложнее. Хотя перед этим, для понимания синтаксиса, нужно (из своего опыта):
1) попытаться понять скрипты обучающей карты
2) попытаться внести изменения и "продолжение квеста" с помощью ЕРМ
3) если это проделать с должным старанием, должен исчезнуть "страх" перед ЕРМ, и можно будет приступать к нормальному изучению.
sergroj
Не, я слабо представляю, каково начинать программировать с ЕРМа. Вряд ли из этого получится что-то хорошее. Вообще, чтобы нормально программировать нужен довольно серьезный опыт, а на ЕРМе такой опыт вряд ли получишь.

Цитата(Mikro @ 05 Jan 2009, 21:18)
Трудно запомнить двухбуквенные обозначения ресейверов и однобуквенные - команд, и назначение всех чисел в форматах команд, так что для каждого ресейвера приходится писать подробный комментарий.

Ресиверы запоминаются сами собой, особых проблем с этим не помню. А уж команды и их параметры приходится смотреть. Без открытого ERM Help'а скрипты писать невозможно.

В 3.59 будет Луа - все проблемы с переменными, их конфликтами, ресивером VR будут решены. Для ресиверов можно будет написать обертки на Луа, но я в этом особого смысла не вижу.

Цитата(Mikro @ 05 Jan 2009, 21:18)
1) Почему создатели ERM выбрали именно такую грамматику языка, какая она сейчас, и отказались от полных ключевых слов и имен команд? Неужели это  было бы намного сложнее?
2)Почему не сделали идентификаторы переменных, так чтобы транслятор сам выделял под них память и следил за отсутствием конфликтов?

В итоге это бы окупилось с лихвой. Но ЕРМ создавался как язык с максимально простым синтаксисом для написания маленьких скриптиков на картах.

Цитата(Mikro @ 05 Jan 2009, 21:18)
3)Почему в ERM нет нормальных условного оператора if else и цикла с условием while do?

Сам удивляюсь, что в 3.58 Слава этого не сделал, т.к. объемные скрипты есть уже давно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.