Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
31 May 2009, 21:35
Сообщение
#21
|
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Вот код-функция для определения расстояние между текущим юнитом и курсором. Осталось привязать к номеру существа и обработать щелчок мыши.
Код !?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 клетки. |
|
|
|
01 Jul 2009, 15:41
(Сообщение отредактировал feanor - 01 Jul 2009, 16:42)
Сообщение
#22
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
|
|
|
|
02 Aug 2009, 19:22
(Сообщение отредактировал feanor - 02 Aug 2009, 19:22)
Сообщение
#23
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Адск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; |
|
|
|
03 Aug 2009, 16:30
(Сообщение отредактировал feanor - 03 Aug 2009, 16:33)
Сообщение
#24
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Багрепорт. От Феанора - Феанору.
!!BMv4003&v4003>-1:I?v4002; // [get side of monster stack] свои? 4002 на самом деле не свои, а "левые". Пофиксить. |
|
|
|
06 Aug 2009, 07:47
(Сообщение отредактировал Shihad - 06 Aug 2009, 08:44)
Сообщение
#25
|
|
![]() Weird Сообщений: 1 976 Спасибо сказали: 644 раза |
Где-то здесь полно глюков. Точно знаю, что надо прикрутить проверку на тактическую фазу.
Код 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; -------------------- Работать надо - винтовка рядом.
|
|
|
|
06 Aug 2009, 12:43
Сообщение
#26
|
|
![]() Weird Сообщений: 1 976 Спасибо сказали: 644 раза |
Это на ТЕ тестилось?
-------------------- Работать надо - винтовка рядом.
|
|
|
|
06 Aug 2009, 13:47
Сообщение
#27
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
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; |
|
|
|
06 Aug 2009, 20:05
(Сообщение отредактировал Shihad - 15 Aug 2009, 21:12)
Сообщение
#28
|
|
![]() Weird Сообщений: 1 976 Спасибо сказали: 644 раза |
Работает, вариант черновой. ТРебуется проверка тактической фазы, снятие и надевание артефактов на шею и изменение спеллповера на число, равное числу громов. А мне еще отчет на грант писать.
Код 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 не срабатывает. -------------------- Работать надо - винтовка рядом.
|
|
|
|
03 Feb 2010, 01:02
Сообщение
#29
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Хм..и в чем я тогда протупил..
Код ZVSE !?BG0; !!BG:A?y1 D?y2 N?y3; !!BMy3:P?y4; !!VRy2::17; !!VRy4::17; !!BMy3&y2=y4/y1=6:V11; Базовая проверка на "разгон" драгунов. Пока просто показывает анимацию огненного щита, если некий юнит атакует цель перед собой. |
|
|
|
03 Feb 2010, 02:25
Сообщение
#30
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
feanor, классно!
-------------------- |
|
|
|
18 Feb 2010, 22:04
Сообщение
#31
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
|
|
|
|
28 Feb 2010, 22:18
(Сообщение отредактировал feanor - 28 Feb 2010, 22:21)
Сообщение
#32
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Убить Mana Vortex - 5BDD50: EB
Academy: 5BDFF5: EB Про Summoning Portal еще черт-те когда было написано. Теперь бы еще с торговцами разобраться и с сило |
|
|
|
01 Mar 2010, 16:30
Сообщение
#33
|
||||
![]() Hota Crew Сообщений: 11 597 Спасибо сказали: 9895 раз |
а можно по-подробнее, что ты с ними делаешь?
Добавлено ([mergetime]1267450240[/mergetime]): ааа, дошло. ))) -------------------- |
|||
|
|
||||
19 Apr 2010, 04:11
Сообщение
#34
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
Полагаю, что Феанору хотелось материться по поводу кастов
Действия ИИ вырисовываются приблизительно такими: Техномаг. Паук. Если в пределах одного хода нет противника или если стек должен пропустить ход — саммонится мина-паук, отнимается заряд каста. Кулак. Если в пределах одного хода есть стеки противника со скоростью меньше нашей, то изменяем свой урон до 50 (условный урон силового кулака), высчитываем стек, ХП которого ближе всего к наносимого стеком техномагов урону (т. е. совсем мелочь — тоже менее приоритетна, как и слишком мощные стеки), вейтимся, урон нормализуется. После вейта снова высчитываются враги в пределах прямой досягаемости, подбегаем к ним вплотную (не помню, реализуемо это прямым способом; если нет, то у меня есть намётки), иначе кастуем мину-паука. Если во время хода рядом со стеком техномагов есть вражеский стек, то на него всегда кастуется "силовой кулак" (можно, конечно, высчитывать его относительную силу* и в зависимости от этого делать, но это ненужная заумь, полагаю), отнимается заряд каста. * Мне пришло в голову высчитывание того, сможет ли стек техномагов уложить вражеский стек двумя "кулаками", с учётом числа наших, которых снесёт одна атака остатков стека-врага. Гибберлинг. На время просчёта цели для запуска гранаты гибберлинг становится стрелком-снайпером. ИИ должен стрелять гранатой в двух случаях: 1). В противостоящей ему армии есть стрелки — гранаты метаются в точку расположения приоритетной цели, если на ней нет гранат, или в соседние с ней, если точка уже занята гранатой. 2). Если в начале хода гибберлинга рядом с ним стоит враг — граната всегда кастуется в точку сразу за ним (полагаю, что просчитать эту точку не составляет проблемы). В этой ситуации ИИ никогда не атакует врукопашную. Если в пределах хода гибберлинга есть повреждённый механический юнит, то его починке присваивается максимальный приоритет и гиб не стреляет. Глайдер. Пока у ИИ-шного глайдера есть гранаты, у него 0 выстрелов пистолета. Если до него не могут добраться за один ход враги, то всегда вейтится. В начале хода его урон выставляется равным урону от Облака и каким-то образом "агрессивность" поведения доводится до максимума (через временное повышение параметров?). Если он может долететь до цели, то подлетает вплотную без атаки, если не может — подлетает максимально близко; после этого параметры уменьшаются до нормального уровня. Если в начале хода на расстоянии <= 4 есть враг, то атака замещается кастом облака, отнимается заряд каста, параметры уменьшаются до нормальных. P.S. Сумбурно, ибо рубит на корню. Просто мысли не то, чтобы новые, но были благополучно забыты среди забот, вспомнившись только сейчас. P.P.S. Основной теоретический вопрос — можно ли заставить ИИ подойти вплотную вместо атаки? -------------------- |
|
|
|
23 Apr 2010, 15:55
Сообщение
#35
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
Насчёт техномага забылась одна вещь — скрипт ближнего каста молнии хорошо подходит юниту и в плане логики действий ни капли не противоречит остальным типам кастов для ИИ (просто небольшое скопление if/else, расписывать схему алгоритма, думаю, нафиг не нужно... или нужно? :willson:
-------------------- |
|
|
|
23 Apr 2010, 16:12
Сообщение
#36
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Так. Раздача.
Мне не нравится сама идея выдачи оффенс-кастов техномагессе. Гранатометство - тоже. Это первый уровень, а не пятый или восьмой. Корабль с матросами мне тоже не нравятся. А при упоминании всех хитрых вывертов, которые именуются абилкой глайдера, мне вообще хочется что-нибудь раздолбать. |
|
|
|
23 Apr 2010, 16:35
(Сообщение отредактировал Vade Parvis - 23 Apr 2010, 16:38)
Сообщение
#37
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
Спс за ответ. Без критики бывает крайне тяжело заметить ошибки, даже вопиющие
Цитата Мне не нравится сама идея выдачи оффенс-кастов техномагессе. Это, вообще-то, твоя идея Цитата Гранатометство - тоже. Это первый уровень, а не пятый или восьмой. Изначально у них было поддержано миноукладство. Имхо, вариант с гранатами куда менее мощный, так как подвести под него врага куда тяжелей. Ну и плюс урон может бытть сколь угодно небольшим.Цитата А при упоминании всех хитрых вывертов, которые именуются абилкой глайдера, мне вообще хочется что-нибудь раздолбать. Буду рад чему-нибудь более адекватному P.S. -------------------- |
|
|
|
24 Apr 2010, 12:10
Сообщение
#38
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
Или, как вариант, забить на стрельбу, просто при ответке понижать урон, проигрывать другую анимацию атаки, а после потери всех зарядов маны — то же самое, но до окончания хода. Вотъ. Впрочем, простой бан стрельбы и дополнительные плюшки в рукопашке навскидку сделать даже проще.
Анимация стрелкового оружия в кач-ве "слабого" предпочтительна в том плане, что глайдер всегда в полёте. -------------------- |
|
|
|
23 May 2010, 19:58
Сообщение
#39
|
|
![]() Weird Сообщений: 1 976 Спасибо сказали: 644 раза |
Мдаа... Давно я сюда не заходил - уже в "Коде" флудят. Материться хочется.
-------------------- Работать надо - винтовка рядом.
|
|
|
|
24 May 2010, 11:31
Сообщение
#40
|
|
![]() Immortal Сообщений: 23 636 Спасибо сказали: 19929 раз |
Fixed
-------------------- |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 24 December 2025 - 20:51 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|