Полная версия этой страницы:
Баги в ЕРМ
Миханик
12 Oct 2007, 20:35
почему ошибка - не знаю. по идее, скрипт получает флаг только в строке !!FU&-1:E; может, при перепечатывании появилась ошибка? а вот про Alt, Ctrl, Shift я и говорил. так что баг есть.
Д'якон
12 Oct 2007, 23:20
Доработал. Теперь работает 100% (по-крайне мере у меня

)
Вместо MR:NПервоначальный код. (тестирован, работает 100%)
Код
ZVSE
!?MR2;
!!FU2679:P; -номер фазы MR2 (понятно, что для компьютерного игрока данное понятие отсутствует)
!?FU2679;
!!UN:C42231940/4/?y2; //WOG - 42147184
!!VRy2:+56;
!!UN:Cy2/4/?y3;
!!FU|y3<0/y3>186:E; corrected by Bes
!!BU:Ey3/?y4;
!!FU&y4=-1:E; corrected by Bes
!!IF:M^%Y4^; - выдает номер (номера) стэкоа, на которые кастится магия
Код с определением номера фазы (не тестирован)
Код
ZVSE
!?MR2;
!!FU2679:Px1; -номер фазы MR2 (понятно, что для компьютерного игрока данное понятие отсутствует)
!?FU2679;
!!UN:C2263956/4/?y6;
!!VRy1&y6>0:S1;
!!VRy1&y6=4:S2;
!!UN:C6916668/4/?y5;
!VRy1&y5=1:S3;
!!if&y1=x1:;
!!UN:C42231940/4/?y2; //WOG - 42147184
!!VRy2:+56;
!!UN:Cy2/4/?y3;
!!FU|y3<0/y3>186:E; corrected by Bes
!!BU:Ey3/?y4;
!!FU&y4=-1:E; corrected by Bes
!!IF:M^%Y4^; - выдает номер (номера) стэкоа, на которые кастится магия
!!en;
Также в!?MR2 при наложении цепь-молнии выдаются адреса стэков на которые еще не действовала цепь-молния, в то время как в !?MR1 скрипт с цепь-молнией работает корректно. (Вообще цепь-молния - это особый вид магии. Постараюсь, если не сегодня, то завтра выложить скрипт для управления цепь-молнией. Впринципе в нем нет надобности, но вдруг пригодится).
Скрипт для
управления цепь-молнией.
Код
ZVSE
!?BG0; или MR1
!!BG:A?y1;
!!BG:S?y2;
!!if&y1=1/y2=19:;
!!FU2568:Px1;
!!en;
!?FU2568;
!!VRy1:+x1 +61750428;
!!UN:Cy1/4/x2; x2 - либо 1 либо 0
Объясняю. После того как цепь-молния подействовала на стэк, выставляется флаг для данного стэка, что он уже подвергся удару (т.е. 1). Если этот флаг обнулить, то цепь молния может опять ударить по этому отряду.
Применение. Например, при действии экспертной цепь-молнии на дружественный отряд можно выставить его флаг на 1, чтобы она действовала только на вражеские отряды.
Миханик
13 Oct 2007, 14:27
а откуда х1 в триггере !?BG;? я что-то не понял. вообще предлагаю сделать более полный скрипт, функцию, колдующую цепную молнию на заданные цели. я даже не уверен, нужно ли для этого изменять этот самый флаг, хотя, скорее всего, нужно. дело в том, что в теме "обучение ерм" в статье, посвящённой !?MR2;, тоже говорилось об одном способе управления цепной молнией. его можно также привлечь.
вот примерный набросок:
Цитата(в коде нет цветовыделения)

