Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Флейм
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Berserker
Бес, а что вы хотите получить? Вы ничего не указываете, а хотите получить слот и тип монстра smile.gif Откуда? smile.gif smile.gif smile.gif
Bes
А как тогда вести сверку: какой монстр "сидит" в слоте по которому кликается мышка (к примеру ПКМ)? (в окне героя) idontno.gif

Я таким образом хотел проверять на наличие нужного мне монстра unsure.gif
gamecreator
!?CM2;
!!CM:I?y1;
!!FU|y1<68/y1>74:E;
!!VRy1:-68;
!!HE-1:C0/y1/?y2/?y3;

теперь в у2 тип монстра, а в у3 - количество.
lotus13
ааааааа...
искал но не нашел что хотел......
дайте скрипт чтоби арти командира погибжего в бою передавались победителю....
Миханик
Таварищч Sonic! Обнови линки на скрипты.
Bes
Скажите, насколько оправдан такой вот подход...

Допустим в скрипте требуется использовать в трёх разных местах код ф-ции (причём, для разных же и целей). Естественно, для этого потребуется занимать под них три разных номера FU-триггера.

А что, если поступить иначе...
Взять всего лишь одну ф-цию, и уже внутри неё настроить эти три момента, а в местах вызова ф-ции использовать !!FU1:Pn...
(где n - это либо 1, либо 2, либо 3)
Код
!?FU1;
!!набор ресиверов&x1=1;
!!набор ресиверов&x1=2;
!!набор ресиверов&x1=3;

Т.е. задав, к примеру, !!FU1:P2; будет исполняться только та часть ф-ции, которая стоит с условием (x1=2).

Вот я и спрашиваю, стоит ли экономить номера ф-ций ради того, чтобы всего лишь одна ф-ция была универсальна? unsure.gif
Не будет ли тут время задержек всего скрипта выше, нежели при использовании трёх разных ф-ций? unsure.gif
Demiurg
Имеет смысл объединять близкие по смыслу функции. Имхо, лучше использовать управляющую v-переменную. Например:
Код
!?FU2222&v2300=1;
...
!?FU2222&v2300=2;
...
!?FU2222&v2300=3;
...

Вообще говоря, сравнения (через & и | после ресиверов или триггеров) требуют значительно меньше времени, чем вызов ресиверов, а тем более функций.
DracoLich
А я использовал такой метод:
!!FU1:Pv1/1; - где v1 необходимое число, а 1 - показатель типа действия.
...
!!FU1:Py21/2; - где y21 необходимое значение, а 2 - показатель типа функции.

!?FU1&x2=1;
!!VRx1:*10;

!?FU1&x2=1;
!!VRx1:+10;

И такой код работает как должен
Bes
4 Demiurg

Так в данном случае, ф-ция полюбому будет вызываться! yes.gif
Я имел ввиду именно этот вариант...
Тем более, в моём варианте, не требуется вводить дополнительную переменную, т.к. х1 есть всегда...

На мой вопрос я так и не услышал ответа sad.gif
(что целесообразнее, наличие трёх разный FU или одна но универсальная???)
По идее, универсальная ф-ция больше в памяти займёт место, зато она одна unsure.gif
gamecreator
Цитата(Demiurg @ 07 Sep 2007, 14:25)
Имеет смысл объединять близкие по смыслу функции.
Berserker
БЕс, ты всё верно делаешь. Я все первые скрипты свои вешал на одну функцию, но тогда мне в голову не приходило, что v-переменную занимать на это расточительно и иксы рулят.

[Вообще говоря, сравнения (через & и | после ресиверов или триггеров) требуют значительно меньше времени, чем вызов ресиверов, а тем более функций.]

Большую часть времени занимает парсинг самой команды, само же действие равно многим другим ресиверам.
Druin
Цитата(gamecreator @ 19 Sep 2007, 15:55)
мне что, нечего делать? smile.gif
ты лучше скажи что надо сделать чтобы земля выставлялась не "квадратиками", а как в редакторе (!!TR)

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

