Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ERM: Вопросы и ответы
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52
MasterOfPuppets
Как использовать XOR? О_о
Приведите, плиз, пример рабочего кода.
ShadowDF2
!!IFX5/6:M^Если ты видишь это, то либо -5 и 6, либо -6 и 5 smile.gif^;
Исключающее или, тоже самое, как и в программировании, условие (X5/6) значит, что если флаги 5 и 6 истина или ложь оба одновременно, ресейвер не выполнится. Флаги должны быть разными по значению.
Iv
Поставил боевому заклинанию "Удалить препятствие" признак "adventure spell". Заклинание появилось в походной маг. книге, но по клику на нем ничего не происходит. Как перехватить клик на такой заклялке?
major
попробуй поэкспериментировать с !?MG1; (в v997 будет хранится номер закла)
Iv
В ERM-help z не нашел такого триггера. Что это за команда?
ShadowDF2
Вроде есть оО
Перехватывает заклинание на карте приключений на карте
major
Цитата
Каст заклинаний на карте приключений
!?MG0; - триггер до каста
!?MG1; - триггер после каста
Порядок работы:
- игрок нажимает на кнопку "сотворить заклинание"
- срабатывает !?MG0;
- появляется Книга Заклинаний и игрок выбирает спелл
- собственно, кастуется спелл
- срабатывает !?MG1; (номер произнесенного заклинания хранится в v997)

Комментарий:
Это не работает для компьютерных игроков, только для людей.
MasterOfPuppets
Цитата
!!IFX5/6:M^Если ты видишь это, то либо -5 и 6, либо -6 и 5^;

А ты проверял эту команду? Вместо неё задаётся вопрос Сфинкса, а потом идут ошибки.
MasterOfPuppets
Я потому и сказал - "пример рабочего кода", потому что, на мой взгляд, XOR вообще не поддерживается. Х в любом ресейвере воспринимается как wrong syntax.
ShadowDF2
Лол. Писал на память своего перевода 2хлетней давности. Мб где-то накосил в синтаксисе. Имо если бы не поддерживался, не был бы в справке.
major
Похоже, что XOR работает только в логических операциях над числами, типа как !!VRy1:Xy2;
Видимо это баг, потому что похоже внутри ЛЮБЫХ ресиверов выводится вопрос сфинкса.
hippocamus
Кто скажет - какой формат и назначение триггера !?LD в 3.59 и рессиверов !!BG:C и !!BG:V ?
ShadowDF2
Рли? Не знал smile.gif Помню что IF:X и есть вызов вопроса сфинкса, а так как необязательно разделять ресивер и команду двоеточием, скорее всего они просто читаются именно как вопрос.
(т.е. HE#:C и HE#C одинаково читаются)
Пробовали на других ресиверах проверять?

Добавлено ([mergetime]1239287575[/mergetime]):
Бтв надо хелп перечитать. Там определенно был пример использования
MasterOfPuppets
Может, его раньше использовали, потом сломали но нечайке, а в хэлпе убрать забыли.
XOR мне, в общем-то, не нужен. Просто охота было разобраться.
hippocamus
Да ксор вообще крайне редко бывает нужен.
Разве что только для простой шифровки.
ShadowDF2
Цитата
X$
XOR [1X1=0; 1X0=1; 0X1=1; 0X0=0]
"X" does a logical XOR on the bits of a variable. Command will execute if only one condition is true and other(s) false.

Находится в !!VR. Скорее всего, используется именно для битовых операций. Хотя что странно, пример явно не битовый
Цитата
!!FUX5/7:E; exit a function if (flag 5 is set and flag 7 isn't set) or (flag 5 isn't set and flag 7 is set). (Only) one condition must be true and others MUST be NOT true!

В общем, непоняяятно
sergroj
Сейчас такого синтаксиса нету, где ты его нашел?
А xor вот: !!VR:X
!!VRv1:Xv2; - это v1 = v1 xor v2
ShadowDF2
!!VR там и нашел. Но пример указан, см. пред пост. Т.е. раньше он работал? )
ERMMASTER
0x01000000 = 16777216
В этом раунде битвы отряду выпала мораль.

