Полная версия этой страницы:
Флейм
Berserker
27 Aug 2007, 19:47
А как тогда вести сверку: какой монстр "сидит" в слоте по которому кликается мышка (к примеру ПКМ)? (в окне героя)
Я таким образом хотел проверять на наличие нужного мне монстра
gamecreator
28 Aug 2007, 12:04
!?CM2;
!!CM:I?y1;
!!FU|y1<68/y1>74:E;
!!VRy1:-68;
!!HE-1:C0/y1/?y2/?y3;
теперь в у2 тип монстра, а в у3 - количество.
lotus13
30 Aug 2007, 09:23
ааааааа...
искал но не нашел что хотел......
дайте скрипт чтоби арти командира погибжего в бою передавались победителю....
Миханик
30 Aug 2007, 20:28
Таварищч Sonic! Обнови линки на скрипты.
Скажите, насколько оправдан такой вот подход...
Допустим в скрипте требуется использовать в трёх разных местах код ф-ции (причём, для разных же и целей). Естественно, для этого потребуется занимать под них три разных номера FU-триггера.
А что, если поступить иначе...
Взять всего лишь одну ф-цию, и уже внутри неё настроить эти три момента, а в местах вызова ф-ции использовать !!FU1:P
n...
(где
n - это либо 1, либо 2, либо 3)
Код
!?FU1;
!!набор ресиверов&x1=1;
!!набор ресиверов&x1=2;
!!набор ресиверов&x1=3;
Т.е. задав, к примеру, !!FU1:P2; будет исполняться только та часть ф-ции, которая стоит с условием (x1=2).
Вот я и спрашиваю, стоит ли экономить номера ф-ций ради того, чтобы всего лишь одна ф-ция была универсальна?

Не будет ли тут время задержек всего скрипта выше, нежели при использовании трёх разных ф-ций?
Demiurg
07 Sep 2007, 14:25
Имеет смысл объединять близкие по смыслу функции. Имхо, лучше использовать управляющую v-переменную. Например:
Код
!?FU2222&v2300=1;
...
!?FU2222&v2300=2;
...
!?FU2222&v2300=3;
...
Вообще говоря, сравнения (через & и | после ресиверов или триггеров) требуют значительно меньше времени, чем вызов ресиверов, а тем более функций.
DracoLich
07 Sep 2007, 18:39
А я использовал такой метод:
!!FU1:Pv1/1; - где v1 необходимое число, а 1 - показатель типа действия.
...
!!FU1:Py21/2; - где y21 необходимое значение, а 2 - показатель типа функции.
!?FU1&x2=1;
!!VRx1:*10;
!?FU1&x2=1;
!!VRx1:+10;
И такой код работает как должен
4 Demiurg
Так в данном случае, ф-ция полюбому будет вызываться!

Я имел ввиду именно этот вариант...
Тем более, в моём варианте, не требуется вводить дополнительную переменную, т.к. х1 есть всегда...
На мой вопрос я так и не услышал ответа

(что целесообразнее, наличие трёх разный FU или одна но универсальная???)
По идее, универсальная ф-ция больше в памяти займёт место, зато она одна
gamecreator
07 Sep 2007, 19:07
Цитата(Demiurg @ 07 Sep 2007, 14:25)
Имеет смысл объединять близкие по смыслу функции.
Berserker
07 Sep 2007, 19:22
БЕс, ты всё верно делаешь. Я все первые скрипты свои вешал на одну функцию, но тогда мне в голову не приходило, что v-переменную занимать на это расточительно и иксы рулят.
[Вообще говоря, сравнения (через & и | после ресиверов или триггеров) требуют значительно меньше времени, чем вызов ресиверов, а тем более функций.]
Большую часть времени занимает парсинг самой команды, само же действие равно многим другим ресиверам.
Цитата(gamecreator @ 19 Sep 2007, 15:55)
мне что, нечего делать?

