Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросник
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
gamecreator
y и -

Добавлено ([mergetime]1189357687[/mergetime]):
и х

Добавлено ([mergetime]1189357719[/mergetime]):
а еще не сохраняются временные переменные и флаги
Berserker
Вообще-то это всё детально расписано в справочнике в разделе переменных.

Локальные: y1..100, y-1 .. y-100, e1..e100, e-1..e-100, z-1..z-10,x1..x16 и прочие.
Bes
Кто-нибудь пробовал в действии !!HE#:R7/$

Я пробовал через это съэмулировать посещение гробницы, да только ничего не вышло... Толи я что-то не так сделал, то ли эта команда работает не стабильно. В общем, выводилось совсем другое, да ещё и в удачу что-то добалялось dry.gif
Короче, я так и не смог добиться нормальной реакции на задаваемый мною код. banghead.gif
Bes
Скажите...
- что за команда такая !#CD:B2 unsure.gif (ERM 3.0 only)
В справочнике есть только В0, В1 и В3.

- Можно ли, к примеру для !!IF, писать параметры ресивера без отступа... !!IF:V1/0V2/1; unsure.gif

- что за синтаксис такой, когда для ресивера пишут не !!, а ! !
Ведь это не одно и тоже, ведь так?
Demiurg
Цитата(Bes @ 11 Sep 2007, 19:52)
- Можно ли, к примеру для !!IF, писать параметры ресивера без отступа... !!IF:V1/0V2/1; unsure.gif

Не пробовал. Думаю, что можно. Кажется, где-то видел.

Цитата
- что за синтаксис такой, когда для ресивера пишут не !!, а ! !
Ведь это не одно и тоже, ведь так?

Это не синтаксис)
Это простейший способ закомментировать(выключить) ресивер.
Bes
И ещё...
- Меня смущает вот это !!VRy1:S10 R5 S10 R5;
Разве здесь не идёт повторение действия?

- Если делать прерывание в ф-ции через FU:E, что меняется когда эту оперцию писать с номером этой ф-ции? Т.е. !!FU25&y1=4:E;
Разве не проще просто !!FU&y1=4:E;
Demiurg
Цитата(Bes @ 11 Sep 2007, 23:32)
И ещё...
- Если делать прерывание в ф-ции через FU:E, что меняется когда эту оперцию писать с номером этой ф-ции? Т.е. !!FU25&y1=4:E;
Разве не проще просто !!FU&y1=4:E;

Этот параметр скорее всего не используется, то есть можно поставить вместо 25 что угодно. Однако, в будущих версиях возможно будет иметь смысл
Код
!?FUv1&v1>0;
...
!!FU23:E;// выход, только для функции 23
...

Сейчас же синтаксис !?FU<variable>; не поддерживается.
Bes
Скажите, пожалуйста, что это такое:
""Apply"-wrong indexing var type in "?$$$" (1...[10000])."

-----Context-----
A101/4/v6101; !!VRy2:Sv6101-2; !!UN:N3/?z1/y2/1; !!DL3:A111/3/z1;
!!DL3:A201/4/v6201; !!VRy2:Sv6201-2; !!UN:N3/?z2/y2/1; !!DL3:A211/3/z2;
!!DL3:A102/4/v6102; !!VRy2:Sv6102-2; !!UN:N3/?z3/y2/1; !!DL3:A.....

Я так и не понял, что за ошибке и где она там dry.gif
Demiurg
Цитата(Bes @ 12 Sep 2007, 14:05)
A101/4/v6101;

ошибка в этой команде. Только вот начало у нее ERM уже прожевал, а дальше встретил нечто несъедобное и выплюнул в wogcrashlog (wogermlog). Говорит, что неверен идекс v-переменной.
gamecreator
Цитата(Demiurg @ 11 Sep 2007, 22:57)
Можно несколько упростить это выражение:
!!VRy1:S20 R5 R5;

не получится.
в оригинале: у1=10, у1=у1+[0..5], у1=10, у1=у1+[0..5].
у тебя: у1=20, у1=у1+[0..5]+[0..5].
что, согласись, не одно и то же
Demiurg
Цитата(gamecreator @ 12 Sep 2007, 21:37)
что, согласись, не одно и то же

