Мне нужно что бы цели на которых скастовалась волна исцеления получали абилку и после 15ти секунд она пропадала.Я башку ломал час,вроде бы всё логично выглядит но в игре не работает.
Пытался с разными абилками.
Пользуюсь редактором Варкрафт 3(не рефоргет)
Условия
(Ability being cast) равно Целительная Волна
Действия
Боевая единица - Add Аура Выносливости(враг) to (Target of ability being cast)
Wait 15 seconds
Боевая единица - Remove Аура Выносливости(враг) from (Target of ability being cast)

А как добавить в юнита в переменную подскажите пожалуйста
local unit target = GetSpellTargetUnit()
call UnitAddAbility(target, abilityId)
call TriggerSleepAction(15)
call UnitRemoveAbility(target, abilityId)
set target  = null
И тут проблема в том что юниты на которых использовалась Целительная Волна не получают ауру
Потому что (Target of ability being cast) указывает на того на кого была применена способность - первого юнита целительной волны. Если нужно получать доступ ко всем юнитам в цепочке, то можете запрограммировать свою способность целительной волны или взять готовую
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Где-то я видел наработку с этими хр барами.
Найдётся в ресурсах пользователя JesusHipster.
ответ
А морф обычный не подходит?
ответ
Самый простой алгоритм - для каждого юнита-цели создаешь даммик (Юнит со способностью москиты 'Aloc', без модели, тени и с отключенной атакой), который, получив нужный приказ, радостно кидает корни с нужными параметрами в оную цель. Не забудь применить к даммику ограничение времени жизни, чтобы он скастовал и благополучно сдох.
Герою же просто выдаешь пустышку на основе нейтрально-враждебной геройской способности Канал, срабатывание которой и отлавливаешь триггером, делающим вышеуказанные действия.
ответ
Смотря, как делать: в GUI или на коде. Во втором случае просто создать boolexpr и по нему фильтровать, или же организовать цикл, который будет проходить по юнитам в группе. Если же первое, то через выбор юнитов, которые соответствуют условиям (расстояние, противник/союзник и т.д.).
ответ
XGM Bot:
Похожие вопросы:

ответ
Вобщем озарение как всегда пришло внезапно - понял что GetSpellAbilityUnit срабатывает на дамми и записывает в массив его, а не цель щита. Просто передвинул махинации с дамми в конец функции Actions. Всё отменно работает. Всем спасибо все свободны
ответ
если на каждого юнита по такому триггеру то при 40 юнитах начнутся лаги
ответ
Вместо
function InitTrig_CreepSpell takes nothing returns nothing
    set gg_trg_CreepSpell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_CreepSpell, Player(1), EVENT_PLAYER_UNIT_SPELL_EFFECT, function CreepSpellFilter) 
    call TriggerAddAction(gg_trg_CreepSpell, function CreepSpellActivation)
endfunction
сделай так:
function InitTrig_CreepSpell takes nothing returns nothing
    set gg_trg_CreepSpell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_CreepSpell, Player(1), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) //function CreepSpellFilter
    call TriggerAddCondition(gg_trg_CreepSpell, Condition(function CreepSpellFilter))
    call TriggerAddAction(gg_trg_CreepSpell, function CreepSpellActivation)
endfunction
и вот здесь:
if IsUnitEnemy(GetFilterUnit(), Player(10)) then
        set Dummy = CreateUnit(Player(1), 'e004', CasterX, CasterY, bj_RADTODEG*Atan2(TargetY - CasterY, TargetX - CasterX))
		call IssuePointOrder(Dummy, "attackground", TargetX, TargetY)
        call UnitApplyTimedLife(Dummy, 'BTLF', 3)
        set Dummy = null
    endif
поменяй местами IssuePointOrder и UnitApplyTimedLife, чтобы было вот так:
    if IsUnitEnemy(GetFilterUnit(), Player(10)) then
        set Dummy = CreateUnit(Player(1), 'e004', CasterX, CasterY, bj_RADTODEG*Atan2(TargetY - CasterY, TargetX - CasterX))
        call UnitApplyTimedLife(Dummy, 'BTLF', 3)
        call IssuePointOrder(Dummy, "attackground", TargetX, TargetY)
        set Dummy = null
    endif
ответ
Самый простой алгоритм - для каждого юнита-цели создаешь даммик (Юнит со способностью москиты 'Aloc', без модели, тени и с отключенной атакой), который, получив нужный приказ, радостно кидает корни с нужными параметрами в оную цель. Не забудь применить к даммику ограничение времени жизни, чтобы он скастовал и благополучно сдох.
Герою же просто выдаешь пустышку на основе нейтрально-враждебной геройской способности Канал, срабатывание которой и отлавливаешь триггером, делающим вышеуказанные действия.
ответ
есть специальная функция на jass, которая называется MoveRect() или SetRect(). С помощью этих функций и перемещаете.
native MoveRectTo takes rect whichRect, real newCenterX, real newCenterY returns nothing
native SetRect takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing


18
Здравствуйте, (Target of ability being cast) после (Wait 15 seconds) может указывать на другого юнита, сохраните цель заклинания в локальную переменную и после выжидания времени используйте локальную переменную для удаления способности у юнита
1
А как добавить в юнита в переменную подскажите пожалуйста,я в них не шарю

И тут проблема в том что юниты на которых использовалась Целительная Волна не получают ауру
18
А как добавить в юнита в переменную подскажите пожалуйста
local unit target = GetSpellTargetUnit()
call UnitAddAbility(target, abilityId)
call TriggerSleepAction(15)
call UnitRemoveAbility(target, abilityId)
set target  = null
И тут проблема в том что юниты на которых использовалась Целительная Волна не получают ауру
Потому что (Target of ability being cast) указывает на того на кого была применена способность - первого юнита целительной волны. Если нужно получать доступ ко всем юнитам в цепочке, то можете запрограммировать свою способность целительной волны или взять готовую
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.