Receiver for a stack taking physical damage
Как еще можно понимать физический урон?
Bes
Да, но это никак не равнозначно "for magic damage NOT work" dry.gif
Это всё же следует уточнить, ведь ЕРМ2,80 (на котором 3.58f основан) не имеет поддержки !?MR-триггеров (в отличие от ТЕ), так что moral.gif
Demiurg
В играх, начиная с очень старых, есть традиция делить урон на физический и магический. Те, кто писал хелп, не могли и предположить, что к ним прикапаются.
DracoLich
Цитата
ЕРМ2,80 (на котором 3.58f основан) не имеет поддержки !?MR-триггеров

Как это? А как тогда работают те же живые свитки и т.п.? Поддержка-то имеется...
Bes
хз... unsure.gif
но вроде только в ТЕ появился !?MR, если я не ошибаюсь.
Если он и под 3,58 будет работать, то тогда DracoLich, пропишите этот триггер в справочник!
gamecreator
у него он есть
Bes
banghead.gif
он там оказывается уже есть... что-то с глазками у меня поплохело biggrin.gif
gamecreator
из темы "Архив скриптов"

Цитата(LineAger @ 25 Sep 2007, 16:41)
Слушайте, может её вообще не надо писать?! а то я тут один дурак пишу, и больше никто!

ты не один smile.gif
Bes
Цитата(сан-сэй)
Обновил справку до 2.11
спасибо, только что скачал, ура!!!
Один вопрос - почему в некоторых страницах в конце появились большие пустоты (отступы)? Это вы для чего то место заранее резервировали? unsure.gif
(в 2,00 такого нету!)
DracoLich
Это для удобства при нажатиях на ссылки последних команд, чтобы не приходилось долго искать при прыжке, на что именно прыгнули - сразу сверху будет та опция...
Bes
4 sergroj

В теме для проффи забыли вот это - http://forum.df2.ru/index.php?showtopic=6293 (Управление календарём © Deo)
DracoLich
Demiurg, ShadowTheAge, не возражаете, если включу в справку ваши исследования? (с укзанием вашего авторства)
Demiurg
Можешь включить
ShadowTheAge
Разумеется, иначе для чего я их проводил?
З.Ы. в теме функции замены константных строк, последняя версия работы с battle log полностью рабочая, однако и в этой функции, и в той, что в первом посте темы, придется менять адреса z переменных в зависимости от версии игры. Для 3.58 это 40225400, а для ТЕ это 9597416.
Bes
сан-сэю...

По справке...
Цитата(Trigger !?MR)
Пример:
ZVSE
!?MR2;
!!MR:F0;
- все существа полностью иммунны ко всем заклинаниям.
здесь описка... для данного контеста действия надо писать !!MR:F100;

