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

Добавлено ([mergetime]1191961095[/mergetime]):
Полностью разобрался с системой наложения и снятия магии (черт ногу сломит.
Закрутили так... fie.gif ). Теперь постараюсь выложить все в скрипт и можно будет снимать конкретно взятый каст с монстра не трогая остальных.

Добавлено ([mergetime]1191961838[/mergetime]):
Также это касается массовой магии и магии накладываемой монстрами.
ShadowTheAge
Черт!!! Только что написал скрипт, делающий это же самое! Блин. Давай махнемся?

Мой вот:
Код
см. десятьюмя постами ниже
Д'якон
Хм... Как же это называется? Плагиат по-моему. Или в простонародье баян. Я ведь сказал, что не программист и мне гораздо сложнее.
Ну написал - молодец. Вот только чего-то не хватает в твоем скрипте (я его не пробовал. А ты сам то его проверял?). Чесно говоря сомневаюсь в его корректности, по-моему ты забыл про ДЛИТЕЛЬНОСТЬ заклинания, но может я ошибаюсь.
Цербер
Попробую написать, что есть ))) Загвоздка в том, что у меня Герои и все к ним на одном компьютере, а интернет на другом ))) Думаю, скоро будет.
Д'якон
Чтож. Придется обьяснить общественности твой скрипт и твое поведение.
1. Предпологалось сделать скрипт- мощный инструмент для работы с магией. Например, снятие установленного пользователем заклинания с определенного стэка или установка иммунитета для определенного закла или масса других вещей.
Работа твоего скрипта не совсем понятна. И вряд ли скрипт работоспособен.
Идея основная была в снятии определенного закла, с которым легко работать через длительность данного закла. При снятии закла, длительность также обнуляется, чего не видно в твоем скрипте. Также, если убираемый закл второй по номеру в абилке монстра, то его нужно поставить на первое место, после чего убирать. Если же он первый и последний, то при его удалении, адрес указателя на массив хранения номера закла в абилке монсра обнуляется.
Ничего этого в твоем скрипте я не наблюдаю.
На счет адресов. Сомневаюсь, что они обнаружатся на другом компе. Нужен статический указатель.
2. Написать данный скрипт за час невозможно. По одной простой причине-время на поиск адресов. Конечно если ты не воспользовался моими адресами, что обьясняес отсутствие в скрипте длительности и прочего (т.е. не разбирался).
3. Есть такая фраза -профессиональная этика. Например, в научных кругах, если человек публикует статью научную на определенную тему, то эта тема считается его полем деятельности. И его работа не присваевается.
4. Есть пословица характерезующая твой скрипт: поспешишь -людей насмешишь.
ShadowTheAge
2Дьякон.
Я не знал, что ты пишешь такой же скрипт. Поэтому обвиненя в плагиате беспочвенны. Хорошо, я уберу свой вариант.

Во-вторых: Мой скрипт работает по другому! При его помощи нельзя снять заклинания, только обновить список картинок.

То есть заклинание снимается обычным образом, путем установки длительности в 0. Только после этого запускается функция, которая пробегая по всем заклинаниям сама формирует список изображений, которые должны быть отображены при щелчке правой кнопкой.

Скрипт работает 100% проверено.

Я решил написать этот скрипт, поскольку при исследовании монстров наткнулся на нужные адреса.

Насчет пункта 4 - не понял.

Да, и еще. Я хоть и умею программировать, но в ассемблере дуб. Поэтому все делалось без каких-либо программистских навыков, только при помощи ArtMoney.

Да, кстати. Может я плохо смотрел, но ты публиковал свой скрипт? Если да (и раньше моего), то публично приношу извинения. Если нет, то я никак, просто никак не мог сплагиатить.
Д'якон
Я публиковал сырье для скрипта. С необходимыми адресами. Ты его даже тестил. Можешь сравнить. Повторюсь, что на других компах твой скрипт может не работать.
Demiurg
Имхо, вы, Д'якон и ShadowTheAge могли бы вместе поработать над скриптом и написать универсальный мегаскрипт с нужными возможностями. Я мельком проглядев скрипт Д'якона не нашел всего, что используется в скрипте ShadowTheAge. Скрипт ShadowTheAge полный. В то время как Д'якон сделал только для одного существа и только одну картинку. Критика в данном случае не обоснована. И вообще пора создавать под заклинания, воздействующие на стеки и их картинки новую тему.
Д'якон
2 Demiurg
Ты это говоришь не разобравшись. Поэтому прошу удалить в твоем посте свои оценки по данному спору. Т.к. люди не разбирающиеся в ЕРМ могут принять твою сторону как человека авторитетного (что будет архинеправильно). Каждый пусть решает для себя.

