MasterOfPuppets
06 Apr 2009, 09:21
Как использовать XOR? О_о
Приведите, плиз, пример рабочего кода.
ShadowDF2
06 Apr 2009, 17:35
!!IFX5/6:M^Если ты видишь это, то либо -5 и 6, либо -6 и 5

^;
Исключающее или, тоже самое, как и в программировании, условие (X5/6) значит, что если флаги 5 и 6 истина или ложь оба одновременно, ресейвер не выполнится. Флаги должны быть разными по значению.
Поставил боевому заклинанию "Удалить препятствие" признак "adventure spell". Заклинание появилось в походной маг. книге, но по клику на нем ничего не происходит. Как перехватить клик на такой заклялке?
попробуй поэкспериментировать с !?MG1; (в v997 будет хранится номер закла)
В ERM-help z не нашел такого триггера. Что это за команда?
ShadowDF2
07 Apr 2009, 13:16
Вроде есть оО
Перехватывает заклинание на карте приключений на карте
Цитата
Каст заклинаний на карте приключений
!?MG0; - триггер до каста
!?MG1; - триггер после каста
Порядок работы:
- игрок нажимает на кнопку "сотворить заклинание"
- срабатывает !?MG0;
- появляется Книга Заклинаний и игрок выбирает спелл
- собственно, кастуется спелл
- срабатывает !?MG1; (номер произнесенного заклинания хранится в v997)
Комментарий:
Это не работает для компьютерных игроков, только для людей.
MasterOfPuppets
08 Apr 2009, 05:19
Цитата
!!IFX5/6:M^Если ты видишь это, то либо -5 и 6, либо -6 и 5^;
А ты проверял эту команду? Вместо неё задаётся вопрос Сфинкса, а потом идут ошибки.
MasterOfPuppets
08 Apr 2009, 06:29
Я потому и сказал - "пример рабочего кода", потому что, на мой взгляд, XOR вообще не поддерживается. Х в любом ресейвере воспринимается как wrong syntax.
ShadowDF2
08 Apr 2009, 17:23
Лол. Писал на память своего перевода 2хлетней давности. Мб где-то накосил в синтаксисе. Имо если бы не поддерживался, не был бы в справке.
Похоже, что XOR работает только в логических операциях над числами, типа как !!VRy1:Xy2;
Видимо это баг, потому что похоже внутри ЛЮБЫХ ресиверов выводится вопрос сфинкса.
hippocamus
08 Apr 2009, 19:43
Кто скажет - какой формат и назначение триггера !?LD в 3.59 и рессиверов !!BG:C и !!BG:V ?
ShadowDF2
09 Apr 2009, 17:32
Рли? Не знал

Помню что IF:X и есть вызов вопроса сфинкса, а так как необязательно разделять ресивер и команду двоеточием, скорее всего они просто читаются именно как вопрос.
(т.е. HE#:C и HE#C одинаково читаются)
Пробовали на других ресиверах проверять?
Добавлено ([mergetime]1239287575[/mergetime]):
Бтв надо хелп перечитать. Там определенно был пример использования
MasterOfPuppets
10 Apr 2009, 08:53
Может, его раньше использовали, потом сломали но нечайке, а в хэлпе убрать забыли.
XOR мне, в общем-то, не нужен. Просто охота было разобраться.
hippocamus
10 Apr 2009, 13:07
Да ксор вообще крайне редко бывает нужен.
Разве что только для простой шифровки.
ShadowDF2
11 Apr 2009, 02:42
Цитата
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
15 Apr 2009, 02:23
Сейчас такого синтаксиса нету, где ты его нашел?
А xor вот: !!VR:X
!!VRv1:Xv2; - это v1 = v1 xor v2
ShadowDF2
15 Apr 2009, 13:10
!!VR там и нашел. Но пример указан, см. пред пост. Т.е. раньше он работал? )
ERMMASTER
23 Apr 2009, 14:58
0x01000000 = 16777216
В этом раунде битвы отряду выпала мораль.
Сработавшую мораль определить можно, а на удачу флаг нигде не могу найти
Ни в ERM help ни где-либо еще, может кто знает как определить срабатывание удачи?
Мне нужно сделать такую фишку:
Когда срабатывает удача есть 50% шанс нанести 3х урона вместо 2х
Невижу в осуществлении никаких проблем, кроме описанной выше...
Помогите плиз
gamecreator
23 Apr 2009, 21:59
а я не вижу вообще никаких проблем
ERMMASTER
24 Apr 2009, 03:05
Я уже тоже.
Спасибо....
MasterOfPuppets
01 May 2009, 20:31
!!DO1/1/1000/1:P;
!?FU1;
!!VRy1:S1 R999;
Можно ли как-то добиться в такой функции генерации случайного значения, которое не равно всем предыдущим значениям?
Попробуй либо так
!!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
02 May 2009, 17:05
Первый вариант уже пробовал - не.
Второй - хм... интересный выверт.

