таргетные спеллы через руны не Аое
могут ли руны кастовать таргетные спеллы на землю или на юнита не Аое ?

Без ответа.


Просмотров: 223

XGM Bot #1 - 1 неделю назад 0
Похожие вопросы:

» ответ
Только дебаффы ядовитых стрел могут стакатся, но даммик обязан иметь дальнюю атаку (при условии что у разных абилок ядовитых стрел будут разные баффы в настройках).
Так же можно юзать таймер и ауру торнадо как написали выше, ну если уж совсем нужен сложный бафф как дефолтный - то тут триггер и немного гемора с мемхаком, зато полный комплект параметров (мигает иконка в статусе перед завершением время действия, бафф спадает с цели после диспела, смерти (у цели крест перерождения или аналог), складывается или не складывается в зависимости от кода).
» Пример не рекомендуемый к повторению
function FormatAirportTrainingBar takes integer fp_n returns string
    local string str = ""

    if ( fp_n <= 0 ) then
        return str
    endif

    loop
        exitwhen fp_n < 10
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "''''''''''"
        else
            set str = str + "||||||||||||||||||||"
        endif
        set fp_n = fp_n - 10
    endloop

    loop
        exitwhen fp_n <= 0
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "'"
        else
            set str = str + "||"
        endif
        set fp_n = fp_n - 1
    endloop

    return str
endfunction

function UpdateAirportTrainingBar takes texttag tt, integer fp_nTick, integer fp_nTickMax returns nothing
    local integer nProgress
    local integer nLen
    local string strTT1
    local string strTT2

    if ( tt == null ) then
        call BJDebugMsg( "text tag hDZzRwuZxFQcXqaMPnML null" )
        return
    endif

    set nLen = R2I( I2R( fp_nTickMax ) / 300 * 100 )
    set nProgress = R2I( I2R( nLen ) / fp_nTickMax * fp_nTick )
    set strTT1 = "" + FormatAirportTrainingBar( nProgress )
    set strTT2 = FormatAirportTrainingBar( nLen - nProgress ) + ""
    call SetTextTagText( tt, "|cff0080c0" + strTT1 + "|r|cffff0000" + strTT2 + "|r", 0.023 )
endfunction

function Get_Staff_of_Purification takes unit runner returns item
    set bj_forLoopAIndex = 0
    set bj_lastCreatedItem = null
    
    if GetUnitAbilityLevel( runner, 'Arun' ) == 0 then
        return null
    endif
    
    loop
        exitwhen bj_forLoopAIndex > 5

        set bj_lastCreatedItem = UnitItemInSlot( runner, bj_forLoopAIndex )
        if GetItemTypeId( bj_lastCreatedItem ) == 'I01A' then
            return bj_lastCreatedItem
        endif

        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop

    return bj_lastCreatedItem
endfunction

function Trig_RunnerDamageDetect_Conditions takes nothing returns boolean
    if GetTriggerEventId( ) == EVENT_UNIT_DAMAGED then
        return GetEventDamage( ) > 0.00 and GetEventDamageSource( ) != GetTriggerUnit( ) and GetEventDamageSource( ) != DummyAttacker
    endif
    return true
endfunction

function HealRunner takes nothing returns nothing
    local DamageData dd = GetDataBX( GetExpiredTimer( ) )
    
    call UnitRemoveAbility( dd.attacked, 'AMhp' )
    call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
    
    call RemoveDataBX( dd.trix )
    call DestroyTimer( dd.trix )
    call dd.clear( )
    call dd.destroy( )
endfunction

function Trig_RunnerDamageLock_Actions takes nothing returns nothing
    local TriggerData st = GetDataBX( GetTriggeringTrigger( ) )
    local DamageData dd
    local eventid id = GetTriggerEventId( )
    
    if id == EVENT_GAME_TIMER_EXPIRED and st.id < st.time and st.attacked != null then
        set st.id = st.id + 1
        if GetUnitAbilityLevel( st.attacked, 'Bcyc' ) > 0  or GetUnitAbilityLevel( st.attacked, 'Bcy2' ) > 0 then
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 585.00 )
        else
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 80.00 + GetUnitFlyHeight( st.attacked ) )
        endif
        call UpdateAirportTrainingBar( st.tt, 100 - R2I( st.dmg / st.hp * 100.00 ), 100 )
        
    elseif id == EVENT_UNIT_DAMAGED and st.dmg < st.hp then
        set dd = DamageData.create( )
        set dd.trix = CreateTimer( )
        set dd.attacked = st.attacked
        set dd.dmg = GetEventDamage( )
        set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
        
        call SetDataBX( dd.trix, dd )
        call UnitAddAbility( dd.attacked, 'AMhp' )
        call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp + dd.dmg )
        
        call TimerStart( dd.trix, 0.00, false, function HealRunner )
        
        set st.dmg = st.dmg + dd.dmg
    else
        call UnitRemoveAbility( st.attacked, 'A08L' )
        call UnitMakeAbilityPermanent( st.attacked, false, 'A08L' )
        call DisableTrigger( st.trg )
        call SetTextTagVisibility( st.tt, false )
        
        if not IsUnitDead( st.attacked ) then
            call UnitRemoveAbility( st.attacked, 'B00A' )
        endif
        
        call RemoveSavedInteger( gg_htb_HashData, ExKeySoPRunner, GetHandleId( st.attacked ) )
        
        call st.RemoveTrigger( )
        call st.destroy( )
    endif
    
    set id = null
endfunction

function Trig_Staff_of_Purification_Actions takes nothing returns nothing
    local TriggerData dd
    local unit Runner = GetSpellAbilityUnit( )
    local integer RunnerId = GetHandleId( Runner )
    local item Staff = LoadItemHandle( gg_htb_HashData, RunnerId, ExKeySoP )
    local integer ChargesCount = 0
    local trigger trig = LoadTriggerHandle ( gg_htb_HashData, ExAtomShield, RunnerId )
    local integer pBuff
    
    if Staff == null then
        set Staff = Get_Staff_of_Purification( Runner )
         
        if Staff == null then
            //call DisplayTextToPlayer( Player( CrashPlayerNumber ), 0.00, 0.00, I2Sx( 'A01Q', CrashPlayerNumber ) )
            call BJDebugMsg( DEBUG + I2Sx( 'A02O', 0 ) + INFO )
            return
        endif
        
        call SaveBoolean( gg_htb_HashData, RunnerId, ExKeyHasStaff, true )
        call SaveItemHandle( gg_htb_HashData, RunnerId, ExKeySoP, Staff )
    endif
    
    set ChargesCount = GetItemCharges( Staff )
    
    if ChargesCount < 1 then
        set Runner = null
        set Staff = null
        set trig = null
        return
    endif
    
    call SetItemCharges( Staff, 0 )
    
    if trig != null then // блокирующие урон способности не складываются.
        call TriggerExecute( trig )
        set trig = null
    endif
    
    set dd = TriggerData.create( )
    set dd.attacked = Runner
    set dd.pl = GetOwningPlayer( Runner )
    set dd.trg = CreateTrigger( )
    set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_RunnerDamageDetect_Conditions ) )
    set dd.tra = TriggerAddAction ( dd.trg, function Trig_RunnerDamageLock_Actions )
    set dd.tt = CreateTextTag( )
    set dd.hp = 1000.00 * ChargesCount
    set dd.dmg = 1.00
    set dd.id = 0
    set dd.time = 480
    set dd.c = 0.03125
    
    call UnitAddAbility( Runner, 'A07E' )
    call UnitRemoveAbility( Runner, 'A07E' )
    call UnitAddAbility( Runner, 'A08L' )
    call UnitMakeAbilityPermanent( Runner, true, 'A08L' )
    
    call SetDataBX( dd.trg, dd )
    call SaveInteger( gg_htb_HashData, ExKeySoPRunner, RunnerId, dd )
    
    call TriggerRegisterPlayerEvent( dd.trg, dd.pl, EVENT_PLAYER_LEAVE )
    call TriggerRegisterDeathEvent( dd.trg, Runner )
    call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
    
    call TriggerRegisterTimerEvent( dd.trg, 0.03125, true )
    
    if GetLocalPlayer( ) == dd.pl or IsPlayerAlly( GetLocalPlayer( ), dd.pl ) then
        call SetTextTagVisibility( dd.tt, true )
    else
        call SetTextTagVisibility( dd.tt, false )
    endif
    
    set pBuff = GetUnitAbility( dd.attacked, 'B00A' ) + 0x90
    set dd.c = TimerGetElapsed( DispTimer )
    call WMem( RMem( pBuff ) + 0x4, mR2I( dd.c + 15.10 ) )
    call WMem( RMem( pBuff ) + 0x8, mR2I( dd.c + 10.408 ) )
    call SetBuffLevel( pBuff - 0x90, ChargesCount )
    call UpdateAirportTrainingBar( dd.tt, 100, 100 )
    
    set Runner = null