Сработавшую мораль определить можно, а на удачу флаг нигде не могу найти
Ни в ERM help ни где-либо еще, может кто знает как определить срабатывание удачи?

Мне нужно сделать такую фишку:
Когда срабатывает удача есть 50% шанс нанести 3х урона вместо 2х

Невижу в осуществлении никаких проблем, кроме описанной выше...
Помогите плиз
gamecreator
а я не вижу вообще никаких проблем
ERMMASTER
Я уже тоже.
Спасибо....
MasterOfPuppets
!!DO1/1/1000/1:P;
!?FU1;
!!VRy1:S1 R999;

Можно ли как-то добиться в такой функции генерации случайного значения, которое не равно всем предыдущим значениям?
major
Попробуй либо так

!!DO1/1/1000/1:P;
!?FU1;
!!VRy1:S1 T999;

либо так

!!DO1/1/1000/1:P;
!?FU1;
!!VRy1:S1 R100 R100 R100 R100 R100 R100 R100 R100 R100 R99;

Последний вариант наверно лучше.
MasterOfPuppets
Первый вариант уже пробовал - не.
Второй - хм... интересный выверт. Надо попробовать. Только это время займёт - посмотреть все результаты через !!IF:L

Добавлено ([mergetime]1241201064[/mergetime]):
Не, как раз получается большая беда - мало того, что значения попадаются одинаковые, они ещё имеют явную тенденцию быть ближе к 1000.

Добавлено ([mergetime]1241201409[/mergetime]):
Надо такую идею для "Новых команд" предложить - аналог VR:R специально для круговых функций, генерирующий всегда разные значения.
DracoLich
Рекурсия с проверкой последнего сгенерированного числа? )
major
Странно, но у меня команда генерит нормальные рандомные числа. Проверял в триггерах !?PI и !?OB.
Вот даже рабочий код генерации случайных чисел
например, 10 чисел в диапазоне (-50; 50)
!!DO8424/1/10/1:P-50/50;
!?FU8424;
!!VRy1:Sx2-x1;
!!VRy2:S0Ry1;
!!VRy2:+x1;
!!IF:L^%Y2^;
gamecreator
нет, надо чтобы не повторялись. например, так:
Код
!?FU1;
!!DO2/1/99999/1:Px16/x1;

!?FU2;
!!VRvx1:S1 T999;
!!IF:V1/0;
!!VRy1:Sx16-1;
!!DO3/x2/y1/1:Px16;
!!FU&-1:E;

!?FU3;
!!IF&vx16=vx1:V1/1;

!!DO1/123/1000/1:P123; сгенерит в переменных v123-v1000 неповторяющиеся значения от 1 до 1000.
MasterOfPuppets
gamecreator - с твоим кодом у меня ВОГ просто завис с концами, хотя даже вогификацию не включил. crazy.gif
gamecreator
там неправильный выход из цикла. вот так:
Код
!?FU1;
!!DO2/1/99999/1:Px16/x1;

!?FU2;
!!VRvx1:S1 T999;
!!IF:V1/0;
!!VRy1:Sx16-1;
!!DO3/x2/y1/1:Px16;
!!VRx16&-1:S100000;

!?FU3;
!!IF&vx16=vx1:V1/1;
mrtone
В какой переменной хранится результат сражения? Проиграл, отступил , победил.
major
Ни в какой. Через !!BA:O можно определить, кто победил. Или сравнив опыт героев до битвы и после.
Чтобы определить сбежал/сдался/проиграл, нужно сравнить номер требуемого героя с теми, что в таверне.
gamecreator
или владельца (что легче)
MasterOfPuppets
gamecreator - ОК, норм. Только надо не T, a R. А то генерируется одно и то же значение во всех переменных.
Правда, этот выход не на все случаи жизни. v-переменных всего 10000, а может понадобиться сгенерировать значения в большем диапазоне. wink.gif
gamecreator
Цитата(Master Of Puppets @ 05 May 2009, 04:58)
а может понадобиться сгенерировать значения в большем диапазоне. wink.gif

все значения чтоли? тогда подключай Эру.
зы. а мою функцию можно подправить и ввести доп. параметры как диапазон и количество чисел.
MasterOfPuppets
Цитата
все значения чтоли? тогда подключай Эру.

Все попытки общения с ней у меня заканчивались багами и вылетами. У меня руки из попы растут. Может, и освою со временем, но пока времени нет.
asm
Цитата(Master Of Puppets @ 05 May 2009, 16:01)
Цитата
все значения чтоли? тогда подключай Эру.

Все попытки общения с ней у меня заканчивались багами и вылетами. У меня руки из попы растут. Может, и освою со временем, но пока времени нет.


Оч приятная штука Эра. На Форуме КореВога я привёл исходники встроенного автосейвера под Эру.
Могу, наверно попытаться помочь чем-нть по Эре.
MasterOfPuppets
asm - хорошо. От помощи я никогда не отказываюсь. Как приспичит воспользоваться Эрой - обязательно посоветуюсь с вами.
Aleee
Мне необходимо провести некоторые действия непосредственно после окончания битвы, но до появления экрана с результатами и передачи артефактов (если побежден другой герой).
!?BA1 срабатывает после этого окна. Пробовал идти другим путем и после !?BG1 (после каждого хода) проверять, не остались ли в армии какого-то из героев ВСЕ стеки с типом монстров -1 (т.е., по сути поражение - юнитов не осталось). Проверка работала нормально, но все равно после окна окончания битвы!

Есть варианты?
MasterOfPuppets
Попробуй так:

!?BG0;
!!BU:V?y1;
!!FU&y1>1:E;
!!.. твой код

Добавлено ([mergetime]1242485921[/mergetime]):
Нет, вообще-то не пойдёт... Но я сейчас посмотрю, что ещё можно сделать.
Aleee
Функция запускается перед ходом каждого существа. Вообще y1 всегда ноль. Похоже, значение из этой команды изъять можно, но толку от него никакого: его нужно только устанавливать.
MasterOfPuppets
y1, если никто не выиграл, как ни странно, не ноль, а некое большое и глупое число.
Aleee
Хз, я вставлял в твой скрипт IF с %Y1, во время битвы был ноль.
MasterOfPuppets
По ходу, такое нельзя делать - применять какой-то код, когда на поле битвы осталась только одна сторона. Можно только посчитать в !!MF1 урон, который получит стек, и кол-во оставшихся в живых его союзных стеков. Если все остальные мертвы, а урон снесёт стек с концами - тогда что-то ещё кодить, хотя стек ещё стоит на поле.

Убивает это отсутствие главной составляющей. Есть действие "Убежать" и "Откупиться", а действие "Битва просто проиграна" - нету.
Aleee
Думал, но тут же всего не предусмотришь. Пусть даже не будет спеллов, остается то же "дыхание", которым можно уложить и два стека сразу. А надо наверняка.
major
Еще существуют блоки и другие защиты, поэтому на текущем уровне ЕРМ это ИМХО нереально сделать. Кстати, самому надо было.
MasterOfPuppets
В чём различие команд UN:K и UN:M?
feanor
Вроде ж одно для недель, другое для месяцев?
MasterOfPuppets
В Героях бывают месяцы каких-то монстров? Что-то не припомню. Вот недели - да.
major
UN:M позволяет задавать "стандартные" недели, а через UN:K можно установить описание недели. А вот в чем разница между UN:M1 и UN:K1 сам не пойму.
MasterOfPuppets
Меня интересует главным образом следующее: они работают на всю игру (то есть - раз активировал и всё), или только на текущую неделю?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.