Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подгрузка дефов для монстров
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Bes
Автор скрипта и сообщения Д'якон

Код
ZVSE
!?PI;
!!VRzx2:S^название дефа^;
!!FU1:Px1/x2/x3;
!?FU1;
!!VRy5:S6751172;
!!UN:Cy5/4/?y1;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 -x1 *20 +y1;
!!DO2/1/x3/1:Py2/y3;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;


И так.
x1 -номер заменяемого монстра
x2 - индекс z-переменной в которой хранится название дефа
x3 - длинна имени дефа +1 символ. (издержки, чтоб скрипт не растягивать. Я думаю посчитать не сложно).

Значит что делает этот скрипт. Заменяет дефы существ на новые, которые Вы можете добавить в лод не заменяя старых.

Предупреждение: при добавлении новых дефов в лод, следите чтоб они добавлялись по алфавиту. Если такового не происходит, значит имя дефа должна быть следующей по алфавиту. Т.е. если последний деф ZZZZ.DEF, значит добавленный должен быть типа ZZZZZ.DEF
Лучше юзать формат имен типа ZZZZ01 ZZZZ02 ZZZZ03 и т.п. А еще лучше если имя нового дефа по длинне будет как имя заменяемого дефа (но не обязательно)

З.Ы. Можно заменять практически все. Фантазируйте crazy.gif
Efrit
Хм, ну не знаю. Вторая вариация скрипта у меня вообще отказалась работать, а первая хоть и работает, но деф не меняет - лишь меняет здоровье алебардирам на 9597928...

P.S. Тестировал на моей 3,59, если что.
Bes
На своей 3.59 и не стоит тестировать - это под ТЕ.

Добавлено ([mergetime]1199610683[/mergetime]):
Под ТЕ 1,03 - работает. Проверено

Добавлено ([mergetime]1199611199[/mergetime]):
ПОДПРАВЛЕНО. СКРИПТ РАБОТАЕТ ПОД ЛЮБУЮ ВЕРСИЮ ГЕРОЕВ СТАРШЕ 3.58F. СКРИПТ №2
Efrit
Тогда сразу 2 вопроса (пока не тестировал) :
1) x3 - это длина с расширением или без?
2) а не с монстрами такая функция будет работать?
Docent Picolan
2. я уж отвечу. т.к. это очевидно smile.gif - конечно будет рабоать с любыми дефами. то есть появляется возможность добавить новой снаряд для монстра и т.д.
Bes
4 Bes*

Что-то я никак не смогла заставить работать скрипт banghead.gif
короче, поясни толком, что писать:
1) в zx2? Толи "zzzzf.def", толи "zzzzf".
2) в x3? Опять же, толи длину всего имени файла (вместе с точкой и расширением), толи только именную часть (т.е. 5+1, если имя буде "zzzzf")

Я брала 138 монстра (хоббит)... и ничего.
Пример написания условий для запуска FU1 напиши хотя бы...

Спасибо!
Bes
Объясняю принцип на примере. Заменим деф улучшенных лучников на деф архангелов.
Добавляем деф архангела в конец лода (при помощи ResEdit) с именем ZZZZZZ.DEF (либо используем деф архангела CRANGL.DEF)
Теперь функция

Код
ZVSE
!?PI;
!!VRz1:S^ZZZZZZ.DEF^;
;вместо х2 подтавлен индек переменной (в данном случае 1) вместо имени ZZZZZZ.DEF или CRANGL.DEF (смотря какой путь избрали)

!!FU1:P3/1/11;
3 - номер ул. лучника; 1 - выбранный индекс z-переменной; 11 - кол-во символов в ZZZZZZ.DEF +1символ

!?FU1;
!!VRy5:S6751172;
!!UN:Cy5/4/?y1;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 -x1 *20 +y1;
!!DO2/1/x3/1:Py2/y3;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;


И запускаем. ВСЕ!
Заменять можно все, что видите в лодах crazy.gif


Добавлено ([mergetime]1199625713[/mergetime]):
2 Bes

Попробуй с мотнстрами из замков. Возможно с Бомжами идет смещение адресов и нужно подправлять скрипт. Естественно если вы меняете лучников деф на деф архангелов, то не удивляйтесь, если в битве произойдет крах. Так как у архангелов нет анимации для стрельбы smile.gif
Bes
4 Bes*

Прошлась по всем замкам существ (по одному номеру на замок):
0 - ок
1 - ок
2 - ок
3 - ок
4 - ок
5 - ок
6 - ок? (до 95 нормально, а вот с 95 уже вылетает)
7 - bad
8 - bad
neytrals - bad? (до 125 вылетает, с 125 и выше просто не срабатывает)

