Полная версия этой страницы:
Вопросник
Друин имел в виду круговую функцию !!DO.
Не ручаюсь, нету хелпа под рукой, но вроде так:
!!DO1/300/424/1:P;
!?FU1;
!!IF:Vx16/0;
Хм. Не знал - думал, что к флагам можно только напрямую обращаться и строчка !!IF:Vx16/0 вызовет ошибку... Део, спасибо!
1) Можно ли узнать, что битва завершилась поражением для обеих сторон (к примеру, от Армагеддона)???

Какой ресивер:параметр нужно для этого использовать?
2) Правильно ли я понимаю, что условие
i>=7/v38=39|i>=/v38=40 работает как
ИЛИ i>=7/v38=39 ИЛИ i>=/v38=40 ???

3) Что-то у меня скрипт никак не хочет по умолчанию быть вкл. в WoG-Опциях

Я в *.ers пишу "
88 7 0 -1 1 1 88", а он всё равно откл. получается... помогите неучу!
DracoLich
21 Aug 2007, 17:56
1)
!?BA1&1000;
!!BU:V?y3;
!!BA:Hy3/?y1;
!!HEy1&y1>-1:O?y2;
!!IF&y2=-1:M^Битва была в ничью^;
2) Если честно, то я сам не до конца понимаю логику проверки таких условий, могу лишь сказать, что здесь, если v38=39, ничего не произойдет, и если v38=40, то условие выполнится, независимо от значения i
3) Вроде все правильно, попробуй изменить номер опции
4) По сути, флаг 999 и 1000 имеют одинаковое значения для скриптера, имхо.
Может тогда кто объяснит, когда лучше использовать тот или иной флаг? В чём преимущество одного над другим?
Добавлено ([mergetime]1187710586[/mergetime]):
2) я имел ввиду i>=7/v38=39|i>=7/v38=40 (забыл 7 написать)
DracoLich
21 Aug 2007, 19:38
2) Еще разок:
По логике условие получается такое:
ДОЛЖНО i>=7, v38=39, ИЛИ i>=7, ИЛИ v38=40
Т.е. если v38=40, либо i>=7, условие выполнено, остальное не влияет, т.е. условие выполняется если i>=7, независимо от v38
Повторю еще раз: старайтесь не использовать проверку ИЛИ вместе с И, легко запутаться и потерять алгоритм
4) Если брать одиночную игру, то да. Иначе - 999 помогает отличить компа от игрока на другом компьютере.
2) так я и не используя, а спрашиваю правильно ли я понял. Оказывается не правильно...

Просто я хотел убрать (заменить на старую систему) одну ципочку условий if-else-end. Видно, не судьба мне понять, как выходить из таких условий

Спасибо, DracoLich, за ваши ответы!
Berserker
22 Aug 2007, 19:40
Бес, в чём сложность именно? Приведи код...
5) Интересно, в триггере !?HE-1 надо использовать !!IF:W-1 для активации w-переменных конкретного героя?
Или же переменные по умолчанию будут активированы?

6) Можно ли заставить ИИ не посещать повторно заскриптованный объект, используя для этого !!AI:S ???
Я пробовал прописывать !!AI:S-1/-1//v998/v999/v1000/5/2; (где, 5=значимость, 2=не удалять точку после посещения), но ИИ всё равно тупо всё время посещает этот объект раз за разом

Здесь я не не писал номер точки, потому как не знал какой надо поставить... может это и повлияло?
7)Почему, когда я пытаюсь активировать для ИИ через!!HE-1:Tv998/v999/v1000/154/0; настроенную битву, комп игнорирует битвенные триггеры (с нужными флагами), и автоматом побеждает???
(Я спецом пишу 0 существ, чтоб они не влияли на ход битвы)
Что мне делать?
Добавлено ([mergetime]1187804011[/mergetime]):
Berserker, попозже, окей?!
DracoLich
23 Aug 2007, 06:43
5) Обязательно нужно писать IF:W для w-переменных, ведь нигде не описано (да и все одно не работает

), что это синонимы

6) Можно заставить комп и без команд AI, т.к. они не всегда годятся для рандомных карт.
Используй для своего скрипта объект из категории новых, и посмотри ресейвер PM, там можно все настроить, и описано, при каких усолвиях комп посетит объект.
И еще - переменные вместо параметров работают в
любом ресейвере/инструкции.
7)Потому что еще в разделе BA:A было сказано, что комп лишь имитирует битву подсчетом ценностей своих существ и противника, и на основании их выводит потери; также сказано, что всегда делайте проверку на ИИ, если происходит битва со скриптами, т.к. ИИ фактически не бьется, ресейверы битв, так сказать, пролетают мимо.
Делать - давать ИИ арт (или что там?) без боя.
6)К сожалению, для моего скрипта я использую объекты, не подпадающие под действие !!PM

(мои попытки были закиданы множественными сообщениями об ошибках)
Может подскажете, как через !!AI заставить ИИ не посещать уже посещённый им объект! Пожалуйста, кто-нибудь, сжальтесь над бедным горе-скриптописцем!

7)

Ясно! А я уж было понадеелся...
А HE#:R4/0 (отмена тактич. расстановки) учитывается игрой, если для ИИ провести следом битву (HE#:Tv998/v999/v1000/69/4)?

Или при теоретич. битве такие ньюансы не берутся всчёт?

8) Правильно ли я делаю (объект №22)...
Код
...
!!OB998:S;
... здесь мой код
...
!!SK998:S0; (арта не будет)
!!OB998:R;
Т.е., будет ли учитываться строка SK998:S0 , если она идёт до восстановления "дефолтной" работы объекта? Или же эту строку надо писать после OB998:R?

2) Сложность в том, что имеется...
Код
!!if&i>=7:;
do something
!!else:;
!!ресивер|v38=39/v38=40:параметр;
!!en:;
А я незнаю, как мне это переконвертировать эти условия под одну запись, чтобы работало как ИЛИ
i<7/v38=39 ИЛИ
i<7/v38=40???

Я бы мог раскидать на два ресивера, но хотса чтоб всё в одном условии было... если это возможно, то подскажите HOW!
DracoLich
23 Aug 2007, 18:35
6) Пробовать вариации с AI, использовать флаг 0
7) В теоритической битве ИМХО учитывается лишь армия и заклы, остальное - мишура для игроков, и то заклы, скорее для вида, чем реально используются.
8) Объект отключен для игроков, но его свойства-то на месте! Так что не влияет порядок здесь.
2)
!!ресейвер&y<7/v38>38/v38<41:параметр;
Я не отступлюсь от Ресейвера вместо Ресивера!!!!!!!
6) Хорошо, буду мучаться с перебором... А какой номер точки выставлять? Или можно оставлять так // ?
2) Так здесь же совсем др. получается смысл...

Всё на И (&), а там (см. ранее) ИЛИ (|)
[rI'si:v] (ресив) - получать
DracoLich
24 Aug 2007, 06:47
2) Ну, вообще-то смысл-то как раз одинаковый, только представление разное. Проверьте сами.
зы: мне ресейвер писать привычнее

6) .... вроде не используются точки в игре/скриптах... так что можете ставить 0
6) А что, если я в конце скрипта для !?OB22 (скелет) ставить
!!SK998:S0;
!!OB998:R;

Получается, комп посетив этот "скелет" отметит его посещённым! Как такая идея?
Это проще, чем с !!AI, имхо!

