Тонкости ЕРМ, использование UN:C, ERM для профессионалов :) |
Здравствуйте, гость ( Вход | Регистрация )
Тонкости ЕРМ, использование UN:C, ERM для профессионалов :) |
15 Sep 2008, 15:43
(Сообщение отредактировал sergroj - 09 Feb 2013, 10:10)
Сообщение
#21
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Вместо MR:N для TE
MR:N не работает в 3.58f и TE. Эта функция его заменяет. Только для exe'шника TE: Код !?FU8229; !!UN:C42231940/4/?x1; [TE only - get MR stack] !!UN:C6919200/4/?y1; [get combatManager] !!VRx1:-y1 -21708 :1352; Соответственно, вызывается так: !?MR0; !!FU8229:P?v1; !!IF:M^%V1^; [edit] Необходимо проверять, что номер полученного стека находится в диапазоне 0..41, т.к. иногда игра вызывает MR:N для временной копии какого-нибудь монстра - номер её оригинала так не получить. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
06 Oct 2008, 05:04
Сообщение
#22
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Функция для управления подтипом дороги
вообще-то этим должен заниматься 6й параметр TR:T, но он этого почему-то не делает. пришлось самому искать. таблица, где записан подтип (и не только он), располагается по адресу, на к-рый указывает указатель, к-рый располагается по адресу, к-рый на 130112 больше, чем тот, на к-рый указывает указатель, находящийся по адресу 69953816. записи имеют длину 38 и сортированы по XYL, подтип дороги в них на смещении 9. просто и понятно. на сием и основана функция: Код !?FU20113; Вызов:!!UN:C6919480/4/?y1; !!VRy1:+130112; !!UN:Cy1/4/?y2 X?y3/?y4; !!VRx3:*y3 +x2 *y3 +x1 *38 +9 +y2; !!UN&x5=0:Cx3/1/x4; !!UN&x5<>0:Cx5/1/?x4; !!FU20113:P#1#2/#3/$/#4; !!FU20113:P#1/#2/#3/$; (#4=0) #1/#2/#3 - X/Y/L - координаты $ - значение подтипа дороги #4 - 0 - установить $, любое другое значение - получить $. кстати, можете меня поздравить - это первое моё опубликованное достижение в области артманелогии. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
06 Oct 2008, 09:19
Сообщение
#23
|
|
пират с чёрной меткой Сообщений: 23 632 Спасибо сказали: 12912 раза |
Отлично! Спачибо.
Кстати, "получить" подтип по-моему вполне воззможно было бы с TR:T Нет разве? -------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
06 Oct 2008, 21:41
Сообщение
#24
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Нет, в TR:T параметр подтип дороги работал, как подтип реки.
Еще можно получить тип и подтип объекта, находящегося на клетке - это 2-байтовые числа по смещениям 30 и 34 (вместо 9 для типа дорги). -------------------- ДНК банана на 50% состоит из человека.
|
|
|
11 Oct 2008, 17:25
(Сообщение отредактировал Миханик - 14 Oct 2008, 12:25)
Сообщение
#25
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Контроль типа нанимаемого в Портале Вызова существа
Код !?FU20114&x1=-1; Вызов:!!UN:C6919500/4/?y1; !!VRy1:+56; !!UN:Cy1/4/?y2; !!VRy2:+60; !!UN&x3=0:Cy2/4/x2; !!UN&x3<>0:Cy2/4/?x2; !?FU20114&x1<>-1; !!UN:C6933756/4/?y1; !!VRy1:+2884; !!UN:Cy1/4/?y2; !!VRx1:*360 +60 +y2; !!UN&x3=0:Cx1/4/x2; !!UN&x3<>0:Cx1/4/?x2; !!FU20114:P#1/$/#2; !!FU20114:P#1/$; (#2=0) #1 - № города (-1 - текущий) $ - тип существа. -1 - значит нет Портала или ещё не сгенерирован тип (сгенерируется при заходе). #2 - 0 - установить $, любое другое значение - получить $. Ещё кое-что насчёт картинок для IF Опыт с подтипом -1 даёт картинку опыта с подписью "+1 уровень", как у Древа Знаний. З. Ы. 2sergroj: там вообще много чего есть. чуть ли не все !!OB и !!TR. но, афаик, усё это уже раскопали в WoG Team до нас. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
14 Oct 2008, 12:23
(Сообщение отредактировал Миханик - 22 Oct 2008, 11:30)
Сообщение
#26
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Контроль количества нанимаемых в Портале Вызова существ
Код !?FU20115&x1=-1; Вызов:!!UN:C6919500/4/?y1; !!VRy1:+56; !!UN:Cy1/4/?y2; !!VRy2:+64; !!UN&x3=0:Cy2/2/x2; !!UN&x3<>0:Cy2/2/?x2; !?FU20115&x1<>-1; !!UN:C6933756/4/?y1; !!VRy1:+2884; !!UN:Cy1/4/?y2; !!VRx1:*360 +64 +y2; !!UN&x3=0:Cx1/2/x2; !!UN&x3<>0:Cx1/2/?x2; !!FU20115:P#1/$/#2; !!FU20115:P#1/$; (#2=0) #1 - № города (-1 - текущий) $ - кол-во существ #2 - 0 - установить $, любое другое значение - получить $. примечание. если на первой неделе в город ни разу не заходили (или нет Портала), тип и кол-во существ ещё не сгенерены и количество будет выдавать всякий мусор. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
16 Oct 2008, 05:50
Сообщение
#27
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Поправка к Порталу Призвания:
Монстр не определен в начале только первой недели. При отсутствии монстра тип равен -1, а кол-во любое. -------------------- ДНК банана на 50% состоит из человека.
|
|
|
22 Oct 2008, 11:29
(Сообщение отредактировал Миханик - 03 Nov 2008, 06:09)
Сообщение
#28
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Прочтение результатов диалога HE:C
вот, ещё наковырял. скрипт позволяет после команды HE:C посмотреть, что осталось в верхних (добавляемых) слотах, и, т. о. юзать его не только для добавления существ, но и для оставления, без особых трудностей. Для WoG 3.58 и TE. CODE !?FU20116; Вызов:!!UN:V=358/?i; !!VRy1&1:S8585652; !!VRy1&-1:S8647508; !!UN:Cy1/4/?x1; !!VRy1:+4; !!UN:Cy1/4/?x3; !!VRy1:+4; !!UN:Cy1/4/?x5; !!VRy1:+4; !!UN:Cy1/4/?x7; !!VRy1:+4; !!UN:Cy1/4/?x9; !!VRy1:+4; !!UN:Cy1/4/?x11; !!VRy1:+4; !!UN:Cy1/4/?x13; !!VRy1:+4; !!UN:Cy1/4/?x2; !!VRy1:+4; !!UN:Cy1/4/?x4; !!VRy1:+4; !!UN:Cy1/4/?x6; !!VRy1:+4; !!UN:Cy1/4/?x8; !!VRy1:+4; !!UN:Cy1/4/?x10; !!VRy1:+4; !!UN:Cy1/4/?x12; !!VRy1:+4; !!UN:Cy1/4/?x14; !!FU20116:P?1/?2/?3/?4/?5/?6/?7/?8/?9/?10/?11/?12/?13/?14; ?1,?3..?13 - типы существ 1..7, ?2,?4..?14 - их количество. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
03 Nov 2008, 06:41
(Сообщение отредактировал Миханик - 11 Nov 2008, 03:20)
Сообщение
#29
|
|
починяю примусы Сообщений: 147 Спасибо сказали: 14 раз |
Функции для работы с дефами объектов
позволяют менять № данного дефа, и узнавать, какому имени этот № соответствует. сами скрипты не проверял. для WoG 3.58 и TE. CODE !?FU20117; вызов:!!UN:C6919480/4/?y1; !!VRy1:+129924; !!UN:Cy1/4/?y2; !!VRy1:+4; !!UN:Cy1/4/?y3; !!VRy2:+4; !!VRy3:-8; !!DO20118/y2/y3/12:Px1/x2/x3/=y4/?y4; !!VRx4:Sy4; !?FU20118; !!VRx5:Sx4; !!UN:Cx16/1/=x1; !!FU&-1:E; !!VRy1:Sx16 +1; !!UN:Cy1/1/=x2; !!FU&-1:E; !!VRy1:+1; !!UN:Cy1/1/=x3; !!VRx5&1:+1; !?FU20119; !!UN:C6919480/4/?y1; !!VRy1:+129924; !!UN:Cy1/4/?y2; !!VRy1:+4; !!UN:Cy1/4/?y3; !!VRy2:+4; !!VRy3:-8; !!VRi:Sx4; !!DO20120/y2/y3/12:Px1/x2/x3/y3/?y5; !!VRy5:+2; !!UN&x6<>0:Cy5/2/x5; !!UN&x6=0:Cy5/2/?x5; !?FU20120; !!UN:Cx16/1/=x1; !!FU&-1:E; !!VRx5:Sx16 +1; !!UN:Cx5/1/=x2; !!FU&-1:E; !!VRx5:+1; !!UN:Cx5/1/=x3; !!VRi&1:-1; !!VRx16&i=0:Sx4; !?FU20121; !!UN:C2257160/4/?y1; !!VRy1:+4; !!UN:Cy1/4/?y2; !!VRx2:*68 +4 +y2; !!UN:Cx2/4/?y3; !!VRz1:S^8+3 символов^; !!FU12925:Px1/?y4; !!FU12926:Py3/y4; !?FU20122; !!UN:C2257160/4/?y1; !!VRy1:+4; !!UN:Cy1/4/?y2; !!VRy2:+4; !!VRy1:+4; !!UN:Cy1/4/?y3; !!VRy3:+4; !!VRz1:S^8+3 символов^; !!FU12925:P1/?y4; !!DO20123/y2/y3/68:Px1/y3/y4/?y5; !!VRx2&y5>0:Sy5 -y2 :68; !!VRx2&y5=0:S-1; !?FU20123; !!UN:Cx16/4/?y1; !!FU12926:Py1/x3; !!FU&zx1<>z1:E; !!VRx4:Sx16; !!VRx16:Sx2; !!FU20117:P#1/#2/#3/?; получить в ? кол-во дефов, обретающихся по координатам #1/#2/#3; координаты дефа считаются по нижней правой клетке. !!FU20119:P#1/#2/#3/#4/$/#5; установить/получить в $ номер #4го дефа на координатах #1/#2/#3. соответственно #5=0 - установить, остальные значения - получить. !!FU20121:P#1/#2; получить в z#1 имя дефа №#2. стандартные дефы: №0 - AVWmrnd0.def №1 - AVLholg0.def остальные номера зависят от карты и характера использования UN:I. !!FU20122:P#/?; получить в ? номер дефа с именем z#. если деф ни разу не юзался, он не подгружен и номера не имеет. в таких случаях возвращается -1. используются строчные функции ShadowTheAge. не забудьте их скопировать тоже, если хотите юзать эти. -------------------- Всякий процесс делится на четыре стадии: шумиха, неразбериха, наказание невиновных и награждение непричастных. (М. Задорнов)
Подающий нищему - подаёт Богу. А Бог не нищий, чтобы ему подавали! |
|
|
15 Nov 2008, 21:54
(Сообщение отредактировал sergroj - 31 Jul 2011, 15:42)
Сообщение
#30
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Проверка, доступна ли клетка монстру
!?FU#:Pv1/?v2; v1 - номер клетки на поле боя v2: = 0 - клетка недоступна (из-за радиуса ходьбы или препятствий по пути, или занята препядствием или дружественным монстром) = 1 - стоит вражеский монстр, которого можно ударить (в том числе, выстрелить), либо сам монстр, который собирается ходить = 3 - клетка свободна Код !?FU#; !!UN:C6919200/4/?y1; [y1 = combatManager] !!VRx1:+y1 +76; !!UN:Cx1/1/?x2; [edit] Оказалось, что это информация о затененности клеток, поэтому её нет когда отключен показ полей, на которые может ходить монстр. Номер клетки 2хклеточного монстра !?FU#:Pv1/?v2; v1 - номер клетки на поле боя v2: = -1 - одноклеточный монстр или нет монстра = 0 - левая клетка = 1 - правая клетка Код !?FU#; !!UN:C6919200/4/?y1; [y1 = combatManager] !!VRx1:*112 +y1 +478; !!UN:Cx1/1/?x2; Соседи клетки !?FU#:Pv1/v2/?v3; - возвращает одну из 6 соседних клеток v1 - номер клетки на поле боя v2 - индекс соседа (0..5) (порядок - по часовой стрелке, начиная с клетки справа-сверху) v3 - возвращает номер соседней клетки (-1 если того соседа нет или он вне поля боя, например, клетка 0, клетка 16, ...) Код !?FU#;
!!UN:C6919200/4/?y1; [y1 = combatManager] !!VRx1:*12 +y1 +78952 + x2; !!UN:Cx1/1/?x3; -------------------- ДНК банана на 50% состоит из человека.
|
|
|
20 Nov 2008, 03:47
Сообщение
#31
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
FU20119 все-равно не работает. Вылетает с Access Violation.
Код !?CM;
!!CM:P?v1/?v2/?v3; !!FU20119:Pv1/v2/v3/0/?v1/1; !!IF:M^%V1^; -------------------- ДНК банана на 50% состоит из человека.
|
|
|
18 Jun 2009, 07:33
Сообщение
#32
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Прошу, так сказать, проверить домашнюю работу (может, адреса разнятся в разных системах).
Скрипт позволяет создавать новые двеллинги существ с подтипами >100, с корректными названиями как по ПКМ, так и во внутренних текстах. Существа и охрану же в них можно настраивать обычным путём - через DW. Для теста, конечно же, двеллинг с нужным подтипом нужно разместить на карте. У меня работает (под ТЕ). Код ZVSE
!?PI; !!UN:I27/22/0/17/101/17/101/-1/0; !!VRz906:S^Обитель Страха^; название нового двеллинга !!UN:C4240673/4/?y-1; найти таблицу по одному из указателей !!VRy-2:S905*512+9597416; адрес z905 !!DO7777/0/103/1:Py-1/y-2; копировать таблицу ссылок на названия двеллингов в z905 !!VRy-3:S101*4+y-2; адрес ссылки на название двеллинга 101 !!VRy-4:S906*512+9597416; адрес z906 !!UN:Cy-3/4/y-4; забить адрес ссылки в нужное место таблицы !!UN:C4240673/4/y-2; название двеллинга во внутреннем тексте сообщения, указатели на подсказки по правому клику и внизу экрана. !!UN:C4275832/4/y-2; !!UN:C4855123/4/y-2; !!UN:C4240663/4/y-2; подсказка внизу экрана, если объект принадлежит игроку !!UN:C4275821/4/y-2; подсказка по правому клику, если объект принадлежит игроку !?FU7777; !!UN:Cx1/4/?y1 Cx2/4/y1; !!VRx1:+4;!!VRx2:+4; -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
28 Jun 2009, 20:53
(Сообщение отредактировал Дьяк - 28 Jun 2009, 21:00)
Сообщение
#33
|
|
Member Сообщений: 97 Спасибо сказали: 80 раз |
Вроде адреса все статические, наверное должно работать. Как раз мне пригодится для новых замков... скоро собирался этим заняться... Спасибо...
|
|
|
29 Jun 2009, 05:34
(Сообщение отредактировал Master Of Puppets - 29 Jun 2009, 07:13)
Сообщение
#34
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Тут два больших недостатка:
1)Обновления адреса таблицы при рестарте карты или начале новой игры без перезапуска не происходит - никто ведь не рассчитывал, что эти данные будут менять. Поэтому приходиться хранить в памяти старый адрес таблицы в возвращать его указателям при выходе в главное меню по клику и клавишам. То есть, та же проблема, что и с NOT USED-ами, даже малость сложнее. 2)В функции должно быть, видимо, больше кругов, ибо копировать надо не только таблицу ссылок на названия двеллингов, но и связанные с нею ссылки на названия некоторых других объектов. "Откуда и докуда", я ещё не разобрался. К примеру, если на карте Пирамида, то при попытке навести на неё мышь будет вылет. Первую проблему я решил. Со второй требуется помощь. -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
30 Jun 2009, 18:46
Сообщение
#35
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
В общем, тут замануха ещё та. Перенос таблицы или просто её дописывание ("внаглую") крашит внутренние опции ВОГа - к примеру, разрушение городов и сброс артефактов на карту. Копаться уже лень стало. Кому не лень - можете продолжить. А мне придётся делать новые двеллинги ещё более геморными, но более безопасными способами...
-------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
30 Jun 2009, 20:37
Сообщение
#36
|
|
СкриптоDеL Сообщений: 89 Спасибо сказали: 1 раз |
Увеличение в exe или просто ERM?
-------------------- Жизнь это болезнь с летальным исходом.
|
|
|
06 Aug 2009, 20:47
(Сообщение отредактировал sergroj - 06 Aug 2009, 20:52)
Сообщение
#37
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Пара функций работы с диалогами в Эре:
1) Показ диалога, пока зажата клавиша мыши (левая или правая). x1 = номер диалога Код !?FU<номер>; !!VRy1:Sv1; !!SN:E7510739/1/x1; [find HDlg -> v1] !!VRy2:Sv1; [v2 = HDlg] !!if&y2<>0:; !!SN:E5864096/1; [stop animation] !!UN:Cy2/4/?v1; [v1 = dialog] !!SN:E6245264/2/v1; [show while holding mouse button] !!SN:E5864272/1; [continue animation] !!SN:E7518240/2/y2; [destroy HDlg] !!en:; !!VRv1:Sy1; (после показа диалог уничтожается - перед следующим показом надо загружать снова) 2) Уничтожение диалога. x1 = номер диалога Полезно при редактировании диалогового темплейта, чтобы при каждом показе диалог загружался заново. Код !?FU<номер>;
!!VRy1:Sv1; !!SN:E7510739/1/x1; [find HDlg -> v1] !!SN&v1<>0:E7518240/2/v1; [destroy HDlg] !!VRv1:Sy1; -------------------- ДНК банана на 50% состоит из человека.
|
|
|
06 Aug 2009, 22:27
Сообщение
#38
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Цитата(sergroj @ 06 Aug 2009, 20:47) 2) Уничтожение диалога. x1 = номер диалога Полезно при редактировании диалогового темплейта, чтобы при каждом показе диалог загружался заново. Код !?FU<номер>; !!VRy1:Sv1; !!SN:E7510739/1/x1; [find HDlg -> v1] !!SN&v1<>0:E7518240/2/v1; [destroy HDlg] !!VRv1:Sy1; Хочу спросить: малопонятные ошибки, ссылающиеся на совершенно нормальные команды DL:A и иногда ведущие к вылету - они обусловлены именно тем, что при загрузке диалога старая информация его настроек даёт о себе знать? -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
07 Aug 2009, 00:14
Сообщение
#39
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 817 раз |
Не знаю. Какие ошибки?
-------------------- ДНК банана на 50% состоит из человека.
|
|
|
07 Aug 2009, 01:19
Сообщение
#40
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Ну вот - теперь как назло не могу их поймать...
Короче, отбой - ложная тревога. -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
Текстовая версия | Сейчас: 20 April 2024 - 06:13 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |