Сейчас 20:51:53 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Дамми юзает спел
санька_п004Дата: Пятница, 10 Февраля 2012, 19:34:39 | Сообщение # 1
3 уровень
Группа: Пользователи
Сообщений: 41
Награды: 0
Репутация: 0
Блокировки:
Как заставить юпита заставить применить способность?
Я делаю способность на основе скачка, но хочу что бы те юниты через которых я пролетаю, получили урон и снижение брони. Создаю тригг который при использовании скачка создает дамми с способностью волна силы, или подскажите более рациональный способ!
 

SirNikolasДата: Четверг, 05 Апреля 2012, 12:14:32 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
//! zinc
library HealBlink {
    constant integer ABILITY = 'A000';
    constant real SQUARE_WIDTH = 5625.;//75^2
    constant real HEAL = 150.;
    constant group G = CreateGroup();

    function onInit() {
        trigger trig = CreateTrigger();
        integer i = 0;
        do {
            TriggerRegisterPlayerUnitEvent(trig, Player(i),
                EVENT_PLAYER_UNIT_SPELL_EFFECT, null);
            i += 1;
        } while (i < 16);
        TriggerAddCondition(trig,
            function() -> boolean {
                return GetSpellAbilityId() == ABILITY;
            }
        );
        TriggerAddAction(trig,
            function() {
                unit u = GetTriggerUnit(), u2;
                player p = GetOwningPlayer(u);
                real x = GetWidgetX(u), y = GetWidgetY(u),
                    tx = GetSpellTargetX(), ty = GetSpellTargetY(),
                    k = (y - ty) / (x - tx), b = y - k * x,
                    k1 = -1. / k, b1;
                GroupEnumUnitsInRange(G, (x + tx) * .5, (y + ty) * .5,
                    SquareRoot((x - tx) * (x - tx) + (y - ty) * (y - ty)) * .5, null);
                while (true) {
                    u2 = FirstOfGroup(G);
                    if (u2 == null) { break; }
                    GroupRemoveUnit(G, u2);
                    if (IsUnitAlly(u2, p)) {
                        tx = GetWidgetX(u2);
                        ty = GetWidgetY(u2);
                        b1 = ty - k1 * tx;
                        x = (b1 - b) / (k - k1);
                        y = k * x + b;
                        if ((x - tx) * (x - tx) + (y - ty) * (y - ty) <= SQUARE_WIDTH) {
                            SetWidgetLife(u2, GetWidgetLife(u2) + HEAL);
                        }
                    }
                }
                u = null; p = null;
            }
        );
        trig = null;
    }
}
//! endzinc
Лечит всех союзников от начальной до конечной точки блинка. Написано на ZINC'е, нужен JNGP (лежит в соседнем разделе). За нужные действия отвечает строчка "SetWidgetLife(u2, GetWidgetLife(u2) + HEAL);", замени ее на то, что тебе надо.


 

HexingДата: Четверг, 05 Апреля 2012, 15:20:59 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
SirNikolas, он кажется гуишник, придётся тебе за него проверку на врага переделать и урон+корозию

 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz