Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 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
Algor
Цитата(Sav @ 28 Jul 2012, 09:46) *
Так без книжки-то никогда ничего не действует. Или кнопка уже успела стать неактивной при колдовстве?

Хочешь сказать, что с книжкой он таки кастанет яд в позицию 0, где нет стека?
Sav
Возможно кастанул бы на всех.
Algor
Цитата(Sav @ 28 Jul 2012, 10:02) *
Возможно кастанул бы на всех.

Не-а, вылет игры, проверил.
feanor
Цитата
Так без книжки-то никогда ничего не действует. Или кнопка уже успела стать неактивной при колдовстве?

Упс. С книжкой, да, вылет.

Цитата
Хочешь сказать, что с книжкой он таки кастанет яд в позицию 0, где нет стека?

Ну изначальная задумка была - яд на всех.
Algor
Цитата(feanor @ 28 Jul 2012, 12:12) *
Ну изначальная задумка была - яд на всех.

А не прокатит что-нить типа:
Код
!!SS71:Fd+64;
!!BH:C71/0/3/0;
!!SS71:Fd-64;
?
(я не проверял, просто вопрос)
totkotoriy
Цитата(feanor @ 11 Jul 2012, 13:02) *
Цитата(totkotoriy @ 10 Jul 2012, 11:03) *
Такой вот вопрос: можно ли корректно выполнить данную команду !!BM:G#/-90/d; (она скрывает маленькое оконце с числом существ в отряде на поле боя)?
Хочу такое сделать для командиров и возможно для оруженосцев, но при использовании этой команды появляются всяческие ошибки, всё таки что-то меняется в памяти некорректно.


-19 можно юзать, вынеся этот прямоугольник куда-нить на xfffffff

И да, можно обсуждать в другом месте?

Выношу, но при ходьбе оконце возвращается назад, может есть другой метод?
totkotoriy
Может кто нибудь знает как убрать окошки благословений и проклятий от ZVS в окне героя? Я как думаю это сделано в ZVSlib.dll
Поместить поверх кнопку от ЭРЫ не получается, все равно первое окно вылазиет наверх.
totkotoriy
Может кто знает как удалить скриптом или еще чем объект, не имеющий красных, так сказать, и желтых клеток с карты приключений?
- Это действительно важный вопрос, так как можно будет очень много красивых приколюх на карте сделать, например полупрозрачную тьму, рассеивающуюся (я правильно написал?) ) перед героем и схлапывающуюся за ним, или когда герой использует полет прерисовывать его коню крылья...
Кстати вот еще пару вопросов:
Можно ли определить в полете герой или нет? (знаю что можно, но вот как... только в памяти смотреть?)
И сумму присоединения при дипломатии, и как нибудь переделать окно присоединений существ чтоб были с ВОГОвским опытом?
Просто может кто-то этим уже занимался.

Одни вопросы... ответов нет (
Bes
Цитата(totkotoriy @ 01 Oct 2012, 13:00) *
Может кто нибудь знает как убрать окошки благословений и проклятий от ZVS в окне героя? Я как думаю это сделано в ZVSlib.dll
Поместить поверх кнопку от ЭРЫ не получается, все равно первое окно вылазиет наверх.

сделай сами кнопки благо. и проклят. прозрачными (кадры внутри дефов сам знаешь каким цветом)... кнопки вроде как исчезнут. Вот только встанет вопрос будет ли области под этими невидимыми "кнопками" срабатывать при нажатии или всё равно сработает благо/прокл.

Цитата(totkotoriy @ 15 Oct 2012, 23:42) *
Может кто знает как удалить скриптом или еще чем объект, не имеющий красных, так сказать, и желтых клеток с карты приключений?

присвоение этим объектам на время красного или жёлтого квадрата, чтобы можно было по этой координате "зацепить" через UN:O такой объект... не пробовал так?
totkotoriy
Цитата(Bes @ 15 Oct 2012, 23:44) *
сделай сами кнопки благо. и проклят. прозрачными (кадры внутри дефов сам знаешь каким цветом)... кнопки вроде как исчезнут. Вот только встанет вопрос будет ли области под этими невидимыми "кнопками" срабатывать при нажатии или всё равно сработает благо/прокл.

Будет, я уже пробовал...

Цитата
присвоение этим объектам на время красного или жёлтого квадрата, чтобы можно было по этой координате "зацепить" через UN:O такой объект... не пробовал так?

А если на этом квадрате стоит герой или еще пару объектов без функц. клеток?
Да и вообще как присвоить объекту клетку если он по этой клетке и должен определяться?
Bes
1. ПОЙДИ С ОБРАТНОЙ СТОРОНЫ.
сделай СВОИ кнопки прозрачными, а кнопки благ/прокл перерисуй как тебе хочется (если конечно у тебя по размерам сходны кнопки)
Если так не годится, то что мешает, опять же, имея прозрачные родные кнопки и подставленные свои, вызывать свою ф-цию по нажатию на области прокл./благ??? (с заданными условиями координат клика)

2. ну да, эт я замудрил... тогда придётся все ЭТИ новые идейные объекты изначально делать с квадратом проходимости и по нему отлавливать объект, чтобы потом его удалять или снова помещать
totkotoriy
Цитата(Bes @ 16 Oct 2012, 00:02) *
1. ПОЙДИ С ОБРАТНОЙ СТОРОНЫ.
сделай СВОИ кнопки прозрачными, а кнопки благ/прокл перерисуй как тебе хочется (если конечно у тебя по размерам сходны кнопки)
Если так не годится, то что мешает, опять же, имея прозрачные родные кнопки и подставленные свои, вызывать свою ф-цию по нажатию на области прокл./благ??? (с заданными условиями координат клика)

А то что функция вызывается все равно ZVSсовская.... хотяяяя.... ты меня на хорошую идею натолкнул - я попробую сделать область своих кнопок выше и левее ZVSсовских (раньше я делал точ такую же по размеру), надеюсь поможет, спасибо.
Bes
Цитата(totkotoriy @ 16 Oct 2012, 01:15) *
А то что функция вызывается все равно ZVSсовская....

так ты её ж блокируй через CM:R0
totkotoriy
Цитата(Bes @ 16 Oct 2012, 07:04) *
Цитата(totkotoriy @ 16 Oct 2012, 01:15) *
А то что функция вызывается все равно ZVSсовская....

так ты её ж блокируй через CM:R0

Вот это действительно хорошая мысль
M.A.K.C.
Вопрос, меняю герою специальность

проблема в том, что при щелчке мышью на специализации выдается неправильный текст, как его заменить? на следующий "колдует усиленную волну смерти"
Bes
Цитата
как его заменить?

на область 118 окна героя ставите !!CM:R0;
и потом выводите через IF:M СВОЁ сообщение при кликах там

Algor
Цитата(M.A.K.C. @ 06 Dec 2012, 06:36) *
Вопрос, меняю герою специальность


!!IF&y5=64:M^Какой кошмар! Вы стали Некромантом!.
Некромант получает Базовую некромантию и {2000} очков вторичных навыков в момент посвящения!^;
!!HE-1&y5=64:N?y1;
!!DO22507/0/27/1&y5=64:Py1;
!!FU836&y5=64:P24/4/1/y1/0;; Necromancy
!!VRw46&y5=64:S2000;
!!UN&y5=64:G2/y1/1/72 G2/y1/3/72;
!!HE-1&y5=64:X3/24 S12/1;
!!HE-1&y5=64:A2/0/d/?y-4;Проверяем, сколько на героя надето книг заклинаний.
!!HE-1&y5=64/y-4=0:A4/0;Если ни одной, даём книгу заклинаний герою.
!!HE-1&y5=64:A-4;Отбираём Баллисту у героя.
!!HE-1&y5=64:A-5;Отбираём подводу с боеприпасами у героя.
!!HE-1&y5=64:A-6;Отбираём Санитарную Палатку у героя.
!!HE-1&y5=64:M45/1;Обучаем героя заклинаниям.
!!HE-1&y5=64:M42/1;Обучаем героя заклинаниям.
!!HE-1&y5=64:M24/1;Обучаем героя заклинаниям.
!!HE-1&y5=64:A4/104;.
!!FU22512&y5=64:P;
!!UN&y5=64:R3/-1;
Код

** Использовать if-el-en конструкции для больших блоков с одинаковыми условиями
!!if&y5=64:;

  ** Выносить текстовики в ert-файлы для простоты локализации и незагромождения кода.
  !!VRz1:Sz123456; Получаем сообщение №123456 из "scriptname.ert"
  !!IF:M^%Z1^; Выводим сообщение

  !!HE-1:N?y1; y1 - номер героя
  !!DO22507/0/27/1:Py1;
  !!FU836:P24/4/1/y1/0; Necromancy
  !!VRw46:S2000; S2000 или +2000? - просто вопрос, логику работы не знаю, есс-но
  !!UN:G2/y1/1/72 G2/y1/3/72;
  !!HE-1:X3/24 S12/1;

  ** Не использовать "y-" переменные, там, где этого не нужно
  **HE-1:A2/0/d/?y2; Проверяем, сколько на героя надето книг заклинаний.
  **HE-1&y2=0:A4/0; Если ни одной, даём книгу заклинаний герою.

  ** Группировать однотипные операции
  !!HE-1:A-4 A-5 A-6 A4/104 A1/0/17; Отбираём Баллисту, Подводу, Палатку у героя. Одеваем Брелок смерти и даем книжку.
  !!HE-1:M45/1 M42/1 M24/1; Обучаем героя заклинаниям.

  !!FU22512:P;
  !!UN:R3/-1; Обновляем окно героя
!!en:;

Bes
Algor
всё по делу, +1, а вот с if-else-end не всегда получается...
нужно сначала уточнить у Макса, где используется скрипт.
А то посыпятся ошибки у него под WoG 3.58f.
M.A.K.C.
Цитата(Bes @ 06 Dec 2012, 16:52) *
Algor
всё по делу, +1, а вот с if-else-end не всегда получается...
нужно сначала уточнить у Макса, где используется скрипт.
А то посыпятся ошибки у него под WoG 3.58f.


А ошибки будут.. Heroes WOG 3.58F используется, скрипты эры не пойдут....
вот полный скрипт


проблема в том, что при клике мышью пишет что герой колдует усиленное мастер сопротивления, а не волну смерти, как задумано.

Всем спасибо, жду примера как это устранить, или любой помощи.
Algor
Цитата(M.A.K.C. @ 06 Dec 2012, 17:51) *
А ошибки будут.. Heroes WOG 3.58F используется, скрипты эры не пойдут....

Мда, не подумал. А ведь сам не так давно переполз на эру. И не жалею, надо сказать.
Объективно, у 3.58 нет ни одного преимущества перед Эрой. Так что, настоятельно рекомендую переходить на темную сторону.

Попутно вопрос к знатокам: как поменять силу магии героя в бою?
!!HE{номер_героя}:Fd/d/dy1/d;
и
!!HE{-10/-20}:Fd/d/dy1/d;
не прокатывают. Т.е. сила магии изменяется на +y1 при ПКМ на герое и даже в расчетах урона ударных заклинаний, если смотреть в книжке магии.
НО! При касте наносится урон или расчитывается длительность (де)бафа по значению Силы магии героя на начало боя.

Кто сталкивался? Как победить?
К слову, то же и с атакой/защитой - параметры стеков не пересчитываются. Их конечно можно в цикле по отрядам скорректировать, но все же может есть более простой способ?
!!BU:R; не помогает, если что.
Sav
Параметры стеков настраиваются в начале боя и более никак не связаны с героем, так что менять их можно только искусственным путём.
Сила магии героя в бою хранится в отдельном от героя поле, правится, соответственно, UN:C.
Algor
Цитата(Sav @ 06 Dec 2012, 22:15) *
Сила магии героя в бою хранится в отдельном от героя поле, правится, соответственно, UN:C.
А кто б за большое спасибо (да, я наивен) нашел эти адреса (для левого и правого героев)? Или может уже раскапывал кто-то?
Sav
*(_int_*)(*(_ptr_*)(0x699420) + 21460 + 4*side)
Algor
Цитата(Sav @ 06 Dec 2012, 22:27) *
*(_int_*)(*(_ptr_*)(0x699420) + 21460 + 4*side)

Sav, я ценю твои познания и чувство юмора, но можно для тупых меня написать просто !!UN:Cx/y/z; , если не затруднит, конечно?
А то у меня со строкой выше ассоциации только типа (_).(_)
Sav
Как-то так:

!!UN:C6919200/4/?v1;
!!VRv1:+21460;
!!VRv1&side>0:+4;
!!UN:Cv1/4/?spell_power;

vv UPD: А, ну да, у меня это чтение.
feanor
!!UN:C6919200/4/?y10;
!!VRy11:S<side> *4 + 21460 +y10;
!!UN:Cy11/4/<чо нада?>;
Algor
Да, feanor, и тебе спасибо (хотя мне и примера Sav'а было достаточно, я тупой не до такой степени все-же)
Проверил, работает отлично.

Ах да, еще вопрос, если кто сталкивался (если нет - совершенно не расстроюсь, не сильно важно): как отключить проверку на ранее призванных элементалей?
Чтобы, например, после смерти призванных земляных (или параллельно с ними), можно было призвать огненных.
Sav
Надо вырубить вовсе или сбросить запись об уже произошедшем вызове?
Algor
Цитата(Sav @ 07 Dec 2012, 00:43) *
Надо вырубить вовсе или сбросить запись об уже произошедшем вызове?

"Вырубить вовсе" предпочтительнее, хотя пойдет и 2е, просто каждый раз придется сбрасывать.
Sav
Как-то так (в начале/загрузке игры):

!!UN:C5896327/1/235;
!!UN:C5936848/1/235;

Теоретически это может быть не всё, что следовало бы поправить, но тут одна функция для человека, другая для ИИ, вроде больше ничего не должно быть.
Algor
Мне вот уже интересно, Sav, если я спрошу "Кто-нить может подсказать, как по-быренькому написать свой мод со шлюхами и блэк-джеком?", ты опять кинешь готовое решение в течение получаса?
Спасибо огромное!
M.A.K.C.
есть 2 вопроса
как заставить в эре монстра кастовать заклинания (как архангела, или командира)?

наложение заклинания на выбранный юнит
M.A.K.C.
Такая ситуация, есть скрипт

надо сделать так, чтобы ставился на карту, а потом преобразовывался не только монолит 45 с подтипом 0, а еще монолиты с подтипами 1, 2, 3, 7, как это сделать?
gamecreator
Код
!!UN:U45/0/-1/1;v1..v3 - координаты Двухстороннего монолита

меняем 0 на желаемый подтип.
можно еще поставить подтип -1, а потом выход из функции при условии нежелательного подтипа.
gamecreator
ну при чем тут UN:I?!!
M.A.K.C.
Цитата(gamecreator @ 17 Dec 2012, 22:03) *
ну при чем тут UN:I?!!


UN:I?!! - объект в координатах ...
Суть скрипта в том, чтобы случайным образом ставился любой тип телепортера, а в последствии любой тип телепортера заменялся на другой объект
надеюсь увидеть цивилизованное решение данного вопроса, так как мой вариант решения мне не нравится. (слишком громоздкий) (на примере грибов)
gamecreator
почитай справку по ерм чтоли прежде чем прогить на нем.

находишь в своем скрипте ту строку что я написал и делаешь что я написал

Цитата(M.A.K.C. @ 17 Dec 2012, 20:27) *
Суть скрипта в том, чтобы случайным образом ставился любой тип телепортера, а в последствии любой тип телепортера заменялся на другой объект
не проще сразу другой объект поставить?
M.A.K.C.
Код
********************************************************************************
******************На карте монолиты меняются на ученых*****************
********************************************************************************
!#TM47:S1/999/1/255;
!?TM47;
!!UN:U45/-1/?y1;              [y1 - количество монолитов]
!!VRy-1:S0 R7;y1-случайное число (0..7)
!!DO28456/1/y1/1:P;             [заменяем монолиты учеными]
!?FU28456;                      [Заменяем монолиты учеными]
!!UN:U45/-1/1/1;              [v1..v3 - координаты монолитов]
!!UN:Ov1/v2/v3/1;             [удаляем монолиты]
!!UN:Iv1/v2/v3/81/0/0;        [помещаем ученого]
!!VRy1:S0 R3;                 [выбираем первичный навык для обучения (0..3)]
!!SCv1/v2/v3:T0 Py1;          [устанавливаем первичный навык для обучения (0..3)]
gerkruger
Добрый день, существует замечательный скрипт Emerald Tower (script44.erm) или 34 wog - emerald tower.erm.
Скрипт
Согласно описанию, данный скрипт улучшает максимум 12 существ в игре. Подскажите, как и где в коде можно изменить кол-во улучшаемых существ в игре (например вместо 12-ти поставить 20).

Berserker
Скрипт используется 12 переменных и имеет множество проверок на число 12.
gerkruger
Цитата(Berserker @ 02 Apr 2013, 18:17) *
Скрипт используется 12 переменных и имеет множество проверок на число 12.


Так понятно, а вот в коде вместо 12 заменить на 22 можно? И будет ли скрипт работать? Достаточно только цифру 1 на 2 изменить по тексту или нет?
Berserker
Нет.
gerkruger
Приветствую, подскажите, если не трудно, возможно ли прямо в игре, изменить (уменьшить/увеличить кол-во существ в отряде героя)? Например, есть герой Сандро (ID героя 74), у него в каждом слоте отряд существ. Как, используя прогу EVME 1.0 (или аналогичную) в игре уменьшить кол-во существ в каждом слоте у данного героя на 10.
Зачем мне это надо? Если не уменьшить - на следующем ходе комп. игрок зависнет..
Заранее спасибо.

Извиняюсь, если не в той теме написан пост.
gamecreator
загрузить игру в мультиплеере и уменьшить вручную
gerkruger
Цитата(gamecreator @ 26 Apr 2013, 17:26) *
загрузить игру в мультиплеере и уменьшить вручную

Никогда не играл в мультиплеере, просьба расшифровать как загрузить игру в мультиплеере.
gamecreator
в главном меню загрузить игру - мультиплеер - hotseat/хотсит/горячий стул/первая сверху кнопка - вводишь имена игроков - выбираешь сейв - выставляешь игроков (щелчок по флагу) - загрузить
gerkruger
Цитата(gamecreator @ 26 Apr 2013, 18:05) *
в главном меню загрузить игру - мультиплеер - hotseat/хотсит/горячий стул/первая сверху кнопка - вводишь имена игроков - выбираешь сейв - выставляешь игроков (щелчок по флагу) - загрузить


Спасибо, конечно, но чтобы наш сейв был доступен для выбора в меню - изначально игру нужно запустить и начать играть тоже через hotseat/хотсит/?
Играть одному человеку против 7-ми компов получится для hotseat/хотсит/? Там же необходимо минимум 2 человека или я что-то не понимаю.
feanor
Омг. Китайцы ж писали прогу для редактирования героев в рантайме?
Starseeker
Цитата(gerkruger @ 26 Apr 2013, 19:21) *
Цитата(gamecreator @ 26 Apr 2013, 18:05) *
в главном меню загрузить игру - мультиплеер - hotseat/хотсит/горячий стул/первая сверху кнопка - вводишь имена игроков - выбираешь сейв - выставляешь игроков (щелчок по флагу) - загрузить


Спасибо, конечно, но чтобы наш сейв был доступен для выбора в меню - изначально игру нужно запустить и начать играть тоже через hotseat/хотсит/?
Играть одному человеку против 7-ми компов получится для hotseat/хотсит/? Там же необходимо минимум 2 человека или я что-то не понимаю.

Если противники не выставлены в настройках карты как только компьютерные игроки, всё получится.
gerkruger
Цитата(feanor @ 26 Apr 2013, 18:23) *
Омг. Китайцы ж писали прогу для редактирования героев в рантайме?


Да конечно была, вот только не работает она с h3era.exe

Цитата(Starseeker @ 26 Apr 2013, 18:24) *
Цитата(gerkruger @ 26 Apr 2013, 19:21) *
Цитата(gamecreator @ 26 Apr 2013, 18:05) *
в главном меню загрузить игру - мультиплеер - hotseat/хотсит/горячий стул/первая сверху кнопка - вводишь имена игроков - выбираешь сейв - выставляешь игроков (щелчок по флагу) - загрузить


Спасибо, конечно, но чтобы наш сейв был доступен для выбора в меню - изначально игру нужно запустить и начать играть тоже через hotseat/хотсит/?
Играть одному человеку против 7-ми компов получится для hotseat/хотсит/? Там же необходимо минимум 2 человека или я что-то не понимаю.

Если противники не выставлены в настройках карты как только компьютерные игроки, всё получится.


Все 7 противников выставлены только как ком. игроки иначе бы не обращался за помощью как прямо в игре с помощью команды ЕРМ или чего-там еще изменить кол-во существ в игре.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.