Ладно, замучил я вас своими вопросами, пойду доделаю Script88 и выложу его для коррекции баланса народу...
Спасибо!
2)
Цитата(балBes)
Сложность в том, что имеется...
Код
!!if&i>=7:;
do something
!!else:;
!!ресивер|v38=39/v38=40:параметр;
!!en:;
А я незнаю, как мне это переконвертировать эти условия под одну запись, чтобы работало как ИЛИ
i<7/v38=39 ИЛИ
i<7/v38=40???
Я бы мог раскидать на два ресивера, но хотса чтоб всё в одном условии было... если это возможно, то подскажите HOW!
Цитата(сан-сэй)
!!ресейвер&y<7/v38>38/v38<41:параметр;
Действительно,этот вариант удовлетворяет условию

Но, к сожалению, при совокупности всех условий (я их все не указывал), используемых в скрипте, это не подходит

Ведь по соседству имеется следующее...
Код
...
!!VRz1|w44=37/w44=45:S^ ^;
!!VRz1|w44=39/w44=40:S^ ^;
!!VRz1&w44=41:S^ ^;
!!VRz1&w44=42:S^ ^;
!!VRz1|w44=43/w44=44:S^ ^;
Как видно теперь (извините, что сразу так не представил

), ситуация несколько затруднительна...
Я в w44 записываю номер арта, который генрируется случайно из интервала [37;38)U(38;45]
Вся эта конетель с переделкой условий ради того, чтобы мой сркипт работал и под WoG 3,58f (пока что он работает только под ТЕ и Феникс-Модом)
6) блин...

Ничего у меня не вышло... ни с !!AI, ни с !!OB998:R

Комп всё равно тупо посещает объект, причём непрерывно, пока не кончатся все MP

Я уже и так, и сяк... Даже ставил приоритет для !!AI единичный...
Придётся воспользоваться планом "С" - после первого посещения делать !!TR#:E0 P1; :crazy:
флейм:
DracoLich, вы ещё будите обновлять Справочник? Или 2.10 is finish?
Кстати, см. ресиверы ML, MN, SY - там недочёты с таблицей буквенных параметров (в 2,00 версии)
DracoLich
24 Aug 2007, 19:51
2) Не уловил связи чегой-то... В ПМ можете скинуть скрипт? Может, натворим чего...
6) Напишите отедльный триггер для ИИ, где при посещении ничего не отменяется, а просто дается артефакт и т.п., что дастся герою игрока-человека; а вот при посещении игрока - деактивировать. В общем виде:
!?OB...&1000;
!!OB998:S;
!?OB...&-1000;
!!OB998:S;
флейм:
Если будет что добавлять/изменять, то версии будут.
В ML исправлено, а вот MN и SY не заметил, и они вошли в 2.10...
сан-сэю...
2) Всё, я разобрался с условиями... теперь скрипт работает под 3,58

всё оказалось проще простого - всего лишь надо было поколдовать с FU:E

6) Здесь тоже вроде всё получилось. Я для ИИ просто убрал строку !!OB#:S... Спасибо за подсказку решения!!!
Подскажите, пожалуйста!

9) Имеется такой интервал x Э [11;14]U[40;44]U(x=20)
(это Слоты 1-5 и Рюкзак)Как записать такое условие, для ресивера FU:E (т.е. если щёлкнуть не туда, то СТОП)?

Я взял !!FU&y2<>11/y2<>12/y2<>13/y2<>14/y2<>20/y2<>40/y2<>41/y2<>42/y2<>43/y2<>44:E;
Но согласитесь, уж больно длинновато получилось

Может по короче можно?
(используя одну FU:E)10) Можно ли, используя !!HE-1:A1/127/?y6 внутри !?CM2, узнать в каком слоте лежит арт?

У меня почему-то всё время у6=0

(неужели в !?CM такая операция не работает?)
11) И ещё... Почему когда в окне героя берёшь арт (курсор меняется на картинку арта), операцией !!UN:R5/4/?y1; считывается всё равно y1=1 (т.е. обычный курсор)???

Спасибо!
gamecreator
28 Aug 2007, 18:19
9) В одном рисивере не получится из-за специфики реализации условий в воге, но можно написать в одну строку:
!!FU|y2<11/y2>44:E; !!FU&y2>14/y2<40/y2<>20:E;
Добавлено ([mergetime]1188314351[/mergetime]):
10) аналогично с тем, что ты будешь пытаться узнать в каком слоте лежит известный тип монстра через C0/?y6/127;
11) потому что ты взял свиток
DracoLich
28 Aug 2007, 18:25
9)В одном навряд ли, вот ваш пример "длинного" сравнения - он самый, короче - в несколько строк. вроде варианта gamecreatora.
10) Не знаю почему, но в хелпе второй параметр для HE:A1 стоит как "можно получить", но на деле это, понятно, невозможно.
Можешь проверять каждый слот на искомый арт, по другому не получится.
11) А вот это не знаю, с курсорами ни разу не встречался в деле
Demiurg
28 Aug 2007, 18:49
10) Не так давно получал артефакт в слоте с помощью !!HE:A1. Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно.
11) Это баг такой. Вместо типа/подтипа курсора возвращается мусор.
10) Так кому верить?

Справке?
сан-сэю? или Demiurg'у (
если он конечно предоставить тот самый кусок кода ;))?
Я пытался получить арт именно под ТЕ и в (у+)... результат=negative

11) блин :bahghead:

Кстати, когда берёшь арт мышью в окне героя, этот арт перестаёт выдиться через !!HE:A2... Так значить игра где-то помнит, что он всё же есть, раз после покладания арта назад, он опять видится. Так где же этот скрытый флаг можно получить? (реторический вопрос)
Demiurg
29 Aug 2007, 13:34
10) Проверил на таком простом коде.
Код
!?CM2;
!!HE-1:A1/?y1/2;
!!IF:M^%Y1^;
Ничего особенного. Просто при клике мышкой в окне героя выводится номер артефакта у героя на шее. Все работает.
gamecreator
29 Aug 2007, 13:34
10) "Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно" © Demiurg
4 Berserker
Цитата(,Demiurg)
Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно
... так вот почему при нажатии ПКМ на арте в Слотах 1-5 и Шее появляется ошибка кода (

"A1/?y-2/y-1"). Вы это уже исправили в Феникс-Моде версии2,52 и познее? (у меня всё ещё 2,51

)
DracoLich
29 Aug 2007, 17:48
Беру свои слова назад. Все правильно! Арт можно получить, причем в стандартной WoG 3.58f в ЛЮБУЮ переменную, включая e, y и y-
gamecreator
29 Aug 2007, 19:01
Цитата(Demiurg @ 29 Aug 2007, 18:24)
Уважаемый Bes, я не имею никакого отношения к Феникс-Моду. Обращайся к Berserker'у.
Цитата(Bes @ 30 Aug 2007, 01:15)
4 Berserker
...
Berserker
29 Aug 2007, 19:43
Я вылечил этот баг отключением скрипта, который его юзает, а имнно Улучшенные Арты 1.
Demiurg
30 Aug 2007, 04:56
2gamecreator
Я не вчитывался в сообщение, лишь пробежался взглядом. Просто не заметил.
Цитата(Berserker)
Я вылечил этот баг отключением скрипта, который его юзает, а имнно Улучшенные Арты 1.
А может, если этта фича не противоречит Моду, попробовать заменить все (у-) на что-то рабочее, а?
Или их там х..ева туча и ничего не разобрать?
Berserker
30 Aug 2007, 20:03
Это самая дизбалансная опция. Воговцы перебрали там. Я не раз писал, что с такой опцией уравновесить игру не удастся. Но может кто-то захочет исправить скрипт и выложить...флаг кому-то в руки.
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?
Я думал, что эти переменные не передаются в др. такой же триггер (СМ2), но оказалось что передаются (по крайней мере внутри одного скрипта)
К примеру, я использовал два подряд идущих !?СМ2, но сразными условиями срабатывания... В итоге, y8 из одного триггера читалась в другом