2 ShadowTheAge
>Скрипт удален по просьбе Д'якон. Но он был рабочим.

Я об этом не просил тебя ни в одном посте. Поэтому полож обратно скрипт. Люди разберутся, рабочий он или нет.

Мой скрипт. (Я даже не знаю как теперь в этой ситуации правильно, может - мой вариант скрипта)
Скрипт рабочий, но может слегка корявый. Т.к. писал в спешке в связи с сложившейся ситуацией.
Скрипт снимает любой наложеный закл с любого стэка.
Код
ZVSE
!?BG1; - можно и другой тригер в зависимости от преследуемой цели
!!FU23345:Pх1/х2; x1 - номер стэка, с которого снимается закл; х2 - номер закла

!?FU23345;
!!VRv1234:S0;
!!VRv1235:S0;
!!UN:C6919200/4/?y10;
!!VRy15:Sx1*1352;
!!VRy11:Sy10 +22776 +y15;;
!!UN:Cy11/4/?y1;
!!if&y1>0:;
!!VRy2:Sy11 +32;
!!VRy20:Sx2*4;
!!VRy3:Sy11 -660 +y20;
!!VRy4:Sy11 -664;
!!DO23346/1/20/1:Py1/x2;
!!if&v1234=0:;
!!FU:E;
!!en;
!!if&v1234=>1/v1235>1:;
!!VRy21:Sv1234 -1 *4;
!!VRy7:Sy1 +y21;
!!UN:Cy1/4/?y8;
!!UN:Cy1/4/x2;
!!UN:Cy7/4/y8;
!!VRy1:+4;
!!UN:Cy11/4/y1;
!!en;
!!if&v1234=1/v1235=1:;
!!UN:Cy11/4/0;
!!en;
!!if&v1234>0:;
!!UN:Cy2/4/?y9;
!!UN:Cy3/4/?y12;
!!UN:Cy4/4/?y13;
!!VRy9:-1;
!!VRy12:S0;
!!VRy13:-1;
!!UN:Cy2/4/y9;
!!UN:Cy3/4/y12;
!!UN:Cy4/4/y13;
!!en;
!!VRv1234:S0;
!!VRv1235:S0;




!?FU23346;
!!UN:Cx1/4/?y1;
!!VRy2:+1;
!!if&y1=x2:;
 !!VRv1234:Sy2;
!!en;
!!if&y1>0/y1<80;
 !!VRv1235:+1;
!!en;
!!VRx1:+4;
ShadowTheAge
Хорошо, вот мой:

Код
!?FU12920;
!!BMx1:G165/?y1/dG92/d/0G169/y1/dG-1/0/d;
!!DO12921/0/75/1:Px1/y1;

!?FU12921;
!!BMx1:Gx16/d/?y1G-1/?y2/d;
!!VRy3&y1>0:Sy2*4+x2;
!!UN&y1>0:Cy3/4/x16;
!!BMx1&y1>0:G92/d/d1G169/d4/dG-1/d1/d;


Несколько меньше твоего smile.gif
Доработал слегка. Уложил в 8 строк, 0 используемых внешних переменных и ни одного глобального обращения по адресу, следовательно, должно работать во всех версиях, начиная с 3.56 (там ввели поддержку !!BM)

Использование: Снимаем заклинания как обычно (устанавливаем длительность в 0), затем вызываем !!FU12920:Px1;, где x1 - номер стека. Функция обновит список картинок статусов.
GrayMage
г-н Д'якон не надо необоснованных обвинений. Вам другие люди доказали, что воровства небыло. Почитав тему - я в этом тоже уверился. Спасибо.
Д'якон
2 ShadowTheAge
Вот только, если было наложено более одного закла и один из них убрал во время боя, то при начале следующего боя игра вылетает.
З.Ы. А где старый скрипт?
ShadowTheAge
2 Д'якон
Действительно, есть такая проблема. Твой, кстати, тоже вылетает.
*ушел думать*

Доработал, больше не вылетает. Спасибо за обнаруженый баг smile.gif
Кстати, твой скрипт не только вылетает, но еще и криво работает с заклинаниями если их больше трех штук. Попробуй такой код:

!?CM4;
!!BM21:M20/5/1M21/5/1M22/5/1M23/5/1M24/5/1M25/5/1;
!!FU23345:P21/25P21/24P21/23P21/22P21/21P21/20;

И шелкни мышкой правой на поле боя. Вот увидишь - снимется не все.

З.Ы. (Ответ на нижеследующий пост) Твой вылетает даже когда больше одного закла - попробуй скрипт:
!!BM21:M40/5/1M50/5/1M60/5/1;
!!FU23345:P21/40P21/60;

Вылетит.
Д'якон
Буду дома разберусь.
DracoLich
Предлагаю не спорить, у кого лучше. С нынешними процессорами скорость выполнения команды незаметна. А количество переменных - сугубо личное дело.
sergroj
Мне кажется, что где-то там не далеко и до MR:N добраться.
Д'якон
Скрипт подправил. По идеи не должен вылетать. А также можно укоротить его в треть и уйти от глобальных переменных (просто писал поспешно)
Цербер
Вот два проблемных куска кода.
Код
**Мальвик**
!?OB15/24/0;
!!IF&5:Q501^тут текст, в точности его приводить не обязательно, тут все работает^;
!!HE-1&501:A4/1021; вот здесь мне надо найти номер свитка с Огненным шаром, а по этому коду герой получает Кольцо холода
!!IF:V5/0;

**пьедесталы**
!?OB7/19/0;
!!IF:M^Вы посетили пьедеста Ускорения.^;
!!IF:V20/1;
!?OB32/10/0;
!!IF:M^Вы посетили пьедестал Защиты от огня^;
!!IF:V21/1;
!?OB28/6/0;
!!IF:M^Вы посетили пьедестал Дня Богов^;
!!IF:V22/1;
**перед боем**
!?BA0;
!!VRv25:S0;
!!DO23/0/20/1:P;
!!BA:H0/?v30;
!!HEv30&22:Fd+5/d+5/d+5/d+5;
!?FU23;
!!BMv25&20:M53/99/3;
!!BMv25&21:M31/99/3;
!?BA1;
!!HEv30&22:Fd-5/d-5/d-5/d-5;

Поясняю. В первом случае все видно в комментариях. Во втором - код при посещении первых двух пьедесталов срабатывает, а в начале битвы никакого влияния не оказывает. А третий пьедестал дает бонус в начале битвы, но не убирает его в конце, что, естественно, мне не нужно )))
Помогите пожалуйста, а то я сам нигде явных ошибок не вижу...
DracoLich
Цитата
!!HEv30&22:Fd+5/d+5/d+5/d+5;

Попробуй использовать вместо v30 -10 (т.к. тебе нужен атакер)
!!HE-10&22:..
Цитата
!!BMv25&20:M53/99/3;

что за v25? Если используешь в круговой функции, то x16 нужно
Цербер
Насчет первого - а оно в !?BA1 работает? С добавлением-то все в порядке, убрать не получается.
Насчет второго: я просто тупо скопировал из вышеуказанной темы все, что мне было нужно. То есть, например, накладывать заклинания на обороняющихся мне не нужно, и накладывать их надо не при наличии артефакта, а после посещения объекта. В оригинале было сделано именно так. Не знаю, может, я чего-то недосписал...
gamecreator
Цитата(Цербер @ 14 Oct 2007, 19:44)
Насчет первого - а оно в !?BA1 работает?

оно работает в бою
Цербер
Цитата(gamecreator @ 14 Oct 2007, 20:56)
Цитата(Цербер @ 14 Oct 2007, 19:44)
Насчет первого - а оно в !?BA1 работает?

оно работает в бою

Мне-то надо после боя... ))) это еще считается в бою? )))
gamecreator
по идее да
Цербер
Спасибо всем
Bes
Два вопроса:
1) Как отменить действие команды !!OB998:M-1/1/1; (на все диалоги объекта отвечать "да")
Строка !!OB998:M-1/0/1; к сожалению не сбрасывает на дефолтные уствновки dry.gif
Я просто хочу, чтобы при посещении объекта стандартные диалоги (для этого объекта) "тихо" закрывались, а потом, когда битва в банке завершится, я хочу видеть диалоги... но когда я в триггере ВА1 пытаюсь использовать !!OB998:M-1/0/1; (вроде как вернуть всё на дефолт), то ничего не срабатывает (хотя бонусы даются, типа я ответил "окей")

2) Когда игрок посетит банк (с победой), то для ИИ атоматом игра устанавливает флаг "посещено"? (аналог команды !!CB998:T1)
Или в игре ИИ всё равно не видит что банк пуст (пока сам туда не заглянет)?
gamecreator
1)читай хелп: третий параметр - это следующее состояние параметра 2. соотв., для нормального статуса необходимо вызвать М-1/0/0
2)все он видит
Bes
1) так вроде если второй установить на "вернуть назад", то третий вроде как и не влияет (я вообще думал ставить d)
спасибо, в общем... буду смотреть
2) вот он зараза... надеюсь вы истину говорите.
DracoLich
2) Комп видит ВСЕ, и если он что-либо посещает либо игнорирует, то в большинстве случаев туда можно уже не заглядывать.
Druin
Ыгы... пустите ИИ на море... он гад все пустые бревна проигнорит...
gamecreator
ии видит все, потому что он слабее.
Bes
он что, даже пустых скелетов "видит"? (которые никем не посещались естественно)
Demiurg
Имхо, не все так просто. Например, комп любит посещать обсерватории красного дерева. Всевидящему они в принципе не нужны. Доходит до смешного. Если занавес некрополиса пересекается с областью, открываемой обсерваторией, то возможна ситуация, что комп будет в обсерву заходить каждый день.
Bes
два вопроса:
- каков предел условий (в справке вроде писалось про 12, но всё же хотса уточнить наверняка)? (для ресивера и триггера, если конено у них это разграничено unsure.gif )

- есть ли предел для кол-ва параметров на одну запись ресивера?

спасибо! smile.gif
Demiurg
мне казалось, что 16 условий допускается. Точно не знаю.
DracoLich
Максимум условий в одном ресейвере - 16. Все, что после, вызывает сообщение об ошибке, условие не учитывается, как будто его и нет.
Насчет предела параметров - неохота проверять, но, думаю, тоже 16. В любом случае, за глаза хватит.
Fatalist
Подскажите как давать свои названия объектам и монстрам на карте?
Bes
для объектов см. справку по !!OB:H или !!HT:T
для монстров можно как и для объектов через !!OB назначать (тут либо по координатам, либо по типу/подтипу)... или же см. !!UN:G1 (тут уже смотря как вам требуется)

а вообще, для подобных операций вам в помощь спец. прога для начинающих скриптеров (я с неё и начинал) - ERM Creator © Soul Reaver
gamecreator
Перекину сюда чтоб не оффтопить.
Цитата(Fatalist @ 26 Oct 2007, 08:53)
Попробовал скрипт с Плащём из глины. После начала новой недели игра выдаёт несколько синтаксических ошибок и артефакт не даёт земляных элементалей((

ссылку на скрипт
DracoLich
Скрипт имеется ввиду из Обучения ЕРМ, первый пост.
Если ты напрямую скопировал, то ошибка в том, что какая-то команда там напечатана русскими буквами. Перепечатай сам.
Bes
Блин...
Неужели в ТЕ нельзя настраивать стоимость построек в городе?
Хотя бы городские двеллинги... dry.gif

PS: до последнего думал что это возможно, а как приспичило так ненашёл banghead.gif
sergroj
Или через UN:C. Но результат тот же - изменения каснутся не только твоей карты.
Д'якон
Можно конечно сделать типа вог-опции (которая условно постоянно включена) подгружать нужные значения при загрузке карты при помощи !!UN:C, а потом по ходу игры их менять. При этом при загрузке новой карты значения будут востанавливаться.
Но эт немного напряжно.
Bes
Скажите, а, случайно, в текстовиках не прописывается стоимость построек в городах?
Если да, то что это за файл?

Только не говорите, что это тоже зашито в ехе-шнике dry.gif

===

вариант с UN:C звучит заманчиво, только вот одна проблема - я не умею пользоваться "артмани" для нахождения адресов (для меня это не достижимо... удивляюсь просто, как вам это удаётся)
Может кто поможет с адресами то? sorry.gif (город - Сопряжние)

ЗЫ: это не для карты, а для целого города (причём для эмулятора), посему проблема с восстановлением всего назад отпадает wink.gif
DracoLich
BULDINGS.TXT - цены зданий (в битмап)
Д'якон
Вот скрипт, если нужен, для изменения цен двелингов в Конфлюксе.
Код
ZVSE


!#TM1:S1/2/1/1;

!?TM1;

!!DO1/0/6/1:Px1/x2/x3/x4/x5/x6/x7/x8;

!?FU1;
!!VRy1:S0;
!!VRy2:S0;
!!VRy3:S0;
!!VRy1:+x16 *4;
!!VRy2:+28 *x8;
!!VRy3:+y1 +y2 +6988992;
!!VRy2:Sx16 +1;
!!UN:Cy3/4/xy2;


Значит обьясняю.
х1,х2,х3,х4,х5,х6,х7 - цены
х8 - номер двелинга (первый начинается с нуля, а для улучшенных +7)
т.е.
феи - 0
элементы воздуха -1
улуч. феи - 7
Элементы шторма - 8.

Дальше, запустил из под таймера, почему-то !#DO - не прокатило.

И последнее. Благодоря текстовику, когда выходишь из игры полностью, то при новой ее загрузке цены обновляються. Поэтому скрипт должен включаться постоянно либо в виде опции. (В принципе в виде опции я думаю тебе и нужно)

Надеюсь адреса статические (не проверял), если не пашет - подправлю. (Делал под ТЕ)
gamecreator
тем более что для эмулятора

это насчет текстовика
Д'якон
Если нужны будут остальные строения - можно доделать.
Bes
спасибо, Дьякон, за старания.

===

Люди, кто объяснит, что понимается под -1 в настройках таймера?
Т.е. когда пишуть !#TM10:S1/999/1/-1;
Означает ли это, что таймер пройдёт при первом игроке, а потом уже срабатывать не будет (по аналогии с !!TM10&$once$=1)???
Или он всё равно будет срабатывать при каждом новом игроке (пока все мой игрок не переночует) ???
Д'якон
Это то же самое, что и 255.
Bes
Цитата(ShadowTheAge @ 11 Oct 2007, 00:54)
Хорошо, вот мой:

Код
!?FU12920;
!!BMx1:G165/?y1/dG92/d/0G169/y1/dG-1/0/d;
!!DO12921/0/75/1:Px1/y1;

!?FU12921;
!!BMx1:Gx16/?y1/dG-1/?y2/d;
!!VRy3&y1>0:Sy2*4+x2;
!!UN&y1>0:Cy3/4/x16;
!!BMx1&y1>0:G92/d/d1G169/d4/dG-1/d1/d;


Уложил в 8 строк, 0 используемых внешних переменных и ни одного глобального обращения по адресу, следовательно, должно работать во всех версиях, начиная с 3.56 (там ввели поддержку !!BM)

Использование: Снимаем заклинания как обычно (устанавливаем длительность в 0), затем вызываем !!FU12920:Px1;, где x1 - номер стека. Функция обновит список картинок статусов.

Ваш код имеет один недостаток...
Если на стэках будет закл Корни (или Камень, или Паралич, в общем не стандартные заклы), то их картинки тоже снимаются, хотя действие само сабой остаётся dry.gif
Не могли бы вы его пофиксить sorry.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.