ты лучше скажи что надо сделать чтобы земля выставлялась не "квадратиками", а как в редакторе (!!TR)
Не уверен что правильно понял вопрос... Залезь в аську обсудим...
Блин, как всегда, потратил лишнее время, пока не понял, что триггер !?MF не активируется при повреждении магией :banghaed:
И ведь нигде это не было сказано
Demiurg
23 Sep 2007, 20:50
Цитата(Bes @ 23 Sep 2007, 21:09)
И ведь нигде это не было сказано

Receiver for a stack taking physical damage
Как еще можно понимать физический урон?
Да, но это никак не равнозначно "for magic damage NOT work"

Это всё же следует уточнить, ведь ЕРМ2,80 (на котором 3.58f основан) не имеет поддержки !?MR-триггеров (в отличие от ТЕ), так что
Demiurg
24 Sep 2007, 15:31
В играх, начиная с очень старых, есть традиция делить урон на физический и магический. Те, кто писал хелп, не могли и предположить, что к ним прикапаются.
DracoLich
24 Sep 2007, 15:55
Цитата
ЕРМ2,80 (на котором 3.58f основан) не имеет поддержки !?MR-триггеров
Как это? А как тогда работают те же живые свитки и т.п.? Поддержка-то имеется...
хз...

но вроде только в ТЕ появился !?MR, если я не ошибаюсь.
Если он и под 3,58 будет работать, то тогда DracoLich, пропишите этот триггер в справочник!
gamecreator
24 Sep 2007, 20:41
у него он есть

он там оказывается уже есть... что-то с глазками у меня поплохело
gamecreator
25 Sep 2007, 20:13
из темы "Архив скриптов"
Цитата(LineAger @ 25 Sep 2007, 16:41)
Слушайте, может её вообще не надо писать?! а то я тут один дурак пишу, и больше никто!
ты не один
Цитата(сан-сэй)
Обновил справку до 2.11
спасибо, только что скачал, ура!!!
Один вопрос - почему в некоторых страницах в конце появились большие пустоты (отступы)? Это вы для чего то место заранее резервировали?

(в 2,00 такого нету!)
DracoLich
26 Sep 2007, 02:12
Это для удобства при нажатиях на ссылки последних команд, чтобы не приходилось долго искать при прыжке, на что именно прыгнули - сразу сверху будет та опция...
4 sergroj
В теме для проффи забыли вот это -
http://forum.df2.ru/index.php?showtopic=6293 (Управление календарём © Deo)
DracoLich
28 Sep 2007, 02:25
Demiurg, ShadowTheAge, не возражаете, если включу в справку ваши исследования? (с укзанием вашего авторства)
Demiurg
28 Sep 2007, 09:13
Можешь включить
ShadowTheAge
28 Sep 2007, 10:23
Разумеется, иначе для чего я их проводил?
З.Ы. в теме функции замены константных строк, последняя версия работы с battle log полностью рабочая, однако и в этой функции, и в той, что в первом посте темы, придется менять адреса z переменных в зависимости от версии игры. Для 3.58 это 40225400, а для ТЕ это 9597416.
сан-сэю...
По справке...
Цитата(Trigger !?MR)
Пример:
ZVSE
!?MR2;
!!MR:F0; - все существа полностью иммунны ко всем заклинаниям.
здесь описка... для данного контеста действия надо писать !!MR:F100;
И насчёт материала про "Бонусы опыта существ"... я прописал в нужный фал такю строку "2 s #49 1 1 1 1 1 1 1 1 1 1", но это не работает