Может стоит здесь использовать конкретные оригинальные v-переменные? (так поступает Berserker в Моде)
==========
P.S.: какой звук (имя файла) отвечает за сигнал об окончании хода игрока? Я его хочу в !!SN использовать, если он поддерживается конечно
Если не ошибаюсь, то такого сигнала нет. После щелчка начинает играть AI-шная музыка и потом музыка начала нового дня.
Лень лезть в героев, но вроде так.
Demiurg
07 Sep 2007, 18:06
Цитата(Bes @ 07 Sep 2007, 18:36)
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?
Просто обнуляй(инициалзируй) переменные на всякий случай перед их употреблением в триггере. v-переменные в этом плане даже хуже y-переменных. Ведь никогда не знаешь, кому придет в голову в том или ином месте воспользоваться этими v-переменными. А с y-переменными ты имеешь полное право делать внутри своей функции что угодно.
Д'якон
07 Sep 2007, 18:14
Цитата(Bes @ 07 Sep 2007, 17:36)
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?
Я думаю что может. Как ты и говорил в одном скрипте это происходит я это заметил в твоем скрипте с превращением дракона.
Просто эти тригеры читаются в одно и тоже время(при нажатии в экране героя или т.п.) только поочередно (возможно если действия в тригере разделить по функциям, а не в голом виде этого можно избежать). Поэтому какой тригер последний тот и прав.
Demiurg
07 Sep 2007, 18:22
Триггеры не могут выполняться одновременно. Весь код ERM выполняется последовательно, строчка за строчкой.
Поэтому если будет:
!?CM2;
...
!?CM2;
...
то сначала полностью выполнится первый !?CM2, а потом полностью выполнится второй.
Д'якон
07 Sep 2007, 18:39
Прочитай еще раз мой пост. там написано "только поочередно "
Т.е. при нажатии в экране выполняется первый скрипт, а потом сразу же второй и поэтому если там используются одинаковые переменные - последний скрипт и дает им значение.
Добавлено ([mergetime]1189179553[/mergetime]):
Дополню, если только переменные из !?СМ2(1) не используются в другом тригере, который находится между двумя !?СМ и по окончанию, которого они обнуляются. Во всех остальных случаях нужно использовать разные переменные. И использование подряд двух !?СМ2 (либо других) - не имеет смысла.
Berserker
07 Sep 2007, 19:32
Бес, рациальнее всего юзать универсальный триггер, а в остальных уже в условии, как я и делаю. Кроме существенной логической выгоды $mc where$ сразу понятно, это ещё и большой выигрыш во времени, ибо триггер ещё не инициализирован.
Думаю, что скрипты все же будут наиболее подходящей темой для этого вопроса...
Так вот, где можно найти более-менее подробное описание процесса создания wog-архивов, какие файлы там должны быть, какие у него возможности, строение и т.д. Это мне нужно для изменения самых разных частей игры, поэтому хотелось бы знать это все подробно.
Еще один вопрос назрел, в дополнение к первому:
Есть ли переменные, которые не сохраняются при сохранении карты?
Demiurg
08 Sep 2007, 19:09
Цитата(Aleee @ 08 Sep 2007, 19:35)
Так вот, где можно найти более-менее подробное описание процесса создания wog-архивов, какие файлы там должны быть, какие у него возможности, строение и т.д.
В свое время не нашел ответа на этот вопрос. Ниже приведена вся информация, которую смог добыть:
h3bitmap.txt - список файлов для заливки в h3bitmap.lod, каждый следующий файл на новой строке
h3sprite.txt - список файлов для заливки в h3sprite.lod, каждый следующий файл на новой строке
instmult.txt - картинки и звуки при установке???
inform.txt -
[GeneralName] - на новой строке в этом разделе название файла, под которым он будет отображаться при установке
[WhatAboutVrotAbout] - на новой строке идет дополнительная информация - обычно это информация об авторе и краткое описание
action.txt -
[REGEDIT] - для доступа к реестру как юзать - не ясно???
[INSTALL] - на новой строке идут команды. В этом разделе W+ означает название каталога с Героями (Г-каталог), в который происходит установка. Если не добавлять W+, то операция производится с файлами во временной установочной папке. При инсталляции создается временная папка, в которую извлекаются все файлы, находящиеся в wog-файле. Замечание: в нижеприведенных командах %2% может не быть при наличии W+. Внимание: если %2% есть, то она должна заканчиваться на символ '\'.
VERS "C" - не знаю, что делает. Обычно ставится самой первой в этом разделе.
DELL "1" "2" - удаляет файлы с маской "1"(вида *.* для всех) из каталога "2"(если надо удалить из Г-каталога добавляем W+"2")
UNRA "1" "2" - копирует файлы с маской "1"(вида *.* для всех) в каталог "2"(если надо скопировать в Г-каталог добавляем W+"2") Предупреждение: Если папки, куда производится копирование не существует, то она создается. Внимание: Здесь на маску накладываются ограничения. В отличии от команды DELL вы не можете писать UNRA script*.* - она просто ничего не будет делать.
EXEC "1" "2" - запускает файлы с маской "1"(вида *.* для всех) в каталоге "2"(если надо запустить в Г-каталоге добавляем W+"2") Внимание: файлы запускаются в конце установки, поэтому вы не сможете удалить запущенные файлы после запуска.
CMPC "1" "2" - копирует файлы с маской "1"(вида *.* для всех) из Г-каталога в каталог "2"(если надо скопировать в Г-каталог добавляем W+"2") Внимание: Копирование не происходит, если папки, куда производится копирование не существует.
Berserker
08 Sep 2007, 19:10
Есть ещё вывод сообщений в процессе установки, DEO юзал его в эмуляторе Гавани.
gamecreator
08 Sep 2007, 20:00
Цитата(Demiurg @ 08 Sep 2007, 19:09)
[REGEDIT] - для доступа к реестру как юзать - не ясно???
скорее всего так же, как в reg-файлах
Цитата
Есть ещё вывод сообщений в процессе установки
action.txt -
[INSTALL]
SRCH "--------.---" W+"ваш текст" - вывод текста сразу после окончания установке...
Внимание: текст должен идти непрерывной строкой, никаких разрывов через "энтер" недопускается, иначе перенесённый текст не будет отображаться!
MDIR "1" P+
Создание каталога "1" в Главном Меню в разделе Программы
ICON "1" P+"2" - создание ярлыка с именем "1" и имеющим ссылку на "2" файл в каталоге, указанном в параметре MDIR.
Внимание: начальный пункт отправления для ссылки считается установочная папка WoG... К примеру, если ссылка идёт на h3wog.exe, то надо написать "h3wog.exe"
ICON "1" I+"2" - создание ярлыка на Рабочем Столе с имене "1" и имеющим ссылку на "2" файл. Внимание: начальный пункт отправления для ссылки считается установочная папка WoG...
Berserker
08 Sep 2007, 20:12
Ну как вам структура? Один пробел или символ конца строки уже вызывает сообщение о битом архиве. Кто писал инсталлятор?
Цитата
inform.txt -
[WhatAboutVrotAbout] - на новой строке идет дополнительная информация - обычно это информация об авторе и краткое описание
Здесь также стоит отметить, что текст должен идти одной строкой, иначе перенесённый текст не будет отображён!
Кстати, предлагаю этот материал вынести отдельно! Чтоб потом он не затерялся в гуoе вопросов по ERM(коими я здесь часто грешу

)
Хотелось бы еще услышать ответ на второй вопрос, на всякий случай продублирую:
Есть ли переменные, которые не сохраняются при сохранении карты?
Berserker
09 Sep 2007, 19:19
Алеее, не сохраняются все локальные переменные.
Спасибо, успокоил.
Следующий вопрос: что такое локальные переменные?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.