Таверна | Столик Картостроителей
Автор | Сообщение | |
---|---|---|
Сэр Kirinyale
HoMM V: Рыцарь |
В параллельной теме уже вроде выяснили, что происходит при экспертном интеллекте. Проблема остаётся в том, что он может не быть таковым, а тогда всё куда сложнее... хотя, видимо, придётся его поставить экспертный в старте - проще будет (и логичнее, с учётом некоторых моментов).
|
|
Сэр mefisto
HoMM V: Рыцарь |
В принципе, отличия должны быть минимальными: что продвинутый, что эксперт... Всё равно идёт прибавка и, наверное, глюк с реальным увеличением. Мне кажется, что без разницы - учитывать или не учитывать уровень умения. Можно протестировать с разным уровнем и посмотреть, прибавка работает так же или как-то иначе. Если второй вариант, то, как Вы уже верно подметили, проще будет эксперт установить по дефолту.
|
Особый статус: |
Сэр Kirinyale
HoMM V: Рыцарь |
Уже потестировал, на разных уровнях интеллекта работает по-разному, и вникать во все тонкости как-то напрягает. Есть подозрение, что дело в работе игры со значениями с плавающей запятой, но при попытке использовать такие переменные в ERM получил вообще нечто странное... Так что пока остановлюсь на стартовом эксперте.
|
|
Сэр mefisto
HoMM V: Рыцарь |
Нужна помощь по такому вопросу: Записываются ли значения ненулевых переменных всех типов в файл сохранения? Единственное, что мне удалось установит точно, что инструкции и триггер !?PI; при загрузке сохранённых игр НЕ выполняются.
|
Особый статус: |
Сэр Kirinyale
HoMM V: Рыцарь |
Насколько я знаю (и насколько показывает весь мой опыт), в сейв записываются все переменные, кроме локальных (что и понятно - посреди триггера или функции сохраниться нельзя, а после их завершения локальные всё равно потеряются).
Инструкции и пост-инструкции выполняются только один раз, в самом начале игры. Для того, чтобы поймать момент сохранения/загрузки игры, в WoG 3.58 были введены специальные триггеры: !?GM0 - сразу после загрузки, !?GM1 - сразу перед сохранением (включая автосейв). |
|
Сэр mefisto
HoMM V: Рыцарь |
Спасибо. Вообщем-то я так и думал... Только вот из головы дурной вылетели сведения о локальных и глобальных переменных...
|
Особый статус: |
Сэр smolarek
Сообщения: 2 |
Здравствуйте всем. Не могли бы вы мне, ламеру, помочь?
около полгода назад я уже успешно писал ЕРМ-карту, но вот как-то форматнул диск, и они исчезли. теперь вот бьюсь, бьюсь и не могу вспомнить, как же я активировал ети скрипты. значит, пишу я вот такой скрипт ZVSE !?LE14/32/1; !!UN:O12/33/1; вроде бы при посещении события должен убираться с карты объект (если быть точным, бревно :-) герой наступает на событие, кажет сообщение, но удаление не происходит. Я уж замучился. Может дело во флагах и инструкциях? какая инструкция должна случиться при загрузке карты? |
|
Сэр mefisto
HoMM V: Рыцарь |
Я скопировал скрипт и вставил в тест-карту. Изменил координаты на свои и вместо бревна взял камень. Не знаю почему, но у меня всё работает. Синтаксис скрипта верный - иначе бы при загрузке возникала ошибка. Делаем вывод, что проблема кроется в Ваших координатах события или бревна. Возможно, перепутан уровень карты (3-я координата). Тогда необходимо поменять 1 на 0 в конце этих строк. Возможно неверно набраны сами координаты (первая координата находиться вверху окна редактирования, вторая - слева).
|
Особый статус: |
Сэр smolarek
Сообщения: 2 |
Сэр mefisto, 2.09.2007 20:14 Действительно, Вы правы!!! Позор на мою голову - я перепутал координаты Х и У!!! Спасибо!!! |
|
Сэр FlashBack
HoMM III: Безземельный |
К столику картостроителей подошел небольшого роста(приблизительно 185 сантиметров) Король Минотавров, который всегда обладал положительной моралью и очень любил метеоритный дождь, когда обрушается на нерадивых противников, и спросил:
- Сэр Mefisto, не могли бы Вы поведать тайну: "Какой надо написать скрипт, чтобы при наподении моего Героя Чернокнижника Демеера на врага, обрушивался метиоритный дождь в начале боя на каждого вражеского юнита?" |
|
Сэр mefisto
HoMM V: Рыцарь |
Сэр FlashBack, 10.09.2007 19:26 Такой скрипт сделать возможно, но он будет достаточно сложным. Если есть карта, где нужно его применить, присылайте её мне по почте и я постараюсь сделать как можно быстрее. |
Особый статус: |
Сэр FlashBack
HoMM III: Безземельный |
Спасибо, как нарисую, так и пришлю.
|
|
Сэр GreenDrekon
HoMM III: Безземельный |
Как заставить артефакт 170 приносить грифонов:
- 5 штук в неделю, если у героя нет навыка "орлиный глаз" - 7 штук в неделю, если у героя есть навык "базовый орлиный глаз". - 10 штук в неделю, если у героя есть навык "продвиутый орлиный глаз". - 14 штук в неделю, если у героя есть навык "эксперт орлиный глаз". |
|
Сэр mefisto
HoMM V: Рыцарь |
ZVSE
!#TM4:S1/999/7/255; !?AE0&v998=170; !!VRv1200:S0; !?AE1&v998=170; !!VRv1200:S1; !?TM4&v1200=1; !!HE-1:A2/170/d/?v1; !!HE-1:S11/?v2; *определить уровень навыка 0-нет...3-эксперт !!FU&v1=0:E; *если у текущего героя не надет артефакт 170, то выйти из триггера !!VRv3&v2=0:S5; !!VRv3&v2=1:S7; !!VRv3&v2=2:S10; !!VRv3&v2=3:S14; !!VRv780:S0; !!DO2400/0/6/1:P4/v3; *добавить отряд типа 4(грифон) в количестве v3 !!IF&v780=1:Q1/21/4/1^В ваших рядах пополнение!^; !?FU2400&v780=0; !!HE-1:C0/x16/?y1/?y2; !!VRy2&x1=y1:+x2; !!HE-1&x1=y1:C0/x16/d/y2; !!VRv780&x1=y1:S1; !!HE-1&y2=0:C0/x16/x1/x2; !!VRv780&y2=0:S1; Попробуйте этот скрипт. Надеюсь, что он правильный. |
Особый статус: |
Сэр GreenDrekon
HoMM III: Безземельный |
не роботает :-(
|
|
Сэр mefisto
HoMM V: Рыцарь |
Тест показал, что скрипт работает верно. Я установил герою навык "орлиный глаз" продвинутого уровня. Каждый n день (я использовал 2 - так быстрее), к отряду прибавлялись грифоны (10). Вы пишите подробнее: какой у вас герой, состояние его армии и т.д. Возможно, он не получает грифонов только потому, что в армии нет для них места.
|
Особый статус: |
Сэр GreenDrekon
HoMM III: Безземельный |
Спасибо, я нашел свою ошибку. Всё работает.
Ещё пара маленьких вопросиков: 1) как отключить все настройки WoG, включив только настройки, касающиеся Мифрила(мифрил, изумрудная башня, улучшение городов, жилищ, хижин провидца, верфей и т.д.)? 2) Надо завести переменную(например y37). В начале каждой недели, если количество мифрила больше 0, задаётся вопрос с вариантами Да/Нет. Если нажать да, то количество мифрила уменьшиться на 1, а значение переменной y37 увеличиться на 1. Если значение переменной y37 больше 0, то при нажатии нажатии правой кнопки мыши по объектам типа 137 задавался вопрос с вариантами Да/Нет. Если нажать да, то значение переменной y37 уменьшится на 1, а объект, по которому была нажата правая кнопка исчезнет. |
|
Сэр mefisto
HoMM V: Рыцарь |
1) Просто где-нибудь в коде написать: !#UN:P5/0; Это отключит WoGoфикацию (уберёт сообщение при загрузке карты с предложением WoGофицировать). Чтобы включить мифрил, этой же командой нужно установить номера скриптов в WoGофикации: 36, 149, 170, 171, т.е.:
!#UN:P36/1 P149/1 P170/1 P171/1; (тут не известно одно: что включает скрипт (0 или 1), по этому нужно пробовать уже на карте). 2),3) ZVSE !#VRv4000:S0; *я имею право использовать переменные с номером >1000, т.к. отключена WoGoфикация и конфликтов не будет !#TM80:S1/999/7/255; !#MCv983:S@type@; *обзываем переменную v983 красивым именем type !?TM80; !!UN:P36/?v1; !!UN:P149/?v2; !!UN:P170/?v3; !!UN:P171/?v4; !!FU&v1=0/v2=0/v3=0/v4=0:E; *выйти, если мифрил не был подключен к карте !!OW:R-1/7/?i; !!IF&i>0:Q3^Вопрос:^; !!VRv4000&3:+1; !!OW&3:R-1/7/d-1; !?CM0&v4000>0; !!CM:P?x1/?x2/?y1; !!OBx1/x2/y1:T?$type$; *узнать тип объекта по клику на карте !!FU&$type$неравно137:E; *Выйти, если был клик по другому объекту, не по 137. !!IF:Q4^Вопрос об уничтожении^; !!VRv4000&4:-1; !!UN:Ox1/x2/y1; *удалить объект |
Особый статус: |
Сэр GreenDrekon
HoMM III: Безземельный |
Выдаёт букет ошибок :-(
|
|
Сэр mefisto
HoMM V: Рыцарь |
1) Читайте внимательно скрипт. Ошибка произошла из-за того, что Вы поленились заменить слово "неравно" на соответствующие значки "больше-меньше".
2) Скрипт работать не будет, если не проводить WoGoфикацию. Дело в том, что если в ручную включать опции 36/149/170/171 и отключать опцию 5 (вогофикация), то после загрузки карты автоматом вырубаются все подключаемые скрипты. |
Особый статус: |
Сэр FlashBack
HoMM III: Безземельный |
У меня еще вопрос вопрос, но уже на существующем примере:
У меня один могущественный лич с координатами 5/10/0. Мне надо, чтобы когда я на него нападу, у него изменились параметры урона, защиты, нападения, скорости и главное, чтобы он атакавал безответно, вокруг, стрелял без штрафа. Еще чтобы если у моего героя были могущественные личи, они не должны менять свои параметры, а если это не возможно, то пусть тогда они превратяться до боя в снайперов, а после ими же и останутся. Случая повторного нападения на лича не будет, так как это компания и героя терять нельзся. |
|
Сэр mefisto
HoMM V: Рыцарь |
Я не шибко силён в бонусах для стека в бою, и даже не знаю, как их делать, так что придётся в армии героя менять личей на снайперов.
ZVSE !?BA0;*триггер, срабатывающий непосредственно перед битвой !!BA:P?v1/?v2/?v3; *координаты битвы !!FU&v1неравно5/v2неравно10/v3неравно0:E; *выйти, если будет битва не с нужным отрядом в точке 5/10/0 ("неравно" заменить на соответствующие значки) *Увеличить базовые параметры очень легко: !!MA:A65/d+6; *атака +6 !!MA:D65/d+4; *защита +4 !!MA:S65/d+2; *скорость +2 !!MA:M65/d+3; *минимальный урон +3 !!MA:E65/d+4; *максимальный урон +4 *теперь надо повозиться с флагами. За особые "навыки", вроде атаки всех вокруг, без ответа, или двойной выстрел, отвечает специальный флаг *для начала узнаем его текущее значение: !!MA:X65/?i; *записать битовый флаг в переменную *теперь к этому значению прибавим значения тех флагов которые нам нужны !!VRi:+4096+32768+65536+524288+1048576; *где: *4096 - нет штрафа при рукопашной *32768 - стрелять дважды *65536 - враг не отвечает *524288 - атаковать всех вокруг *1048576 - улучшеный радиус поражения для стрелков *можно убрать ненужные параметры, удалив из соответсвующей строки это число !!MA:X65/i; *устанавливаем новый флаг !!DO2300/0/6/1:P65/137; *меняем всех личей в армии героя на снайперов !?FU2300; !!HE-1:C0/x16/?y1/d; !!HE-1&y1=x1:C0/x16/x2/d;*меняем тип монстра 65 на 137 Вот, вроде как, и всё. Осталось только не забыть поменять "неравно" на знаки "меньше-больше", удалить, если нужно, комментарии; запустить и посмотреть, что получилось. |
Особый статус: |
Сэр GreenDrekon
HoMM III: Безземельный |
А как поселить в городе других существ? Как сделать так, чтобы одни существа могли улутшаться в других?
|
|
Сэр FlashBack
HoMM III: Безземельный |
Спасибо сэр mefisto, Вам цены нет. Странно почему у Вас нет до сих пор феодов ? Сначала скрипт не работал - когда я на них нападал у них небыло количества, и бой автоматически оканчивался с моей победой. Потом я что-то исправил и все стало на свои места, но почему-то личи после своей смерти умирали как клоны, т.е. падали на землю и исчезали, а опыт за бой не дают, но это мне как раз и нравится . Спасибо.
Сэр GreenDrekon, 10.10.2007 07:06 Это вобще легко, только что Вы подразумеваете под "одни существа могли улутшаться в других"? Везде или в армии определенного героя? |
|
Сэр GreenDrekon
HoMM III: Безземельный |
Я уже сам разобрался.
Как заменить 25% объектов типа 49/0 на объекты типа 49/2? |
|
Сэр mefisto
HoMM V: Рыцарь |
Сэр FlashBack, 16.10.2007 18:32 Мдя... Действительно, почему это? Сэр FlashBack, 16.10.2007 18:32 Просто через !!MA можно настроить в кого будет улучшатся данный монстр. В замках всё будет по-прежнему: например, зелёный дракон и золотой дракон. Однако, при установке улучшения зелёный дракон -> горыныч, он больше не сможет превратиться в золотого. Улучшить же его можно в специальном строении, или герой может улучшить его прямо в армии, если он обладает особой специальностью. Сэр GreenDrekon, 18.10.2007 21:17 Можно но сложно. Сперва попробуйте поменять просто один объект 49/0 на 49/2. У Вас ничего не выйдет, просто заменяя его тип. Придется сначала удалить первый объект, а затем поставить второй. Допустим, что мы знаем координаты первого объекта (удаление возможно, используя координаты любой клетки, занимаемой объектом, будь-то красная или жёлтая). Удаляем его: !!UN:Ox/y/l; - произошло удаление. Теперь нужно поставить новый объект в ту же позицию. Тут, как говориться, 2 варианта: 1 - объект занимает 1 клетку на карте, поэтому x=x1,y=y1,l=l1, где x1,y1,l1 - координаты установки объекта. 2 - если объект занимает несколько клеток, то нужно проверить (экспериментально), по какому принципу интерпретатор ставит его на карту. Например, по левой верхней клетке. Если оба объекта занимаю равное количество клеток, то всё равно x=x1,y=y1,z=z1, только нужно правильно выбрать точку удаления (в моём случае это левая верхняя). Если размеры не совпадают, тогда нужно ввести простые коэффициенты для перевода (сдвиг по координатам):x1=x+a, y1=y+b, l1=l+c, где a,b,c - постоянные. !!UN:Ix1/y1/l1/49/2; - поставили объект 49/2. Если всё вышеизложенное проделано, то можно переходить к самой сложной части скрипта. В ERM есть функция калькулирования количества объектов данного типа и подтипа. Допустим, что на карте их ровно 100. Тогда нам нужно 25 из них удалить, и вместо них поставить 25 объектов второго типа. Эти две вещи делаются, конечно, не по отдельности. !!UN:U49/0/?i; - записали в переменную i количество объектов 49/0 (общий случай, когда не известно, сколько таких объектов на карте. У меня эта цифра равна 100). !!UN:U49/0/i/#; - координаты текущего объекта записываются, соответственно, в v[#]=x, v[#+1]=y, v[#+2]=l. Например, #=5, тогда координаты будут записаны в v5,v6 и v7. i должно пробегать все значения от 1 до общего числа таких объектов. Теперь мат часть. Нам необходимо удалить 25% объектов. Причём будем считать, что удалять будем ПРОИЗВОЛЬНЫЕ объекты, используя вероятность "замены". Т.е., взяв конкретный объект, у него шанс быть удалённым - 25%, шанс пропуска - 75% соответственно. Если я не ошибаюсь, то из 100 таких объектов, при таком подходе, останется 75, что нам собственно говоря и надо. Просчёт вероятности осуществляется с помощью произвольных значений какой-либо переменной: !!VRv3:S1 T100; - присвоили переменной v3 "рэндомное" значение, находящееся в промежутке от 1 до 100 включая оба конца. Вероятность нахождения полученного таким образом числа в промежутке от 1 до 25 как раз равна 25% (это условно, так как не известен алгоритм выбора произвольного числа из этого промежутка, но будем считать, что это 25%). Она нам и нужна: !!UN&v3}=1/v3{=25:Ox/y/l; - если выпал шанс "замены", то удалить объект... !!UN&v3}=1/v3{=25:Ix/y/l/49/2; -...и поставить новый Остальное - дело техники. Узнав количество объектов (переменная i), можно пробежаться по каждому из них с помощью цикла и "кидать монетку", определяя дальнейшие действия. Данный код, нужно разместить в том месте (триггере), где это необходимо: !!UN:U49/0/?i; !!DO7/1/i/1:P; - запуск функции 7 в цикле Этот код можно разместить где угодно под ZVSE: !?FU7; !!VRv3:S1 T100; - для каждого нового i (~x16 в этой функции) считать заново вероятность (шанс) !!UN:U49/0/x16/4; - запись координат !!UN&v3}=1/v3{=25:Ov4/v5/v6; !!UN&v3}=1/v3{=25:Iv4/v5/v6/49/2; - учитывая то обстоятельство, что размеры объектов одинаковы, иначе - привить константами v4,v5 и v6 сразу после удаления первого объекта и перед установкой нового. Теоретически скрипт должен работать. Теперь, к чему я развернул подробный ответ, скажу следующее. Всё, что написано выше, уважаемые картогрфы, Вы должны делать САМОСТОЯТЕЛЬНО. Разберите по пунктам, продумайте алгоритм и задавайте вопросы именно по этим пунктам. Мне сложно постоянно ломать пальцы и голову над очередной задачей, и пусть даже она будет не такой уж и сложной, всё равно приходиться как-то правильно передавать свои знания. Если данный скрипт не работает вообще, или работает но не правильно, то подробное описание ошибки сюда. P.S. предполагалось, что всё написанное, было написано НЕ ЗРЯ P.P.S. ВНИМАНИЕ!!! в скрипте вместо знака "больше" использован знак "}", а вместо "меньше" - "{". Заменить на нужные обозначения, при использовании!!! |
Особый статус: |
Сэр FlashBack
HoMM III: Безземельный |
Не благодарное дело объекты на карте менять, однажды, когда моя сестра играла в Героев 3.5 с вогификацией, какой-то объект находящийся рядом с единственным проходом к врагу был заменен на лагерь беженцев, в итоге карта стла не играбельна, и чтобы завершить игру пришлось набрать код на все заклинания и воспользоваться полетом .
|
|
Сэр mefisto
HoMM V: Рыцарь |
Если карта делалась специально под WoG, то её автору следовало бы указать те скрипты wogофикации, которые нужно отключить. Или просто отключить wogофикацию командой !#UN:P5/0;.
|
Особый статус: |
Сэр wquolz
Сообщения: 4 |
Помогите пожалуйста разобрать с такой ситуацией. Есть два героя союзника (допустим, синий и красный). Красным играет человек, синим - компьютер. Красный выполняет какое-то задание (может убивает зеленого героя) и синий игрок становится красным. Но не все синие герои, а только конкретный. Если это возможно, то как?
|
|
Сэр FlashBack
HoMM III: Безземельный |
Сэр mefiso, а почему бы вам не сделать какой-нибудь FAQ по ерм-скриптам, с интересными частыми вопросами, можно былобы и оболочку для базы данных написать, хотя в этом я не шурупю, но если кто-нибудь знает VB(я не знаю), то на сайте (это не реклама) www.eggsheaven.ho.com.ua/, можно скачать исходник старой версии программы, и переделать ее. Хотя народ здесь не благодарный, и еслибы я мог написать это, то не зделал бы, хоть за 10000000000000@, хотя, почему, за 10000000000000@ сделал бы, ведь это аж 10000000000 $ , только выменивал бы я это 1000000 месяцев, т.е. 2739 лет , героев 3.59 раньше выпустят
|
|