endfunction
    
//===========================================================================
function InitTrig_Staff_of_Purification takes nothing returns nothing
    set udg__TempBarStyle = 0
endfunction
Выше пример баффа для предмета, который образует щит блокирующий урон, кол-во заблокированного урона и сколько еще заблокирует щит отображается над головой героя, в виде полоски здоровья (только цвет сине-красный). Так же в статуе есть бафф, один в 1 как бафф дефектных способностей вара, не складывается - новый, перебивает старый. И так далее...
» ответ
~8gabriel8:
ПРАВИЛА ЗАПРЕЩАЮТ НЕСКОЛЬКО ВОПРОСОВ ОДНОВРЕМЕННО!!!
Это для того сделано, чтобы бот на каждый вопрос мог показать уже решённые варианты, если сформулирован вопрос нормально, конечно. А ещё это позволит другим пользователям с аналогичными вопросами увидеть ответы на твои.
1. Можно в РО отключить урон юниту и триггерами просчитывать, кто находится перед ним в момент атаки, им будет наноситься урон.
1.5. Не понимаю проблемы, с чего это ты переключаешься на муху, атакуя огромного лорда склепа?
2. Способность Каменные доспехи Ночных Эльфов.
3. И да, и нет. Стандартными средствами сможешь убрать карту через перерисовку интерфейса, разработать и добавить новые кнопки в пул из 12, но для расширения пула или инвентаря потребуются хитрые системы, типа мемхака или DGUI, но не пользовался ими, потому не подскажу, как именно там надо действовать.
4. Можно либо отлавливать урон и прибавлять здоровье, либо делать морф в неуронящего юнита.
5. Не знаю, как именно сделано в Blade of Darkness, но есть событие на нажатие кнопок со стрелками, есть действие на переключение камеры. Просто почитай статью о работе с камерой.
6. У камеры в свойствах есть угол обзора, первую камеру ставишь вниз с углом обзора вверх, что можешь увидеть, поставив галочку в свойствах камеры, вторую камеру поднимаешь вверх и наклоняешь вниз, а в триггере ставишь применить первую камеру в течении 0 секунд, ждать 2 секунды, применить вторую камеру в течении 5 секунд, так обзор будет подниматься в положение второй камеры, ждать 5 секунд.
» ответ
JackFastGame, какой эффект? Там нет никаких эффектов, только наносимый урон в 2 раза меньше указываемого.
А, спецэффект? Нужно импортировать пустой файл по пути
Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdx

Другой нормальной способности не нашёл, чтобы без баффов и без приколов. Потому либо баффы, либо приколы.

Ельнур #2 - 1 неделю назад 0
если спелл на юнита можно ли создать руну в позиции таргета, поменять владельца на себя и дать руну на таргета это будет работать?

попробовал так сделать один урон наносит таргет сам себе а другой второй урон уже наношу я может он не успевает
8gabriel8 #3 - 1 неделю назад 1   
Целью руны всегда является сам юнит, который её получает. Если хочешь нанести урон юнитом не по самому себе, а от имени другого юнита, то есть в категории Боевая единица соответствующее действие.
Ельнур #4 - 1 неделю назад (отредактировано ) 0
8gabriel8:
Целью руны всегда является сам юнит, который её получает. Если хочешь нанести урон юнитом не по самому себе, а от имени другого юнита, то есть в категории Боевая единица соответствующее действие.
у меня есть предмет возвратка который возвращает урон, и 2 спелла фрост нова стандартаня и волна силы стандартная( если я ее кастану от лица даммика то возвратка нанесет урон даммику) а не могу сделать на руны как это сделать?

даже волна не работает только аое или сам цель

сколько у меня времени уйдет чтобы писать кастомные фрост новы или волны

а работает ли сделав способность 0 -11 0 -11 скрыть ее у героя а потом кастовать?

от лица героя