ЗЫ: тестовый ZZZZZZ.def был со всеми анимациями (универсальный)
Проверяла под ТЕ.
Bes
Ну это радует. Спасибо за детальный тестинг. Это поможет заменять города чисто скриптами.
А вот есть вопрос для всех.
По идеи, если я все учел, можно создать эмулятор нового монстра (т.е. при помощи эиулятора добавлять новых монстров). Работы там много, но вроде возможно.
Вопрос: нужно ли это?
izrukvruki
Нужно, но ведь по любому ты старого юнита "затрешь"... было бы супер если можно было бы использовать и Лучника и Ангела (см. твой пример)
gamecreator
не затрется старый юнит. только спецспособности нельзя убрать и все
Bes
Освободившись от тяжелых будней, подправил скрипт для подгрузки. Теперь работает под любую версию героев (имеется в виду 3-х, включая и ВоГ)

Код
ZVSE
!?PI;
!!VRzx2:S^название дефа с расширением^;
!!FU1:Px1/x2/x3;
!?FU1;
!!VRy5:S6768560;
!!UN:Cy5/4/?y1;
!!VRy1:+12;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 +x1 *116 +y1;
!!UN:Cy3/4/?y4;
!!DO2/1/x3/1:Py2/y4;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;


Пользуйтесь на здоровье!

Добавлено ([mergetime]1200218885[/mergetime]):
или

Код
ZVSE
!?PI;
!!VRzx2:S^название дефа с расширением^;
!!FU1:Px1/x2/x3;
!?FU1;
!!VRy5:S6768560;
!!UN:Cy5/4/?y1;
!!VRy1:+12;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 +x1 *116 +y1;
!!UN:Cy3/4/y2;


но при этом варианте в z-переменной должно постоянно храниться имя дефа (в отличие от первого где z-переменную после подгрузки можно менять)
NeZ
Слушайте, а можно просто перекрасить монстра и засунуть его в игру без скрипта? У меня вот чё получилось с лазурным драконом:
1) 3 дефа (когда он в бою, и 2 - в армии героя) у меня заменились без проблем.
2) А вот дефы, когда он на карте стоит, не получилось заменить:
а) Когда он просто стоит, у меня почему то получилась картинка, состоящая из двух левых половинок дракона, и он даже не двигался (а так то должен banghead.gif ). Цвет поменялся на новый (естественно какой я рисовал).
б) А вот когда на него нападают, дык он, как и в первом случае, состоит из двух своих половинок, а цвет даже не поменялся.

Такая же хрень и с городом... Я пробовал изменить темницу... НИХРЕНА! mad.gif banghead.gif mad.gif
NickLee
Цитата(Efrit @ 06 Jan 2008, 07:31)
P.S. Тестировал на моей 3,59, если что.


На какой такой 3.59 !? ohmy.gif
gamecreator
тестовой
Bes
Есть одна неточность в скрипте (айм сорри)
в данной строке
!!VRy2:Sx2 -1 *512 +9597928; вместо 9597928 40225912 для ВоГ
Efrit
2 NickLee: игродел прав, на тестовой. NTG по сути часть ВоГ, и рабочая версия 3,59 у нас есть (правда, уже весьма древняя). Ну да ладно, это оффтоп smile.gif

2 Bes: ну ничего себе неточность smile.gif
hippocamus
Цитата(Bes)
Вопрос: нужно ли это?

Однозначно нужно!
С помощью этого открытия ведь можно преодолеть барьер из 256 монстров:
На поле боя не может быть более 42 отрядов. Значит, достаточно использовать 42 разных юнита (пускай, дополнительных, неопределённых сейчас), и уже на поле боя подставлять необходимых монстряков (хотя представить себе ситуацию где на поле боя будет 42 новых юнита одновременно - нелегко smile.gif )
Так новым городам можно ничего не заменять. Просто пользоваться предопределёнными шаблонными. Кстати, как я понимаю, у них и спецсвойств никаких нет, которые нужно в эмуляторе блокировать!
Bes
Скрипт-шутка под ТЕ и старше.
Меняем снаряд у катапульты
Код
ZVSE
!?BA0;
!!VRzx1:S^CRANGL.DEF^; где х1 -...
!!FU20011:Px1;                     ... индекс z-переменной
!?FU20011;
!!VRy1:S4446975;
!!VRy2:Sx1 -1 *512 +9597928;
!!UN:Cy1/4/y2;
hippocamus
Скрипт такой, что живот надорвать можно! Это когда есть 10 городов, и во всех - граали построены нужно давать smile.gif
Bes
Подгрузка звуковых файлов для монстров
Код
ZVSE
!?PI;
!!VRzx2:S^первые символы озвучки^;
!!FU1:Px1/x2; х1 - номер монстра  х2 - индекс z-переменной
!?FU1;
!!VRy5:S6768560;
!!UN:Cy5/4/?y1;
!!VRy1:+8;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 +x1 *116 +y1;
!!UN:Cy3/4/y2;


Теперь по порядку.
1) Озвучка хранится в формате ИМЯ + %sext2.82M %sext1.82M %sdfnd.82M %skill.82M %sattk.82M %swnce.82M %sshot.82M %smove.82M. Т.е. допустим имя озвучки пикемена называется pike, тогда озвучка движения его pikemove (т.е. вместо %s в %smove.82M, подставляется название озвучки)

2)Если вы заменяете один из звуковых файлов вам придется копировать и переименовывать и все остальные. Например Вы захотели заменить pikemove на zzaamove, то для корректной работі новой озвучки вам потребуется єтот скрипт и также все звуковіе файлі пикемена, но с именем zzaa... (надеюсь понятно объяснил smile.gif )
спасибо Сергрою за таблицу монстров

3) Добавление озвучки в *snd соответствует правилам добавления и дефов, т.е. они должны добавляться по алфавиту.

4) !!VRzx2:S^первые символы озвучки^; - это и есть те первые символы имени озвучки, о которых я говорил.

Вроде написано много, но все элементарно - пользуйтесь smile.gif
hippocamus
Тоже нужно!
А ты не знаншь, как можно поменять с помошью UN:C портреты существ в экране героя?
Bes
Разберемся со временем. Можно в принципе скопировать деф портретов заменить нужные и добавить в лод, а через скрипт дать ссылку на новый деф (но это крайний метод, хоть и рабочий - проверял, хотелось бы в этот же деф добавиь еще. Хотя в принципе разница не большая smile.gif)
Все возможно. Все что создано руками человека поддается изменениям...
NickLee
Можно ли убрать с поля боя рисунок героя на коне ? И как, если да.
Bes
Вероятнее всего можно, но для этого как я думаю нужен будет новый деф с такой же структурой.
izrukvruki
пусто (полностью прозрачный) деф можно попробовать сделать... количество кадров аналогично герою сделать - наверное проблем не должно быть...
hippocamus
Неплохо было бы теоретически сделать возможной битву при одном герое-защитнике и вообще без героев. Первый случай - Бродячие монстры напали на героя, или Огры пришли за своей дубиной. Второй - монстры напали на шахту, заставу или город.
NickLee
Цитата(Bes @ 13 Jan 2008, 14:08)
Код
ZVSE
!?PI;
!!VRzx2:S^название дефа с расширением^;
!!FU1:Px1/x2/x3;
!?FU1;
!!VRy5:S6768560;
!!UN:Cy5/4/?y1;
!!VRy1:+12;
!!VRy2:Sx2 -1 *512 +9597928;
!!VRy3:S0 +x1 *116 +y1;
!!UN:Cy3/4/y2;


А можно сделать тоже, но для зданий... На входе тип, подтип, имя дефа... kap.gif

Добавлено ([mergetime]1200845294[/mergetime]):
Цитата(izrukvruki @ 17 Jan 2008, 11:26)
пусто (полностью прозрачный) деф можно попробовать сделать... количество кадров аналогично герою сделать - наверное проблем не должно быть...


Если получится, дай знать ! Буду очень признателен, да и не только я... kap.gif
sergroj
Цитата(NeZ @ 13 Jan 2008, 17:29)
  а) Когда он просто стоит, у меня почему то получилась картинка, состоящая из двух левых половинок дракона, и он даже не двигался (а так то должен  banghead.gif ). Цвет поменялся на новый (естественно какой я рисовал).

В DefMaker в первом списке выбери "3 (Map object)". А лучше используй DefTool.
Bes
Скрипт для замены дефов зданий в экране города. (это не полный скрипт, а лишь небольшая иллюстрация. Меняется только деф. Оконтовка и координаты не меняются. Но это также не трудно сделать, если воспользоваться данными Ирха из инженерного анализа, за что ему ОГРОМНОЕ СПАСИБО. Заодно может чего еще интересного накопаете о зданиях smile.gif ).

Ближе к телу

Код
ZVSE
!?PI;
!!VRz1:S^CRANGL^;
!!FU1:P0/43/1;
!?FU1;
!!VRy1:S0 -x1 *528 +6857424; -структура замка где х1 - номер замка
!!VRy2:Sx2 *12; -x2- номер здания (смотрите хэлп по ЕРМ)
!!VRy1:-y2;
!!VRy3:Sx3 -1 *512 +9597928; х3 - индекс z-переменной, в которой хранится имя дефа
!!DO2/1/12/1:Py1/y3;
!?FU2;
!!UN:Cx2/1/?y1;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;


