Тонкости ЕРМ, использование UN:C, ERM для профессионалов :) |
Здравствуйте, гость ( Вход | Регистрация )
Тонкости ЕРМ, использование UN:C, ERM для профессионалов :) |
26 Sep 2007, 20:22
Сообщение
#1
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Тема явно назрела. Информация разбросана по форуму, пора ее собрать воедино.
Темы по сабжу: ERM Artifact Manager Флаги монстров Скрипт: Функция замены некоторых константных строк Баги в ЕРМ Функции для расширенной настройки стрельбы Secondary skills manager for TE Подгрузка дефов для монстров, звуков монстров и дефов строений в замке Особенность !!BG Если монстр совершает действие 6 (подойти и ударить), то с помощью BG:S можно проверять и менять позицию, с которой он будет бить. P.S. тоже не забывайте про жирный шрифт. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
27 Sep 2007, 23:14
Сообщение
#2
|
|
Скриптописатель Сообщений: 107 Спасибо сказали: 7 раз |
Недокументированная особенность !!AR:V;
Для артефактов можно устанавливать тип подбора: 0 - Арт просто без базара поднимается 1 - Предложение купить арт за 2000 монет 2 - Для поднятия арта требуется мудрость 3 - Для поднятия арта требуется лидерство (некромантам не повезло...) 4 - Предложение купить арт за 2500 монет и 3 дерева 5 - Предложение купить арт за 3000 монет и 5 дерева 6 - У арта есть охрана (еще один способ ее включить) Все значения большие 6 делают артефакт неподнимаемым. -------------------- Пропал с форума по техническим причинам с декабря 2007 по начало апрель 2008.
Уже вернулся. Принимаю заказы на скрипты. Стучать в асю. Днем на работе. |
|
|
27 Sep 2007, 23:43
Сообщение
#3
|
|
Immortal Сообщений: 670 Спасибо сказали: 14 раз |
Особенность !!BG
Если существо может кастовать магию (Архангелы, Питлорды, etc.), то ее можно скастовать с помощью !!BG:A10 S-1 Dx1; (На позиции x1 должен располагаться объект, на который кастуется магия) -------------------- |
|
|
28 Sep 2007, 19:15
Сообщение
#4
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
!!BF:O может ставить невидимые препятствия
!!BF:O можно подавать -1 в качестве препятствия. Оно невидимо и занимает 1 клетку. Так что можно сделать картинку для поля боя с рассчетом на непроходимость некоторых мест, и сделать их непроходимыми с помощью невидимых препятствий. Уточнение DracoLich'а: Убрать Препятствие не работает на такие препятствия; диспел не имеет воздействия тоже. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
04 Oct 2007, 17:32
Сообщение
#5
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Безопасная проверка !!MO:M, B, A
При использовании даже get синтаксиса этих команд для монстра, не имеющего сообщения или награды, вылетает ошибка. Но можно проверить, имеет ли их монстр. Это хранится в старшем бите OB:C. Так что достаточно проверить знак OB:C: !!OBx/y/z:O?v1; !!IF&v1<0:M^Монстр настроен^; Если установить этот бит, монстр будет иметь те же настройки, что первый монстр, настроенный в редакторе (настроенный - в смысле имеющий сообщение или награду). В 3-м байте хранится индекс в массиве настроек (M, B, A) монстров, умноженный на 8. Точнее, он хранится не умноженным, а смещенным на 3 бита. Сам массив выделяется динамически. В младших 12 битах OB:O хранится количество монстров. Еще, артефкт в награду можно убрать с помощью !!MO:A-1. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
07 Oct 2007, 15:15
Сообщение
#6
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Неописанные заклинания
В списке заклинаний (формат SP) нет вот этих заклов: Указанные в !!BM:M 70. Stone 71. Poison 72. Bind (permanent) 73. Disease 74. Paralyze 75. Age Нигде не указанные 76. Death Cloud 77. Thunderbolt -------------------- ДНК банана на 50% состоит из человека.
|
|
|
07 Oct 2007, 15:41
Сообщение
#7
|
|
Banished Сообщений: 1 782 Спасибо сказали: 116 раз |
В моей справке все это указано. И еще:
78 Снять полезные заклинания 79 Смертельный взгляд 80 Кислотное дыхание -------------------- |
|
|
08 Oct 2007, 15:29
(Сообщение отредактировал Миханик - 08 Oct 2007, 15:33)
Сообщение
#8
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Незадокументированный параметр для !!MN:R
Кроме дерева..золота 0..6, можно указать 100. По-видимому, такая шахта вообще ничего не производит. И ещё: Возможность создания объектов с синхронными параметрами хм.. я правильно сказал - синхронными? Смысл в том, что у некоторых объектов с большим числом параметров (напр. шахты, гарнизоны) контрольное слово не хранит эту информацию, а только указывает на нее, т. е. для каждой шахты и т. п. указан свой номер. И вот если его сделать одинаковым, то их параметры будут храниться в одном месте, и синхронно изменяться. Это могут применить мапмейкеры для создания "существообменника", как во второй миссии "Самаритянина". Правда проверял это я только для шахт. И ещё: было бы неплохо выложить результаты наложения !!BM:M для мгновенных заклинаний. Например, я слышал, что ледяная молния окрашивает в синий свет. Кстати, насчёт !!BM:M уже писал ShadowTheAge вот здесь. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
09 Oct 2007, 11:33
(Сообщение отредактировал Demiurg - 09 Oct 2007, 11:40)
Сообщение
#9
|
|
Immortal Сообщений: 670 Спасибо сказали: 14 раз |
Функция для установки преобразований существ в Skeleton Transformer (TE).
Код !?FU#;
;x1 - monster's number ;x2 - mode ( 0 - read, 1 - write) ;x3 - number of creature transformed !!VRy1:S8142080;// table's address !!VRy2:Sx1*4; !!VRy1:+y2; !!UN&x2=0:Cy1/4/?x3; !!UN&x2=1:Cy1/4/x3; -------------------- |
|
|
10 Oct 2007, 00:59
(Сообщение отредактировал ShadowTheAge - 15 Oct 2007, 01:21)
Сообщение
#10
|
|
Скриптописатель Сообщений: 107 Спасибо сказали: 7 раз |
Особеность реализации !!BM:G
!!BM:G - это "неаккуратно" сделанная функция, позволяет менять сотни характеристик существа, не только наложенные заклинания. Вызов: !!BM:G#/$/d; # - некоторый номер, если это 0..65 то будет работа с заклинаниями (нормальное функционирование ресивера), но если использовать другие значения, можно изменять любую информацию о монстре, как доступную (атака, здоровье), так и недоступную (например, звуки, анимацию) $ - номер. Во избежание ошибок, "/d" в конце обязательно. Таблица: -100: Видимость существа (4 - виден, 8 - не виден) Комментарий DracoLich'а: Отряды теряют невидимость при любом действии на поле боя. Но ее межно восстановить в триггере !?BG1 - ShadowTheAge -90: Есть ли цифры количества существ? 0-есть, 1-нет. Комментарий DracoLich'а: отряд не имеет обозначения кол-ва существ, пока не походит. При этом на него можно колдовать магию и бить. Кол-во показывается при щелчке правой кнопки в нижнем правом углу картинки (где обычно, в общем). Аналогичное возражение - ShadowTheAge -89: Тип существа Комментарий DracoLich'а: параметры отряда становятся как у существа, номер которого поставлен, но сразу же снижаются до стандартных параметров сущ-ва, которое меняют. имя отряда в меню при щелчке правой кнопкой по существу меняется; когда его бьют - имя остается измененным. когда битва окончена - на картинке будет показан настроенный отряд, а не старый. Если изменить тип существа, битву становится невозможно выиграть (вроде как комп требует убить того, на кого нападал, и изменения типа существ = вызову изменнного существа). Действительно проблема, делающая параметр почти бесполезным - ShadowTheAge -88: Позиция существа (если сменить, на старом месте останется стоять копия. Копия не может ходить и быть атакованой, занимает место) -87: Номер анимации Комментарий DracoLich'а: при значение 2,6,9... (много еще где) игра выдает черный экран; кадры берутся в том порядке, как и при создании (надо бы найти хелп по дефмейкеру, где описан каждый шаг, и выдрать оттуда). Не сталкивался почему-то... - ShadowTheAge -86: Номер кадра в анимации Анимация возвращается к нормальной, если навести мышкой -83: Количество существ -82: Количество существ для отображения (может не совпадать с количеством. В этом случае написано будет одно, а реально другое). По умолчанию -1 - значит "полностью совпадает с реальным". Комментарий DracoLich'а: после того, как любое сущ-во попадет под атаку, данному значению станет равно количество реальное; в итогах битвы показывается реальное количество убитых; при атаке измененного существа фантомные монстры не учитываются (т.е. если изменить 10 монстров на 100 этой командой, то урон будет нанесен именно этим 10). Поступаем как и с невидимостью - ShadowTheAge -81 - безвозвратные потери. Количество существ после выигранной битвы (или после откупа) равно "текущее количество существ" минус "безвозвратные потери". Потери могут быть записаны в безвозвратные при использовании, например, после воскрешения на уровне none или basic. - by Demiurg -80: Разнича между текущим здоровьем и полным. Если 0 значит стек здоров. -78: Количество существ в начале боя -73: Город-владелец -71: Флаги существа -68: Название существа -67: Название существа (множественное число) -66: Строка состояния (например "Нет штрафа рукопашной") -54: Здоровье (полное) -53: Скорость -52: Атака -51: Защита -50: Мин. урон -49: Макс. урон -48: Боезапас -41: Владелец глючит -40: Что делает ХЗ. Но явно чето делает. Попробуйте, смотрится прикольно -38: Смещение существа по Y -37: Смещение существа по X От того места где должен быть. В пикселях -19: Смещение по оси OX прямоугольника с количеством существ. -17: Частота проигрывания случайной анимации. Чем меньше тем чаще. Поставьте 200, будет без перерыва -13: Анимация существа -12: Анимация снаряда -10: Звук перемещения -9: Звук атаки -8: Звук урона -7: Звук выстрела -6: Звук смерти -5: Звук защиты -1: Кол-во активных заклинаний (для отображения цвета кол-ва существ) 173: Кол-во активных заклинаний (Для отображения при щелчке правой кнопкой) 212: Мораль существа 213: Удача существа Комментарий Demiurg'а: Мораль и удача пересчитывается при передаче хода другому существу. Поэтому полезно только для получения или проверки. Если очень нужно менять то можно делать это или перед атакой, или каждый ход - ShadowTheAge Что-нибудь еще желаете увидеть в таблице? Пишите мне в асю или личку. Синим выделены не мои исследования (спасибо всем за помощь) Красным выделены строковые параметры - для изменения вам потребуются функции для работы со строками на низком уровне - см. следующий пост. Серым выделено то, что менять проблемно - я могу только посоветовать прочитать данные у одного монстра и поставить их другому. -------------------- Пропал с форума по техническим причинам с декабря 2007 по начало апрель 2008.
Уже вернулся. Принимаю заказы на скрипты. Стучать в асю. Днем на работе. |
|
|
14 Oct 2007, 02:10
(Сообщение отредактировал ShadowTheAge - 15 Oct 2007, 00:59)
Сообщение
#11
|
|
Скриптописатель Сообщений: 107 Спасибо сказали: 7 раз |
Прелюдия:
Функция для работы со строками на низком уровне Иногда при работе с !!UN:C требуется работать со строками. Приходится писать для этого функции. Написать их несложно, но так как я (наверно) буду часто их использовать в своих скриптах, то выложу их здесь: Код !?FU12925; Получение адреса z переменной номер x1 (возврат в x2) Поддерживаются версии: 3.58, ТЕ !!UN:V?y1/?y2; !!VRy3&y1=358:S40225400; !!VRy3&y1=359:S9597416; !!VRx2&y3=0:S0; !!FU&y3=0:E; !!VRx2:Sx1*512+y3; !?FU12926; Копирование строки по адресу. x1 - источник, x2 - приемник. !!DO12927/0/511/1:Px1/x2; !?FU12927; !!VRy1:Sx1+x16; !!VRy2:Sx2+x16; !!UN:Cy1/1/?y3Cy2/1/y3; !!VRx16&y3=0:S511; А теперь сразу же полезный скрипт, использующий их. Проигрывание любой .def анимации на юните в бою Данный скрипт позволяет проигрывать любую анимацию на люьом юните в бою (то есть не только из списка формата AC) Код !?FU12930; !!UN:V?y10/?y11; !!VRy12&y10=358:S69016332; !!VRy12&y10=359:S61479692; !!UN&y12<>0:Cy12/4/-1; !!UN:C4454270/4/?y1; !!VRy1:+660; !!VRy2:Sy1+8; !!VRx4:*256+x3; !!FU12925:Px2/?y5; !!UN:Cy1/4/?y3Cy2/4/?y4Cy1/4/y5Cy2/4/x4; !!BMx1:V55; !!UN:Cy1/4/y3Cy2/4/y4; Использование функции: x1 - номер стека в бою x2 - номер z переменной, в которой хранится имя .def файла для проигрывания примечание: Для работы требуется функция 12925 из функций работы со строками x3 - позиция относительно монстра: 0: Нижняя часть анимации совпадает с нижней частью существа (например, молитва) 1: Центр анимации совпадает с центром существа (например, инферно) 2: Анимация находится сверху существа (пример в голову не лезет) 3: Анимация находится спереди существа (срабатывание гномского сопротивления) 4: Анимация находится в углу возле атакующего героя x4 - Полупрозрачность (0 - нету, т.е. анимация непрозрачна, 1 - анимация полупрозрачна) Работают любые деф файлы, хоть с карты приключений, любые. Анимация проигрывается один раз, после чего пропадает. Это, кстати, мой сотый пост -------------------- Пропал с форума по техническим причинам с декабря 2007 по начало апрель 2008.
Уже вернулся. Принимаю заказы на скрипты. Стучать в асю. Днем на работе. |
|
|
15 Oct 2007, 01:27
Сообщение
#12
|
|
Скриптописатель Сообщений: 107 Спасибо сказали: 7 раз |
Поправил скрипт для проигрывания любой анимации - теперь анимация не кешируется (по крайней мере я на это очень надеюсь).
Добавил в таблицу комментарии Demiurg'а и DrakoLich'а (с указанием авторства). Этот и два предыдущих поста можно удалить. З.Ы. Я (в принципе) могу сделать редактирование таблицы Combat Animations. Нужно это? -------------------- Пропал с форума по техническим причинам с декабря 2007 по начало апрель 2008.
Уже вернулся. Принимаю заказы на скрипты. Стучать в асю. Днем на работе. |
|
|
22 Oct 2007, 17:50
Сообщение
#13
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
что означает полупрозрачность? как воскрешение?
а можно проиграть анимацию с кадра по кадр? |
|
|
22 Oct 2007, 21:10
Сообщение
#14
|
|
Скриптописатель Сообщений: 107 Спасибо сказали: 7 раз |
Полупрозрачность - как молитва, воскрешение, лечение, страх, ...
Непрозрачное: Мораль, проклятие, старость, болезнь, ... К сожалению скрипт сейчас лучше не использовать, т.к. имеют место некоторые проблемы с кешированием. "Хорошее" решение этой проблемы к сожалению найти не удалось... Проиграть анимацию с кадра по кадр нельзя, т.к. для проигрывания анимации я пользуюсь штатным !!BM:V; Скрипт сегодня-завтра поправлю чтобы работал. Я уже и забыл про эту ошибку. -------------------- Пропал с форума по техническим причинам с декабря 2007 по начало апрель 2008.
Уже вернулся. Принимаю заказы на скрипты. Стучать в асю. Днем на работе. |
|
|
18 Dec 2007, 10:55
(Сообщение отредактировал hippocamus - 28 Jan 2008, 00:48)
Сообщение
#15
|
|
пират с чёрной меткой Сообщений: 23 599 Спасибо сказали: 12880 раз |
Написано Deo
Он эту тему стёр, но я считаю, что это нужная функция, записал её сюда. Простенькая функция для работы с календарем. Можно узнавать и задавать текущую дату. Проверено на ТЕ 1.03 и Phoenix Mod 1.5 Да, действительно, на 3.58 не работает... Код !!FU#:P1/?день/?неделю/?месяц; узнать текущую дату
!!FU#:P0/день/неделя/месяц; задать текущую дату !?FU#; !!VRy1:S8654048;!!UN:Cy1/4/?y1; !!VRy2:Sy1+2; !!VRy3:Sy2+2; !!UN&x1=0:Cy1/2/x2;!!UN&x1=0:Cy2/2/x3;!!UN&x1=0:Cy3/2/x4; !!UN&x1=1:Cy1/2/?x2;!!UN&x1=1:Cy2/2/?x3;!!UN&x1=1:Cy3/2/?x4; -------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
02 Jan 2008, 20:49
Сообщение
#16
|
|
замолкаю. Сообщений: 2 340 Спасибо сказали: 1010 раз |
А у меня твоя функция, как и Део под ВоГ не работает
Правильный адрес дня под Вог имеет следующий вид: !!UN:C8579100/4/?y1; !!UN:Cy1/2/?@текущий день@ ИМХО -------------------- |
|
|
27 Jan 2008, 23:08
Сообщение
#17
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Установка объектов с произвольным видом с помощью ERM
Несколько раз возникали вопросы про установку объектов типа/подтипа, у которого есть несколько вариантов с разными def'ами. Это можно сделать: 1) На своей карте. Для этого надо поставить куда-нибудь на карту объект одного из неиспользуемых типов с каким-нибудь уникальным подтипом и нужным дефом. Затем использовать эти тип/подтип в качестве внешнего вида в UN:I (параметры #6 и #7 в версии с 9 параметрами) 2) В общем скрипте. Для этого придется модифицировать zobjcts.txt. Точно также, надо добавить объект незанятого типа/подтипа с нужным дефом и использовать в качестве внешнего вида в UN:I. Так же можно использовать новый def в скрипте. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
23 Jun 2008, 14:49
(Сообщение отредактировал Миханик - 30 Jun 2008, 07:04)
Сообщение
#18
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Представляю общественному вниманию плоды моих графоманских изысканий. Это описание контрольных слов разных типов объектов в формате RTF. Появилось как развитие моего поста от 8 октября в этой теме, но там не только персональные номера. Есть кое-что новое, в том числе - описание КС Фонтана удачи (ранее я его не встречал). В конце файла небольшой списочек, там сжато некоторые интересные факты. Документ расчитан скорее на рядовых пользователей ВоГ, возможно, его стоили выложить в "Обучении ЕРМ"? Так что вот так.
Файл можно ; залил бы в архив на woggrad.ru, но что-то не допёр, как туда закачивать. Хотя ранее я туда уже что-то выкладывал, но вот забыл. или браузер глючит, подло не показывая кнопку закачки. никто не просветит на эту тему (лучше в ПМ, дабы не флудить)? Возможно, потом выложу содержимое файла прямо в этот пост. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
25 Jun 2008, 19:20
(Сообщение отредактировал sergroj - 25 Jun 2008, 19:21)
Сообщение
#19
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Мощно!
Дополнение: Маяк и Шахта (и Заброшенная шахта) обладают одинаковыми контрольными словами и мояк можно редактировать через !!MN. Его ресурс (MN:R) имеет номер 100. Если поставить номер 0..6, то маяк начнет приносить ресурсы, как шахта Охрана маяка игнорируется. Также интересно менять охрану заброшенной шахты - после стандартного сообщения о троглодитах будет происходить драка с заданными монстрами в заданных количествах. Если охрану убрать, то шахта берется без боя. А если поставить шахте ресурс 7, то при взятии будет выводиться сообщение про золото и картинка мифрила с подписью "-33652069". К сожалению, мифрил добавляться не будет. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
22 Aug 2008, 18:13
(Сообщение отредактировал sergroj - 15 Sep 2008, 08:19)
Сообщение
#20
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Получение адресов переменных ВоГа
При работе с UN:C бывает нужно получить адрес какой-то Z-переменной. Вот скрипт, записывающий адрес z1 в v4138: (работает в 3.58, TE и в любой версии ВоГа, поддерживающей используемые команды) Код ZVSE * This code puts address of z1 to v4138 !#UN:A0/9/?y10; [backup Z var number] !#UN&y10<0:A0/9/?z-1; [backup string (3.59)] !#UN:A0/9/1; [art0.Name = z1] !#UN:C6687592/4/?y1; [get artifacts array address] !#UN:Cy1/4/?v4138; [get art0.Name which is z1 address. Name goes first in art info, so y1 points to art0.Name] [v4138 holds address of z1 now] !#UN&y10>=0:A0/9/y10; [resture Z var number] !#UN&y10<0:A0/9/z-1; [restore string (3.59)] Адрес других Z-переменных: v4138 + 512*(номер_переменной - 1). Например для z50: v4138 + 512*49. Если понадобится адрес иной (не Z) переменной, то просто найдите в AtrMoney ее адрес, вычтите адрес z1 и используйте v4138 + разница_адресов. Правда, в 3.59 эта разница изменится. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
Текстовая версия | Сейчас: 29 March 2024 - 03:19 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |