Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 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
Remedy
Вопрос был по ERM, а не библиотекам.
Если полупрозрачность реализована в Героях, то почему бы не задать при прорисовке соответствующий параметр. Как советовал GrayFace необходимо узнать откуда рисуется DEF, поставив хук на 47C9C0 и вызвать процедуру полупрозрачной отрисовки. UN:C с этим справится.
Простая идея - не знаю - пробовал ли кто - о чем и вопрос.
snalltroll
Каким образом можно сохранить переменные ВНЕ КАРТЫ?
То есть, мне необходимо, что бы при загрузке карты "B", некоторые скрипты загружались из карты "A".
Надеюсь, вопрос понятен)
Solomon13
Как сделать чтобы объект исчезал и появлялся на карте в одном и том же месте, через равные промежутки времени?
написал так, но при этом в башне стрелков каждый день можно нанимать стрелков(когда она есть). Что нужно сделать чтобы их можно было нанимать один раз, только при появлении здания.
возможно нужно написать все по другому, я не знаю, так как не умею писать скрипты.

ZVSE

!#TM1:S1/999/4/255;
!#TM2:S2/999/4/255;

!?TM1;
!!UN:E9/3/0;
!!UN:I9/3/0/17/57/1;

!?TM2;
!!UN:O9/3/0;
tolich
Ты удаляешь объект и создаешь новый. Кстати, при удаленнии объекты, насколько я знаю, их память не освобождается, поэтому такой путь запросто может привести к рабочему столу.
В качестве альтернативы, можно попробовать двигать этот объект в недоступное для наблюдения место. Глянул справку. Оказывается, такой команды нет. Жаль, конечно. Но можно использовать !!OB:TU; - превратить башню, скажем в пень (T=153) или в другой мелкий объект, а потом обратно в башню.
DracoLich
!!DW:M
устанавливаешь доступное количество при каждом появлении
Solomon13
Кто-нибудь использовал такой код:
!!GD#1/#2/#3:XXXX;
B$
для мистического сада? меняеться ли ресурс?
MasterOfPuppets
Меняется.)
ChASnock
Цитата(DarkHorror @ 23 Jan 2010, 10:17)
    !Я  увеличил размер карты до 251х251, при этом в игре на мини-карте показывается черный экранчик. Как сделать чтобы изученная карта показывалась правильно и можно ли?


shok.gif blink.gif а как это -- увеличить размер карты до 251х251 lupa.gif lupa.gif lupa.gif

Добавлено ([mergetime]1270898805[/mergetime]):
Цитата(snalltroll @ 03 Mar 2010, 21:17)
Каким образом можно сохранить переменные ВНЕ КАРТЫ?


lupa.gif я читал в справке что можно сохранить что-нибудь в файле wog.ini или где-нибудь ещё
подсказать команду не могу, не помню, за чужим компом
Etoprostoya
Цитата(ChASnock @ 10 Apr 2010, 15:26)
Цитата(DarkHorror @ 23 Jan 2010, 10:17)
     !Я  увеличил размер карты до 251х251, при этом в игре на мини-карте показывается черный экранчик. Как сделать чтобы изученная карта показывалась правильно и можно ли?


shok.gif blink.gif а как это -- увеличить размер карты до 251х251 lupa.gif lupa.gif lupa.gif

Посмотри тут:
http://forum.df2.ru/index.php?showtopic=15981
Throutle
Господа, ничего не понимаю в скриптописи, может подскажете, как добавить ещё батлфилдов, например если у меня есть 3 симпатичных для травы?
З.Ы. Если я ещё не совсем дурак, то за это отвечает 68 скрипт и нужно нарастить строки тут:

!!UN&y-2=2/y-4=0:J8/5/^grass1.pcx^; [Check if file is present: Flag 1=0 if file missing]
!!UN&y-2=2/y-4=1:J8/5/^grass2.pcx^; [Check if file is present: Flag 1=0 if file missing]

и тут:

!!BA&y-2=2/y-4=0/1:B^s\grass1.pcx^;
!!BA&y-2=2/y-4=1/1:B^s\grass2.pcx^;

Вот только ума не приложу как они должны выглядкть, если их будет 3 или 4 и т.д.

Возможно:
!!UN&y-2=2/y-4=0:J8/5/^grass1.pcx^; [Check if file is present: Flag 1=0 if file missing]
!!UN&y-2=2/y-4=1:J8/5/^grass2.pcx^; [Check if file is present: Flag 1=0 if file missing]
!!UN&y-2=2/y-4=1:J8/5/^grass3.pcx^; [Check if file is present: Flag 1=0 if file missing]
Это как я понял проверка на наличие файла в папке...

