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

Принятый ответ

NazarPunk:
И что тут сложного
//! zinc
library SpellDamageAllVisible {

    /* Настройки заклинания */
    
    constant integer SpellHero          = 'A000';   // Способность для героя.
    constant string SpellEffect         = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl";
    constant string SpellEffectAttach   = "origin";
    
    constant attacktype DamageAttackType = ATTACK_TYPE_MAGIC;   /* Тип урона:
                                                                    ATTACK_TYPE_CHAOS
                                                                    ATTACK_TYPE_HERO
                                                                    ATTACK_TYPE_MAGIC
                                                                    ATTACK_TYPE_MELEE
                                                                    ATTACK_TYPE_NORMAL
                                                                    ATTACK_TYPE_PIERCE
                                                                    ATTACK_TYPE_SIEGE
                                                                */
    
    // Указываем количество нанесённого урона
    function getDamage(integer level) -> integer {
        return level * 100;
    }
  
    /* ВСЁ, ЧТО НИЖЕ, ПРАВИТЬ НА СВОЙ СТРАХ И РИСК!!! */
    function onInit(){
        trigger t = CreateTrigger();
        integer i;
        
        for (0 <= i < bj_MAX_PLAYER_SLOTS) {
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null);
        }
        TriggerAddCondition(t, Condition( function() -> boolean { return SpellHero == GetSpellAbilityId(); }));
        TriggerAddAction(t, function(){
            group g = CreateGroup();
            unit target, caster = GetTriggerUnit();
            integer level = GetUnitAbilityLevel(caster, SpellHero);
            
            GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, Condition(function() -> boolean {
                return GetWidgetLife(GetFilterUnit()) >= 0.405;
            }));
           
            while (true) {
                target = FirstOfGroup(g);
                if (target == null) { break; }
                if (
                    IsPlayerEnemy(GetOwningPlayer(caster), GetOwningPlayer(target))
                    &&
                    IsUnitVisible(target, GetOwningPlayer(caster))
                ) {
                    DestroyEffect(AddSpecialEffectTarget(SpellEffect, target, SpellEffectAttach));
                    UnitDamageTarget(caster, target, getDamage(level), true, false, DamageAttackType, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS);                
                }
    
                GroupRemoveUnit(g, target);
            }
            
            DestroyGroup(g);
            g = null; caster = null;
        });

        t = null;
    }
}
//! endzinc
8gabriel8:
Странно вы группы удаляете, обычно перед перебором
set bj_wantDestroyGroup = true
О, во, чётко, пасиба. (жаль на джазе сделал, ну да ладно)
о, 8gabriel8 тоже сделал на "Заклинания на заказ" ща чекну..
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
5 лет назад
0
Но проверь и ты, вдруг я где-то накосячил.
Я вот точно помню, что есть n+ подводных камней с видимотью на баффах. К сожалению сейчас просто нет времени, но самому интересно, потещу)
0
23
5 лет назад
0
а не проше проверить если кастер игрок не видит его то не заносить в группу...
4
32
5 лет назад
4
Веер ножей мБ?
2
13
5 лет назад
Отредактирован Esea
2
quq_CCCP:
Веер ножей мБ?
и как же это сделать?
да и не думаю что если поставить гигантскую дальность то он не будет бить тех которых ты не видишь
2
20
5 лет назад
2
вы о чем вообще
если отдавать приказ на каст дамми юниту - он не сможет кастануть его на инвизерного юнита, если рядом нет варда или другого детектора

единственное что - дамми создаются, но самого каста нет
Загруженные файлы
0
32
5 лет назад
0
Esea, ShareVision не не слышал, ты можешь выдать видимость над всеми юнитами, сделать каст и тут же забрать видимость, все.
0
28
5 лет назад
0
ShareVision
Вот это ржачная вещь, сделал ShareVision невидимому юниту, мои войска его атаковали, но сам я его не видел.
2
13
5 лет назад
2
мде, так и не понимаю о чём вы? повторюсь:нужен спелл, активируешь дамажит всех ВИДИМЫХ врагов на карте (не важно где они находятся). И если враг в невидимости, значит - ты его не видишь - спелл на него не работает.
0
26
5 лет назад
0
Скрин триггера приложи, как ты сделал с проверкой видимости, что не работало. Потому что это должно очень просто делаться, то есть скорее всего допущена ошибка.
2
13
5 лет назад
2
8gabriel8:
Скрин триггера приложи, как ты сделал с проверкой видимости, что не работало. Потому что это должно очень просто делаться, то есть скорее всего допущена ошибка.
смысл в том, что я вообще не понимаю какие события/условия/действия подобрать
0
26
5 лет назад
0
Но что-то всё-таки делал?
Esea:
PrincePhoenix:
Вкратце, необходима проверка Unit is Visible for ...
попробую
Esea:
PrincePhoenix:
Вкратце, необходима проверка Unit is Visible for ...
попробую
Не получилось..
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.