Действительно. Тогда замысел автора воистину непонятен.
Bes
вот я я про тоже...
что-то Deo намудрил с генерацией... не проще было просто !!VRy1:S10 R5; unsure.gif
Deo
Хотел увеличить фактор случайности.
>A101/4/v6101;
С инструкцией DL:A коряво работает TE.
gamecreator
Цитата(Deo @ 13 Sep 2007, 14:28)
Хотел увеличить фактор случайности.

используй Т
Bes
Что за синсаксис такой: idontno.gif
!!HE-1:M=65/598;

Смысл я его понял...Т.е. если Клон есть в книге, то флаг 598 установить в истину.
Но вот такой способ я первый раз вижу.
gamecreator
это работает?
Bes
нет, но интересно, что имел ввиду автор, прописывая это (вдруг он знает что-то, чего не знаю я)
Demiurg
Автор хотел узнать в флаг #598, выучен спелл #65 у героя или он имеет этот спелл от артефакта.
Bes
так всё же, есть такой синтаксис???
(где про это в справке почитать???)
Demiurg
Однако, автор не учел, содержащуюся в хелпе ошибку. Правильным является синтаксис:
!!HE:M=#/?$;
# - номер заклинания
$ - переменная, куда получить результат

Например:
!!HEy-7:M=y-6/?v1;
Bes
Подскажите пожалуйста, каким способом (конкретно триггер и его параметры) лучше в битве считывать опытность того или иного отряда (в частности атакующего и атакуемого)??? unsure.gif
Под опытностью я подразумеваю уровень опыта отряда (10 уровней которые)
Очень надо, а я никак не могу сообразить как это мне делать sorry.gif

Спасибо!!!!!!!
Demiurg
Имхо, простого способа не существует.
Bes
Блин, ну хоть какой, я такого не разу не делал и не знаю как dry.gif
Если можно, маленький пример sorry.gif

Пожалуйста!!! Кто-нибудь!!! pray.gif
Demiurg
По идее нужно делать так:
1) Получаем количество опыта у стека с помощью !!EA:E
2) Получаем максимальный опыт существа с помощью !!EA:L
3) Исходя из значения максимального опыта устанавливаем какому количеству опыта соответствует какой ранг
4) Смотрим, в какой диапазон попадает текущее количество опыта и, таким образом, определяем ранг.
Только есть подозрение, что !!EA:E не работает в получающем синтаксисе (под TE)
Ну и геморно все это.
Bes
Цитата(Druin)
MA:L
К сожалению, это не завяжешь к конкретному отрыду dry.gif
Блин, что же мне делать (абилки существ тогда "горят" sad.gif )
Druin
Че значит не привяжешь?... Проверяешь по BM:T тип монстра в стеке, а после получаешь уровень...
sergroj
Цитата(Demiurg @ 18 Sep 2007, 03:00)
Однако, автор не учел, содержащуюся в хелпе ошибку. Правильным является синтаксис:
!!HE:M=#/?$;
# - номер заклинания
$ - переменная, куда получить результат

Например:
!!HEy-7:M=y-6/?v1;

Ты уверен?? А то твой снтаксис противоречит общим принцыпам снтаксиса ЕРМ, в отличие от описанного в erm_help.
Demiurg
Цитата(sergroj @ 20 Sep 2007, 21:06)
Цитата(Demiurg @ 18 Sep 2007, 03:00)
Однако, автор не учел, содержащуюся в хелпе ошибку. Правильным является синтаксис:
!!HE:M=#/?$;
# - номер заклинания
$ - переменная, куда получить результат

Например:
!!HEy-7:M=y-6/?v1;

Ты уверен?? А то твой снтаксис противоречит общим принцыпам снтаксиса ЕРМ, в отличие от описанного в erm_help.

Святая правда. Меня это тоже удивило. Но это оказался единственный рабочий синтаксис.
Bes
Цитата(Druin)
Че значит не привяжешь?... Проверяешь по BM:T тип монстра в стеке, а после получаешь уровень...
Но ведь MA:X работает для всех сразу! ...вдруг я буду атаковать тем же существом, как атакованный (атакер и жертва одинакового типа). Тут такой вариант не годится... sad.gif

имхо (может я ошибаюсь unsure.gif)
Berserker
Всё просто.
1) EX:E

E$1/$2/$3/$4;
$1 - experience points
$2 - modifier (as for HE:C modifier - parameter 6)
$3 - creature type
$4 - creature number