ZVSE
!?FU7945;
!!BMx4:P?y1;
!!VRv2075&x3=5:S5/x8/x7/x6/x5/x4;
!!VRv2075&x3=4:S4/x8/x7/x6/x5;
!!VRv2075&x3=3:S3/x8/x7/x6;
!!VRv2075&x3=2:S2/x8/x7;
!!VRv2075&x3=1:S1/x8;
!!BHx1:C19/y1/x2/1;
!!VRv2075:C////;
!?MR1&v2075>0;
это ↓ не моё - это Д'якона!
!!UN:C42231940/4/?y1; //WOG - 42147184
!!VRy1:+56;
!!UN:Cy1/4/?y2;
!!BU:Ey2/?y3;
!!VRy3:+61750428;
!!UN:Cy3/4/0;
!?MR2&v2075>0;
!!VRy1:S2075 +v2075;
это ↓ тоже!
!!UN:C42231940/4/?y2; //WOG - 42147184
!!VRy2:+56;
!!UN:Cy2/4/?y3;
!!BU:Ey3/=vy1;
!!MR&1:F100;
!!MR&-1:F0;
!!VRv2075:-1;
функция заставляет выбранного героя колдовать цепную молнию и потом управляет её поведением. никто не гарантирует, что она будет работать. можете проверить:
х1 - сторона (0 - левый, 1 - правый)
х2 - уровень навыка (0 - никакой, 1..3 - базовый..эксперт)
х3 - число целей (1..3 для х2=0 и 1, 1..4 для х2=4, 1..5 для х2=5)
х4..х8 - стеки целей.
я не делал никакой проверки на дуракоустойчивость, поэтому функция будет работать при любых значениях параметров, вопрос в том,
как она будет работать. итак, Д`якон, не затруднит ли вас объяснить, что там за х1 или исправить, если это опечатка? Заодно можете посмотреть, что я накорябал.
Д'якон
13 Oct 2007, 18:33
Цитата(Миханик @ 13 Oct 2007, 14:27)
а откуда х1 в триггере !?BG;? ......
итак, Д`якон, не затруднит ли вас объяснить, что там за х1 или исправить, если это опечатка?
Извеняюсь. х1 - номер стэка для которого выставляется флаг.
Д'якон
17 Nov 2007, 15:49
При использовании !!BU:S, по окончанию боя не обнуляется кол-во вызванных монстров, т.е. тип монстров убирается (-1) а кол-во нет.
Т.е. коип считает, что стэк существут (хотя его и нет на поле боя) с типом монстра -1 и определенным кол-вом.
Во избежание этого, если вы уже использовали данный ресивер, при начале нового боя нужно для всех стэков с типом -1 установить кол-во -1, т.е. !!BM#:N-1;
не знаю, у меня СА:G$ и CA:G$1/$2/$3 работает, а CA:G$1/$2 нет

буду смотреть, может найду причину неработы