и

!!BA&y-2=2/y-4=0/2:B^s\grass1.pcx^;
!!BA&y-2=2/y-4=1/2:B^s\grass2.pcx^;
!!BA&y-2=2/y-4=2/2:B^s\grass3.pcx^;
Это вероятности

Смущает вот это:
!!BA&y-3=224/1:B^s\evil.pcx^;
!!BA&y-2=2/y-4=0/2:B^s\grass1.pcx^;
циферки у ивела меня смущают...
pHOMM
почему должны смущать циферки у ивела ??? смотрим ерм-справку :

!!TRx/y/l:XXXX;
G?$
Тип земли поверх почвы. Можно только ПОЛУЧИТЬ или ПРОВЕРИТЬ.
Возможные земли

21 Проклятая земля
46 Поляны магов
227 Святая земля
224 Дьявольский туман
222 Клеверное поле
225 Попутный ветер
228 Прозрачные пруды
226 Огненные поля
231 Скалистая земля
229 Магические облака

в у-4 хранится случайное число, оно генерируется тут
!!VRy-4:S0 R2; [random number, 0 to 2]

тебе надо добавить случайное число(от 0 до 5 допустим сделать - тогда будет 6 вариантов) для расширения диапазона возможных полей боя
и потом сделать так как ты делаешь, следи только за номерами и всё

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

можно конечно этого избегнуть, подрегулировав условия для нетравяных, типа этого y-4=0 и этого y-4=1 на такие y-4<3 и y-4>2 тогда при 0,1,2 будет 1 вариант, при 3,4,5 второй
kostya76
Как изменять количество хитов, восстанавливаемых палаткой в бою? Что-то не могу найти такого в мануале.
Aleee
Наверное, напрямую нельзя. Возьми свою формулу, напиши функцию, включающую в себя калькуляцию воскрешения/лечения, значения начального кол-ва мобов в стеке, вывод анимации и тексты. Вуаля.
MasterOfPuppets
На самом деле, нет ничего невозможного:

ZVSE
!?FU727; //создание нового триггера
!!UN:C4687155/4/479068649 C4687159/1/0 C6558521/4/3971252968 C6558525/1/255 C6558526/2/26720;
!!UN:C6558528/4/29500; <- номер ERM-функции = Id нового триггера
!!UN:C6558532/4/280684520 C6558536/4/79987456 C6558540/4/943555425 C6558544/4/4278227418 C6558548/4/950076788 C6558552/4/3909128666 C6558556/4/4293095896;

!#FU727:P;
!?GM;
!!FU727:P;

!?FU29500; //теперь эта функция - триггер для лечения палаткой
!!VRx1:S-1; //лечение будет идти по дефолту
!!VRx1:S0; //никто не лечится (восстановление = 0 очков HP)
!!VRx1:S1000000; //все лечатся полностью
kostya76
Работает. Хотя и мало понятно каким образом). Большое спасибо.
Еще бы сделать, чтобы регенерацию можно было включать. rolleyes.gif
MasterOfPuppets
Поясни, что ты имеешь в виду, так как лечение Палаткой по сути тоже является регенерацией.
kostya76
Чтобы палатка могла работать как воскрешение, восстанавливать исходное количество существ в стэке. Но не всегда, а только при включении такой функции.
Также была бы полезна возможность лечения всех своих стэков на поле боя одновременно.
И, раз уж речь об этом пошла, возможно ли прикрутить палатку к боям в банках?

Вообще, я хочу попробовать усилить данный вторнавык. Дпя этого сделать его эффект зависимым от количества войск. Чтобы нельзя было выносить толпу нейтралов с помощью, скажем 1 коня, но в то же время он был полезен в битвах больших армий.
Может быть, следует сделать эффект зависимым и от магических параметров героя.
kostya76
С восстановлением количества существ в стэке понятно - можно вручную устанавливать. Вопрос в том, как быть, если повреждение кратно хитам 1 существа. Получается, что тогда лечить нельзя, а если все стэки здоровые, то вообще палатка ход не получит. Можно конечно после действия каждого стэка в бою отнимать 1 хп у тех стэков с полным здоровьем, где количество существ уменьшилось с начала боя. Но это как-то коряво будет выглядеть.
Если уж и отнимать хр, то желательно это делать один раз перед ходом палатки, а не после действия каждого стэка. На изменения, произведенные в своем триггере !?BG палатка уже не реагирует.
Есть у кого-нибудь соображения по этому поводу?
Haart of the Abyss
Цитата
Можно конечно после действия каждого стэка в бою отнимать 1 хп у тех стэков с полным здоровьем, где количество существ уменьшилось с начала боя.
Бедные крестьяне…
DracoLich
Цитата
С восстановлением количества существ в стэке понятно - можно вручную устанавливать. Вопрос в том, как быть, если повреждение кратно хитам 1 существа. Получается, что тогда лечить нельзя, а если все стэки здоровые, то вообще палатка ход не получит. Можно конечно после действия каждого стэка в бою отнимать 1 хп у тех стэков с полным здоровьем, где количество существ уменьшилось с начала боя. Но это как-то коряво будет выглядеть.
Если уж и отнимать хр, то желательно это делать один раз перед ходом палатки, а не после действия каждого стэка. На изменения, произведенные в своем триггере !?BG палатка уже не реагирует.
Есть у кого-нибудь соображения по этому поводу?

