Отложенный запуск функции

Published
» Способ реализации: cJass
» Тип: Наработка
» Версия Warcraft: 1.26a

Описание

Иногда нужно отложить запуск метода по времени.

DStart(int fobj, real time), где time - время, через которое нужно запустить функцию, fobj - объект сохранённой функции с параметрами.

Пример

Если юнит-цель выжил за 5 секунд, пополняем здоровье кастеру заклинания.
function spell_end takes unit u, unit tu, effect e returns nothing
  real life
  DestroyEffect(e) //удаляем коронку
  if GetUnitState(tu, UNIT_STATE_LIFE) > 0 //если жив
    life = GetUnitState(u, UNIT_STATE_LIFE) // прибавляем к хп кастера 0.15 от макс_хп цели
    life = life + 0.15 * GetUnitState(tu, UNIT_STATE_MAX_LIFE)
    SetUnitState(u, UNIT_STATE_LIFE, life)
    DestroyEffect( AddSpecialEffect("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl", GetUnitX(u), GetUnitY(u)) )
  endif
endfunction
//! runtextmacro FUNC3("spell_end","unit","unit","effect")

function spell takes unit u, unit tu returns nothing
  effect e = AddSpecialEffectTarget("Abilities\\Spells\\Human\\InnerFire\\InnerFireTarget.mdl", tu, "overhead")
  DStart(spell_end.save(u,tu,e), 5.) //откладываем старт spell_end на 5с
  e = null
endfunction

Установка

Внимание, используется наработка Сохранение функции со списком аргументов
Последнее обновление 03.01.2020
Скопировать папки ProtoClass, GlobalConstants, SaveFunction, DelayedStart


Views: 513

ScorpioT1000 #1 - 1 year ago 0
Голосов: +0 / -0
Думал, здесь будет debounce и throttle
Vlod #2 - 1 year ago 0
Голосов: +0 / -0
ScorpioT1000, увы. Можно сделать, если кому-то конкретно понадобится