/*464F10*/
Выяснение, кто сейчас ходит, идёт после перехватчика ZVS.
я в одну e-переменную запоминал одно значение в течение битвы, а потом в конце битвы считывал это значение и нифига оно не обнулялось...
а тут просто хз че такое.
Читай ЕРМ мануал. e - временные переменные, за которые никто не отвечает. Может мусор совпал...А может никто другой во время битвы не заюзал, мало ли.
sergroj
10 Nov 2008, 12:09
Положительные e-переменные обнуляются при вызове функции и востанавливаются при выходе из нее. Если ты ее устанавливаешь или читаешь в функции, то она не будет совпадать, иначе быдет.
Кстати, битва может быть вызвана командой HE:T из функции, тогда ты сменишь e-переменную, ей принадлежащую, так что надо бэкапить.
Есть пара вопросов:
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
11 Nov 2008, 14:57
1. В скриптевогификаци - script00.erm
2. оператор будет выполнен только "при установленном флаге №2"
Спасибо!
1. А какой ресивер надо искать?
2. Понял.
Ещё один вопрос:
3. Можно ли научить монаха кастовать блесс/молитву? Нужная анимация у него ведь есть?
Да, можно. Это и без этой анимации спокойно можно сделать. Про !?MM слышал?
Правда, ИИ это воспринимать не будет
sergroj
12 Nov 2008, 00:22
Кстати о MouseControl.erm - учти, что в нем я неправильно использовал y-переменные - в триггерах надо было использовать y с отрицательными индексами. В том куске, что ты показывал - !!IF&2/y2<>0:V2/0; - вероятно, можно заменить на FU:E у убрать эти повторяющиеся проверки. Скрипт писался еще когда FU:E не было, да и отрицательных y переменных, кажется, тоже.
Цитата(sergroj @ 12 Nov 2008, 00:22)
Кстати о MouseControl.erm - учти, что в нем я неправильно использовал y-переменные - в триггерах надо было использовать y с отрицательными индексами. В том куске, что ты показывал - !!IF&2/y2<>0:V2/0; - вероятно, можно заменить на FU:E у убрать эти повторяющиеся проверки. Скрипт писался еще когда FU:E не было, да и отрицательных y переменных, кажется, тоже.
В области скриптописания я нахожусь в эпсилон-окрестности нуля, поэтому для всё это - тёмный лес

Просто очень хочется получить скрипт покупки войск (максимального кол-ва) по клику мыши на иконке прироста монстра в углу экрана города без лишних окошек, поэтому сижу и разбираю твой скрипт.
По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?
Сатарыч
13 Nov 2008, 14:15
Вопрос: Как и когда в битве вычисляются позиции, на которые стек может переместиться (в том числе позиции, которые стек может атаковать) ? Можно ли както повлиять на этот процесс? Если да, то как?
sergroj
13 Nov 2008, 22:25
Цитата(Ivor @ 12 Nov 2008, 13:54)
По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?
А остальные вещи нужно убрать?
Цитата(Сатарыч @ 13 Nov 2008, 18:15)
Вопрос: Как и когда в битве вычисляются позиции, на которые стек может переместиться (в том числе позиции, которые стек может атаковать) ? Можно ли както повлиять на этот процесс? Если да, то как?
Когда не знаю, а получить эту информацию можно. Позже, наверное, напишу скрипт.
Цитата(sergroj @ 13 Nov 2008, 22:25)
Цитата(Ivor @ 12 Nov 2008, 13:54)
По большому счету, хочу просто немного сократить скрипт:
По клику проверяем, сколько (если отстроено улучшение, то апгрейженых) существ есть в здании и покупаем их. Не поможешь?
А остальные вещи нужно убрать?
Без разницы
Куда скупать - в гарнизон или герою тоже, в общем-то, всё равно.
Сатарыч
14 Nov 2008, 14:43
Цитата(sergroj @ 13 Nov 2008, 23:25)
Когда не знаю, а получить эту информацию можно. Позже, наверное, напишу скрипт.
Ооооочень нужно. Хоть намекни, может сам соображу.
sergroj
15 Nov 2008, 22:17
Сатарыч
10 Dec 2008, 20:58
Старый вопрос:
А как позиции можно задать какое-то значение?
SAG19330184
12 Dec 2008, 13:16
вопрос по ERM: как отобразить в диалоге таблицу текстовых данных с картинками? размерность таблицы 10х9, картинки только в первой строке. Кажется есть такая вещь как шаблоны? Кто может помочь?
DracoLich
12 Dec 2008, 15:58
Картинки сверху невозможны ::
Диалог делать, батенька, придётся. Попроси у Сергея его редактор диалогов (пока что сырой, правда) или пиши сам шаблоны. Документация есть в новых ЕРМ хэлпах, что в теме ТЕ. Я с этим делом повозился и бросил.
hippocamus
14 Dec 2008, 18:23
Цитата(Сатарыч @ 10 Dec 2008, 20:58)
Старый вопрос:
А как позиции можно задать какое-то значение?
У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.
SAG19330184
14 Dec 2008, 23:40
Цитата(DracoLich @ 12 Dec 2008, 15:58)
Картинки сверху невозможны ::
возможны в PCX и DEF. Я немного разобрался с шаблонами (помогли). Правда пока картинки отображаются только если они присутствуют в LOD а не просто в DATA. Сейчас выясняю как засунуть в LOD свою картинку и поможет ли это в данном случае.
в одном из лод файлов лежит ехе-упаковщик от создателей, можешь им воспользоваться
SAG19330184
15 Dec 2008, 12:50
что за упаковщик и как им пользоваться? можно ли будет обратно извлечь файл и каким образом?
я нашел какие то h3bitmap.exe и батники (вроде предназначено для изменения содержимого Лодов), но как пользоваться совершенно неясно.
Помогите!
примерно так
h3bitmap.exe @EDITOR.TXT
если копируешь в другой lod, то переименовываешь h3bitmap.exe так, что имя файла совпадало с именем lodа
Добавлено ([mergetime]1229336652[/mergetime]):
извлечь можно с помощью других софтин
я пользуюсь плагинами для тоталкоммандера - можно найти на wincmd.ru
Сатарыч
15 Dec 2008, 23:22
Цитата(hippocamus @ 14 Dec 2008, 19:23)
У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.
Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя?
hippocamus
16 Dec 2008, 02:08
Ну вот, я вчера писал прогу, она разбирает и заново собирает lod, так что можно добавлять файлы и не в конец алфавита.
http://www.sendspace.com/file/thcs60А вообще в "Полезных программах" куча разных модификаций и вариаций есть на эту тему.
hippocamus
16 Dec 2008, 13:03
Цитата(Сатарыч @ 15 Dec 2008, 23:22)
Цитата(hippocamus @ 14 Dec 2008, 19:23)
У каждой позиции есть значение. И его даже пытались менять, но от этого ничего не происходило.
Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя?

