Hướng dẫn làm 1 số passive skill trong Dota

  • Thread starter Thread starter A.G
  • Ngày gửi Ngày gửi
Lỡ 2 hay 20,200 hero có counter helix thì sao,trong lúc 1 hero counter thì trong 0.6s sau đó ko hero nào counter được à?
 
ủa ani attack là nó attack kiểu nào vậy ?mình đang muốn ani đâm kiếm của blademaseter.dù sao cũng thanks bạn nhìu
 
Sẵn tiện cho mình hỏi làm sao để cho unit dash(lướt)
 
Hướng dẫn mình tạo skill Multicast 1 spell bất kì nhé (x% cast x lần spell x), cụ thể vào nhé :).
 
Muốn tạo skill Multicast cho bất kì skill nào bạn cần :
+1 dummy unit<model _none.mdl>
+1 unit ability giống y hệt ability của hero,khác mỗi cái nó là ability của unit thôi.
Trong dota thì multicast hình như là base trên chiêu engineer upgrade ,có bao nhiều lv thì phải tạo bấy nhiêu abilities tương ứng<hơi mệt>

Ví dụ như trong skill này chẳng hạn,học 1 skill MC thì có 30% khả năng cast 2 lần.

a
Mã:
    a
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Level of MultiCast for (Triggering unit)) Greater than or equal to 1
    Actions
        Set TempLv = (Level of MultiCast for (Triggering unit))
        Set TempLoc = (Position of (Triggering unit))
        Set TempUnit = (Target unit of ability being cast)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                TempLv Equal to 1//MC có nhiêu lv thì có bây nhiêu cái iF này và có bây nhiêu skill đi kèm.
            Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Random integer number between 1 and 100) Less than or equal to 30//30% cơ hội multicast.
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Ability being cast) Equal to Firebolt (Warlock)
                            Then - Actions
                                For each (Integer A) from 1 to (TempLv + 1), do (Actions)
                                    Loop - Actions
                                        Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at TempLoc facing Default building facing degrees
                                        Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
                                        Unit - Add Firebolt (Neutral Hostile) to (Last created unit)
                                        Unit - Set level of Firebolt (Neutral Hostile) for (Last created unit) to (Level of Firebolt (Warlock) for (Triggering unit))
                                        Unit - Order (Last created unit) to Neutral - Firebolt TempUnit
                            Else - Actions
                    Else - Actions
            Else - Actions
        Custom script:   call RemoveLocation(udg_TempLoc)
 
Uhm...vậy bây giờ thế này : Mình có 1 chiêu Nova như sau :
lvl1 - 100% cast 1 lần Nova 100 dam
lvl2 - 50% cast 1 lần Nova, 50% cast 2 lần Nova
lvl3 - 50% cast 2 lần Nova, 50% cast 3 lần Nova
lvl4 - 50% cast 3 lần Nova, 50% cast 4 lần Nova
(Mỗi lần Nova cách nhau 0.01s, khi xảy ra 50% ở vế sau thì có dòng chữ Super Nova!! màu xanh bay lên)
thì làm thế nào? ::)
 
Mấy anh chỉ em cách làm Omnislash chiêu cuối của Jungernault dc không.Chỉ kĩ giùm em nhé.
 
Các bác ơi ai biết làm skill 2 "Stone gaint" cua Tiny ko? Làm ơn giúp em với. Thank!
 
Wa topic post spell hay topic hỏi đáp mà hỏi . Mà skill 2 là toss hả ?
 
@A.G
cái lệnh
trig2ju4.png

sau cùng thì mình ê là bị lỗi cái này
If (((Triggering unit) is alive) Equal to True) then do (Animation - Reset (Triggering unit)'s animation) else do (Do nothing)
bạn xài từ Triggering unit làm giá trị ví dụ là Triggering_unit[-max number of player = Triggering unit]
đặt giá trị trước cho nó chắc hơn chứ ví dụ mình xài Triggering unit đễ lỗi lắm,
Triggering unit chỉ xài cho lợi ích không có wait nếu có wait sẽ gây ra lỗi nghiêm trọng :-??
 
ai làm cho em 1 cái skils
20% xác xuất
ai đánh mình bị stun kẻ nó với :((
 
Góp ý, tại sao không cải tiến mấy skill của Counter Helix cho nó thành là chỉ Triggering khi Takes Damage ? Kiểu Is Attacked thấy kiểu gì ý.
Btw, hình như add hero skills cho Unit không phải Hero được đúng không ạ ?
 
Đây là skill Toss của tiny trong dota mà em kiếm được từ map demo:
Mã:
function Trig_Toss_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A004'        
endfunction

function Toss_Unit_Group takes nothing returns boolean 
 if ( IsUnitType(GetTriggerUnit(), UNIT_TYPE_ANCIENT) == true ) then  
 return false 
 endif 
 if IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) then 
 return false 
 elseif IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING) then 
 return false 
 elseif GetFilterUnit() == GetSpellAbilityUnit() then 
 return false 
 elseif IsUnitDeadBJ(GetFilterUnit()) then 
 return false 
 endif 
return true
endfunction

function Toss_Destroy_Trees takes nothing returns nothing
    call KillDestructable( GetEnumDestructable() )
endfunction

function TossFX takes nothing returns nothing
local effect f= bj_lastCreatedEffect
call TriggerSleepAction(0.4)
call DestroyEffect(f)
set f=null
endfunction

function Toss_Movement takes nothing returns nothing
local timer t=GetExpiredTimer()
local unit u=GetHandleUnit(t,"t")
local real b=GetHandleReal(t,"r")
local real n=GetHandleReal(t,"n")
local real d=GetHandleReal(t,"d")
local location l=GetHandleLocation(t,"l")
local real x=-d+(d*(b/50))
local location m=PolarProjectionBJ(l,x,n)
local real y=((b-25)*(b-25))
call SetUnitPositionLoc(u,m)
call SetUnitFlyHeight( u, ( 775-y ) , 10000.00 )
if GetRandomInt(1,4)==2 then
call AddSpecialEffectTargetUnitBJ( "origin", u, "Abilities\\Spells\\Undead\\Cripple\\CrippleTarget.mdl" )
call TriggerExecute(gg_trg_DestroyFX)
endif
set b=b+1
call SetHandleReal(t,"r",b)
set t=null
set u=null
set b=0
set n=0
set d=0
set l=null
set x=0
call RemoveLocation(m)
set m=null
set y=0
endfunction

function Trig_Toss_Actions takes nothing returns nothing
local group g=CreateGroup()
local unit c=GetTriggerUnit()
local unit a=null
local location l=GetSpellTargetLoc()
local timer t=null
local real b=1
local real d=0
local real n=0
call GroupEnumUnitsInRange(g,GetUnitX(c),GetUnitY(c),275,Condition(function Toss_Unit_Group))
set a=GroupPickRandomUnit(g)
call GroupClear(g)
if a!=null then    
    call SetUnitAnimationByIndex(c,4)
    call PauseUnitBJ( true, a )
    call SetUnitPathing( a, false )
    call SetUnitFacingToFaceLocTimed( a, l, 0 )
    call UnitAddAbilityBJ( 'A002', a )
    call UnitRemoveAbilityBJ( 'A002', a )    
    set t=CreateTimer()
    call SetHandleHandle(t,"t",a)
    call SetHandleReal(t,"r",b)    
    set d = DistanceBetweenPoints(GetUnitLoc(c), l)
    set n= AngleBetweenPoints(GetUnitLoc(c), l)
    call SetHandleReal(t,"d",d)
    call SetHandleReal(t,"n",n)
    call SetHandleHandle(t,"l",l)   
    call TimerStart(t,0.02,true,function Toss_Movement)
    call TriggerSleepAction(1.0)
    call RemoveLocation(l)
    set l=GetHandleLocation(t,"l")
    call RemoveLocation(l)
    call FlushHandleLocals(t)
    call PauseTimer(t)
    call DestroyTimer(t)
    call SetUnitFlyHeightBJ( a, GetUnitDefaultFlyHeight(a), 10000.00 )
    call PauseUnitBJ( false, a )
    call SetUnitPathing( a, true )    
    set l=GetUnitLoc(a)
    call DestroyEffect(AddSpellEffectByIdLoc('A0BZ', EFFECT_TYPE_TARGET, l))
    call TerrainDeformationRippleBJ( 0.2, true, l, 1.00, 300.00, 96.00, 1, 64.00 )
    call UnitDamageTargetBJ( c, a, 38.00 * I2R(GetUnitAbilityLevelSwapped('A004', c)) , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_DEMOLITION )
    set g = GetUnitsInRangeOfLocAll(300.00, l)
    loop
        set a = FirstOfGroup(g)
        exitwhen a == null
        call GroupRemoveUnit(g,a)
        call UnitDamageTargetBJ( c, a, 75.00 * I2R(GetUnitAbilityLevelSwapped('A004', c)) , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_DEMOLITION )     
    endloop
    call EnumDestructablesInCircleBJ( 300,l , function Toss_Destroy_Trees )
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl",GetLocationX(l),GetLocationY(l)))
endif
call DestroyGroup(g)
set g=null
set c=null
set a=null
call RemoveLocation(l)
set l=null
set t=null
set b=0
set n=0
set d=0
endfunction

//===========================================================================
function InitTrig_Toss takes nothing returns nothing
    set gg_trg_Toss = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Toss, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Toss, Condition( function Trig_Toss_Conditions ) )
    call TriggerAddAction( gg_trg_Toss, function Trig_Toss_Actions )
endfunction
Nhưng nó lại sử dụng ngôn ngữ Jass. Em chịu. Vậy liệu có thể dịch nó sang ngôn ngữ trong WE không? Nếu có thể thì dịch giúp em nha. Thank trước.:P
 
Đây là skill Toss của tiny trong dota mà em kiếm được từ map demo:
Mã:
function Trig_Toss_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A004'        
endfunction

function Toss_Unit_Group takes nothing returns boolean 
 if ( IsUnitType(GetTriggerUnit(), UNIT_TYPE_ANCIENT) == true ) then  
 return false 
 endif 
 if IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) then 
 return false 
 elseif IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING) then 
 return false 
 elseif GetFilterUnit() == GetSpellAbilityUnit() then 
 return false 
 elseif IsUnitDeadBJ(GetFilterUnit()) then 
 return false 
 endif 
return true
endfunction

function Toss_Destroy_Trees takes nothing returns nothing
    call KillDestructable( GetEnumDestructable() )
endfunction

function TossFX takes nothing returns nothing
local effect f= bj_lastCreatedEffect
call TriggerSleepAction(0.4)
call DestroyEffect(f)
set f=null
endfunction

function Toss_Movement takes nothing returns nothing
local timer t=GetExpiredTimer()
local unit u=GetHandleUnit(t,"t")
local real b=GetHandleReal(t,"r")
local real n=GetHandleReal(t,"n")
local real d=GetHandleReal(t,"d")
local location l=GetHandleLocation(t,"l")
local real x=-d+(d*(b/50))
local location m=PolarProjectionBJ(l,x,n)
local real y=((b-25)*(b-25))
call SetUnitPositionLoc(u,m)
call SetUnitFlyHeight( u, ( 775-y ) , 10000.00 )
if GetRandomInt(1,4)==2 then
call AddSpecialEffectTargetUnitBJ( "origin", u, "Abilities\\Spells\\Undead\\Cripple\\CrippleTarget.mdl" )
call TriggerExecute(gg_trg_DestroyFX)
endif
set b=b+1
call SetHandleReal(t,"r",b)
set t=null
set u=null
set b=0
set n=0
set d=0
set l=null
set x=0
call RemoveLocation(m)
set m=null
set y=0
endfunction

