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

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

2) Правильно ли я понимаю, что условие i>=7/v38=39|i>=/v38=40 работает как ИЛИ i>=7/v38=39 ИЛИ i>=/v38=40 ??? unsure.gif

3) Что-то у меня скрипт никак не хочет по умолчанию быть вкл. в WoG-Опциях dry.gif
Я в *.ers пишу "88 7 0 -1 1 1 88", а он всё равно откл. получается... помогите неучу! sorry.gif
DracoLich
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) Вроде все правильно, попробуй изменить номер опции
Bes
4) По сути, флаг 999 и 1000 имеют одинаковое значения для скриптера, имхо.
Может тогда кто объяснит, когда лучше использовать тот или иной флаг? В чём преимущество одного над другим? unsure.gif

Добавлено ([mergetime]1187710586[/mergetime]):
2) я имел ввиду i>=7/v38=39|i>=7/v38=40 (забыл 7 написать) sorry.gif
DracoLich
2) Еще разок:
По логике условие получается такое:
ДОЛЖНО i>=7, v38=39, ИЛИ i>=7, ИЛИ v38=40
Т.е. если v38=40, либо i>=7, условие выполнено, остальное не влияет, т.е. условие выполняется если i>=7, независимо от v38
Повторю еще раз: старайтесь не использовать проверку ИЛИ вместе с И, легко запутаться и потерять алгоритм
4) Если брать одиночную игру, то да. Иначе - 999 помогает отличить компа от игрока на другом компьютере.
Bes
2) так я и не используя, а спрашиваю правильно ли я понял. Оказывается не правильно... dry.gif
Просто я хотел убрать (заменить на старую систему) одну ципочку условий if-else-end. Видно, не судьба мне понять, как выходить из таких условий sad.gif

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

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

7)Почему, когда я пытаюсь активировать для ИИ через!!HE-1:Tv998/v999/v1000/154/0; настроенную битву, комп игнорирует битвенные триггеры (с нужными флагами), и автоматом побеждает???
(Я спецом пишу 0 существ, чтоб они не влияли на ход битвы)
Что мне делать? sad.gif

Добавлено ([mergetime]1187804011[/mergetime]):
Berserker, попозже, окей?!
DracoLich
5) Обязательно нужно писать IF:W для w-переменных, ведь нигде не описано (да и все одно не работает wink.gif ), что это синонимы smile.gif
6) Можно заставить комп и без команд AI, т.к. они не всегда годятся для рандомных карт.
Используй для своего скрипта объект из категории новых, и посмотри ресейвер PM, там можно все настроить, и описано, при каких усолвиях комп посетит объект.
И еще - переменные вместо параметров работают в любом ресейвере/инструкции.
7)Потому что еще в разделе BA:A было сказано, что комп лишь имитирует битву подсчетом ценностей своих существ и противника, и на основании их выводит потери; также сказано, что всегда делайте проверку на ИИ, если происходит битва со скриптами, т.к. ИИ фактически не бьется, ресейверы битв, так сказать, пролетают мимо.
Делать - давать ИИ арт (или что там?) без боя.
Bes
6)К сожалению, для моего скрипта я использую объекты, не подпадающие под действие !!PM sad.gif (мои попытки были закиданы множественными сообщениями об ошибках)
Может подскажете, как через !!AI заставить ИИ не посещать уже посещённый им объект! Пожалуйста, кто-нибудь, сжальтесь над бедным горе-скриптописцем! sorry.gif sad.gif

7)dry.gif Ясно! А я уж было понадеелся...

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

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

2) Сложность в том, что имеется...
Код
!!if&i>=7:;
do something
!!else:;
!!ресивер|v38=39/v38=40:параметр;
!!en:;

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

2) Так здесь же совсем др. получается смысл... dry.gif
Всё на И (&), а там (см. ранее) ИЛИ (|) sorry.gif
[rI'si:v] (ресив) - получать unsure.gif
DracoLich
2) Ну, вообще-то смысл-то как раз одинаковый, только представление разное. Проверьте сами.
зы: мне ресейвер писать привычнее rolleyes.gif
6) .... вроде не используются точки в игре/скриптах... так что можете ставить 0
Bes
6) А что, если я в конце скрипта для !?OB22 (скелет) ставить
!!SK998:S0;
!!OB998:R;
unsure.gif
Получается, комп посетив этот "скелет" отметит его посещённым! Как такая идея?
Это проще, чем с !!AI, имхо! yes.gif

Ладно, замучил я вас своими вопросами, пойду доделаю Script88 и выложу его для коррекции баланса народу...

Спасибо!
Bes
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:параметр;
Действительно,этот вариант удовлетворяет условию yes.gif
Но, к сожалению, при совокупности всех условий (я их все не указывал), используемых в скрипте, это не подходит sad.gif Ведь по соседству имеется следующее...
Код
...
 !!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^ ^;

Как видно теперь (извините, что сразу так не представил sorry.gif ), ситуация несколько затруднительна...
Я в w44 записываю номер арта, который генрируется случайно из интервала [37;38)U(38;45]

Вся эта конетель с переделкой условий ради того, чтобы мой сркипт работал и под WoG 3,58f (пока что он работает только под ТЕ и Феникс-Модом)

6) блин... dry.gif
Ничего у меня не вышло... ни с !!AI, ни с !!OB998:R sad.gif
Комп всё равно тупо посещает объект, причём непрерывно, пока не кончатся все MP banghead.gif
Я уже и так, и сяк... Даже ставил приоритет для !!AI единичный...

Придётся воспользоваться планом "С" - после первого посещения делать !!TR#:E0 P1; :crazy:



флейм:
DracoLich, вы ещё будите обновлять Справочник? Или 2.10 is finish?
Кстати, см. ресиверы ML, MN, SY - там недочёты с таблицей буквенных параметров (в 2,00 версии)
DracoLich
2) Не уловил связи чегой-то... В ПМ можете скинуть скрипт? Может, натворим чего...
6) Напишите отедльный триггер для ИИ, где при посещении ничего не отменяется, а просто дается артефакт и т.п., что дастся герою игрока-человека; а вот при посещении игрока - деактивировать. В общем виде:
!?OB...&1000;
!!OB998:S;

!?OB...&-1000;
!!OB998:S;

флейм:
Если будет что добавлять/изменять, то версии будут.
В ML исправлено, а вот MN и SY не заметил, и они вошли в 2.10...
Bes
сан-сэю...

2) Всё, я разобрался с условиями... теперь скрипт работает под 3,58 smile.gif
всё оказалось проще простого - всего лишь надо было поколдовать с FU:E banghead.gif biggrin.gif

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

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

Я взял !!FU&y2<>11/y2<>12/y2<>13/y2<>14/y2<>20/y2<>40/y2<>41/y2<>42/y2<>43/y2<>44:E;
Но согласитесь, уж больно длинновато получилось dry.gif
Может по короче можно? idontno.gif (используя одну FU:E)

10) Можно ли, используя !!HE-1:A1/127/?y6 внутри !?CM2, узнать в каком слоте лежит арт? unsure.gif
У меня почему-то всё время у6=0 dry.gif (неужели в !?CM такая операция не работает?)

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

Спасибо! smile.gif
gamecreator
9) В одном рисивере не получится из-за специфики реализации условий в воге, но можно написать в одну строку:
!!FU|y2<11/y2>44:E; !!FU&y2>14/y2<40/y2<>20:E;

Добавлено ([mergetime]1188314351[/mergetime]):
10) аналогично с тем, что ты будешь пытаться узнать в каком слоте лежит известный тип монстра через C0/?y6/127;