Данный скрипт для примера заменяет двелинг архангелов (в экране города), на самих архангелов smile.gif. К сожалению деф архангела для этого не предназначен, поэтому смотрится немного коряво.
А и еще имя нового дефа не должно превышать 11 символов sad.gif .

З.Ы. Если существует указатель на данную структуру - поделитесь. Я не нашел. К сожалению герои в отладчике вешаются.
Bes
Так, всё же не могу так...
чтоб все знали - все эти мега скриптовые наработки принадлежат Владимиру... я (Алекса) ко всему этому ни каким боком не отношусь, а то подумаете ещё чего лишнего про коренного Bes

ЗЫ: Владимир, я думаю что стоит уже тему переименовать на более расширенное, чем как она щас называется... сам посуди wink.gif
hippocamus
Бес, переименуйся в Януса smile.gif
NickLee
так можно сделать подгрузку дефов для зданий ? или забить на эдакую возможность.... unsure.gif
Bes
ну а почему нельзя?
NickLee
Цитата(Bes @ 26 Jan 2008, 09:30)
ну а почему нельзя?


Хорошо... Спрошу по-другому...
Bes ! Ты можешь сделать скрипт для замены:
1. объектов (зданий)
2. артефактов

??????

Если да, то сделай пожалуйста ! И размести его где-нибудь в доступном для качания месте...

Спасибо !
hippocamus
Но объекты вель и так можно заменять!
!!UN:I#1/#2/#3/#4/#5/#6/#7/#8/#9;
NickLee
Цитата(hippocamus @ 27 Jan 2008, 12:30)
Но объекты вель и так можно заменять!
!!UN:I#1/#2/#3/#4/#5/#6/#7/#8/#9;


Спасибо... Большое... Глаза мне открыл на новыую команду... mad.gif
Мне надо не один другим заменить, у меня и так пол-карты таким макаром нарисовано, а нужен НОВЫЙ вид зданий ! rtfm.gif
Bes ! Ты жив(а) !? poke.gif
sergroj
Добавил это в http://forum.df2.ru/index.php?showtopic=68...BF%BDentry22075
Хотя, если тебе это надо просто на карте поставить, то в патче к Редактору просто установи нужный def в Advanced Properties
NickLee
Цитата(sergroj @ 28 Jan 2008, 00:10)
Добавил это в http://forum.df2.ru/index.php?showtopic=68...BF%BDentry22075
Хотя, если тебе это надо просто на карте поставить, то в патче к Редактору просто установи нужный def в Advanced Properties


МНЕ НУЖЕН ДЕФ НЕ ИЗ БИБЛИОТЕКИ ИГРЫ, А СВОЙ, СТОРОННИЙ...
блин... banghead.gif
sergroj
NickLee, ой, не заметил. Сейчас для этого надо создавать wog-архив с новым дефом.
Сатарыч
А можно заменить деф не монстра, а определённого стека?
FakerNeo
Если сильно захотеть )
Barin
Цитата(hippocamus @ 17 Jan 2008, 00:53) *
Тоже нужно!
А ты не знаншь, как можно поменять с помошью UN:C портреты существ в экране героя?



Цитата(Bes @ 17 Jan 2008, 01:00) *
Разберемся со временем. Можно в принципе скопировать деф портретов заменить нужные и добавить в лод, а через скрипт дать ссылку на новый деф (но это крайний метод, хоть и рабочий - проверял, хотелось бы в этот же деф добавиь еще. Хотя в принципе разница не большая smile.gif)
Все возможно. Все что создано руками человека поддается изменениям...


Нужен этот скрипт! Напишите пожалуйста кто знает. Нужно подгружать TWCRPORT.def (портреты монстров у героя) и CPRSMALL.def (мелкие портреты).
Монстров удается подменять, осталось с портретами разобраться.
Iv
Проще пересобрать деф или воспользоваться alpha.dll
hippocamus
Я так понимаю, что подменять надо ему динамически, например - для отображения прогресса прокачки отряда.
Barin
Цитата(hippocamus @ 21 Jul 2015, 00:39) *
Я так понимаю, что подменять надо ему динамически, например - для отображения прогресса прокачки отряда.


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

Подмена монстра на поле боя:
!?BA0; До битвы
!!VRz100:S^DMm001.DEF^;
!!FU100:P0/100/11;

!?FU100;
!!VRy5:S6751172;
!!UN:Cy5/4/?y1;
!!VRy2:Sx2 -1 *512 +40225912;
!!VRy3:S0 -x1 *20 +y1;
!!DO200/1/x3/1:Py2/y3;
!?FU200;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

Теперь по такому же принципу надо портрет монстра подменить, но что-то надо подправить в коде. Выше писалось что можно почти все заменять таким методом, но мне не известны такие значения S6751172;
feanor
Эра, RedirectFile
если не работает - простых способов нету
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.