function Trig_Toss_Actions takes nothing returns nothing
local group g=CreateGroup()
local unit c=GetTriggerUnit()
local unit a=null
local location l=GetSpellTargetLoc()
local timer t=null
local real b=1
local real d=0
local real n=0
call GroupEnumUnitsInRange(g,GetUnitX(c),GetUnitY(c),275,Condition(function Toss_Unit_Group))
set a=GroupPickRandomUnit(g)
call GroupClear(g)
if a!=null then    
    call SetUnitAnimationByIndex(c,4)
    call PauseUnitBJ( true, a )
    call SetUnitPathing( a, false )
    call SetUnitFacingToFaceLocTimed( a, l, 0 )
    call UnitAddAbilityBJ( 'A002', a )
    call UnitRemoveAbilityBJ( 'A002', a )    
    set t=CreateTimer()
    call SetHandleHandle(t,"t",a)
    call SetHandleReal(t,"r",b)    
    set d = DistanceBetweenPoints(GetUnitLoc(c), l)
    set n= AngleBetweenPoints(GetUnitLoc(c), l)
    call SetHandleReal(t,"d",d)
    call SetHandleReal(t,"n",n)
    call SetHandleHandle(t,"l",l)   
    call TimerStart(t,0.02,true,function Toss_Movement)
    call TriggerSleepAction(1.0)
    call RemoveLocation(l)
    set l=GetHandleLocation(t,"l")
    call RemoveLocation(l)
    call FlushHandleLocals(t)
    call PauseTimer(t)
    call DestroyTimer(t)
    call SetUnitFlyHeightBJ( a, GetUnitDefaultFlyHeight(a), 10000.00 )
    call PauseUnitBJ( false, a )
    call SetUnitPathing( a, true )    
    set l=GetUnitLoc(a)
    call DestroyEffect(AddSpellEffectByIdLoc('A0BZ', EFFECT_TYPE_TARGET, l))
    call TerrainDeformationRippleBJ( 0.2, true, l, 1.00, 300.00, 96.00, 1, 64.00 )
    call UnitDamageTargetBJ( c, a, 38.00 * I2R(GetUnitAbilityLevelSwapped('A004', c)) , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_DEMOLITION )
    set g = GetUnitsInRangeOfLocAll(300.00, l)
    loop
        set a = FirstOfGroup(g)
        exitwhen a == null
        call GroupRemoveUnit(g,a)
        call UnitDamageTargetBJ( c, a, 75.00 * I2R(GetUnitAbilityLevelSwapped('A004', c)) , ATTACK_TYPE_NORMAL, DAMAGE_TYPE_DEMOLITION )     
    endloop
    call EnumDestructablesInCircleBJ( 300,l , function Toss_Destroy_Trees )
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl",GetLocationX(l),GetLocationY(l)))
endif
call DestroyGroup(g)
set g=null
set c=null
set a=null
call RemoveLocation(l)
set l=null
set t=null
set b=0
set n=0
set d=0
endfunction

//===========================================================================
function InitTrig_Toss takes nothing returns nothing
    set gg_trg_Toss = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Toss, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Toss, Condition( function Trig_Toss_Conditions ) )
    call TriggerAddAction( gg_trg_Toss, function Trig_Toss_Actions )
endfunction
Nhưng nó lại sử dụng ngôn ngữ Jass. Em chịu. Vậy liệu có thể dịch nó sang ngôn ngữ trong WE không? Nếu có thể thì dịch giúp em nha. Thank trước.:P
Ngôn ngữ WE là ngôn ngữ ????
Muốn chuyển sang trigger thì có spell Toss của anh Tom làm nè View attachment Toss.rar
 
Các anh hướng dẫn em làm mấy cái passive aura thành active được không ?
 
Các anh hướng dẫn em làm mấy cái passive aura thành active được không ?

pastive = active a` ?
cái này hơi không hiểu
aura đã là passtive lâu rùi
bạn định làm cho nó = active à ?
thì xài 1 skils = bonus vào pick untis thôi
còn việc pastive = active thì hơi khó 1 chút có thể làm dc.
 
Tức là làm aura giống nhủ Immolation ấy. Khi active mới có tác dụng nhưng sẽ drain mana.
 
dùng cái ability spell book rồi add cái ability aura ấy vào
 
Back
Top