Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Новые монстры
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
vas2003
Данный скрипт добавляет абсолютно новых монстров. Для того чтобы получить нового монстра, Вам нужно добавить дефы монстров, портреты(соответственно номеру монстра), озвучку монстра и выбрать шаблонного монстра, который на ваш взгляд ближе всего по св-вам к новому. Теперь скрипт

Код
ZVSE

!?PI;
!!FU1:P;
!!FU3:Pmn/ms; mn - номер нового монстра от 197, ms - номер монстра шаблона до 197
!!FU5:Pmn;
!?FU1;
!!VRy1:S8195216;
!!VRy2:S9802216;
!!DO2/1/22736/1:Py1/y2;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;


!?FU3;
!!UN:C6768560/4/9802216;
!!VRy1:Sx2*116+8195216;
!!VRy2:Sx1*116+9802216;
!!DO4/1/116/1:Py1/y2;
!!VRy1:+8;
!?FU4;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU5;
!!VRy1:Sx2-197*17+9751016;
!!VRy3:Sx1*116+9802216;
!!VRz1:S^name def^; name - первые 4-ре буквы озвучки вашего монстра, def - название дефа монстра с расширением (озвучка и деф пишутся через пробел макс. 17 символов)
!!VRy2:Szx*512+9597416; zx - индекс z-переенной где хранится озвучка и деф
!!DO6/1/17/1:Py1/y2;
!!VRy3:+8;
!!UN:Cy3/4/y1;
!!VRy3:+4;
!!VRy1:+5;
!!UN:Cy3/4/y1;
!?FU6;
!!UN:Cx2/1/?y1;
!!if&y1=32:;
  !!VRy1:S0;
!!en;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;


Данный код добавляет 197 монстра - пикимена. Для наглядности

Код
ZVSE

!?PI;
!!FU1:P;
!!FU3:P197/0;
!!FU5:P197;
!?FU1;
!!VRy1:S8195216;
!!VRy2:S9802216;
!!DO2/1/22736/1:Py1/y2;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU3;
!!UN:C6768560/4/9802216;
!!VRy1:Sx2*116+8195216;
!!VRy2:Sx1*116+9802216;
!!DO4/1/116/1:Py1/y2;
!!VRy1:+8;
!?FU4;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU5;
!!VRy1:Sx2-197*17+9751016;
!!VRy3:Sx1*116+9802216;
!!VRz1:S^pike cpkman.def^;
!!VRy2:S1*512+9597416;
!!DO6/1/17/1:Py1/y2;
!!VRy3:+8;
!!UN:Cy3/4/y1;
!!VRy3:+4;
!!VRy1:+5;
!!UN:Cy3/4/y1;
!?FU6;
!!UN:Cx2/1/?y1;
!!if&y1=32:;
  !!VRy1:S0;
!!en;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;


Работает под ТЕ, без вогификации т.к. номера функций не подбирались.
А теперь о главном. Добавление монстра происходит успешно, но в бою комп вешается, т.к. не прописан CrAnim. Если кто найдет данную структуру в памяте героев - пожалуйста напишите.

З.Ы. отдельное спасибо Сергрою
hippocamus
Молодец! Класс!
А нельзя добавить монстра с номером большим 255?
Docent Picolan
можно. это-то и есть самое главное.
sergroj
Нельзя. Этот скрипт пригодится новым городам, пока не вышел новый билд 3.59.
hippocamus
УРА!!!

Добавлено ([mergetime]1206221218[/mergetime]):
Так можно или нельзя?
Docent Picolan
вот и я не понял
Spartak
похоже в 3.58 нельзя...
а в 3.59 можна...
sergroj
В обоих нельзя, но пока и 256 монстров хватит. А в 3.59 может и получится преодолеть.
vas2003
И так вот начальная версия тестового скрипта. Данный скрипт добавляет нового монстра и ставит его герою в армию, для наглядности
Запускать под ТЕ без ВоГификации