Надо попробовать. Только это время займёт - посмотреть все результаты через !!IF:L
Добавлено ([mergetime]1241201064[/mergetime]):
Не, как раз получается большая беда - мало того, что значения попадаются одинаковые, они ещё имеют явную тенденцию быть ближе к 1000.
Добавлено ([mergetime]1241201409[/mergetime]):
Надо такую идею для "Новых команд" предложить - аналог VR:R специально для круговых функций, генерирующий всегда разные значения.
DracoLich
02 May 2009, 02:47
Рекурсия с проверкой последнего сгенерированного числа? )
Странно, но у меня команда генерит нормальные рандомные числа. Проверял в триггерах !?PI и !?OB.
Вот даже рабочий код генерации случайных чисел
например, 10 чисел в диапазоне (-50; 50)
!!DO8424/1/10/1:P-50/50;
!?FU8424;
!!VRy1:Sx2-x1;
!!VRy2:S0Ry1;
!!VRy2:+x1;
!!IF:L^%Y2^;
gamecreator
02 May 2009, 13:00
нет, надо чтобы не повторялись. например, так:
Код
!?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
02 May 2009, 17:33
gamecreator - с твоим кодом у меня ВОГ просто завис с концами, хотя даже вогификацию не включил.
gamecreator
02 May 2009, 21:52
там неправильный выход из цикла. вот так:
Код
!?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
04 May 2009, 13:21
В какой переменной хранится результат сражения? Проиграл, отступил , победил.
Ни в какой. Через !!BA:O можно определить, кто победил. Или сравнив опыт героев до битвы и после.
Чтобы определить сбежал/сдался/проиграл, нужно сравнить номер требуемого героя с теми, что в таверне.
gamecreator
04 May 2009, 18:11
или владельца (что легче)
MasterOfPuppets
05 May 2009, 04:58
gamecreator - ОК, норм.

Только надо не T, a R. А то генерируется одно и то же значение во всех переменных.
Правда, этот выход не на все случаи жизни. v-переменных всего 10000, а может понадобиться сгенерировать значения в большем диапазоне.
gamecreator
05 May 2009, 13:13
Цитата(Master Of Puppets @ 05 May 2009, 04:58)
а может понадобиться сгенерировать значения в большем диапазоне.

все значения чтоли? тогда подключай Эру.
зы. а мою функцию можно подправить и ввести доп. параметры как диапазон и количество чисел.
MasterOfPuppets
05 May 2009, 14:01
Цитата
все значения чтоли? тогда подключай Эру.
Все попытки общения с ней у меня заканчивались багами и вылетами. У меня руки из попы растут.

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

Может, и освою со временем, но пока времени нет.
Оч приятная штука Эра. На Форуме КореВога я привёл исходники встроенного автосейвера под Эру.
Могу, наверно попытаться помочь чем-нть по Эре.
MasterOfPuppets
05 May 2009, 23:54
asm - хорошо.

От помощи я никогда не отказываюсь. Как приспичит воспользоваться Эрой - обязательно посоветуюсь с вами.
Мне необходимо провести некоторые действия непосредственно после окончания битвы, но до появления экрана с результатами и передачи артефактов (если побежден другой герой).
!?BA1 срабатывает после этого окна. Пробовал идти другим путем и после !?BG1 (после каждого хода) проверять, не остались ли в армии какого-то из героев ВСЕ стеки с типом монстров -1 (т.е., по сути поражение - юнитов не осталось). Проверка работала нормально, но все равно после окна окончания битвы!
Есть варианты?
MasterOfPuppets
16 May 2009, 17:58
Попробуй так:
!?BG0;
!!BU:V?y1;
!!FU&y1>1:E;
!!.. твой код
Добавлено ([mergetime]1242485921[/mergetime]):
Нет, вообще-то не пойдёт... Но я сейчас посмотрю, что ещё можно сделать.
Функция запускается перед ходом каждого существа. Вообще y1 всегда ноль. Похоже, значение из этой команды изъять можно, но толку от него никакого: его нужно только устанавливать.
MasterOfPuppets
16 May 2009, 18:00
y1, если никто не выиграл, как ни странно, не ноль, а некое большое и глупое число.
Хз, я вставлял в твой скрипт IF с %Y1, во время битвы был ноль.
MasterOfPuppets
16 May 2009, 18:19
По ходу, такое нельзя делать - применять какой-то код, когда на поле битвы осталась только одна сторона. Можно только посчитать в !!MF1 урон, который получит стек, и кол-во оставшихся в живых его союзных стеков. Если все остальные мертвы, а урон снесёт стек с концами - тогда что-то ещё кодить, хотя стек ещё стоит на поле.
Убивает это отсутствие главной составляющей. Есть действие "Убежать" и "Откупиться", а действие "Битва просто проиграна" - нету.
Думал, но тут же всего не предусмотришь. Пусть даже не будет спеллов, остается то же "дыхание", которым можно уложить и два стека сразу. А надо наверняка.
Еще существуют блоки и другие защиты, поэтому на текущем уровне ЕРМ это ИМХО нереально сделать. Кстати, самому надо было.
MasterOfPuppets
19 May 2009, 22:38
В чём различие команд UN:K и UN:M?
feanor
19 May 2009, 22:40
Вроде ж одно для недель, другое для месяцев?
MasterOfPuppets
19 May 2009, 22:42
В Героях бывают месяцы каких-то монстров? Что-то не припомню. Вот недели - да.
UN:M позволяет задавать "стандартные" недели, а через UN:K можно установить описание недели. А вот в чем разница между UN:M1 и UN:K1 сам не пойму.
MasterOfPuppets
19 May 2009, 22:45
Меня интересует главным образом следующее: они работают на всю игру (то есть - раз активировал и всё), или только на текущую неделю?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.