посмотри на боевые машины 1.
Если ни один юнит не побит, палатка пропускает ход.
Если у юнита недостает хп, палатка сможет его залечить.
Если у юнита полные хп, но их количество ниже, чем надо (убили, проще говоря), то палатка как бы не может залечить юнита, НО! ход получает.
И, если использовать "подождать", то курсор сменится на вопросик, и палатка сможет восстановить тех существ, несмотря на полные хп у первого.
kostya76
Цитата("DracoLich")
посмотри на боевые машины 1.


Честно говоря не понял, это что такой скрипт есть? Где посмотреть?
Etoprostoya
kostya76
Да, действительно палатка ход перехватывает, и лечит, хотя курсор - вопросительный знак. Попробую разобраться, как там сделано.
Inoy
люди добрые подскажите
1 есть ли в скриптах область видимости переменных типа если переменные внутри !?FU#; или !?OB$; переопределят ли они глобальные ? (буду рад подробному ответу.)
2 почему в wog358 не реализовано условия если то. ? они есть только для TE
3 как сделать чекбокс отключалку для скрипта. ?

4 Гляньте на код выскажите замечания в принципе скрипт работает но хз , может я что то не так сделал. может можно где нить оптимальнее сделать.

Код
ZVSE

!!FU995;[Упаковал скрипт в функцию чтоб не перекрывать переменные]

!?FU995;
!?OB104;
!!HE-1:P?v1/?v2/?v3;
!!VRz1:S^Стихийные магии^;
!!VRz2:S^Военные навыки^;
!!VRz4:S^Подготовка разведчика^;
!!VRz8:S^Разное^;
!!VRz16:S^Владение магиями^;
!!VRz32:S^Дополнительные навыки мага^;
!!VRz64:S^Дипломат^;
!!VRz128:S^Покажите то что учили^;
!!VRz25:S^Выберите что вы хотите выучить:^;

!!VRv145:C0;   [Ставим переменную 145 на ноль чтоб видеть если не было диалога значит комп]

!!IF&1000:G1/145/0/25/1/2/4/8/16/32/64/128;

!!VRv600:C1/2/4/8/16/32/64/128;  [Определяем варианты выбора компьютера]
!!VRy1&v145=0:S600 R8;  [Можно доработать пока определяется случайно]
!!VRv145&v145=0:Svy1;

!!VRv21&v145=1:C14/15/16/17; [меняем своиства на Стихийные магии зем. вод. ог. возд.]
!!VRv21&v145=2:C22/23/1/19;[меняем своиства на атака защита стрельба тактика]
!!VRv21&v145=4:C0/2/5/3;[меняем своиства на поиск пути логистика навигация разведка]
!!VRv21&v145=8:C13/10/27/20;[меняем своиства на 13  Имущество  Первая помощь 10  Баллистика 20  Артиллерия]
!!VRv21&v145=16:C7/8/24/25; [меняем своиства на мудр мисиц интелект волшебство]
!!VRv21&v145=32:C18/26/11/12;[меняем своиства на грам сопр орлиный глаз некр]
!!VRv21&v145=64:C4/6/9/21;[Дипломат лид удача обучение]
!!URv1/v2/v3:Sv21/v22/v23/v24;


Забыл сказать я вчера учить erm начал так что не судите строго за скрипт.
Berserker
Цитата
!!FU995;[Упаковал скрипт в функцию чтоб не перекрывать переменные]

smile.gif
Переменные z, v, к сожалению, глобальные.
Inoy
Цитата
Переменные z, v, к сожалению, глобальные.

