Каким образом можно сделать пассивную способность с перезарядкой и с мана костом. Что-то на подобии пассивной способности Банути Хантера из Dota2, но только, чтобы срабатывало, когда есть мана.4
Если перезарядку можно сделать с помощью экзгумации (спасибо сайту за помощь), то что насчёт мана коста?

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

вот, последняя версия
Требует вторую версию мемхака.
 function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
        if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
            return false
        endif
        
        set pAbility = GetUnitAbility( whichUnit, abilityId )
        
        if pAbility < 1 then
            return false
        else
            if RMem( pAbility + 0x134 ) == -1 and RMem( pAbility + 0x138 ) == -1 then
                call WMem( pAbility + 0x134, 0 )
                call WMem( pAbility + 0x138, 0 )
                if InGame then
                    call DisplayTextToPlayer( Player(0),0.00,0.00, "!" )
                else
                    call BJDebugMsg( "Start Cooldown WARNING!" )
                    call BJDebugMsg( "ADRESS-VAL1-VAL2" )
                    call BJDebugMsg( Int2Hex(pAbility)+" - "+Int2Hex(RMem( pAbility + 0x134 ))+" - "+Int2Hex(RMem( pAbility + 0x134 )))
                    call BJDebugMsg( "abil-"+Id2String(abilityId) +" owner-"+ Int2Hex(pAbility)  )
                endif
            endif
            set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            return IsAbilityOnCooldown( pAbility )
        endif
        return false
    endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
7
7 лет назад
0
ScopteRectuS, если нужно, чтобы способность срабатывала при атаке, то можно использовать способность Сфера замедления ('AIsb')
2
21
7 лет назад
2
Ige, но там нельзя сделать мана кост. И способность еще затемняется, чтр неекрасиво.
2
7
7 лет назад
2
ScopteRectuS:
Ige, но там нельзя сделать мана кост. И способность еще затемняется, чтр неекрасиво.
манакост указывается не у сферы, а у способности, которая должна использоваться
Загруженные файлы
0
21
7 лет назад
0
Ige, интересненько. А с иконкой можно что.то сделать?
0
7
7 лет назад
0
ScopteRectuS, ну можно попробовать заменить DISBTN иконку на нормальную <- не проверял, т.ч. не уверен
0
6
7 лет назад
0
Сделай для способности внутри сферы уникальную иконку у которой и BTN и DISBTN или PAS и DISPAS будут одинаковыми (нормальными) . Это можно замутить, например, с помощью button manager - когда создашь PAS иконку, удалишь DISPAS копируешь первую и даёшь копии название DISPAS.
0
32
7 лет назад
0
ScopteRectuS, Мемхак в помощь, делаем на основе перерождения...
0
21
7 лет назад
0
quq_CCCP, а можно функцию запуска кд пассивной способности с мана костом на основе перерождения?
0
32
7 лет назад
0
вот, последняя версия
Требует вторую версию мемхака.
 function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
        if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
            return false
        endif
        
        set pAbility = GetUnitAbility( whichUnit, abilityId )
        
        if pAbility < 1 then
            return false
        else
            if RMem( pAbility + 0x134 ) == -1 and RMem( pAbility + 0x138 ) == -1 then
                call WMem( pAbility + 0x134, 0 )
                call WMem( pAbility + 0x138, 0 )
                if InGame then
                    call DisplayTextToPlayer( Player(0),0.00,0.00, "!" )
                else
                    call BJDebugMsg( "Start Cooldown WARNING!" )
                    call BJDebugMsg( "ADRESS-VAL1-VAL2" )
                    call BJDebugMsg( Int2Hex(pAbility)+" - "+Int2Hex(RMem( pAbility + 0x134 ))+" - "+Int2Hex(RMem( pAbility + 0x134 )))
                    call BJDebugMsg( "abil-"+Id2String(abilityId) +" owner-"+ Int2Hex(pAbility)  )
                endif
            endif
            set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            return IsAbilityOnCooldown( pAbility )
        endif
        return false
    endfunction
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.