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

Код
ZVSE
!?BG1&v997>-1;
!!BG:N?v4004; //4004 - текущий стек
!!BMv4004:T?v4005;  //4005 - его тип

!?MM0&v4005=75; //если злые бехолдеры (75), то начинаем смотреть за мышью
!!MM:D?y11;  //11 - текущее положение мыши
!!BU&y11>-1/y11<190:Ey11/?v4003; //    [check if living monster at position] есть хто? 4003 - номер стека на позиции
!!BMv4003&v4003>-1:I?v4002;          //    [get side of monster stack] свои? 4002
!!BMv4003&v4003>-1:T?v4077;          //   [get type of monster stack] ахтойта? 4007 - тип стека

!!UN&v4003>-1/v4002=0/v4077=71:R5/3/99; [70-trog] //если свои живые адские троги, то меняем курсор на заклинающий

!?CM4&v4003>-1/v4002=0/v4077=71; //по клику..
!!CM:F?y10; //смотрим, чем ткнули (10 - флаг)
!!CM&y10=0:R0; //убиваем стандартное действие
!!BMv4003&y10=0:U1/5 U2/5; //Урон строго равен пяти
!!BMv4003&y10=0:V38; //проигрываем анимацию
!!VRv4003:S-1; //если эту строку убить - анимация будет играть каждый ход
!!BG&y10=0:A3; //злые бехолдеры уходят в защиту. (как пропустить ход - я не нашел)