Где-то я встречал, что через UN:C этим позициям можно менять номер, но при этом ничего не происходит. Но не помню где. Поищи.
sergroj
16 Dec 2008, 17:26
Цитата(SAG19330184 @ 15 Dec 2008, 16:50)
что за упаковщик и как им пользоваться? можно ли будет обратно извлечь файл и каким образом?
Еще упаковщик - SimpleLod (см. Полезные программы). А для распаковки - ResEdit2 (не знаю, есть ли в Полезных программах).
Цитата(Сатарыч @ 16 Dec 2008, 03:22)
Ну как то же можно присвоить им значение! Может эти адреса лишь копия другого промежутка адресов? Или присваивать нужно до отображения на поле боя?

Есть еще одно место.
Цитата(hippocamus @ 16 Dec 2008, 06:08)
Ну вот, я вчера писал прогу, она разбирает и заново собирает lod, так что можно добавлять файлы и не в конец алфавита.
Ну это только в ResEdit2 был такой глюк и то, вроде, в старой версии. И, может, в инсталляторе был.
Сатарыч
16 Dec 2008, 17:54
Цитата(hippocamus @ 16 Dec 2008, 14:03)
Где-то я встречал, что через UN:C этим позициям можно менять номер, но при этом ничего не происходит. Но не помню где. Поищи.
Менять я и сам пробовал с UN:C.
Цитата(sergroj @ 16 Dec 2008, 18:26)
Есть еще одно место.
А можно поподробнее?
hippocamus
16 Dec 2008, 18:21
А ты что - хочешь искривлённые пространства на поле боя делать?
Сатарыч
16 Dec 2008, 23:14
А хочу изменить доступность некоторых клеток для некоторых монстров
Попробуй тип монстра и кол-во поставить в -1.
Посмотри флаги монстров (по-моему где-то уже эта проблема обсуждалась) или через UN:C
Добавлено ([mergetime]1229529302[/mergetime]):
Из темы "Флаги монстров". Стоит почитать на будущее
Код
Флаг 29 (0x10000000 = 268435456) показывает на то, что если существо погибнет, то оно исчезнет (но не значит того, что существо исчезнет после боя).
Полагаю так работают GHOST'ы
Вообще то игра не предполагала, что в нее будут лезть руками и использовать еще какой то ЕРМ, так что это глюк не игры.
sergroj
20 Dec 2008, 15:10
Это глюк скрипта, а не игры. Устанавливай флаг 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
20 Dec 2008, 18:23
Я тут новенький всю тему не читал, но у меня есть вопрос как можно в диалоговое окно вставить рисунки ? Например при нажатии правой кнопкой мыши по зданию существ, есть рисунок а у других обьектов нет.
Здавсвуйте!
А какая последня версия ERM Scripter?
gamecreator
03 Jan 2009, 15:16
2004.10.5.945
Tamerlan
04 Jan 2009, 17:25
А где её можно скачать?
Она разве с Вогом не идет? Глянь на версию своего.
DracoLich
04 Jan 2009, 19:58
Скриптер отдельно скачивается
Tamerlan
04 Jan 2009, 20:43
ссылку, ссылку дайте
sergroj
04 Jan 2009, 22:37
Здравствуйте, уважаемые участники форума, создатели WoG'a и ERM!
Большое спасибо создателям WoG'a за это замечательное продолжение Героев 3!
Я думаю, что главное достижение WoG'a - это открытие обширных горизонтов по изменению и улучшению игры.
Однако, написав несколько ERM-скриптов, я понял, что для меня грамматика языка ERM очень неудобна. Писать скрипты не сложно, но трудоемкость этого процесса очень велика. Очень много времени у меня уходит на поиск и выписку нужных ресейверов и команд ресейверов в хелпе. Неудобно обращаться с числовыми форматами. Трудно запомнить двухбуквенные обозначения ресейверов и однобуквенные - команд, и назначение всех чисел в форматах команд, так что для каждого ресейвера приходится писать подробный комментарий. Кроме того, программист ERM должен сам следить, чтобы использованные переменные не конфликтовали с другими скриптами, что также очень неудобно.
Отсюда, вот лично у меня, энтузиазм при написании скрипта иссякает очень быстро.
Поэтому хочу задать следующие вопросы:
1) Почему создатели ERM выбрали именно такую грамматику языка, какая она сейчас, и отказались от полных ключевых слов и имен команд? Неужели это было бы намного сложнее?
2)Почему не сделали идентификаторы переменных, так чтобы транслятор сам выделял под них память и следил за отсутствием конфликтов?
3)Почему в ERM нет нормальных условного оператора if else и цикла с условием while do?
Запминать ресиверы не так уж и сложно, если знать полные английские эквиваленты. UN - universal, HE - hero, MP - mp3, VR - variable, AR - artifact и так до бесконечности.
Команды, конечно, не так хорошо запоминаются, но причиной тому я лишь вижу то, что при создании глобальных скриптов, а тем более карт, где ресиверов и триггеров может быть и тысяча, без сокращений было бы ужасно.
Насколько я знаю, if-else реализован в TE.
Да, и еще одна возможная причина всему этому "безобразию":
>> Писать скрипты не сложно
А точнее, их может писать даже человек, не знакомый с "нормальными" языками программирования, возможность чего, быть может, разработчики хотели дать игрокам.
Цитата(Aleee @ 05 Jan 2009, 17:47)
Да, и еще одна возможная причина всему этому "безобразию":
>> Писать скрипты не сложно
А точнее, их может писать даже человек, не знакомый с "нормальными" языками программирования, возможность чего, быть может, разработчики хотели дать игрокам.
А по мне, если бы я не знал программирования, я бы никогда не разобрался в ERM.
gamecreator
05 Jan 2009, 17:54
по-моему, знакомым с нормальными языками программирования даже труднее научиться писать на ерм.
Именно. Труднее, потому что непривычно.
Хотя в ЕРМе от обычного языка осталось мало, по крайней мере синтаксически. Все это потом конечно интрепретируется на уровень си с его же синтаксисом, но на этапе ресиверов и триггеров...
Ну есть кое-какие логические операцие, можно сотворить аналог if/else. Переходящие функции. Переменные регистрируем, устанвливаем. Но если не искать, то и не найдешь. Так что, если пишите на ЕРМ о других языках на время лучше забыть.
Цитата
Очень много времени у меня уходит на поиск и выписку нужных ресейверов и команд ресейверов в хелпе.
Не надо ничего выписывать! Прочитай один раз справку по ERM с начала до конца (не зубря, а просто), может еще разок для закрепления, и будет основная инфа в памяти надолго. А потом это довольно быстро оперативно находится в хелпе. В других ЯП работа с хелпом даже сложнее. Хотя перед этим, для понимания синтаксиса, нужно (из своего опыта):
1) попытаться понять скрипты обучающей карты
2) попытаться внести изменения и "продолжение квеста" с помощью ЕРМ
3) если это проделать с должным старанием, должен исчезнуть "страх" перед ЕРМ, и можно будет приступать к нормальному изучению.
sergroj
05 Jan 2009, 18:55
Не, я слабо представляю, каково начинать программировать с ЕРМа. Вряд ли из этого получится что-то хорошее. Вообще, чтобы нормально программировать нужен довольно серьезный опыт, а на ЕРМе такой опыт вряд ли получишь.
Цитата(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 Слава этого не сделал, т.к. объемные скрипты есть уже давно.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.