11) потому что ты взял свиток
DracoLich
9)В одном навряд ли, вот ваш пример "длинного" сравнения - он самый, короче - в несколько строк. вроде варианта gamecreatora.
10) Не знаю почему, но в хелпе второй параметр для HE:A1 стоит как "можно получить", но на деле это, понятно, невозможно.
Можешь проверять каждый слот на искомый арт, по другому не получится.
11) А вот это не знаю, с курсорами ни разу не встречался в деле smile.gif
Demiurg
10) Не так давно получал артефакт в слоте с помощью !!HE:A1. Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно.
11) Это баг такой. Вместо типа/подтипа курсора возвращается мусор.
Bes
10) Так кому верить? unsure.gif
Справке? сан-сэю? или Demiurg'у (если он конечно предоставить тот самый кусок кода ;))?
Я пытался получить арт именно под ТЕ и в (у+)... результат=negative dry.gif

11) блин :bahghead: sad.gif
Кстати, когда берёшь арт мышью в окне героя, этот арт перестаёт выдиться через !!HE:A2... Так значить игра где-то помнит, что он всё же есть, раз после покладания арта назад, он опять видится. Так где же этот скрытый флаг можно получить? (реторический вопрос)
Demiurg
10) Проверил на таком простом коде.
Код
!?CM2;
 !!HE-1:A1/?y1/2;
 !!IF:M^%Y1^;

Ничего особенного. Просто при клике мышкой в окне героя выводится номер артефакта у героя на шее. Все работает.
gamecreator
10) "Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно" © Demiurg
Bes
4 Berserker

Цитата(,Demiurg)
Правда там под TE есть баг - нельзя получать в переменные (y-), в остальные переменные получается корректно
... так вот почему при нажатии ПКМ на арте в Слотах 1-5 и Шее появляется ошибка кода ( lupa.gif "A1/?y-2/y-1"). Вы это уже исправили в Феникс-Моде версии2,52 и познее? (у меня всё ещё 2,51 dry.gif )
DracoLich
Беру свои слова назад. Все правильно! Арт можно получить, причем в стандартной WoG 3.58f в ЛЮБУЮ переменную, включая e, y и y-
gamecreator
Цитата(Demiurg @ 29 Aug 2007, 18:24)
Уважаемый Bes, я не имею никакого отношения к Феникс-Моду. Обращайся к Berserker'у.

Цитата(Bes @ 30 Aug 2007, 01:15)
4 Berserker
...
Berserker
Я вылечил этот баг отключением скрипта, который его юзает, а имнно Улучшенные Арты 1.
Demiurg
2gamecreator
Я не вчитывался в сообщение, лишь пробежался взглядом. Просто не заметил.sad.gif
Bes
Цитата(Berserker)
Я вылечил этот баг отключением скрипта, который его юзает, а имнно Улучшенные Арты 1.
А может, если этта фича не противоречит Моду, попробовать заменить все (у-) на что-то рабочее, а?
Или их там х..ева туча и ничего не разобрать?
Berserker
Это самая дизбалансная опция. Воговцы перебрали там. Я не раз писал, что с такой опцией уравновесить игру не удастся. Но может кто-то захочет исправить скрипт и выложить...флаг кому-то в руки.
Bes
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?
Я думал, что эти переменные не передаются в др. такой же триггер (СМ2), но оказалось что передаются (по крайней мере внутри одного скрипта)
К примеру, я использовал два подряд идущих !?СМ2, но сразными условиями срабатывания... В итоге, y8 из одного триггера читалась в другом unsure.gif


Может стоит здесь использовать конкретные оригинальные v-переменные? (так поступает Berserker в Моде)

==========

P.S.: какой звук (имя файла) отвечает за сигнал об окончании хода игрока? Я его хочу в !!SN использовать, если он поддерживается конечно unsure.gif
Aleee
Если не ошибаюсь, то такого сигнала нет. После щелчка начинает играть AI-шная музыка и потом музыка начала нового дня.

Лень лезть в героев, но вроде так.
Demiurg
Цитата(Bes @ 07 Sep 2007, 18:36)
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?