(только я использую не СА-1, а СА# синтаксис... по координатам в переменной т.е. ... может в этом всё дело? надо будет с -1 попробовать)
претензии снимаю, ибо действительно всё нормально работает (видать тогда адрес города не тот был)
===
Но вот следующий момент можно смело отнести к недостатку ЕРМ:
Если в Гильдию добавить !!CA-1:G0/6 G0/6/91; закл, а потом построить ещё один этаж Гильдии, то все добавления (ранние) благополучно забываются игрой

Т.е. все лишние слоты, применительно к гильдии данного замка, добавленные через ЕРМ исчезают при усовершенствовании гильдии.
Так что учтите этот момент, тов. скриптеры, и принимайте доп. меры
MasterOfPuppets
26 Dec 2008, 12:43
Одна из самых глючных команд - !!PM:V (привлечение ИИ к новым объектам). Когда ставлю объект типа 63 на карту с помощью ERM, а затем задаю ему !!PM#:V1 (не посещено), то примерно в 30% случаев скрипт говорит, что не нашёл объекта, к которому эту команду можно применить. Приходится отключать в функции вывод сообщения об ошибке.
Я думаю, стоит здесь упомянуть (хотя в ЕРМ-справке и стоят демонстративные вопросики...):
BM:C (каст магии от монстра) - хотелось бы нормальной обработки силы магии)))
В общем-то урон можно и так пересчитать...
Цитата
Cast a spell
#1 - spell number (Format SP)
#2 - position to cast
#3 - Monster skill level (0...3)
#4 - Hero (???) Spell power (0...3)
#5 - Check 4 Target Monster existing (alive)
Note: Parameter 5 must be a 1. This tells it to check if the target stack is alive (not wiped out) before casting, otherwise it will crash if it tries to cast on an invalid target. For the resurrection spells you might want to try a 0 here so that they can be used to revive dead stacks
sergroj
02 Jan 2009, 07:30
3й параметр - spell power, 4й - скилл в магии
[edit] ой, наоборот
3й параметр - скилл в магии, 4й - spell power
но урон при этом считается неправильно
sergroj
03 Jan 2009, 08:15
Я ошибся с параметрами. 3й параметр - скилл в магии, 4й - spell power. Дамаг от Ice Bolt правильный. От других тоже должен быть правильный.
!?CM4;
!!BM21:P?v1;
!!BM0:C16/v1/0/16/1;
Тааак... интересно... буду тестить...
Как избавиться от такого глюка (вроде где-то писалось про такое, но не помню): в !?BG1 после стрельбы вызывается огненный шар в месте попадания стрелы. Так вот иногда бывает - если стрела не убивает, а шар "добивает" цель, то она встает с отсутствующим числом монстров в стеке и ходит!!! для выигрыша битвы таких зомби убивать необязательно, но лучше бы их не было... иногда кстати появляются целые пачки таких "оживших". Других закономерностей не выявил...
gamecreator
05 Jan 2009, 21:16
это не глюк, это отсутствие проверок после искусственного нанесения урона
Каких проверок?
Добавлено ([mergetime]1231180207[/mergetime]):
Почему один раз все нормально, другой раз глюки? При том что стреляю в одних и тех же существ в одинаковых количествах
кастование магии идет нормально или эмуляция закла?
не знаю что означает "нормально"... кастую через BM:C, просто огненные шары через BM:C всегда нормально идут...
sergroj
06 Jan 2009, 11:00
может, BG1 срабатывает в такой момент, что там не предполагается, что что-то может быть скастовано. А может другой скрипт накладывается.
MasterOfPuppets
07 Jan 2009, 20:13
Зашёл в объект типа 63. Должна была выполниться функция, его перемещающая (!?FU19020). Всегда всё было хорошо. Но тут вдруг выполнилась !?FU19024 из моего же скрипта, и перекрасила всю землю на карте. Объект остался на месте.
Всё проверил - всё в порядке. И глюк больше не повторялся.
gamecreator
07 Jan 2009, 22:17
интерпретатор сослепу цифру перепутал))
Цитата
интерпретатор сослепу цифру перепутал))
Ага) Нефик по ночам скрипты писать)))
MasterOfPuppets
26 Jan 2009, 10:32
Команда !!HE#:A-
Цитата
Примечание 5: если вы удаляете комбо-артефакт командой HE:A-, заблокированные слоты разблокируются...
Замечание: удаляет вместе с замками лишь стандартные комбо. Самодельные комбо-артефакты удаляются этой командой омерзительно плохо: сам артефакт исчезает, а блокировка слотов остаётся.
А что ты подразумеваешь под самодельными? Эмулирование скриптом или просто новые сборники?
MasterOfPuppets
26 Jan 2009, 15:38
Комбо-артефакты, созданные командой !!UN:A.
DracoLich
27 Jan 2009, 20:41
В экзешнике игры не сохраняются самоделки-то. Стандартные прописаны, вот они и корректны. А тут что-то левое появилось, откуда игра поймет что блок-слоты вместе с этим чудом? о_0
Все логично
DmitriyK
27 Jan 2009, 21:55
Проклятие на блокировку слота Y2/x/y/1 некорректно снимается командой Y2/x/y/0, формально снимая проклятие, но при этом оставляя замок в слоте который был проклят.
Где-то я уже это видел, раз десять.

Не некорректно, просто изменяется переменная длины, но реальная проверка настроена на новый день. Просто вы пытаетесь использовать команду для того, для чего она не была предназначена.
Завтра будет скриптовая основа и сможете добавлять сборные арты.
DmitriyK
27 Jan 2009, 23:55
Цитата(Berserker @ 27 Jan 2009, 22:58)
Где-то я уже это видел, раз десять.