И насчёт материала про "Бонусы опыта существ"... я прописал в нужный фал такю строку "2 s #49 1 1 1 1 1 1 1 1 1 1", но это не работает sad.gif
(Очарованность Лучников заклом Радость на всех уровнях)
Что не так? Тоже самое при прописывании др. "колдовских" опирациях... Подозреваю, что синтаксис #xx для прописи заклов ошибочен (ведь при остальных + = % всё работает)
sad.gif
Demiurg
Да. В английской версии хелпа ошибка. Правильно, как упомянул 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;
Bes
Цитата
2 s #49 1 1 1 1 1 1 1 1 1 1
это не для скрипта, а непосредственно для прописывания в CREXPBON.TXT
(в справочнике от DracoLich'а про это есть целая статья)

Я просто хочу все такие абилки (которые через !!EA) из скрипта убрать, и прописать их в текстовик... чтоб сам скрипт меньше весил.
sergroj
Лучше оставь в скрипте. Текстовый файл, ведь, не отключить в опциях, и с картой таскать плохо.
Bes
Мне не для карты... для эмулятора Гавани. А там никаких отключений не предусмотрено...

Лучше скажите, как надо правильно прописывать sad.gif
Bes
4 Demiurg

Цитата
!!HE#:M=$1/?$2;
$1 - номер заклинания
$2 - переменная, куда получить результат

Я сколько не пробовал, и v# и y# (y-#) и никак banghead.gif
Всё время 0. Ниразу 1 не записалaсь.
А ведь закл я нормально изучал, без всяких свитков и артов...
(примечание: это я всё делал внутри !?AE, может в этом и причина?)

Может всё же этот синтаксис не рабочий?
Покажите ваш пример, где у вас это работало.
Demiurg
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:;
Bes
Хм... дополнительные вопросы:

!!HEy-7:M=y-6/?v1;
Но почему тогда вы в условии пишите не &v1=1 (или 0) , а &1 (или &-1) blink.gif
результат то записывается в v1, а вы проверяете на флаг 1.
Номер переменной что ли отождествляется с одно-номерным флагом? так что ли?
Demiurg
Похоже, я не прав. Вообще, в ERM передача номера переменной известный прикол. Например в том же ресивере !!FU при использовании получающего синтаксиса номер переменной передается в качестве параметра. Я знаю, что приведенный код рабочий. Ибо тестил его не раз. А как правильно на самом деле, в таком случае, сказать не могу.
Bes
я только что своял код, на осовании ваших успехов с 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
Да похоже в хелпе все правильно написано. Например:
Код
 !!HEy-7:M=y-6/1;
 !!IF&1:M^закл изучен героем^;
 !!IF&-1:M^закл герой не знает, он даётся либо Свитком либо Томом магии^;
Bes
незнаю, если просто указывать номер флага, то у меня ничего не выходило... а с ?v всё заработало dry.gif
Demiurg
x3, у меня вчера правильный синтаксис с флагом 1 заработал. Даже не знаю, что сказать. С ?v тоже работает. Но это, имхо, благодаря особенностям ERM.
Bes
а с др. номером флага не пробовали?
может только с первым номером и работает, а с др. уже нет? idontno.gif

в общем, работает и ладно, такая проверка как никак реально полезна и нужна, за что спасибо ЕРМ! smile.gif
Bes
скажите, когда выскакивает экран мега-ошибки в героях, то как распознать где искать причину?
К примеру, если выскочит...
Цитата
*****_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
Причина обычно связана с строчкой указанной в
The Latest Executed ERM Receiver
Но игра может и по независимым от ERM причинам вылететь. Например при неправильном содержимом лода или некорректных изменений в exe'шнике или памяти героев. В этом случае тоже может выдавать wogcrashlog. Однако, указанные там команды ERM не имеют значения.
gamecreator
Цитата(Demiurg @ 06 Oct 2007, 20:42)
Но игра может и по независимым от ERM причинам вылететь.

Может команды ЕРМ пытаются использовать те некорректные данные.
Demiurg
Цитата(gamecreator @ 06 Oct 2007, 22:06)
Цитата(Demiurg @ 06 Oct 2007, 20:42)
Но игра может и по независимым от ERM причинам вылететь.

Может команды ЕРМ пытаются использовать те некорректные данные.

Не в этом дело. Последний запущенный ресивер мог быть запущен и только что, и несколько недель игровых недель назад. Крешлог в последнем случае абсолютно не причем. Игра, если имеет возможность создать его при вылете, создает. Независимо от причины вылета.
Bes
...модераторам и суперам!!!

перенесите пожалуйста из "Вопросника" посты №293, 296 и 298 (можно их в один объединить) в отдельную тему (можно даже прикрепить и пихнуть в "Heroes3,5 WoG"). А то народ в разных темах спрашивает (и в скриптах, и в ТЕ), а вопрос довольно таки часто поднимаемый.
sergroj
Сделал
Docent Picolan
может её лучше закрыть во избежание флуда?
Bes
Поправка по ресиверу !!РМ
В справке написано, что синтаксис использования такой: !!PM:XXXX;
Но на самом деле такой: !!PM#1/#2/#3:XXXX; или упращённый !!PM$:XXXX;
Bes
да не будет там флуда, а вот прикрепить не помешает wink.gif

Добавлено ([mergetime]1191866361[/mergetime]):
спасибо, sergroj smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.