Набитая таблица характеристик от Вэйда с ценами и флагами. Спасибо feanor'у за проделанную адскую работу.
Код
[троглодит - сервитор]
!#MA:A70/4 C70/6/70 D70/5 E70/3 G70/12 L70/1 M70/2 P70/8 U70/71 X70/16;
!#MA:A71/5 C71/6/80 D71/6 E71/4 G71/12 L71/1 M71/2 P71/10 X71/16;
[гарпия-глайдер]
!#MA:A72/6 C72/6/200 D72/3 E72/8 G72/6 L72/2 M72/1 P72/12 U72/73 X72/524307;
!#MA:A73/7 C73/6/250 D73/3 E73/8 G73/6 L73/2 M73/2 P73/14 X73/524307;
[бехолдер-техномант!#!]
!#MA:A74/11 C74/6/550 D74/8 E74/14 G74/3 L74/5 M74/10 P74/30 U74/75 X74/2068;
!#MA:A75/13 C75/6/600 D75/12 E75/16 G75/3 L75/5 M75/12 P75/34 X75/2068;
[медуза-штурмовик]
!#MA:A76/11 C76/6/310 D76/8 E76/9 G76/4 L76/4 M76/7 P76/20 U76/77 X76/4116;
!#MA:A77/12 C77/6/340 D77/10 E77/9 G77/4 L77/4 M77/8 P77/25 X77/4116;
[минотавр-драгун!#]
!#MA:A78/8 C78/6/220 D78/7 E78/7 G78/6 L78/3 M78/5 P78/25 U78/79 X78/17;
!#MA:A79/8 C79/6/260 D79/8 E79/7 G79/6 L79/3 M79/5 P79/25 X79/17;
[мантикора-киборг]
!#MA:A80/13 C80/6/950 D80/16 E80/22 G80/2 L80/6 M80/16 P80/75 U80/81 X80/1040;
!#MA:A81/18 C81/6/1700 C81/2/1 D81/18 E81/26 G81/2 L81/6 M81/26 P81/75 X81/1040;
[дракон-громовержец]
!#MA:A82/20 C82/6/2000 C82/3/0 C82/4/2 D82/16 E82/40 G82/1 L82/7 M82/30 P82/150 U82/83 X82/1552;
!#MA:A83/21 C83/6/3000 C83/3/0 C83/4/3 D83/18 E83/40 G83/1 L83/7 M83/33 P83/230 X83/1552;


!#UN:T5/2/0/78;
!#UN:T5/2/1/79;

!#UN:T5/4/0/74;
!#UN:T5/4/1/75;

**z500-z679

!#VRz500:S^Сервитор^;
!#VRz501:S^Сервиторы^;
!#VRz502:S^Подконтролен техномагам^;

!#UN:G1/70/0/500;
!#UN:G1/70/1/501;
!#UN:G1/70/2/502;
**********************************
!#VRz503:S^Сервитор-капрал^;
!#VRz504:S^Сервиторы-капралы^;
!#VRz505:S^Подконтролен техномагам.^;

!#UN:G1/71/0/503;
!#UN:G1/71/1/504;
!#UN:G1/71/2/505;
******************************************************
!#VRz506:S^Планер^;
!#VRz507:S^Планеры^;
!#VRz508:S^Летает.^;

!#UN:G1/72/0/506;
!#UN:G1/72/1/507;
!#UN:G1/72/2/508;
************************************
!#VRz509:S^Глайдер^;
!#VRz510:S^Глайдеры^;
!#VRz511:S^Летает. Бомбардировщик.^;

!#UN:G1/73/0/509;
!#UN:G1/73/1/510;
!#UN:G1/73/2/511;
******************************************************
!#VRz512:S^Техномаг^;
!#VRz513:S^Техномаги^;
!#VRz514:S^Стрелок.^;

!#UN:G1/74/0/512;
!#UN:G1/74/1/513;
!#UN:G1/74/2/514;
******************************************
!#VRz515:S^Техномант^;
!#VRz516:S^Техноманты^;
!#VRz517:S^Стрелок. Контролирует сервиторов.^;

!#UN:G1/75/0/515;
!#UN:G1/75/1/516;
!#UN:G1/75/2/517;
******************************************
!#VRz518:S^Штурмовик^;
!#VRz519:S^Штурмовики^;
!#VRz520:S^Стрелок. Нет штрафа в рукопашной.^;

!#UN:G1/76/0/518;
!#UN:G1/76/1/519;
!#UN:G1/76/2/520;
*****************
!#VRz521:S^Штурмгвардеец^;
!#VRz522:S^Штурмгвардейцы^;
!#VRz523:S^Стрелок. Нет штрафа в рукопашной.^;

!#UN:G1/77/0/521;
!#UN:G1/77/1/522;
!#UN:G1/77/2/523;
*****************
!#VRz524:S^Драгун^;
!#VRz525:S^Драгуны^;
!#VRz526:S^^;

!#UN:G1/78/0/524;
!#UN:G1/78/1/525;
!#UN:G1/78/2/526;
*****************
!#VRz527:S^Лейб-драгун^;
!#VRz528:S^Лейб-драгуны^;
!#VRz529:S^Кавалерийский бонус^;

!#UN:G1/79/0/527;
!#UN:G1/79/1/528;
!#UN:G1/79/2/529;
*****************
!#VRz530:S^Модификант^;
!#VRz531:S^Модификанты^;
!#VRz532:S^^;

!#UN:G1/80/0/530;
!#UN:G1/80/1/531;
!#UN:G1/80/2/532;
**********************
!#VRz533:S^Киборг^;
!#VRz534:S^Киборги^;
!#VRz535:S^Резонансный удар^;

!#UN:G1/81/0/533;
!#UN:G1/81/1/534;
!#UN:G1/81/2/535;
***********
!#VRz536:S^Громовержец^;
!#VRz537:S^Громовержцы^;
!#VRz538:S^[здесь могла быть ваша реклама]^;

!#UN:G1/82/0/536;
!#UN:G1/82/1/537;
!#UN:G1/82/2/538;
***********
!#VRz539:S^Штормовержец^;
!#VRz540:S^Штормовержцы^;
!#VRz541:S^[здесь могла быть ваша реклама]^;

!#UN:G1/83/0/539;
!#UN:G1/83/1/540;
!#UN:G1/83/2/541;
feanor
Так. Пока не забыл.

Код
ZVSE
!#UN:A170/1/1500;
!#UN:A170/3/16;
!#VRz407:S^Книга Безумного Слепого Пророка^;
!#VRz408:S^101 рецепт прикотовления варенья из яблок. +1 к знаниям, +666 к безумию.^;
!#UN:A170/9/z407;
!#UN:A170/10/z408;
****
!?AE1&v998=170;
!!HE-1:F?y10/?y11/?y12/?y13;
!!VRy13:+1;
!!HE-1:Fy10/y11/y12/y13;
***
!?AE0&v998=170;
!!HE-1:F?y10/?y11/?y12/?y13;
!!VRy13:-1;
!!HE-1:Fy10/y11/y12/y13;
***
!?CM2;
!!CM:F?y20;
!!CM:I?y21;
!!VRy24&y21=11:S9;
!!VRy24&y21=12:S10;
!!VRy24&y21=13:S11;
!!VRy24&y21=14:S12;
!!VRy24&y21=20:S18;
!!HE-1&y24<>0:A1/?y23/y24;
!!CM:R1;
!!IF:V401/0;
!!CM&y20=512/y23=170:R0;
!!IF&y20=512/y23=170:Q401^101 рецепт прикотовления варенья из яблок. +1 к знаниям, +666 к безумию. Желаете открыть эту книгу?^;
!!IF&401/y20=512/y23=170:M^К сожалению, страницы слиплись от пролитой на них крови.^;


Заготовка скрипта для кампанейских артефактов - всяческих путевых журналов, лабораторных журналов НИИПЭТД, записных книжек и тэпэ. Поставлю ТЕ, поиграюсь с DL - мб сделаю красивое оформление.

Пока книгой служит артефакт 170 (воговский рог)
Лентяй
Шла речь о том, что облако ртути сложно реализовать... тогда может упростим его?

Взрыв как у огненного шара или инферно (но понятно не огненный, а в виде серебристого облака с светлой вспышкой в центре). Все, кого накрыло, получают некий урон, действие отравления длиться несколько ходов, как яд у виверн, но снять рассеиванием нельзя. только "лечением."(отсюда стратегия против фабрики - качаем воду)
feanor
Не стреляйте за километровый пост)

Таблица юнитов, издание второе, дополненное. С ценами, именами и стрелками там, где должно. Жрет кучу z-переменных, вроде от скрипта "script50.erm: Enhanced Monsters [by Arstahd]"

Код
[троглодит - сервитор]
!#MA:A70/4 C70/6/70 D70/5 E70/3 G70/12 L70/1 M70/2 P70/8 U70/71 X70/16;
!#MA:A71/5 C71/6/80 D71/6 E71/4 G71/12 L71/1 M71/2 P71/10 X71/16;
[гарпия-глайдер]
!#MA:A72/6 C72/6/200 D72/3 E72/8 G72/6 L72/2 M72/1 P72/12 U72/73 X72/524307;
!#MA:A73/7 C73/6/250 D73/3 E73/8 G73/6 L73/2 M73/2 P73/14 X73/524307;
[бехолдер-техномант!#!]
!#MA:A74/11 C74/6/550 D74/8 E74/14 G74/3 L74/5 M74/10 P74/30 U74/75 X74/2068;
!#MA:A75/13 C75/6/600 D75/12 E75/16 G75/3 L75/5 M75/12 P75/34 X75/2068;
[медуза-штурмовик]
!#MA:A76/11 C76/6/310 D76/8 E76/9 G76/4 L76/4 M76/7 P76/20 U76/77 X76/4116;
!#MA:A77/12 C77/6/340 D77/10 E77/9 G77/4 L77/4 M77/8 P77/25 X77/4116;
[минотавр-драгун!#]
!#MA:A78/8 C78/6/220 D78/7 E78/7 G78/6 L78/3 M78/5 P78/25 U78/79 X78/17;
!#MA:A79/8 C79/6/260 D79/8 E79/7 G79/6 L79/3 M79/5 P79/25 X79/17;
[мантикора-киборг]
!#MA:A80/13 C80/6/950 D80/16 E80/22 G80/2 L80/6 M80/16 P80/75 U80/81 X80/1040;
!#MA:A81/18 C81/6/1700 C81/2/1 D81/18 E81/26 G81/2 L81/6 M81/26 P81/75 X81/1040;
[дракон-громовержец]
!#MA:A82/20 C82/6/2000 C82/3/0 C82/4/2 D82/16 E82/40 G82/1 L82/7 M82/30 P82/150 U82/83 X82/1552;
!#MA:A83/21 C83/6/3000 C83/3/0 C83/4/3 D83/18 E83/40 G83/1 L83/7 M83/33 P83/230 X83/1552;


!#UN:T5/2/0/78;
!#UN:T5/2/1/79;

!#UN:T5/4/0/74;
!#UN:T5/4/1/75;

**z500-z679

!#VRz500:S^Сервитор^;
!#VRz501:S^Сервиторы^;
!#VRz502:S^Подконтролен техномагам^;

!#UN:G1/70/0/500;
!#UN:G1/70/1/501;
!#UN:G1/70/2/502;
**********************************
!#VRz503:S^Сервитор-капрал^;
!#VRz504:S^Сервиторы-капралы^;
!#VRz505:S^Подконтролен техномагам.^;

!#UN:G1/71/0/503;
!#UN:G1/71/1/504;
!#UN:G1/71/2/505;
******************************************************
!#VRz506:S^Планер^;
!#VRz507:S^Планеры^;
!#VRz508:S^Летает.^;

!#UN:G1/72/0/506;
!#UN:G1/72/1/507;
!#UN:G1/72/2/508;
************************************
!#VRz509:S^Глайдер^;
!#VRz510:S^Глайдеры^;
!#VRz511:S^Летает. Бомбардировщик.^;

!#UN:G1/73/0/509;
!#UN:G1/73/1/510;
!#UN:G1/73/2/511;
******************************************************
!#VRz512:S^Техномаг^;
!#VRz513:S^Техномаги^;
!#VRz514:S^Стрелок.^;

!#UN:G1/74/0/512;
!#UN:G1/74/1/513;
!#UN:G1/74/2/514;
******************************************
!#VRz515:S^Техномант^;
!#VRz516:S^Техноманты^;
!#VRz517:S^Стрелок. Контролирует сервиторов.^;

!#UN:G1/75/0/515;
!#UN:G1/75/1/516;
!#UN:G1/75/2/517;
******************************************
!#VRz518:S^Штурмовик^;
!#VRz519:S^Штурмовики^;
!#VRz520:S^Стрелок. Нет штрафа в рукопашной.^;

!#UN:G1/76/0/518;
!#UN:G1/76/1/519;
!#UN:G1/76/2/520;
*****************
!#VRz521:S^Штурмгвардеец^;
!#VRz522:S^Штурмгвардейцы^;
!#VRz523:S^Стрелок. Нет штрафа в рукопашной.^;

!#UN:G1/77/0/521;
!#UN:G1/77/1/522;
!#UN:G1/77/2/523;
*****************
!#VRz524:S^Драгун^;
!#VRz525:S^Драгуны^;
!#VRz526:S^^;

!#UN:G1/78/0/524;
!#UN:G1/78/1/525;
!#UN:G1/78/2/526;
*****************
!#VRz527:S^Лейб-драгун^;
!#VRz528:S^Лейб-драгуны^;
!#VRz529:S^Кавалерийский бонус^;

!#UN:G1/79/0/527;
!#UN:G1/79/1/528;
!#UN:G1/79/2/529;
*****************
!#VRz530:S^Модификант^;
!#VRz531:S^Модификанты^;
!#VRz532:S^^;

!#UN:G1/80/0/530;
!#UN:G1/80/1/531;
!#UN:G1/80/2/532;
**********************
!#VRz533:S^Киборг^;
!#VRz534:S^Киборги^;
!#VRz535:S^Резонансный удар^;

!#UN:G1/81/0/533;
!#UN:G1/81/1/534;
!#UN:G1/81/2/535;
***********
!#VRz536:S^Громовержец^;
!#VRz537:S^Громовержцы^;
!#VRz538:S^[здесь могла быть ваша реклама]^;

!#UN:G1/82/0/536;
!#UN:G1/82/1/537;
!#UN:G1/82/2/538;
***********
!#VRz539:S^Штормовержец^;
!#VRz540:S^Штормовержцы^;
!#VRz541:S^[здесь могла быть ваша реклама]^;

!#UN:G1/83/0/539;
!#UN:G1/83/1/540;
!#UN:G1/83/2/541;


Тестовая карта: http://ifolder.ru/12116194
Shihad
Кто за Гибберлингов?

И поменяй скрипт сервов, на подправленный мной. smile.gif Мы же подземку меняем.
major
А может это дело в текстовики забить?
Во-первых, удобнее и практичнее.
Во-вторых, экономия целой кучи z-переменных.
feanor
Забить надо. Очень надо. Но сегодня меня на это не хватит.
major
Завтра выложу забитый текстовик + скрипт, добавляющий стандартные флаги и убирающий экзотические абилки Темницы.
Главный вопрос, на каком экзешнике будет тестирование? на поТЕшном?
Shihad
Пока на обычном 3.58, но нужен явно TE+. потому что собираемся работать с вероятностями заклинаний.
feanor
Кстати да, забыл хотя б пару линеек опыта прописать(

Мну пока на ВОГ 3.58 все делает, но ТЕ тож есть

Кстати, Shihad - тож поправь в первом посте - техноманты вместо бехолдеров ставятся, а не вместо королей-минотавров.
major
Тогда просьба для всех поставить мини-ТЕ.
Там всего-то 4 скрипта, экзешник и текстовик заклинаний. И возможностей больше.
feanor
Размышления о курсорах

Поскольку у нас в битве добавляется несколько новых типов действий (подчинить Сервиторов, кастануть цепную молнию, подкинуть снарядов etc), хорошо бы их как-то различать - одна "книжка" беспонтово не совсем отвечает действительности.

Варианты решения.
1. Расширить таблицу в !!UN:R5/2/**; (курсоры битвы). Все эти курсоры лежат в CRcombat.def. Имхо, если добавить дополнительные кадры в деф - они станут доступны в UN:R5/2/

1,5. Аналогично, но для типа 0 - они хранятся в crdeflt.def

2. Использовать картинки артефактов (тип 4). Кажется, можно было сделать 3200 артефактов? Надо бы покурить ту тему..

3. Подмена дефов. Опять-таки, это мне еще надо курить. Зато так можно использовать анимацию, заменяя книжку (crspell)
Лентяй
А стандартный отменили? Не надо новых курсоров - лишняя трата сил и времени.
feanor
Ну..нелогично будет кидать патроны с анимацией каста)
major
Вот написал скрипт, отключающий абилки темницы во время битвы. Убраны:
- иммунитет к ослеплению троглодитов
- атака с возвращением гарпий
- окаменение медуз
- паралич скорпикор
- иммунитет к магии драконов
Осталась только хорошая мораль у минотавров. Похоже ее надо отключать прямо в ехе.
Код
!?BA52;
!!UN:V?y1/?y2;
!!VRy3&y1=358:S7961304;
!!VRy3&y1=359:S7994592;
!!VRy3:+54;
!!UN:Cy3/1/9;
!!VRy3:+1;
!!UN:Cy3/1/9;
!!VRy3:+4;
!!UN:Cy3/1/9;
!!VRy3&y1=358:S7961796;
!!VRy3&y1=359:S7995088;
!!VRy3:+66;
!!UN:Cy3/1/8;
!!VRy3:+1;
!!UN:Cy3/1/8;
!!UN:C4498060/1/124;
!!UN:C4498069/1/126;
!!UN:C4498380/1/124;
!!UN:C4498385/1/126;
!!UN&y1=358:C7710662/1/124;
!!UN&y1=358:C7710667/1/126;
!!UN&y1=358:C7729882/1/124;
!!UN&y1=358:C7729888/1/126;
!!UN&y1=359:C7725147/1/124;
!!UN&y1=359:C7725152/1/126;
!!UN&y1=359:C7743811/1/124;
!!UN&y1=359:C7743817/1/126;
!?BA53;
!!UN:V?y1/?y2;
!!VRy3&y1=358:S7961304;
!!VRy3&y1=359:S7994592;
!!VRy3:+54;
!!UN:Cy3/1/5;
!!VRy3:+1;
!!UN:Cy3/1/5;
!!VRy3:+4;
!!UN:Cy3/1/6;
!!VRy3&y1=358:S7961796;
!!VRy3&y1=359:S7995088;
!!VRy3:+66;
!!UN:Cy3/1/2;
!!VRy3:+1;
!!UN:Cy3/1/4;
!!UN:C4498060/1/70;
!!UN:C4498069/1/71;
!!UN:C4498380/1/70;
!!UN:C4498385/1/71;
!!UN&y1=358:C7710662/1/72;
!!UN&y1=358:C7710667/1/73;
!!UN&y1=358:C7729882/1/72;
!!UN&y1=358:C7729888/1/73;
!!UN&y1=359:C7725147/1/72;
!!UN&y1=359:C7725152/1/73;
!!UN&y1=359:C7743811/1/72;
!!UN&y1=359:C7743817/1/73;
Лентяй
Равно как нелогична иконка полета с крылышками для разномастных ифритов и тд. Это - игровая условность. Индикатор, показывающий, что с юнитом можно что-то сделать. Куча разных только запутает игрока. И нужно ли это вобще? Только если переделать ВСЕМ юнитам игры курсоры. Отдельно с нарисованным поднимающимся демоном для питлордов и тд.

На счет киборгов - а можно им дать свойства как живого, так и нежити? Всмысле чтобы можно было поднять и Воскрешением, и Поднятием мертвых?
feanor
Можно попробовать, впринципе.
Цитата
Только если переделать ВСЕМ юнитам игры курсоры.

отключи машинку для чтения мыслей)
feanor
Чтот у меня самый первый скрипт (злые глаза и адские троги) не пашет - только меняет курсор на книжку, а на щелчок не реагирует. Щас неадекватен - посмотрю завтра.

Добавлено ([mergetime]1242582563[/mergetime]):
Чтот у меня самый первый скрипт (злые глаза и адские троги) не пашет - только меняет курсор на книжку, а на щелчок не реагирует. Щас неадекватен - посмотрю завтра.

Добавлено ([mergetime]1242582676[/mergetime]):
!?CM4&v4003>-1/v4002=0/v4077=29; //по клику.

имхо, проблема здесь - 29 осталось с прошлой версии, где архимаги и гремлины
feanor
Код
ZVSE
[эти числа мне продиктовал во сне сам Ктулху]
!#UN:C65838064/4/3907248332;
!#UN:C65838068/4/15790833;

!#UN:C65838080/4/3857573315;
!#UN:C65838084/4/15458544;


меняем Оверлорда на Генерала, а Варлока - на Магистра. Для WoG 358
Vade Parvis
Хех... А у мну сча вога нет sad.gif Ну да лан.

У меня такой вопрос к вам, камрады скриптеры.
Цитата
1. Техномант может кастануть на любой немеханический живой юнит абилку "стимулятор" (если угодно - "психотронное излучение", св-ва не меняются), которая на n поднимет атаку, на n единиц поднимет минимальный и максимальный урон, но потом постепенно убивает (скорее всего - подобно яду виверн-монархов).
Теперь смотри - благодаря тому, что урон поднимается на конкретное число единиц, мы получаем абилку, более всего эффективную для 1-го уровня. В начале игры за Фабрику нам доступен только один 1-й уровень - родной (солдат или пигмей). Позже с большой долей вероятности будет массово наличествовать у героя именно родной первый уровень. Для легионера данный бафф капитально более эффективен, чем для гибберлига, так как: во-первых, у него будет всегда 2+n урона, а не 1+n - 2+n урона; во-вторых - у него намного больший запас здоровья, и после ослабления от "ломки" он останется более "живым", чем гибб в аналогичной ситуации.
Итого - мы имеем бафф, который в 90% случаев игры за Фабрику будет наиболее эффективен именно для усиления Сервиторов/Легионеров. Т. е. - включает в себя твой "жесткий вариант" целиком, и он при этом не теряет ничего, без введения хоть каких-либо жестких ограничений. Ты ведь не считаешь, что ограниченная эффективность и для других юнитов, расширяющая область возможного применения техномантки - это плохо и превращает её в стандартного баффера?

Теперь менее определенные и более умозрительные абилки - не концепции, а просто идеи.
2. Электроанимация. Ака "франкенштейнинг".
Эффект - базовое Воскрешение (т. е. стек умрет после окончания боя) дружественного стека, кол-во воскрешаемых ХП = k*n(Техномантов), но вместо стандартной анимации проигрывается "электрическая". На поднятый стек накладывается невидимый эффект, который мгновенно убивает его через несколько ходов. Поднятый таким образом стек, возможно, больше нельзя воскресить обычным спеллом героя.

Так вот - насколько реально реализовать первую (данная абилка - то же самое, что старое усиление первого уровня, но с возможностью каста на любой живой юнит) и вторую абилки.
major
Вот код-функция для определения расстояние между текущим юнитом и курсором. Осталось привязать к номеру существа и обработать щелчок мыши.
Код
!?MM0;
!!BG:N?y1; стек
!!MM:D?y2; позиция мыши
!!FU|y2<0/y2>186:E; выход если не на поле
!!BU:Oy2/?y-1; препятствие?
!!FU&y-1>0:E; тогда выходим
!!BU:Dy2/?y-1; труп лежит?
!!FU&y-1=-2:E; выходим если еще живой
!!BMy1:P?y3; позиция стека
!!VRy4:Sy3 :17; номер линейки стека
!!VRy5:Sy2 :17; номер линейки мыши
!!VRy6:Sy5 -y4; расстояние между линейками
!!VRy6&y6<0:*-1;
!!VRy7:Sy4 *17 -y3 *-1; расстояние от края для стека
!!VRy8:Sy5 *17 -y2 *-1; расстояние от края для мыши
!!VRy10:Sy4 %2; чет-нечет
!!VRy11:Sy5 %2;
!!VRy9:Sy8 -y7; расстояние по горизонтали
!!VRy9&y10=y11/y9<0:*-1; лучше
!!VRy12&y10=y11:Sy6 :2; не
!!VRy9&y10=0/y11<>0/y9<0:*-1; знать
!!VRy9&y10=0/y11<>0/y9>0:-1; что
!!VRy12&y10=0/y11<>0:Sy6 -1 :2; это
!!VRy9&y10<>0/y11=0/y9<0:*-1 -1;
!!VRy12&y10<>0/y11=0:Sy6 -1 :2;
!!VRy13:Sy6;
!!VRy13&y9>y12:+y9 -y12; расстояние от цели до курсора
!!FU&y13>3:E;
!!UN:R5/3/0; меняем курсор на спеллбук

Определяет расстояние для одноклеточного существа. При желании можно переделать и для двуклеточного. Взято максимальное расстояние 3 клетки.
feanor
Набыдлокодил утилитку для изменения параметров юнитов.

http://waper.ru/file/935302/HoMM_Monst.rar
feanor
Адскiя троглодиты обороняются опосля пѣрехода безъ атаки. Въ качестве дѣбага использована анимацiя "Щитъ"

Код
ZVSE
!?BG0;
!!BG:N?y1;
!!BG:A?y2;
!!BMy1:T?y3;
!!BMy1&y2=2/y3=71:V27 F?y5;
!!VRy5&y2=2/y3=71:|134217728;
!!BMy1&y2=2/y3=71:Fy5;
feanor
Багрепорт. От Феанора - Феанору.


!!BMv4003&v4003>-1:I?v4002; // [get side of monster stack] свои? 4002

на самом деле не свои, а "левые". Пофиксить.
Shihad
Где-то здесь полно глюков. Точно знаю, что надо прикрутить проверку на тактическую фазу.
Код
ZVSE
!?BG1&v997>-1;
!!BG:N?v4014; //4014 - текущий стек
!!BMv4014:T?v4015; //4015 - его тип
!?MM0&v4015=83; //Если это черные драконы[83], то запускаем могучую функцию major'а с некоторыми дополнениями
!!MM:D?y11; //11 - текущая положение мыши
!!BU&y11>-1/y11<190:Ey11/?v4013; //Есть кто живой на позиции y11? 4013 - номер стека на позиции
!!BMv4013&v4013>-1:I?v4012 N?v4018; //Если стек принадлежит атакующему(левому), то 4012 = 0. Иначе 1. Что-то мне здесь не нравится, похоже, в обороне это не сработает. Что делать будем? В 4018 - количество громов на поле.
//Здесь идет могучая функция майора.
!!BG:N?y1; стек
!!MM:D?y2; позиция мыши
!!FU|y2<0/y2>186:E; выход если не на поле
!!BU:Oy2/?y-1; препятствие?
!!FU&y-1>0:E; тогда выходим
!!BU:Dy2/?y-1; труп лежит?
!!FU&y-1=-2:E; выходим если еще живой
!!BMy1:P?y3; позиция стека
!!VRy4:Sy3 :17; номер линейки стека
!!VRy5:Sy2 :17; номер линейки мыши
!!VRy6:Sy5 -y4; расстояние между линейками
!!VRy6&y6<0:*-1;
!!VRy7:Sy4 *17 -y3 *-1; расстояние от края для стека
!!VRy8:Sy5 *17 -y2 *-1; расстояние от края для мыши
!!VRy10:Sy4 %2; чет-нечет
!!VRy11:Sy5 %2;
!!VRy9:Sy8 -y7; расстояние по горизонтали
!!VRy9&y10=y11/y9<0:*-1; лучше
!!VRy12&y10=y11:Sy6 :2; не
!!VRy9&y10=0/y11<>0/y9<0:*-1; знать
!!VRy9&y10=0/y11<>0/y9>0:-1; что
!!VRy12&y10=0/y11<>0:Sy6 -1 :2; это
!!VRy9&y10<>0/y11=0/y9<0:*-1 -1;
!!VRy12&y10<>0/y11=0:Sy6 -1 :2;
!!VRy13:Sy6;
!!VRy13&y9>y12:+y9 -y12; расстояние от цели до курсора
!!FU&y13>3:E; //В y13 записано расстояние от цели до курсора
//И вот тут она закончилась.
!!UN&v4013>-1/v4012=1/y13<6:R5/4/106; //Меняем курсор. На что - еще не врубился.
!?CM4&v013>-1; //по клику
!!CM:F?y15; //смотрим, чем ткнули
!!CM&y15=0:R0; //убили стандартное действие.
!!HE-1:A1/?v4016/2 F//?v4017//1; В переменную 4016 пишется номер артефакта, болтающийся на шее у героя. В 4017 - его сила магии.
!!HE-1&v4016>-1:A-v4016; //Снимаем его к чертям.
!!HE-1:A1/106/2 F//v4018/; //Галстук на шею, сила магии равна количеству громиков.
!!BMv4014:C19/y12/3/3/0; //каст цепухи по адресу y12. Трындец наступит всем врагам! И где-то здесь он выдает экзепшн и роняет игру. Чую, потому что ЧД - не маг т нужной анимации нет.
!!HE-1:A-106; //Снимаем галстук от молний.
!!HE-1:A1/v4016/2 F//v4017//1; //Взад, все взад...
!!BG&y10=0:A3;
Shihad
Это на ТЕ тестилось?
feanor
ZVSE
!?BG1&v997>-1;
!!BG:N?v4014; //4014 - текущий стек
!!BMv4014:T?v4015; //4015 - его тип
!?MM0&v4015=83; //Если это черные драконы[83], то запускаем могучую функцию major'а с некоторыми дополнениями
!!MM:D?y11; //11 - текущая положение мыши
!!BU&y11>-1/y11<190:Ey11/?v4013; //Есть кто живой на позиции y11? 4013 - номер стека на позиции
!!BMv4013&v4013>-1:I?v4012 N?v4018; //Если стек принадлежит атакующему(левому), то 4012 = 0. Иначе 1. Что-то мне здесь не нравится, похоже, в обороне это не сработает. Что делать будем? В 4018 - количество громов на поле.
//Здесь идет могучая функция майора.
!!BG:N?y1; стек
!!MM:D?y2; позиция мыши
!!FU|y2<0/y2>186:E; выход если не на поле
!!BU:Oy2/?y-1; препятствие?
!!FU&y-1>0:E; тогда выходим
!!BU:Dy2/?y-1; труп лежит?
!!FU&y-1=-2:E; выходим если еще живой
!!BMy1:P?y3; позиция стека
!!VRy4:Sy3 :17; номер линейки стека
!!VRy5:Sy2 :17; номер линейки мыши
!!VRy6:Sy5 -y4; расстояние между линейками
!!VRy6&y6<0:*-1;
!!VRy7:Sy4 *17 -y3 *-1; расстояние от края для стека
!!VRy8:Sy5 *17 -y2 *-1; расстояние от края для мыши
!!VRy10:Sy4 %2; чет-нечет
!!VRy11:Sy5 %2;
!!VRy9:Sy8 -y7; расстояние по горизонтали
!!VRy9&y10=y11/y9<0:*-1; лучше
!!VRy12&y10=y11:Sy6 :2; не
!!VRy9&y10=0/y11<>0/y9<0:*-1; знать
!!VRy9&y10=0/y11<>0/y9>0:-1; что
!!VRy12&y10=0/y11<>0:Sy6 -1 :2; это
!!VRy9&y10<>0/y11=0/y9<0:*-1 -1;
!!VRy12&y10<>0/y11=0:Sy6 -1 :2;
!!VRy13:Sy6;
!!VRy13&y9>y12:+y9 -y12; расстояние от цели до курсора
!!FU&y13>3:E; //В y13 записано расстояние от цели до курсора
//И вот тут она закончилась.
!!UN&v4013>-1/v4012=1/y13<6:R5/4/106; //Меняем курсор. На что - еще не врубился.
!?CM4&v4013>-1/v997>-1; //по клику
!!CM:F?y15; //смотрим, чем ткнули
!!CM&y15=0:R0; //убили стандартное действие.
!!HE-1:A1/?v4016/2 F/?v4017/1; В переменную 4016 пишется номер артефакта, болтающийся на шее у героя. В 4017 - его сила магии.
!!HE-1&v4016>-1:A-v4016; //Снимаем его к чертям.
!!HE-1:A1/106/2 F/v4018/; //Галстук на шею, сила магии равна количеству громиков.
!!BMv4014:C19/y12/3/3/0; //каст цепухи по адресу y12. Трындец наступит всем врагам! И где-то здесь он выдает экзепшн и роняет игру. Чую, потому что ЧД - не маг т нужной анимации нет.
!!HE-1:A-106; //Снимаем галстук от молний.
!!HE-1:A1/v4016/2 F/v4017/1; //Взад, все взад...
!!BG&y10=0:A3;

Пофиксил опечатки типа двойных слэшей
Вот так он успевает поругаться перед выдачей эксепшна.
Ругается на строку

!!HE-1&v4016>-1:A-v4016; //Снимаем его к чертям.

Емнип, надо чтот вроде
!!VRy16:S0 -v4016;
!!HE-1&v4016>-1: Ay16;

Добавлено ([mergetime]1249555355[/mergetime]):
Кстати, экспешн все таки от того, что комп не может скастовать цепнуху на гекс без юнита. Если заменить на фаербол или инферно (или поменять флаги у цепнухи?), то эксепшна нет. Но закл кастуется куда т в верхний левый угол

Добавлено ([mergetime]1249555634[/mergetime]):
..потому что y12 пустая. Пишем куда-нить
!!CM:D?y12;
Shihad
Работает, вариант черновой. ТРебуется проверка тактической фазы, снятие и надевание артефактов на шею и изменение спеллповера на число, равное числу громов. А мне еще отчет на грант писать.
Код
ZVSE
ERMS_ScriptDate=15.8(August).2009
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
*Скрипт Громовержцев - черные драконы бьют цепной молнией, если расстояние до цели не больше трех клеток.
!?BG1&v997>-1;
!!BG:N?v4014; //4014 - текущий стек
!!BMv4014:T?v4015; //4015 - его тип
!?MM0&v4015=83; //Если это черные драконы[83], то запускаем могучую функцию major'а с некоторыми дополнениями
!!BMv4014:N?v4016; **в 4016 пишется количество Громов в стеке.
!!MM:D?y11; //11 - текущая положение мыши
!!BU&y11>-1/y11<190:Ey11/?v4013; //Есть кто живой на позиции y11? 4013 - номер стека на позиции
!!BMv4013&v4013>-1:I?v4012; //Если стек принадлежит атакующему(левому), то 4012 = 0. Иначе 1. Что-то мне здесь не нравится, похоже, в обороне это не сработает. Что делать будем? В 4018 - количество громов на поле.
**Здесь идет могучая функция майора.
!!BG:N?y1; стек
!!MM:D?y2; позиция мыши
!!FU|y2<0/y2>186:E; выход если не на поле
!!BU:Oy2/?y-1; препятствие?
!!FU&y-1>0:E; тогда выходим
!!BU:Dy2/?y-1; труп лежит?
!!FU&y-1=-2:E; выходим если еще живой
!!BMy1:P?y3; позиция стека
!!VRy4:Sy3 :17; номер линейки стека
!!VRy5:Sy2 :17; номер линейки мыши
!!VRy6:Sy5 -y4; расстояние между линейками
!!VRy6&y6<0:*-1;
!!VRy7:Sy4 *17 -y3 *-1; расстояние от края для стека
!!VRy8:Sy5 *17 -y2 *-1; расстояние от края для мыши
!!VRy10:Sy4 %2; чет-нечет
!!VRy11:Sy5 %2;
!!VRy9:Sy8 -y7; расстояние по горизонтали
!!VRy9&y10=y11/y9<0:*-1; лучше
!!VRy12&y10=y11:Sy6 :2; не
!!VRy9&y10=0/y11<>0/y9<0:*-1; знать
!!VRy9&y10=0/y11<>0/y9>0:-1; что
!!VRy12&y10=0/y11<>0:Sy6 -1 :2; это
!!VRy9&y10<>0/y11=0/y9<0:*-1 -1;
!!VRy12&y10<>0/y11=0:Sy6 -1 :2;
!!VRy13:Sy6;
!!VRy13&y9>y12:+y9 -y12; расстояние от цели до курсора
!!FU&y13>3:E; //В y13 записано расстояние от цели до курсора
**И вот тут она закончилась.
!!UN&v4013>-1/v4012=1/y13<6:R5/4/106; //Меняем курсор. На что - еще не врубился.
**!!MM&v4013>-1/v4012=1/y13<6:M^Кастовать цепную молнию^;        **Здесь мы пишем подсказку.
!?CM4&v4013>-1/v997>-1/v4015=83/y13<6; //по клику
!!CM:F?y15; //смотрим, чем ткнули
!!CM:D?y12; //В 12 пишем номер слота.
!!CM&y15=0:R0; //убили стандартное действие.
**!!HE-1:A1/?v4016/2; В переменную 4016 пишется номер артефакта, болтающийся на шее у героя. В 4017 - его сила магии.
**!!HE-1&v4016>-1:A-v4016; //Снимаем его к чертям.
!!HE-1:A1/106/2; //Галстук на шею, сила магии равна количеству громиков.
!!HE-1:F+0/+0/?v4018/+0/1; Сохранили в 4018 силу магии героя.
!!HE-1:F+0/+0/v4016/+0; Сила магии равна количеству громов.
!!BMv4014:C19/y12/3/3/1; //каст цепухи по адресу y12. Трындец наступит всем врагам!
**!!HE-1:A-106; //Снимаем галстук от молний.
**!!HE-1:A1/v4016/2; //Взад, все взад...
!!HE-1:F+0/+0/v4018/+0;  Все назад!
!!BG&v4014=0:A3;


Немного подправил код.


Нашел баг - если у нас два стека драконов , то при переходе хода к второму после каста первого, второй может кастовать молнию до посинения. Похоже, !?BG не срабатывает.
feanor
Хм..и в чем я тогда протупил..

Код
ZVSE
!?BG0;
!!BG:A?y1 D?y2 N?y3;
!!BMy3:P?y4;
!!VRy2::17;
!!VRy4::17;
!!BMy3&y2=y4/y1=6:V11;


Базовая проверка на "разгон" драгунов. Пока просто показывает анимацию огненного щита, если некий юнит атакует цель перед собой.
Vade Parvis
feanor, классно!
respect.gif
feanor
http://forum.df2.ru/index.php?showtopic=68...=392454&st=40&#

cобственно про кнопку.
feanor
Убить Mana Vortex - 5BDD50: EB
Academy: 5BDFF5: EB

Про Summoning Portal еще черт-те когда было написано.
Теперь бы еще с торговцами разобраться и с сило
Лентяй
а можно по-подробнее, что ты с ними делаешь?

Добавлено ([mergetime]1267450240[/mergetime]):
ааа, дошло. )))
Vade Parvis
Полагаю, что Феанору хотелось материться по поводу кастов smile.gif А если точнее — по поводу их несовместимости с ИИ.

Действия ИИ вырисовываются приблизительно такими:

Техномаг.
Паук. Если в пределах одного хода нет противника или если стек должен пропустить ход — саммонится мина-паук, отнимается заряд каста.

Кулак. Если в пределах одного хода есть стеки противника со скоростью меньше нашей, то изменяем свой урон до 50 (условный урон силового кулака), высчитываем стек, ХП которого ближе всего к наносимого стеком техномагов урону (т. е. совсем мелочь — тоже менее приоритетна, как и слишком мощные стеки), вейтимся, урон нормализуется. После вейта снова высчитываются враги в пределах прямой досягаемости, подбегаем к ним вплотную (не помню, реализуемо это прямым способом; если нет, то у меня есть намётки), иначе кастуем мину-паука.
Если во время хода рядом со стеком техномагов есть вражеский стек, то на него всегда кастуется "силовой кулак" (можно, конечно, высчитывать его относительную силу* и в зависимости от этого делать, но это ненужная заумь, полагаю), отнимается заряд каста.
* Мне пришло в голову высчитывание того, сможет ли стек техномагов уложить вражеский стек двумя "кулаками", с учётом числа наших, которых снесёт одна атака остатков стека-врага.

Гибберлинг.
На время просчёта цели для запуска гранаты гибберлинг становится стрелком-снайпером. ИИ должен стрелять гранатой в двух случаях:
1). В противостоящей ему армии есть стрелки — гранаты метаются в точку расположения приоритетной цели, если на ней нет гранат, или в соседние с ней, если точка уже занята гранатой.
2). Если в начале хода гибберлинга рядом с ним стоит враг — граната всегда кастуется в точку сразу за ним (полагаю, что просчитать эту точку не составляет проблемы). В этой ситуации ИИ никогда не атакует врукопашную.

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

Глайдер.
Пока у ИИ-шного глайдера есть гранаты, у него 0 выстрелов пистолета. Если до него не могут добраться за один ход враги, то всегда вейтится. В начале хода его урон выставляется равным урону от Облака и каким-то образом "агрессивность" поведения доводится до максимума (через временное повышение параметров?). Если он может долететь до цели, то подлетает вплотную без атаки, если не может — подлетает максимально близко; после этого параметры уменьшаются до нормального уровня.
Если в начале хода на расстоянии <= 4 есть враг, то атака замещается кастом облака, отнимается заряд каста, параметры уменьшаются до нормальных.

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

P.P.S. Основной теоретический вопрос — можно ли заставить ИИ подойти вплотную вместо атаки?
Vade Parvis
Насчёт техномага забылась одна вещь — скрипт ближнего каста молнии хорошо подходит юниту и в плане логики действий ни капли не противоречит остальным типам кастов для ИИ (просто небольшое скопление if/else, расписывать схему алгоритма, думаю, нафиг не нужно... или нужно? :willson: smile.gif ).
feanor
Так. Раздача.
Мне не нравится сама идея выдачи оффенс-кастов техномагессе.
Гранатометство - тоже. Это первый уровень, а не пятый или восьмой.
Корабль с матросами мне тоже не нравятся.
А при упоминании всех хитрых вывертов, которые именуются абилкой глайдера, мне вообще хочется что-нибудь раздолбать.
Vade Parvis
Спс за ответ. Без критики бывает крайне тяжело заметить ошибки, даже вопиющие yes.gif

Цитата
Мне не нравится сама идея выдачи оффенс-кастов техномагессе.
Это, вообще-то, твоя идея spiteful.gif И выходит куда интересней, чем с дефенсом, и, в отличие от дефенса, каст различных оффенс-кастов в разных ситуациях в принципе можно вбить в мозги АИ. Ну и плюс соответствует тактике безудержного раша, а также классично до одури, так как возвращает Чародея из King's Bounty wink.gif Про то, что без оффенс-кастов Техномага у Фабрики будут откровенные проблемы с огневой мощью — не говорю.

Цитата
Гранатометство - тоже. Это первый уровень, а не пятый или восьмой.
Изначально у них было поддержано миноукладство. Имхо, вариант с гранатами куда менее мощный, так как подвести под него врага куда тяжелей. Ну и плюс урон может бытть сколь угодно небольшим.

Цитата
А при упоминании всех хитрых вывертов, которые именуются абилкой глайдера, мне вообще хочется что-нибудь раздолбать.
Буду рад чему-нибудь более адекватному yes.gif Можно ли сделать атаку с возвратом, но с подменой координат стартовой точки при возврате?

P.S. yahoo.gif Вижу свою главную ошибку в вывертах глайдера. На порядок проще сделать бомбу обычной рукопашной атакой без ответа, а пистолетег — волшебной кнопкой, просто включающей по-умолчанию забаненную возможность стрельбы.
Vade Parvis
Или, как вариант, забить на стрельбу, просто при ответке понижать урон, проигрывать другую анимацию атаки, а после потери всех зарядов маны — то же самое, но до окончания хода. Вотъ. Впрочем, простой бан стрельбы и дополнительные плюшки в рукопашке навскидку сделать даже проще.

Анимация стрелкового оружия в кач-ве "слабого" предпочтительна в том плане, что глайдер всегда в полёте.
Shihad
Мдаа... Давно я сюда не заходил - уже в "Коде" флудят. Материться хочется.
Vade Parvis
Fixed
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.