Quote (Banzay89)
нет. минимум время каста 0.15 сек вроди. если только это не мгновенное типа берсерк
ложь и провокация. Дамми за секунду до 700 спеллов кастует. Denialsan,
function MultiCastSTLoop takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit dummy = CreateUnit('dummyunitid',GetUnitX(u),GetUnitY(u),GetUnitFacing(u))
call UnitAddAbility(dummy,LoadInteger(udg_Data,GetHandleId(t), 0))
call UnitAddLifeTimer(dummy, 'timercode', 1)
call SetUnitAbilityLevel(dummy, LoadInteger(udg_Data,GetHandleId(t),0),LoadInteger(udg_Data,GetHandleId(t),1))
call OrderUnit(dummy, LoadInteger(udg_Data,GetHandleId(t),0), LoadUnitHandle(udg_Data,GetHandleId(t),2)
call SaveInteger(udg_Data,GetHandleId(t), 3, LoadInteger(udg_Data,GetHandleId(t),3)-1)
if LoadInteger(udg_Data,GetHandleId(t),3) <= 0 then
call DestroyTimer(t)
call FlushChildHashtable(udg_Data,GetHandleId(t)
set t = null
endif
set dummy = null
endfunction
function MultiCastSingleTarget takes unit u, integer spellid, integer level, integer CastTimes, real CastDelay, unit target returns nothing
local timer t = CreateTimer()
call SaveInteger(udg_Data,GetHandleId(t),0, spellid)
call SaveInteger(udg_Data,GetHandleId(t),1, level)
call SaveUnitHandle(udg_Data,GetHandleId(t),2, target)
call SaveInteger(udg_Data,GetHandleId(t),3, CastTimes)
call TimerStart(t, CastDelay, true, function MultiCastSTLoop)
set t = null
endfunction
и так во всем. Писать через локалки было влом, так уж рука на этот раз легла, так что нормальный код будет на пару строк длинне и раза в два быстрее и читабельнее. Потом может сделаю.