Код
ZVSE
!?PI;
!!FU1:P;
!!FU3:Pнм/мш; нм - номер нового монстра, мш - номер монстра шаблона
!!FU5:Pнм;
!!FU7:P;
!!UN:C6815604/4/9699816;
!!FU9:Pнм;
!!FU11:Pг/нм; г - номер героя которому добавляется монстр
!?FU1;
!!VRy1:S8195216;
!!VRy2:S9802216;
!!DO2/1/22736/1:Py1/y2;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU3;
!!UN:C6768560/4/9802216;
!!VRy1:Sx2*116+8195216;
!!VRy2:Sx1*116+9802216;
!!DO4/1/116/1:Py1/y2;
!!VRy1:+8;
!?FU4;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU5;
!!VRy1:Sx2-197*17+9751016;
!!VRy3:Sx1*116+9802216;
!!VRz1:S^звук деф^; звук - первые 4-ре буквы озвучки, деф - название дефа монстра (пишется через пробел)
!!VRy2:S1*512+9597416;
!!DO6/1/17/1:Py1/y2;
!!VRy3:+8;
!!UN:Cy3/4/y1;
!!VRy3:+4;
!!VRy1:+5;
!!UN:Cy3/4/y1;
!?FU6;
!!UN:Cx2/1/?y1;
!!if&y1=32:;
  !!VRy1:S0;
!!en;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;

;mov CrAnim
!?FU7;
!!VRy1:S6815604;
!!VRy2:S16548; - size of CrAnim
!!VRy3:S9699816;
!!UN:Cy1/4/?y4;
!!UN:Cy3/4/?y5;
!!DO8/1/y2/1:Py4/y3;
!?FU8;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU9;
!!VRy1:Sx1*84 +9699816;
!!VRy2:S9699816;
!!DO10/1/84/1:Py2/y1;
!?FU10;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU11;
!!UN:C6919480/4/?y1;
!!VRy1:+136881;
!!VRy2:Sx1 *1170 +y1;
!!UN:Cy2/4/x2;


Вот скрипт добавляющий копейщика №268 Орину

Код
ZVSE
!?PI;
!!FU1:P;
!!FU3:P268/0;
!!FU5:P268;
!!FU7:P;
!!UN:C6815604/4/9699816;
!!FU9:P268;
!!FU11:P0/268;
!?FU1;
!!VRy1:S8195216;
!!VRy2:S9802216;
!!DO2/1/22736/1:Py1/y2;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU3;
!!UN:C6768560/4/9802216;
!!VRy1:Sx2*116+8195216;
!!VRy2:Sx1*116+9802216;
!!DO4/1/116/1:Py1/y2;
!!VRy1:+8;
!?FU4;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU5;
!!VRy1:Sx2-197*17+9751016;
!!VRy3:Sx1*116+9802216;
!!VRz1:S^pike cpkman.def^;
!!VRy2:S1*512+9597416;
!!DO6/1/17/1:Py1/y2;
!!VRy3:+8;
!!UN:Cy3/4/y1;
!!VRy3:+4;
!!VRy1:+5;
!!UN:Cy3/4/y1;
!?FU6;
!!UN:Cx2/1/?y1;
!!if&y1=32:;
  !!VRy1:S0;
!!en;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;

;mov CrAnim
!?FU7;
!!VRy1:S6815604;
!!VRy2:S16548; - size of CrAnim
!!VRy3:S9699816;
!!UN:Cy1/4/?y4;
!!UN:Cy3/4/?y5;
!!if&y5=0:;
!!DO8/1/y2/1:Py4/y3;
!!en;
!?FU8;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU9;
!!VRy1:Sx1*84 +9699816;
!!VRy2:S9699816;
!!DO10/1/84/1:Py2/y1;
!?FU10;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU11;
!!UN:C6919480/4/?y1;
!!VRy1:+136881;
!!VRy2:Sx1 *1170 +y1;
!!UN:Cy2/4/x2;

Для запуска этого скрипта Вам потребуются портреты монстров вот
www.docentpicolan.narod.ru/portxx.rar
Замените существующие и запустите скрипт.

В связи с техническими проблемами, которые устанавливаются, использовать скрипт без перезагрузки героев можно 1-ин раз. Но это будет исправлено.