хахахаха рабботает спрятал способнотс и приказываю герою кастовать
8gabriel8 #5 - 1 неделю назад 0
Не выражайся, так ты выплёвываешь на читающих свой негатив. А мне чего-то неприятно от этого.
Чтобы нанести урон от кастера, а не дамми, создай из них пару, обнули, либо сделай очень крохотным урон от способности, в триггере на отлов урона делаешь условие, что тип (Damage source)=дамми, находишь его кастера, от лица которого наносишь нужный урон цели.
Ельнур #6 - 1 неделю назад 0
8gabriel8:
Не выражайся, так ты выплёвываешь на читающих свой негатив. А мне чего-то неприятно от этого.
Чтобы нанести урон от кастера, а не дамми, создай из них пару, обнули, либо сделай очень крохотным урон от способности, в триггере на отлов урона делаешь условие, что тип (Damage source)=дамми, находишь его кастера, от лица которого наносишь нужный урон цели.
ладно,
это слишком долго я просто спрячу способность и дам герою приказы
замечание от : 10.4 (название не отражает суть вопроса) Читаем правила сайта ещё раз, название вопроса должно отражать его суть
8gabriel8 #7 - 1 неделю назад 0
Такое прятание вроде убирали на последних патчах. На каком ты делаешь? Также триггерный приказ сбивает очередь приказов юнита.
Ельнур #8 - 1 неделю назад 0
8gabriel8:
Такое прятание вроде убирали на последних патчах. На каком ты делаешь? Также триггерный приказ сбивает очередь приказов юнита.
на последнем рефордже только что скачал обновление
quq_CCCP #9 - 1 неделю назад 0
Ельнур #10 - 1 неделю назад (отредактировано ) 0
quq_CCCP:
да сколько раз уже прошелся все равно не работает на таргет и земля только аое и сам цель, можно дописать красным что не рабоатет на таргет и землю))
Это сообщение удалено
8gabriel8 #12 - 1 неделю назад 1   
quq_CCCP, может на Рефордже это не работает?
Это сообщение удалено
DracoL1ch #14 - 1 неделю назад 2   
ну раз не работает, значит не работает
рефоржед <3
quq_CCCP #15 - 6 дней назад (отредактировано ) 0
8gabriel8:
quq_CCCP, может на Рефордже это не работает?
У меня нет рефорджа, и покупать ради проверок не собираюсь.

Статья писалась под 1.26 и в теме нет ни слова по баганый рефордж, так что жрите кактус и плачте, других вариантов нет...

Ельнур, учитывая ваш 88 левел рукопопости, я не удивлюсь если вы щито-то делайте нетак. Но в статье есть карта с по мерами, которая работает, если у вас не пашет на рефордже - ваши проблемы, идите к близардам.
Это сообщение удалено
NekoriDes #17 - 6 дней назад (отредактировано ) 2   
quq_CCCP:
8gabriel8:
quq_CCCP, может на Рефордже это не работает?
У меня нет рефорджа, и покупать ради проверок не собираюсь.

Статья писалась под 1.26 и в теме нет ни слова по баганый рефордж, так что жрите кактус и плачте, других вариантов нет...
Ну справедливости ради, 1.26 тоже баганый, лол. Просто к его багам все привыкли и называют их фичами. к м к
quq_CCCP #18 - 6 дней назад (отредактировано ) 0
NekoriDes, не ну как бы не спорю, тут посыл в другом, что в рефордже переломали все что работало и добавили новое, что не работает и вовсе это сырая бета а не игра, пока её не вылижут там делать нечего..
Но блин, кто меня слушает, я как будто глухим проведываю...
Bergi_Bear #19 - 6 дней назад 0
quq_CCCP, Все и слушают, разве видно 100500 карт на рефорд и новый поток людей? нет его...
Просто кому то нравится быть первопроходцем, кто-то разминается перед чем-то большим, а кто-то не видит вообще разницы.. и таких человек 10 от силы и все они тут
все рефорджехейтеры поставили оценочку и пошли играть в нормальные игры
quq_CCCP #20 - 6 дней назад 1   
Bergi_Bear, тут даже что то посоветовать человеку нельзя, патч выпустят и все станет неактуальным, патчей ожидается овер 100500.
NekoriDes #21 - 6 дней назад 0
quq_CCCP, ты вроде говоришь очевидные вещи, но между строк ощущение, словно играть в рефорджед и пользоваться редактором на 130+ — что-то очень плохое, чуть ли не на уровне с массового убийства котят руками каждого фаната в отдельности.

До меня кстати только сейчас дошло, что то что-то наболевшнее. Искренне считал что все только на рефорджеде что-то пилят и в него же играют.