а можно ли как то обойти проблемму так как мне на постоянную не нужны переменные они по событию высталяются по новой а значит могу использовать переменные переменные ну те которые как мусор.
feanor
Используй y-переменные
feanor
Цитата
1 есть ли в скриптах область видимости переменных типа если переменные внутри !?FU#; или !?OB$; переопределят ли они глобальные ? (буду рад подробному ответу.)
2 почему в wog358 не реализовано условия если то. ? они есть только для TE
3 как сделать чекбокс отключалку для скрипта. ?

4 Гляньте на код выскажите замечания в принципе скрипт работает но хз , может я что то не так сделал. может можно где нить оптимальнее сделать.

1. Воговские переменные вообще лучше воспринимать не как именованные переменные языков высокого уровня, а как ячейки памяти асма.
V-переменные едины для всей ERM-подсистемы. Y и X - для триггера/функции
2. Есть !!ERM&condition. И да, в ERM не реализовано много банальных ЯВУ-шных вещей.
Inoy
с асамблером не особо знаком PHP js - вот чем я занимаюсь.
Цитата
Используй y-переменные

Это конечно хороший совет в принципе с большинством v переменных так и поступлю а что по поводу Z
я использовал
Код
!!IF&1000:G1/145/0/25/1/2/4/8/16/32/64/128;

туда можно передавать не номера переменных Z а просто передать строки сразу ?
разобрался с z# есть z-# .
но вопрос с тем как сделать отключалку ещё в силе.?
pHOMM
Вот так писать смысла нет :

Код
!?FUxxx;
!?OBxxx;


потому что триггеры выполняются от себя до начала следующего триггера (ну, или пока не закончатся изнутри, но потом всё равно перейдут на следующий триггер)

надо сделать так :

Код
!?FUxxx;
весь твой код (который после !?OB)

!?OBxxx; посещаем объект
!!UN:P95/?y-1; проверка на включение скрипта
!!FU&y-1=0:E;  выход если выключен
!!FUxxx:P; выполнить функцию


проверка скрипта поставлена на номер 95, поменяй как тебе потребуется. скрипт весь сделай в ерм-скриптере (важно!) и сохрани. задать имя ему надо, естественно, script95.erm (или по твоему номеру), положить в папку data\s и туда же положить вот этот фаил www.phomm.narod.ru/sctript95.ers (в этом файле можно покопаться, поменять описания и т.п. и, если ты менял номер на нужный тебе, то и все номера внутри этого ерс поменяй с 95 на свой номер и само имя поменяй на sctriptNN.ers)

надеюсь, понятно изложил ) давай доводи до ума скрипт и выкладывай в авторских теперь уже заслуженно )
Inoy
Цитата
вот этот фаил www.phomm.narod.ru/sctript95.ers

кинь на мыло у меня не открывается сайт доступ ограничил провайдер (мой) svyatoy312[]bk|ru
Цитата
надеюсь, понятно изложил ) давай доводи до ума скрипт и выкладывай в авторских теперь уже заслуженно )

изложил всё понятно осталось файл получить . smile.gif
Algor
Гуру, подскажите: есть ли возможность при помощи ERM отключить стандартное действие вторичного навыка? А стандартное действие специализации?
Можно просто ткнуть в пример, навскидку не нашел sad.gif
Aleee
Есть хитрый способ отключать навыки через !!HE:S. Чтобы им воспользоваться, этот навык должен иметь в структуре один вес или модификатор (некромантия, атака, защита, стрельба и др., но не магии, не поиск пути). По-моему, описание есть в последней версии хелпа Драколича, но точно не могу сейчас сказать.
feanor
Цитата
Гуру, подскажите: есть ли возможность при помощи ERM отключить стандартное действие вторичного навыка?

Cкажи, какого именно навыка, я через UN:C найду.
Цитата
А стандартное действие специализации?

Поставь специализацию по, скажем, Эмиссару Войны (160)
Algor
Цитата(Aleee @ 23 Feb 2011, 15:24) *
Есть хитрый способ отключать навыки через !!HE:S. Чтобы им воспользоваться, этот навык должен иметь в структуре один вес или модификатор (некромантия, атака, защита, стрельба и др., но не магии, не поиск пути). По-моему, описание есть в последней версии хелпа Драколича, но точно не могу сейчас сказать

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

Цитата(feanor @ 23 Feb 2011, 16:01) *
Cкажи, какого именно навыка, я через UN:C найду.

Для начала, Глаз орла - как его улучшить я не знаю, а вот переделать полностью хотелось бы.
А что значит "я через UN:C найду"? Может я и сам тогда найду, если есть какой-то способ?
Если это в теме "Тонкости ЕРМ, использование UN:C" есть, я прочитаю. Не смотрел ее еще, т.к. написано "ERM для профессионалов smile.gif", а я не отношусь пока wink.gif