Не некорректно, просто изменяется переменная длины, но реальная проверка настроена на новый день. Просто вы пытаетесь использовать команду для того, для чего она не была предназначена.
Завтра будет скриптовая основа и сможете добавлять сборные арты.
Ну тогда почему проклятие на посещение объектов снимается сразу же? В чем принципиальная разница между этими вещами? Я например не вижу разницы особой. запрещается тоже на Н-ное кол-во ходов, но после снятия сражу же все работает, а не так как в случае с проклятием слота.
На мой взгляд это все же смахивает на баг. Команда есть, более того можно придумать массу вариантов как ее применить (ну например героя прокляли - затем он посетил храм - проклятие сняли) Реализовать это невозможно.
Не важно, смахивает или нет, я вам говорю, как это реализовано в коде ЕРМ движка. Объекты проверяются каждый раз при заходе, а слоты - в начале дня. Ну что не ясно?
sergroj
29 Jan 2009, 12:46
Проклятие на блокировку слотов, оказывается, вообще жутко глючное:
1) При удалении проклятия слот не разблокируется и, скорее всего, не разблокируется уже никогда. При удалении всех проклятий разблокировка слота происходит нормально (недокументированная команда HE:Y0/0/0/3)
2) Если в блокированном слоте был свиток, будет глюк после разблокировки - вместо номера его заклинания будет -1.
3) Если блокировать левое кольцо, блокируются ноги.
4) Можно блокировать только слоты 0-31 в (формат AP).
5) При использовании get синтаксиса возвращается не номер блокированного слота, а комбинированное значение. Чтобы получить номер слота с полученным значением надо сделать VR:&31.
Я ничего из этого не проверял в игре, только исходя из сорсов.
MasterOfPuppets
29 Jan 2009, 15:24
Цитата
1) При удалении проклятия слот не разблокируется и, скорее всего, не разблокируется уже никогда.
Вот это я проверял - так и есть. При снятии проклятия инфа, что оно есть, пропадает, однако слот остаётся заблокированным на веки вечные.
DracoLich
29 Jan 2009, 19:50
Бтв сейчас сам глянул - и с номерами слотов там косяк.
Добавлено ([mergetime]1233247841[/mergetime]):
Причем большой и страшный %0
DmitriyK
30 Jan 2009, 02:56
Цитата(sergroj @ 29 Jan 2009, 12:46)
Проклятие на блокировку слотов, оказывается, вообще жутко глючное:
1) При удалении проклятия слот не разблокируется и, скорее всего, не разблокируется уже никогда. При удалении всех проклятий разблокировка слота происходит нормально (недокументированная команда HE:Y0/0/0/3)
Я ничего из этого не проверял в игре, только исходя из сорсов.
Гениально! Огромное тебе спасибо, эта команда действительно все делает как надо. Скрипт о котором мы разговаривали в аське уже не нужен, с этой командой я сам все сделаю как надо, еще раз спасибо
Добавлено ([mergetime]1233273379[/mergetime]):
Цитата(DracoLich @ 29 Jan 2009, 19:50)
Бтв сейчас сам глянул - и с номерами слотов там косяк.
Добавлено ([mergetime]1233247841[/mergetime]):
Причем большой и страшный %0
Я не знаю что вы подразумеваете под косяком номеров слотов, если "непонятные значения" - то это не косяк. В одном и том же слоте могут быть различные арты и чтобы не перепутать какой именно арт находится под замком и есть эти значение.
например слот 5
Вариант 1 - 31 Armor of Wonder
Вариант 2 - 134 Power of the Dragon Father
В случае 1 - значение будет 1029, во втором 4325. Таким образом мы можем когда надо добавлять/убавлять длительность проклятия командой Y2/4325/x/2 при этом сохраняя оригинальный арт под замком. В противном случае если использовать банальное Y2/5/x/2 - произойдет смещение и возникнут глюки различные (потери артов/замки/размещение артов в неправильных позициях и тд)
DracoLich
30 Jan 2009, 06:24
Номера слотов ничерта не совпадают с номерами формата AP. Проще говоря, справочная таблица слотов не истинна для этой команды. К прмеру, как сказал уже Серг, левое кольцо