Comment:
You may use this command ONLY for a stack on a battlefield.
So it should be !!EA-1:... !!EA-42:...

Итак, номер нужного стёка *-1, затем получаем его опыт.

Далее, скорее всего монстры качаются равномерно. Вывод: EX:L
Получили опыт для 10-го ранга

Делим на 10 - получаем кол-во опыта на 1 ранг.

Делим текущий опыт на ранговый_опыт и получаем ранг нужного стёка.
gamecreator
Цитата(Bes @ 20 Sep 2007, 20:44)
Но ведь MA:X работает для всех сразу!

все намного проще. BM:F
Demiurg
Цитата(Berserker @ 20 Sep 2007, 21:54)
Всё просто.
1) EX:E

E$1/$2/$3/$4;
  $1 - experience points
  $2 - modifier (as for HE:C modifier - parameter 6)
  $3 - creature type
  $4 - creature number

Comment:
You may use this command ONLY for a stack on a battlefield.
So it should be !!EA-1:... !!EA-42:...

Зачем народ путать. Не EX:E, а EA:E. Кроме того, я сомневаюсь в работоспособности читающего синтаксиса данной команды под TE.

Цитата
Итак, номер нужного стёка *-1, затем получаем его опыт.

И здесь ты не прав. Нужно применить операцию инверсии всех битов.
!!VR:X-1;

Цитата
Далее, скорее всего монстры качаются равномерно.

Плюнь в лицо тому, кто тебе это сказал!!!

Цитата
Вывод: EX:L
Получили опыт для 10-го ранга

И здесь похоже ты перепутал с !!EA:L И кстати не для десятого, а для 11ого.
Berserker
//Зачем народ путать. Не EX:E, а EA:E. Кроме того, я сомневаюсь в работоспособности читающего синтаксиса данной команды под TE.

Спутал случайно. Но всё работает, это раз

//И здесь ты не прав. Нужно применить операцию инверсии всех битов.
!!VR:X-1;

Пожалуйста +1*-1

//Плюнь в лицо тому, кто тебе это сказал!!!
Я ещё в животное не превратился и даже не произошёл от них smile.gif
А что, не так?

//И здесь похоже ты перепутал с !!EA:L И кстати не для десятого, а для 11ого.

Да я назвал ресиверы наоборот, но уровень 10! 1-10.Ведь ранг 0 - нет ранга
Demiurg
Монстры качаются очень неравномерно. Между 9м и 10м рангом разница примерно 14% от опыта 10ого ранга существа. А между 0м и 1м разница примерно 5% от опыта 10ого ранга. А 11ый ранг - максимальное количество опыта. Ибо опыт продолжает расти после достижения 10ого ранга вплоть до 11ого. На 11ом ранге никаких дополнительных бонусов не дают, но опыт дальше перестает расти.
Berserker
Посмотрел я опыт монстров, разница между рангами - не константаная величена, а арифм прогрессия, вроде для глаз:

2000, 2400, 2800, 3200...с d=400

В среднем даёт 3500, что В СРЕДНЕМ отражает суть. То есть на 5 ранге будет норма, а отклонения незначительны для скрипта.

Добавлено ([mergetime]1190316536[/mergetime]):
10 ранг - последний значящий. 11 - бессмысленный

Добавлено ([mergetime]1190316654[/mergetime]):
посмотрел драконов, уже другой подход. Вывод: всё делалось от балды.
Посему берём среднее.
Demiurg
С помощью !!EA:L действительно устанавливается 10ый уровень. Но 11ый ранг все равно есть.
Berserker
Итак,
с = const для каждого уровня
d = уровень_моснтра+1*100

1 ранг - c, второй c+c, третий c+c+d, четвёртый c+c+c+d+d...

Добавлено ([mergetime]1190317916[/mergetime]):
c=уровень*500+500
Bes
Всё это хорошо, спасибо за напутсвия...
Но есть одна маленькая проблема sad.gif
Для боевых нужд у !!EA поддерживается только 4 параметра: E, D, O, R (согласно англ. html-help)
Так что все мои попытки заполучить макс. опыт через EA-#:L?$; оказались тщетны, там всё время 0!
Ладно, попробую выкрутиться, хотя надежд мало dry.gif