Цитата(feanor @ 23 Feb 2011, 16:01) *
Поставь специализацию по, скажем, Эмиссару Войны (160)

спасибо, интересный вариант
feanor
!!UN:C5129872/1/233;
!!UN:C5129873/4/340;

Отключить орлиный глаз с корнями (навык, артефакты).
Запускать эти команды надо при старте игры и при загрузке.
Algor
Цитата(feanor @ 23 Feb 2011, 19:10) *
!!UN:C5129872/1/233;
!!UN:C5129873/4/340;
Отключить орлиный глаз с корнями (навык, артефакты).

Спасибо. А где вообще можно прочитать описание !!UN:C? У меня 3 версии ERM-Help'а и ни в одной этого нет. В соседней теме только примеры, а что это и как его использовать - не совсем ясно...

Цитата(feanor @ 23 Feb 2011, 19:10) *
Запускать эти команды надо при старте игры и при загрузке.

При старте игры понятно, а как детектить загрузку?
И еще: !!UN:C - это "платформенно-зависимая" штука, как я понял?
feanor
Цитата
А где вообще можно прочитать описание !!UN:C?

"C#1/#2/$3
Прочитать/записать участок памяти, начиная с адреса #1, длиной #2 в/из переменную $3."

Цитата
При старте игры понятно, а как детектить загрузку?

!?GM0; - вызывается после загрузки сохраненной игры, но перед показом карты

Цитата
И еще: !!UN:C - это "платформенно-зависимая" штука, как я понял?

В данном случае - нет, ибо патчится содовская секция.
Valery
Is there a way to disable the "reveal additional area" around the hero when jumping to a new place? Even if he is blind cursed, the area will still normally reveal (only on teleport)
Can change the visibility of the hero type to 1 hex, as it can be done for monsters?
feanor
!!UN:C6547928/4/1; - scouting range (with scouting skill =0) = 1
try this.
Valery
ABSOLUTELY PERFECT



Thanks
feanor
Also, for scouting:

!!UN:C6547932/4/1; scouting skill = 1 => scouting value =1
!!UN:C6547936/4/1; scouting skill = 2 => scouting value =1
!!UN:C6547940/4/1; scouting skill = 3 => scouting value =1

!!UN:C5129045/1/255; disable artifact 52 (giving +1 bonus to art 255)
!!UN:C5129106/1/255; disable artifact 53
Valery
Can you please post again the UN:C script for removing the catapult? I can't find the thread sorry.gif

Thanks
feanor
!!UN:C5962385/1/255;
!!UN:C5962394/1/255;
!!UN:C5124642/1/255;
!!UN:C5124651/1/255;
!!UN:C5124660/1/255;
!!UN:C5124633/1/255;
!!UN:C5103890/1/255;

exchanging spell books and warfare
______________________________
!!UN:C6895886/1/5;

catapult slot -> miscellanceous 6
___________________________
catapult can be removed with HE:A
Valery
Someone knows how to disable pit lords ability?
feanor
!!MA:B51/0; ?
Valery
I forgot about that one, so simple.
зачем?
Хмм.. решил собственно немного вспомнить и поразбираться в скриптах, последний раз это делал вроде бы в 3.54 версии, пока рассматриваю чужие скрипты и появилась пара вопросов )
К примеру кусок скрипта из пака драколича:
Код
!?CM&v5078>0;
!!CM:I?y1 F?y2;
!!FU|y1<>3/y2<>1:E;
!!IF:Q1^Вы хотите задать коэффициент опыта за отпускание существ? (Сейчас он равен %V5078)^;
!!FU&-1:E;
!!VRz-1:S^Введите коэффициент (от 1 до 99)^;
!!VRz-2:S^Будет использоваться как процентное значение^;
!!IF:D50/-1/-2///////////// E1/50;
!!VRv1:Vz1;
!!IF|v1<1/v1>99:M^Некорректный коэффициент!^;
!!FU|v1<1/v1>99:E;
!!VRv5078:Sv1;

Почему вместо номера функции стоит |y1<>3/y2<>1, а потом флаг вместо номера ? (P.S. этот клик по кнопке не работает, вот и решил посмотреть что к чему).
feanor
Тут же не FU:P (вызов функции по номеру), а FU:E - выход из текущего триггера
зачем?
ммм.. да действительно, извиняюсь, как то упустил это читая мануал, пока носом не ткнули.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.