+ какой-то баг при проклятии 13 (14?) слота - изменяется арт О_0
Новый арт = старый+1(по номеру). Хзхз, но менялся только в рюкзаке. %) Нот андестуд.
Добавлено ([mergetime]1233287527[/mergetime]):
Аще какая-то сплощь баговая опция.
DracoLich
30 Jan 2009, 08:00
Серг, можешь подсказать формулу для нахождения арта, который закрывается?
gamecreator
30 Jan 2009, 15:18
v div 32 -1
v - это комбинированное значение, о котором говорил сергрой.
DmitriyK
30 Jan 2009, 16:18
HE:Y2/?v1/d/1
sergroj
31 Jan 2009, 20:00
Щас еще посмотрел - можно блокировать только слоты на фигурке героя, так что 4) - не баг. Формат AP вроде верный, совпадает с тем, что в моей таблице ArtMoney.
[Edit] Разобрался. Порядок самих слотов верный, а вот у замков все иначе устроено. Правильно замки ставятся только на слоты 0 - 5.
[Edit] Нет, правильно должны работать слоты 0 - 6.
вот номера слотов для проклятия запертого слота:
0 голова
1 плечи
2 шея
3 правая рука
4 левая рука
5 торс
6 кольцо (не важно какое, просто слот кольца)
7 ноги
8 misc (как и кольцо)
9 ballista (war machine 1)
10 ammo cart (war machine 2)
11 first aid tent (war machine 3)
это проклятие устанавливает в выбранный слот значение 1 - заперто. соответственно до этого там стоял 0. как показала практика, чтобы запереть оба кольца нужно поставить 2, а чтоб все слоты misc - 5 (проверено на артмани). поэтому это скорее не баг, а недоработка.
DracoLich
01 Feb 2009, 14:04
Эм, не совсем понял о
Цитата
это проклятие устанавливает в выбранный слот значение 1 - заперто. соответственно до этого там стоял 0. как показала практика, чтобы запереть оба кольца нужно поставить 2, а чтоб все слоты misc - 5
Куда и что ставит оО?
sergroj
01 Feb 2009, 17:18
Цитата(major @ 01 Feb 2009, 11:11)
это проклятие устанавливает в выбранный слот значение 1 - заперто. соответственно до этого там стоял 0. как показала практика, чтобы запереть оба кольца нужно поставить 2, а чтоб все слоты misc - 5 (проверено на артмани). поэтому это скорее не баг, а недоработка.
Проклятие использует те же номера слотов, что подаются в качестве параметра (за 1 исключением - если передать 7, то ведет себя вообще непонятно). Поэтому, оно убирает артифакт из 1 слота, а ставит замок на другой. Правильно работают только слоты 0 - 6.
в приведенной таблице сергроя
Цитата
В структуре героя
+12D - слоты с артефактами, по 8 байт на слот
+1C6 - замочки, по байту на тип слота
+1С6 - слот головы
+1С7 - плечи
...
+1СС - кольцо (если 1 - заперто 1 кольцо, если 2 - то оба)
+1CD - ноги
+1CE - misc (если 1 - заперт 1 слот, если 5 - то все 5 и т.д.)
если замочки не висят, то по этим смещениям стоят 0. например, чтобы закрыть 4 слота misc, нужно по смещению +1CE поставить 4.
а проклятие вроде по всем смещениям выставляет 1.
и с помощью него нельзя закрыть, скажем 2 кольца или 2-5 слотов misc, поэтому
Цитата
Правильно работают только слоты 0 - 6.
после 6 получается несовпадение с форматом AP.
sergroj
02 Feb 2009, 11:39
Нет, проклятие увеличивает кол-во замков на 1, но после 6 идет расхождение индексов слотов и замков
MasterOfPuppets
18 Feb 2009, 05:26
Не баг, но фича.
Цитата
L#^Портрет.pcx^
Установить портрет героя из внешних файлов
Замечательная неточность в описании. Портрет можно установить и из внутренних файлов. То же самое с L5/$1/$2. :-)
ShadowDF2
18 Feb 2009, 10:52
Названия портретов извлекать из bitmap?
sergroj
18 Feb 2009, 22:20
конечно.
Вот еще неточности хелпа:
UN:G2 description in erm_help is wrong
#2 = 0: Speciality name. It's "Griffins" for Edric
#2 = 1: Long speciality name. It's "Creature Bonus: Griffins" for Edric
However, I have no idea where these strings are used in the the game.

(only know that speciality name is used in Advanced Options on map start, but maybe somewhere else too)
Small speciality picture is always the same as the normal one.
IF:M-1 doesn't exist anymore
In addition to HE-1 for current hero, there are HE-10 for attacker and HE-20 for defender in battles.
Help desn't mention that TR reciever and all recievers listed in "Other Objects" can take variable index as paramerer (like LE)
PM reciever as well can take x/y/l or variable index, and its parameters arent mentioned at all
OB reciever mentions the indirect syntax, but as a small note
Fatalist
19 Feb 2009, 17:48
Недавно обнаружил любопытный баг )
Значит прописываю я
!?TM1;
!!AR102/134/0:V70; для свитка, потом в игре подбираю его, удивительно, но игра невылетает) В свитке написано, что якобы он добавляет в книгу заклинаний "Окаменение"(камень)

и самое главное то, что после подбора такого свитка у героя повышается сила атаки на 1, но если свиток положить в рюкзак или выкинуть(используя стандартный скрипт) параметр силы атаки не уменьшается)
Ну по идеи оно и не должно вылетать. Заклинание №70 - вполне нормальное, вот только нет у него картинки в книге заклинаний, и при попытке посмотреть/использовать игра должна вылететь (возможно только в битве). Я как то этим баловался, правда давно это было...
Fatalist
20 Feb 2009, 07:06
В бою невылетает, просто в книге заклинаний нет такого спела(
А когда подбираешь свиток, там есть картинка) такая, когда в сопряжении есть грааль и в гильдии магии у всех спелов картинка книги со звездочками
Только вот с какого бока свиток навсегда даёт +1 к атаке герою
ShadowDF2
20 Feb 2009, 09:54
Цитата
для свитка, потом в игре подбираю его, удивительно, но игра невылетает) В свитке написано, что якобы он добавляет в книгу заклинаний "Окаменение"(камень)
Ставишь значения выше - идут Паралич Старость Яд и т.д. до... вылета
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.