Настраивать новых монстров средствами ЕРМ тоже нельзя т.к. в ЕРМ стоит ограничение на 196 монстров, поэтому только через UN:C.

Вобщем это все мелкие подробности (которые будут подправлены), тестите и говорите результаты.
vas2003
При помощи выше приведенного скрипта добавляемые монстры до 250 имеют следующие изъяны:
- четные монстры - игра вылетает при атаке
- нечетные монстры - игра вылетает после атаки smile.gif
И лишь некоторые нечетные монстры до 220 ведут себя адекватно. С чем связано данное поведение пока неизвестно.
Поэтому прошу всех кому это интересно помочь разобраться в проблеме.
Заранее спасибо.
vas2003
Итак новые монстры дописаны. Новые монстры не имеют никаких специфических св-в. Но при помощи модифицирования регистра ecx во время атаки (т.е. !?MF1) можно добиться любых существующих св-в (способ модифицирования представлен в скрипте). Единственный минус - монстры не имеют хинта.

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

Данный скрипт добавляет Оррину 231 монстра с анимацией архангелов и св-вами и озвучкой копейщиков.

Как пользоваться скриптом описано выше

Код
ZVSE
!?PI;
!!UN:C9597947/1/185; запись на свободном месте z-переменных {mov ecx, 5} и {jmp} обратно в код
!!UN:C9597948/1/5; - число забиваемое в регистр ecx
!!UN:C9597949/1/0;
!!UN:C9597950/1/0;
!!UN:C9597951/1/0;
!!UN:C9597952/1/255;
!!UN:C9597953/1/36;
!!UN:C9597954/1/141;
!!UN:C9597955/1/192;
!!UN:C9597956/1/18;
!!UN:C9597957/1/68;
!!UN:C9597958/1/0;

!!UN:C9597959/1/185;
!!UN:C9597960/1/9; - число в регистре
!!UN:C9597961/1/0;
!!UN:C9597962/1/0;
!!UN:C9597963/1/0;
!!UN:C9597964/1/255;
!!UN:C9597965/1/36;
!!UN:C9597966/1/141;
!!UN:C9597967/1/148;
!!UN:C9597968/1/253;
!!UN:C9597969/1/121;
!!UN:C9597970/1/0;



!!FU1:P;
!!FU3:P231/0;
!!FU5:P231;
!!FU7:P;
!!UN:C6815604/4/9699816;
!!FU9:P231;
!!FU11:P0/231;
!?FU1;
!!VRy1:S8195216;
!!VRy2:S9802216;
!!DO2/1/22736/1:Py1/y2;
!?FU2;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU3;
!!UN:C6768560/4/9802216;
!!VRy1:Sx2*116+8195216;
!!VRy2:Sx1*116+9802216;
!!DO4/1/116/1:Py1/y2;
!?FU4;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU5;
!!VRy1:Sx2-197*17+9751016;
!!VRy3:Sx1*116+9802216;
!!VRz1:S^pike crangl.def^;
!!VRy2:S1*512+9597416;
!!DO6/1/17/1:Py1/y2;
!!VRy3:+8;
!!UN:Cy3/4/y1;
!!VRy3:+4;
!!VRy1:+5;
!!UN:Cy3/4/y1;
!?FU6;
!!UN:Cx2/1/?y1;
!!if&y1=32:;
 !!VRy1:S0;
!!en;
!!UN:Cx1/1/y1;
!!VRx1:+1;
!!VRx2:+1;

;mov CrAnim
!?FU7;
!!VRy1:S6815604;
!!VRy2:S16548; - size of CrAnim
!!VRy3:S9699816;
!!UN:Cy1/4/?y4;
!!UN:Cy3/4/?y5;
!!if&y5=0:;
!!DO8/1/y2/1:Py4/y3;
!!en;
!?FU8;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU9;
!!VRy1:Sx1*84 +9699816;
!!VRy2:S9699816;
!!DO10/1/84/1:Py2/y1;
!?FU10;
!!UN:Cx1/1/?y1;
!!UN:Cx2/1/y1;
!!VRx1:+1;
!!VRx2:+1;

