Добавлен
Запилил системку дот урона...
Можете подсказать, что можно облегчить в плане утечек?
раскрыть
function DoTPure takes nothing returns nothing
    local timer ti = GetExpiredTimer()
    local integer h = GetHandleId(ti)
    local integer times = LoadInteger(udg_GHT,h,0)
    if times > 0 then
    local unit c = LoadUnitHandle(udg_GHT,h,1)
    local unit t = LoadUnitHandle(udg_GHT,h,2)
    local real dmg = LoadReal(udg_GHT,h,3)
    local string eff = LoadStr(udg_GHT,h,4)
    call DestroyEffect(AddSpecialEffectTarget(eff,t,"chest"))
    call UnitDamageTarget(c,t,dmg,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_SONIC,WEAPON_TYPE_WHOKNOWS)
    set c = null
    set t = null
    set eff = ""
    else
    call DestroyTimer(ti)
    call FlushChildHashtable(udg_GHT,h)
    endif
endfunction

function DoT takes unit c, unit t, real dmg, real sd, integer times, real period, string eff returns nothing
    local timer ti = CreateTimer()
    local integer h = GetHandleId(ti)
    set dmg = dmg+(dmg*sd)
    call SaveInteger(udg_GHT,h,0,times)
    call SaveUnitHandle(udg_GHT,h,1,c)
    call SaveUnitHandle(udg_GHT,h,2,t)
    call SaveReal(udg_GHT,h,3,dmg)
    call SaveStr(udg_GHT,h,4,eff)
    call TimerStart(ti,period,true,function DoTPure)
    set ti = null
endfunction

а где это?
set ti = null
set tt = null
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
у легионки в доте 12 абилок, по степеням двойки + 1 +2 +4 и так далее, макс бонус 512 ед. Системы которые повышают некоторые параметры юнитов подобным образом выкладывались 100500 раз, не вижу причин не юзать поиск.
Если вам 1 раз за игру надо апнуть атаку и у героя нету морфов и прочего говна, подойдут руны на доп дмг - они повышают белую атаку, но стоит морфнутся и бонуса нету.
ответ
Lana Guerrero:
Ребята, я разобрался
Триггер работает нормально и безутечно, вся проблема в том, что создавая спелл-активатор с кислотной бомбы, я указал интервал урона = 0.00, что и повлекло все лаги
ответ
Вот это чо за рак мозга? Какие еще локалки в фильтре с ифами? Ну с таким не удивительно что не работает.
Да всё работает, вообще-то
quq_CCCP:
Примерно так слабо?
И в чём смысл делать глобалку, а не просто писать тогда уж сразу GetFilterUnit( )
Я сдеал локалку, чтобы вместо GetFilterUnit( ) писать то, что мне нужно, в данном случае CLONE
quq_CCCP:
Потом клонов от способностей ищут не так,
Да так и я их могу найти
Точнее не совсем так, я их искал через Юнит входит в Область ( Игровая зона )
Но искать их в другом триггере и сдругим событием мне нафиг не нужно.
Мне нужно найти иллюзии сразу в триггере со способностью, чтобы потом не было геморроя
========================
И ещё раз повторюсь, что при повторном использовании способности, 2 прошлые иллюзии (да и вообще в принципе если рядом с гером будут другое любое ко-во иллюзий) перемещаются к противнику. Но две новосозданные остаются на месте.
Так же повторюсь, что когда проверка была IsUnitIllusion == false, то иллюзии определяло как не иллюзии!
Все кто пытались помочь, похоже проигнорировали это замечание...
========================
Мой вывод таков: Иллюзиям, призванным через стандартную Способность (Предмет: Иллюзии) присваивается статус иллюзий слегка позже, чем происходит проверка.
С другой стороны, скорее всего это может и можно как-то обойти, ведь есть карты примеры, где подобное работает нужным образом.
О том, как устроены чёртовы способности близов стоит только догадываться =\
К счастью Способность (Предмет: Иллюзии) не наносит 0.00 урона, и за это близам огромное спасибо (что у меня в очередной раз не бомбануло)
А вообще, проще по-моему сделать свою игру, чем нормальную карту в варкрафте -_-
ответ
Был подобный вопрос, там есть карта: xgm.guru/p/wc3/199494.
ответ
Darknessay, проверять наличие бафа на том кто получил урон

17
Допилил чтобы останавливалось (Ы) + прикрутил тексттаг:
раскрыть
function DoTPure takes nothing returns nothing
    local timer ti = GetExpiredTimer()
    local integer h = GetHandleId(ti)
    local integer times = LoadInteger(udg_GHT,h,0)
    if times > 0 then
    call SaveInteger(udg_GHT,h,0,times-1)
    local unit c = LoadUnitHandle(udg_GHT,h,1)
    local unit t = LoadUnitHandle(udg_GHT,h,2)
    local real dmg = LoadReal(udg_GHT,h,3)
    local string eff = LoadStr(udg_GHT,h,4)
    local texttag tt = CreateTextTag()
    local real hp1 
    local real hp2 = GetUnitState(t,UNIT_STATE_LIFE)
    call SetTextTagPos(tt,GetUnitX(t),GetUnitY(t),GetUnitFlyHeight(t)+30)
    call SetTextTagColor(tt,255,255,255,255)
    call SetTextTagPermanent(tt,false)
    call SetTextTagFadepoint(tt,3)
    call SetTextTagLifespan(tt,2)
    call SetTextTagVelocity(tt,.01775*Cos(bj_PI/ 2),.01775*Sin(bj_PI/ 2))
    call DestroyEffect(AddSpecialEffectTarget(eff,t,"chest"))
    call UnitDamageTarget(c,t,dmg,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_SONIC,WEAPON_TYPE_WHOKNOWS)
    set hp1 = GetUnitState(t,UNIT_STATE_LIFE)
    set hp2 = hp2 - hp1
    call SetTextTagText(tt,"|cFFA049DC"+I2S(R2I(hp2)),10*.0023)
    set c = null
    set t = null
    set eff = ""
    else
    call PauseTimer(ti)
    call DestroyTimer(ti)
    call FlushChildHashtable(udg_GHT,h)
    endif
endfunction

function DoT takes unit c, unit t, real dmg, real sd, integer times, real period, string eff returns nothing
    local timer ti = CreateTimer()
    local integer h = GetHandleId(ti)
    set dmg = dmg+(dmg*sd)
    call SaveInteger(udg_GHT,h,0,times)
    call SaveUnitHandle(udg_GHT,h,1,c)
    call SaveUnitHandle(udg_GHT,h,2,t)
    call SaveReal(udg_GHT,h,3,dmg)
    call SaveStr(udg_GHT,h,4,eff)
    call TimerStart(ti,period,true,function DoTPure)
    set ti = null
endfunction
18
а где это?
set ti = null
set tt = null
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.