ЗЫ:4 gamecreator
Цитата(gamecreator)
Цитата(Bes @ 20 Sep 2007, 20:44)
Но ведь MA:X работает для всех сразу!

все намного проще. BM:F
я тут описался, я говорил про MA:L sorry.gif
Demiurg
Цитата(Bes @ 21 Sep 2007, 14:23)
Для боевых нужд у !!EA поддерживается только 4 параметра: E, D, O, R (согласно англ. html-help)
Так что все мои попытки заполучить макс. опыт через EA-#:L?$; оказались тщетны, там всё время 0!

Ты не много не понял.
В ресивер EA:L нужно подставлять тип существа, который, зная номер стека ты можешь легко определить.
gamecreator
Цитата(Bes @ 21 Sep 2007, 13:23)
я говорил про MA:L sorry.gif

эээ.. а зачем менять уровень конкретному стеку?
Bes
менять не требуется, требуется считывать его!
Но я решил это проблему! yes.gif
Теперь всё работает, ура!

Добавлено ([mergetime]1190394435[/mergetime]):
Цитата(Demiurg)
Ты не много не понял.
В ресивер EA:L нужно подставлять тип существа, который, зная номер стека ты можешь легко определить.
Всё равно не понял, что вы мне пытались разъяснить banghead.gif sad.gif
В справке говориться, что используя EA:L можно задать/получить макс. уровень (т.е. предел по опыту), на сколько я это понял...
Я для этого использую !!ЕА$тип монстра$:L?y1;
а когда пытался !!ЕА$-стэк монстра$:L?y1;, то ничего не получал...
Вот.
Demiurg
Цитата(Bes @ 21 Sep 2007, 21:07)
В справке говориться, что используя EA:L можно задать/получить макс. уровень (т.е. предел по опыту), на сколько я это понял...
Я для этого использую !!ЕА$тип монстра$:L?y1;
а когда пытался !!ЕА$-стэк монстра$:L?y1;, то ничего не получал...
Вот.

Ну дык.
!!BM<номер стек монстра>:T?<тип монстра>;
!!EA<тип монстра>:L?<максимальный опыт монстра>;

Конечно возможны накладки в случае, если в процессе битвы скриптом менялся тип монстра. Но этим случаем можно и пренебречь. Или обрабатывать его отдельно.

А команда
!!EA<отрицательный номер стека>:L?<максимальный опыт монстра>;
как ты верно заметил, не поддерживается.
Bes
Скажите, а как можно следить за определённым стэком, когда колдуется либо проладное заклинание, либо какое-то заклинание на эксперт.уровне (типа, медлительность)...
Чтоб после проверки, накладывается ли на этот стэк закл, давать ему, к примеру, невосприимчевость к этой щколе магии...
у меня только при непосредственном наложении на стэк срабатывает код, а так выдаёт ошибку типа "немогу знать кто щас подвергается магии
Demiurg
Можно следить. Но там очень сложный код. Это связано с двумя моментами.
1) Не работает команда MR:N? - должна возвращать номер стека, на который кастуется магия (под TE)
2) Триггер MR2 срабатывает очень хитро

Возможно, тебе поможет команда MR:T - она корректно возвращает тип стека, на который кастуется магия в данный момент.
Bes
а MR:T надо в !?MR# юзать? В 0-вом, 1-ом или 2-ом? unsure.gif
(извините ,если покажусь "тугим" sorry.gif )

PS: а есть ли где такое, чтоб посмотреть в реализации (в скриптах ТЕ илиWоG)?
Demiurg
Не видел скриптов, которые это использовали. Использовать можно в любом из этих триггеров. MR0 и MR1 происходят только для ударных заклов. MR2 происходит для всех.
DracoLich
Без разницы. А вот реализацию не помню...
ShadowTheAge
Вопрос. Реально ли привязать ERT-файл к карте? (не к скрипту).

Сабж: Мне нужно развесить комментарии к уже 160 объектам диалога. Тратить для этого 160 z переменных будет транжирством. Но в хелпе написано, что хинт может быть также и статичной переменной, но для этого нужно создать ert файл, как его прицепить к скрпту понятно, а что насчет карты?
gamecreator
также, как ты прикрепил скрипт
ShadowTheAge
скрипт находится в global event'ах. Даже если его вынести в папку с картой, ert файл не цепляется
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.