Триггер срабатывает 4 раза в секунду, нанося урон всем юнитам на карте, на которых есть специальный дебаф. Отлично работает до тех пор, пока под дебаф не попадут >20 юнитов, после чего начинаются тормоза, пока дебаф не кончится. Может, кто знает, в чем проблема?
Не в плавающем тексте, при его отключении, все такие же лаги. Я склоняюсь к тому, что действие DamageTarget вызывает фризы, если одновременно дамажит сразу несколько целей, хотя при однократном использовании фризов не замечаю.
Если кто-то делал триггер, позволяющий дебафать кучу юнитов и наносить им определенный урон, буду рад вашему совету

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

Ребята, я разобрался
Триггер работает нормально и безутечно, вся проблема в том, что создавая спелл-активатор с кислотной бомбы, я указал интервал урона = 0.00, что и повлекло все лаги
0
32
7 лет назад
0
Утечки, да и написано кривовато, я 200 юнитов дамажил посадку фпс.фп5 раз в сек. Никаких намеков на просадку фпс.
0
21
7 лет назад
Отредактирован scopterectus
0
scope Spell initializer Init
    globals
        private constant integer BuffID         = 'BHad'
        private constant group   auraGroup = CreateGroup()
        private constant timer   auraTimer = CreateTimer()
        private  boolexpr auraBoolexpr
        
    endglobals
    
    private function GroupCallback takes nothing returns boolean
        local unit filterUnit = GetFilterUnit()

        local integer buffLevel    = GetUnitAbilityLevel(filterUnit, BuffID)

        if buffLevel > 0 then
            set bj_lastCreatedUnit = CreateUnit(Player(0), 'h000',0, 0, 0)
            call UnitAddAbility(bj_lastCreatedUnit, 'Acri')
            call IssueTargetOrder(bj_lastCreatedUnit, "cripple", filterUnit)
            call KillUnit(bj_lastCreatedUnit)
        endif

        set filterUnit = null
        return false
    endfunction

    private function Actions takes nothing returns nothing
        call GroupEnumUnitsInRect(auraGroup, bj_mapInitialPlayableArea, auraBoolexpr)
    endfunction

    function Init takes nothing returns nothing
        set auraBoolexpr = Condition(function GroupCallback)
        call TimerStart(auraTimer, 1.0, true, function Actions)
    endfunction

endscope
0
26
7 лет назад
0
У меня тормоза и лаги были как раз из-за всплывающего текста, ты точно все действия с ним отключал, когда проверял? Попробуй проверить без переменных и текста вообще, кроме DAMAGE, то есть:
Set DAMAGE=...
Отряд - Pick every unit in (Units in (Playable map area) matching condition имеют бафф) and do Боевая единица - получает DAMAGE
Так точно будет понятно, действительно ли в этом действии проблема
0
13
7 лет назад
Отредактирован Nelloy
0
по мне так структурой было бы намного проще
0
32
7 лет назад
0
Может быть проблема из за рассчетов урона, т.к проверка статов героя не быстрая.
0
3
7 лет назад
Отредактирован Lana Guerrero
0
Ребята, я разобрался
Триггер работает нормально и безутечно, вся проблема в том, что создавая спелл-активатор с кислотной бомбы, я указал интервал урона = 0.00, что и повлекло все лаги
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.