Просто обнуляй(инициалзируй) переменные на всякий случай перед их употреблением в триггере. v-переменные в этом плане даже хуже y-переменных. Ведь никогда не знаешь, кому придет в голову в том или ином месте воспользоваться этими v-переменными. А с y-переменными ты имеешь полное право делать внутри своей функции что угодно.
Д'якон
Цитата(Bes @ 07 Sep 2007, 17:36)
Скажите, используя в триггере !?СМ2 это:
!!CM:F?y1 I?y2 S?y3;
не случится ли так, что где-то в др. скрипте в том же триггере может произойти накладка?


Я думаю что может. Как ты и говорил в одном скрипте это происходит я это заметил в твоем скрипте с превращением дракона.
Просто эти тригеры читаются в одно и тоже время(при нажатии в экране героя или т.п.) только поочередно (возможно если действия в тригере разделить по функциям, а не в голом виде этого можно избежать). Поэтому какой тригер последний тот и прав.
Demiurg
Триггеры не могут выполняться одновременно. Весь код ERM выполняется последовательно, строчка за строчкой.
Поэтому если будет:
!?CM2;
...
!?CM2;
...
то сначала полностью выполнится первый !?CM2, а потом полностью выполнится второй.
Д'якон
Прочитай еще раз мой пост. там написано "только поочередно "

Т.е. при нажатии в экране выполняется первый скрипт, а потом сразу же второй и поэтому если там используются одинаковые переменные - последний скрипт и дает им значение.

Добавлено ([mergetime]1189179553[/mergetime]):
Дополню, если только переменные из !?СМ2(1) не используются в другом тригере, который находится между двумя !?СМ и по окончанию, которого они обнуляются. Во всех остальных случаях нужно использовать разные переменные. И использование подряд двух !?СМ2 (либо других) - не имеет смысла.
Berserker
Бес, рациальнее всего юзать универсальный триггер, а в остальных уже в условии, как я и делаю. Кроме существенной логической выгоды $mc where$ сразу понятно, это ещё и большой выигрыш во времени, ибо триггер ещё не инициализирован.
Aleee
Думаю, что скрипты все же будут наиболее подходящей темой для этого вопроса...

Так вот, где можно найти более-менее подробное описание процесса создания wog-архивов, какие файлы там должны быть, какие у него возможности, строение и т.д. Это мне нужно для изменения самых разных частей игры, поэтому хотелось бы знать это все подробно.
Aleee
Еще один вопрос назрел, в дополнение к первому:

Есть ли переменные, которые не сохраняются при сохранении карты?
Demiurg
Цитата(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
Есть ещё вывод сообщений в процессе установки, DEO юзал его в эмуляторе Гавани.
gamecreator
Цитата(Demiurg @ 08 Sep 2007, 19:09)
[REGEDIT] - для доступа к реестру как юзать - не ясно???

скорее всего так же, как в reg-файлах
Bes
Цитата
Есть ещё вывод сообщений в процессе установки

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
Ну как вам структура? Один пробел или символ конца строки уже вызывает сообщение о битом архиве. Кто писал инсталлятор?
Bes
Цитата
inform.txt -
[WhatAboutVrotAbout] - на новой строке идет дополнительная информация - обычно это информация об авторе и краткое описание
Здесь также стоит отметить, что текст должен идти одной строкой, иначе перенесённый текст не будет отображён!



Кстати, предлагаю этот материал вынести отдельно! Чтоб потом он не затерялся в гуoе вопросов по ERM(коими я здесь часто грешу smile.gif)
Aleee
Хотелось бы еще услышать ответ на второй вопрос, на всякий случай продублирую:

Есть ли переменные, которые не сохраняются при сохранении карты?
Berserker
Алеее, не сохраняются все локальные переменные.
Aleee
Спасибо, успокоил.

Следующий вопрос: что такое локальные переменные?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.