Мне требуется пассивная способность, которая увеличивает скорость атаки с каждым ударом по одному противнику, скорость сбрасывается при смене цели. Как мне сообщили, аналогичная способность Рвение (Fervor) у Тролля из DotA. Попробовал найти в карте OpenDotA на сайте её наработку, но этой способности там нет, да и многого другого тоже. Может у кого есть открытая DotA с этой наработкой, либо представляет хорошо, как сделать?

Рунные браслеты давать тем, на ком хочешь распознать тип урона(лучше всем сразу). Нет не надо... просто событие на отлов урона с проверкой что урон меньше 0 и сразу нанести такой же урон только больше 0( так как все заклинания с нанесением урона будут исцелять).
Проще говоря "браслеты", это как детект на то, что урон не может исцелять, а поскольку браслеты реагируют только на маг урон, соответсвенно любой "исцеляющий урон" и есть магическим.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
43
8gabriel8:
quq_CCCP, а мне другую реализацию скинули:
function Trig_Fervor_Conditions takes nothing returns boolean
    return GetUnitAbilityLevel(GetAttacker(),'A06C') > 0 and not IsUnitType(GetTriggerUnit(),UNIT_TYPE_STRUCTURE)
endfunction

function Trig_Fervor_Tick takes nothing returns nothing
    local unit u
    local unit targ
    local trigger t = GetTriggeringTrigger()
    local hashtable gc = udg_HashCache
    local integer s = GetHandleId(t)
    local integer lvl = GetUnitAbilityLevel(u,'A06C')
    local integer c = 0

    if GetTriggerEventId() == EVENT_UNIT_DAMAGED then
        set u = LoadUnitHandle(gc,s,1)

        if GetEventDamageSource() == u then
            set targ = GetTriggerUnit()
            set c = GetUnitAbilityLevel(u,'A08T')

            if targ != LoadUnitHandle(gc,GetHandleId(u),StringHash("trollfervor")) then
                set c = R2I(c/2)
                call SaveUnitHandle(gc,GetHandleId(u),StringHash("trollfervor"),targ)
            else
                set c = c+1
                if c > lvl+1 then
                    set c = lvl+1
                endif
            endif
            call SetUnitAbilityLevel(u,'A08T',c)
            set targ = null
        endif
        set u = null
    endif
    call TriggerRemoveAction(t,LoadTriggerActionHandle(gc,s,2))
    call FlushChildHashtable(gc,s)
    call KillTrigger(t)
    set t = null
    set gc = null
endfunction

function Trig_Fervor takes nothing returns nothing
    local unit u = GetAttacker()
    local unit targ = GetTriggerUnit()
    local trigger t = CreateTrigger()
    local integer s = GetHandleId(t)
    local hashtable gc = udg_HashCache
    local triggeraction ta
    if GetUnitAbilityLevel(u,'A08T') == 0 then
        call UnitAddAbility(u,'A08T')
    endif
    call SaveUnitHandle(gc,s,1,u)
    call TriggerRegisterUnitEvent(t,targ,EVENT_UNIT_DAMAGED)
    call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_ORDER)
    call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_POINT_ORDER)
    call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_TARGET_ORDER)
    call TriggerRegisterTimerEvent(t,2.5,false)
    set ta = TriggerAddAction(t,function Trig_Fervor_Tick)
    call SaveTriggerActionHandle(gc,s,2,ta)
    set u = null
    set targ = null
    set t = null
    set gc = null
    set ta = null
endfunction

function InitTrig_Fervor takes nothing returns nothing
    set gg_trg_Fervor = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Fervor, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_Fervor, Condition( function Trig_Fervor_Conditions ) )
    call TriggerAddAction( gg_trg_Fervor, function Trig_Fervor)
endfunction
И в инициализации создаётся хеш-таблица udg_HashCache.
И что совсем ни как без хеша?
26
molot39, я не знаю, я почти не разбираюсь в JASS и хеш-таблицах. Покажи свою наработку
43
могу даже болванку скинуть, только малек доработаю болванку. В самом проекте исправил, а в болванке нет=)
26
Давай, только поскорее. Эта пассивка, наверное, самое маленькое из того, что потребуется сделать, а уже около недели с ней не могу справиться.
18
molot39, Продебаж код на количество стаков... к примеру с "огненым плащем" огруженным несколькими юнитами
43
Borodach:
molot39, Продебаж код на количество стаков... к примеру с "огненым плащем" огруженным несколькими юнитами
чё?
не отвлекайте, я восстанавливаю болванку с нуля, удалил старую
26
Он имеет ввиду, чтобы ты проверил способность вместе с предметом Огненный плащ или способностью Жар преисподней, не будет ли это считаться атакой юнита, как будет работать, когда много юнитов к тебе подбегает, ведь часть из них как бы будет атакована не в первый раз, а часть в первый одновременно, если эффект будет считаться атакой, естественно.
43
8gabriel8:
Он имеет ввиду, чтобы ты проверил способность вместе с предметом Огненный плащ или способностью Жар преисподней, не будет ли это считаться атакой юнита, как будет работать, когда много юнитов к тебе подбегает, ведь часть из них как бы будет атакована не в первый раз, а часть в первый одновременно, если эффект будет считаться атакой, естественно.
а... понял
11
Изменить скорость атаки сложно. Удобнее с каждым ударом повышать урон. Сделать триггер. По идее, если у тебя герой, он должен быть записан в глобал. Событие, герой, типа тролль атакует юнита. Записываем атакованного юнита в переменную. Если атакованный юнит уже есть в переменной триггерно наносим ему урон. С каждой атакой повышаем процент, который мы тоже создали качестве переменной. Если атакованный юнит не равно переменной ранее атакованной боевой единице, то обнуляем переменные и начинаем все сначала.
43
Тип урона отследить не возможно, единственно если прям так хочется что бы не выдавался стак от жара, то в условии ставь блок на баф. Вот наработка
Загруженные файлы
26
molot39, только у способности один уровень, ускорение атаки делается за счёт наложения заклинания, бафф которого виден, но там главное правильно поставить описание баффу, однако это страшно при иммунитете к магии, либо развеивании. По идее иммунитет к магии преодолим, если будет стоить заклинание дамми 0 маны, а вот развеивание не знаю. Просто герой задуман как антимаг, а у магов всякие развеивания очень вероятны. В любом случае охота узнать мнение quq_CCCP.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.