(Очарованность Лучников заклом Радость на всех уровнях)
Что не так? Тоже самое при прописывании др. "колдовских" опирациях... Подозреваю, что синтаксис #xx для прописи заклов ошибочен (ведь при остальных + = % всё работает)
Demiurg
28 Sep 2007, 12:25
Да. В английской версии хелпа ошибка. Правильно, как упомянул Bes, !!MR:F100; - для полной имунности. !!MR:F0; - для полной уязвимости.
Не совсем понял, что имеет ввиду Bes. С улучшением существ заклинаниями проблем не возникало.
Я делал так
Код
!!VRy99:Sy1X-1;// y1 - stack #
!!EAy99:F115/29/?y98;// Enchant monster with Basic Fire Shield
!!EAy99:By98/1/115/29/1/1/1/1/1/1/1/1/1/1/1;
Цитата
2 s #49 1 1 1 1 1 1 1 1 1 1
это не для скрипта, а непосредственно для прописывания в
CREXPBON.TXT(в справочнике от DracoLich'а про это есть целая статья)
Я просто хочу все такие абилки (которые через !!EA) из скрипта убрать, и прописать их в текстовик... чтоб сам скрипт меньше весил.
sergroj
29 Sep 2007, 21:22
Лучше оставь в скрипте. Текстовый файл, ведь, не отключить в опциях, и с картой таскать плохо.
Мне не для карты... для эмулятора Гавани. А там никаких отключений не предусмотрено...
Лучше скажите, как надо правильно прописывать
4 Demiurg
Цитата
!!HE#:M=$1/?$2;
$1 - номер заклинания
$2 - переменная, куда получить результат
Я сколько не пробовал, и v# и y# (y-#) и никак

Всё время 0. Ниразу 1 не записалaсь.
А ведь закл я нормально изучал, без всяких свитков и артов...
(примечание: это я всё делал внутри !?AE, может в этом и причина?)
Может всё же этот синтаксис не рабочий?
Покажите ваш пример, где у вас это работало.
Demiurg
02 Oct 2007, 17:07
2BesПримерно так. Копипаст из работающего скрипта. С небольшими сокращениями.
Код
!?CM0; //offline hints for some objects
!!UN:P600/?y-11;//check 'offline mode' option
!!FU&y-11=0:E;
!!CM:I?y-1 S?y-2;
!!FU|y-1<>37/y-2<>14:E;//exit if unproper click
!!CM:P?y-1/?y-2/?y-3;//click position
!!FU23313:P?y-1/?y-2/?y-3/y-1/y-2/y-3;//get real coordinates for some objects
!!FU&1:E;
!!OBy-1/y-2/y-3:T?y-4 C?y-5 U?y-6;
!!if&y-4=81:;//Scholar
!!CM:R0;
!!FU23315:P5/y-4/y-6;//get object name
!!SCy-1/y-2/y-3:T?y-5;
!!if&y-5=2:;//Scholar has
!!SCy-1/y-2/y-3:L?y-6;
!!VRy-6:%256;
!!OW:A-1/?y-7;
!!HEy-7&y-7>=0:My-6/?y-8;
!!if|y-8=0/y-7<0:;
!!IF:Q2/9/y-6/4/z106550;
!!el:;
!!HEy-7:M=y-6/?v1;
!!IF&1:Q2/9/y-6/4/z106552;
!!IF&-1:Q2/9/y-6/4/z106553;
!!en:;
!!en:;
!!en:;
Хм... дополнительные вопросы:
!!HEy-7:M=y-6/?v1;
Но почему тогда вы в условии пишите не &v1=1 (или 0) , а &1 (или &-1)

результат то записывается в v1, а вы проверяете на флаг 1.
Номер переменной что ли отождествляется с одно-номерным флагом? так что ли?
Demiurg
02 Oct 2007, 19:58
Похоже, я не прав. Вообще, в ERM передача номера переменной известный прикол. Например в том же ресивере !!FU при использовании получающего синтаксиса номер переменной передается в качестве параметра. Я знаю, что приведенный код рабочий. Ибо тестил его не раз. А как правильно на самом деле, в таком случае, сказать не могу.
я только что своял код, на осовании ваших успехов с HE#:M=$1/?$2
И вы знаете всё работает как надо.
Вывод:
Синтаксис работает следующим образом...
!!HE#:M=$1/?$2 # - номер героя
$1 - интересуемый закл
Касаемо ?$2 скажу, что здесь надо писать переменную (проверял только на v), номер которой отождествляется с номеров флага, куда будет отражаться результат сверки. Т.е. ?v не берётся всчёт.
Пример:
Цитата
!!HEy-7:M=y-6/?v1;
!!IF&1:M^закл изучен героем^;;
!!IF&-1:M^закл герой не знает, он даётся либо Свитком либо Томом магии^;
Т.е. здесь всё же идёт получение результата во флаг, а
?v всего лишь ширма (без которой проверка не состоятельна)
Demiurg, запишите это в ветку багов (в свой чёрный список), либо это надо в теме "ЕРМ для проффи" отразить.
Demiurg
02 Oct 2007, 22:47
Да похоже в хелпе все правильно написано. Например:
Код
!!HEy-7:M=y-6/1;
!!IF&1:M^закл изучен героем^;
!!IF&-1:M^закл герой не знает, он даётся либо Свитком либо Томом магии^;
незнаю, если просто указывать номер флага, то у меня ничего не выходило... а с ?v всё заработало
Demiurg
03 Oct 2007, 12:51
x3, у меня вчера правильный синтаксис с флагом 1 заработал. Даже не знаю, что сказать. С ?v тоже работает. Но это, имхо, благодаря особенностям ERM.
а с др. номером флага не пробовали?
может только с первым номером и работает, а с др. уже нет?

в общем, работает и ладно, такая проверка как никак реально полезна и нужна, за что спасибо ЕРМ!
скажите, когда выскакивает экран мега-ошибки в героях, то как распознать где искать причину?
К примеру, если выскочит...
Цитата
*****_Exception_(trace_details)_*****
### Location: 8 : 28
...
### Location: 1 : 688
***** Context (100 chars) *****
;
!?FU24088;
!!BMx16:P?y4;
!!FU|y4<0/y4>186:E;
!!VRy1:S0;
!!BU:Dy4/?y1;
!!FU&y1>-2:E;
***********************
### Location: 1 : 59
...
### Location: 6 : 5520
***** Context (100 chars) *****
;
***********************
### Location: 4 : 164
EIP = {0x00495B00}, Access Violation. Attempt to {read} the inaccessible data at {0x00000030}
The Latest Executed ERM Receiver:
BU:R;
Register Context:
EAX = 0x043D3C4C
...
, то где скрывается баг?
(хотя бы укажите "до чего" или "после чего" на вышеуказанном примере)
Спасибо!
Demiurg
06 Oct 2007, 20:42
Причина обычно связана с строчкой указанной в
The Latest Executed ERM Receiver
Но игра может и по независимым от ERM причинам вылететь. Например при неправильном содержимом лода или некорректных изменений в exe'шнике или памяти героев. В этом случае тоже может выдавать wogcrashlog. Однако, указанные там команды ERM не имеют значения.
gamecreator
06 Oct 2007, 21:06
Цитата(Demiurg @ 06 Oct 2007, 20:42)
Но игра может и по независимым от ERM причинам вылететь.
Может команды ЕРМ пытаются использовать те некорректные данные.
Demiurg
06 Oct 2007, 21:48
Цитата(gamecreator @ 06 Oct 2007, 22:06)
Цитата(Demiurg @ 06 Oct 2007, 20:42)
Но игра может и по независимым от ERM причинам вылететь.
Может команды ЕРМ пытаются использовать те некорректные данные.
Не в этом дело. Последний запущенный ресивер мог быть запущен и только что, и несколько недель игровых недель назад. Крешлог в последнем случае абсолютно не причем. Игра, если имеет возможность создать его при вылете, создает. Независимо от причины вылета.
...модераторам и суперам!!!
перенесите пожалуйста из "Вопросника" посты №293, 296 и 298 (можно их в один объединить) в отдельную тему (можно даже прикрепить и пихнуть в "Heroes3,5 WoG"). А то народ в разных темах спрашивает (и в скриптах, и в ТЕ), а вопрос довольно таки часто поднимаемый.
sergroj
08 Oct 2007, 17:46
Сделал
Docent Picolan
08 Oct 2007, 17:53
может её лучше закрыть во избежание флуда?
Поправка по ресиверу !!РМ
В справке написано, что синтаксис использования такой: !!PM:XXXX;
Но на самом деле такой: !!PM#1/#2/#3:XXXX; или упращённый !!PM$:XXXX;
да не будет там флуда, а вот прикрепить не помешает
Добавлено ([mergetime]1191866361[/mergetime]):
спасибо, sergroj
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.