!?FU11;
!!UN:C6919480/4/?y1;
!!VRy1:+136881;
!!VRy2:Sx1 *1170 +y1;
!!UN:Cy2/4/x2;

!?MF1;
!!FU130:P;
!?FU130;
!!UN:C42229952/4/?y1;
!!UN&y1>200:C4458778/1/144; прыжок из кода на z-переменные
!!UN&y1>200:C4458779/1/233;
!!UN&y1>200:C4458780/1/219;
!!UN&y1>200:C4458781/1/106;
!!UN&y1>200:C4458782/1/78;
!!UN&y1>200:C4458783/1/0;
!!UN&y1>200:C4458784/1/144;

!!UN&y1>200:C4457019/1/144; прыжок на нудный код
!!UN&y1>200:C4457020/1/233;
!!UN&y1>200:C4457021/1/198;
!!UN&y1>200:C4457022/1/113;
!!UN&y1>200:C4457023/1/78;
!!UN&y1>200:C4457024/1/0;
!!UN&y1>200:C4457025/1/144;



!?BG1;
!!UN:C4458778/1/255;  возврат нормального кода
!!UN:C4458779/1/36;
!!UN:C4458780/1/141;
!!UN:C4458781/1/192;
!!UN:C4458782/1/18;
!!UN:C4458783/1/68;
!!UN:C4458784/1/0;

!!UN:C4457019/1/255; возврат нормального кода
!!UN:C4457020/1/36;
!!UN:C4457021/1/141;
!!UN:C4457022/1/148;
!!UN:C4457023/1/253;
!!UN:C4457024/1/121;
!!UN:C4457025/1/0;


Добавлено ([mergetime]1207375533[/mergetime]):
Скрипт под ТЕ, без вогификации
MasterOfPuppets
Поправьте, если в чём-то ошибусь...

Параметры каждого монстра занимают 116 байт. Каждый параметр - 4 байта. Итого 29 параметров. По порядку:

1)Тип города
2)Уровень
3)Ссылка на первые 4 буквы озвучки
4)Ссылка на деф монстра в битве
5)флаг монстра
6)Ссылка на название в единственном числе
7)Ссылка на название в множественном числе
8)Ссылка на описание
9) - 14) Цены в доп. ресурсах. Берётся лишь первое ненулевое значение из цикла.
15)Цена в золоте
16)Fight value
17)AI value
18)Базовый прирост в городе
19)Доп. прирост (Horde Growth)
20)Очки жизни
21)Скорость
22)Атака
23)Защита
24)Мин.урон
25)Макс.Урон
26)Кол-во боеприпасов
27)Кол-во заклинаний (для колдунов)
28)Минимальное кол-во монстра на карте
29)Максимальное кол-во монстра на карте

То, что не входит в таблицу:
a)Улучшения (апгрейды)
b )Спецспособности
с)Cranim

P.S. Меня глючит, или во всех вариантах скрипта vas2003 забыт Драколич? Всего монстров 197. В круговой функции копирования по 1 байту 22736 кругов. 22736 / 116 = 196.
Бедняга DracoLich...
Bisik
Интересно, интересно smile.gif
А можно с помощью подобного скрипта просто заменить монстру озвучку и анимацию на что-то своё, оригинальное?
Имею в виду используя новый деф файл и новый набор озвучки *.82m
MasterOfPuppets
Да, можно.
Дьяк
Цитата(Master Of Puppets @ 10 Jun 2009, 11:16)
P.S. Меня глючит, или во всех вариантах скрипта vas2003 забыт Драколич? Всего монстров 197. В круговой функции копирования по 1 байту 22736 кругов. 22736 / 116 = 196.
Бедняга DracoLich...


Молодость - глупость, епсель... Скрипты для новых монстров - это маразм, все через модификацию кода и выделение дополнительной памяти. Молодой был - тренеровался )))
hippocamus
Да ну почему. Отличный скрипт, и с твоей длл-кой работает.
MasterOfPuppets
Кстати, где можно скачать последнее обновление этой dll? У меня архив без указания версии, их чего делаю вывод, что это v1.00.
Дьяк
Будет доступна в 3,59, если ее включат в релиз.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.