langthangbairac
T.E.T.Я.I.S
- 19/5/12
- 594
- 767
Cách kiểm tra một skill đang cooldown và làm một skills passive có thể cooldown
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
sao dùng Order ID để dùng item đc, với lại ability vào item thì đâu dùng Order ID của nó nữa
trigger:
Hero - Use Item On A Unit
Hero - Use Item On A Point
Hero - Use Item On A Destructible
Hero - Use Item
tha hồ mà chọn
sợ item in slot 1, 2,... ko ổn thì dùng: Item Carried By Hero Of Type![]()

Dùng jass: Issue<type>Order returns booleanCách kiểm tra một skill đang cooldown và làm một skills passive có thể cooldown
Thanks a Tom. Nãy toàn tìm trong Action - Items mà quên k để ý đến mục Hero
@andy_bi
1. Thế thì làm ra làm cái gì cho phí công? Dù có ngu nó cũng phải biết đi farm, giết nhau, lên đồ, chạy khi yếu thế và dùng skill.
Lệnh Order Item On A Unit chỉ tác dụng khi có target. Với item no target như Arcane Boots thì vô dụng rồi.

), mà cũng chả biết có phải IF làm ko nữa (vì lúc đề tên là... PBMN - Please Bug Me Not) và AI... còn nhiều lúc bị lỗi nữa chứ (mắc cười, nhớ có ver của AI, bara dúng skill 1 xong invulable armor
)
, coi chừng mâdt nhiều thòi gian mà ko đc gì (như mình, đã... bỏ WE) 
bạn làm AI 1 mình bạn hay là nhiều ng
nếu 1 mình bạn thì mình khuyên nên... từ bỏ đi
vì... cái như bạn nói: biết farm, giết ng, chạy khi yếu thế,... tóm lại là... tá lả
IF làm mất 1 tháng hơn đấy bạn (kể từ khi ra bản gốc v6.74c, 1 tháng sau mới có AI), mà cũng chả biết có phải IF làm ko nữa (vì lúc đề tên là... PBMN - Please Bug Me Not) và AI... còn nhiều lúc bị lỗi nữa chứ (mắc cười, nhớ có ver của AI, bara dúng skill 1 xong invulable armor
)
hãy suy nghĩ thật kĩ nhé bạn, coi chừng mâdt nhiều thòi gian mà ko đc gì (như mình, đã... bỏ WE)
![]()

bạn làm AI 1 mình bạn hay là nhiều ng
nếu 1 mình bạn thì mình khuyên nên... từ bỏ đi
vì... cái như bạn nói: biết farm, giết ng, chạy khi yếu thế,... tóm lại là... tá lả
IF làm mất 1 tháng hơn đấy bạn (kể từ khi ra bản gốc v6.74c, 1 tháng sau mới có AI), mà cũng chả biết có phải IF làm ko nữa (vì lúc đề tên là... PBMN - Please Bug Me Not) và AI... còn nhiều lúc bị lỗi nữa chứ (mắc cười, nhớ có ver của AI, bara dúng skill 1 xong invulable armor
)
hãy suy nghĩ thật kĩ nhé bạn, coi chừng mâdt nhiều thòi gian mà ko đc gì (như mình, đã... bỏ WE)
![]()
)nói giảm cái gì thế. cái gì mà 1 mình bạn thì nghỉ đi. cái gì mà sũy nghĩ thật kĩ. làm cụt chí người ta à. bạn minhtronglam kìa. học tringger năm lớp 5. năm nay lớp 7. làm được AI. đấy. nếu là cao nhân GUI hoặc JAss thì hãy nói. còn không thì cứ học hỏi đi. còn dota sao lại 1 tháng sau mới có AI. thế những ver trước AI không có à. (còn bỏ WE thì bỏ đi việc gì phải rủ người ta. hay là làm không nổi rồi bỏ)


Repost 3rd. Có ai giúp được k ? (K thì xin đừng rãnh rỗi spam)Mình muốn làm 1 item hồi sinh nhưng ko mất nhưng có cooldown. Nhưng khi chết hs lại thì chỉ cần bỏ ra là cd tự reset. Có thể nào làm hero chết có thể bỏ ra nhưng khi nhặt hay mua cái khác nó vẫn cd không ?
có hiểu ko?
kể từ khi ra v6.74c, 1 tháng sau mới có v6.74c AI chứ ko phải là mấy ver trước ko có AI
còn cái post ấy là chỉ khuyên, góp ý thôi chú ko có ý làm lung lay ý chí bạn ấy :)
function Trig_Thoi_Son_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A091' ) ) then
return false
endif
return true
endfunction
function Group takes nothing returns boolean
local unit uc = GetTriggerUnit()
local unit up = GetFilterUnit()
local real dmg = (80.00 * I2R(GetUnitAbilityLevelSwapped('A091', uc)))
local location p = GetUnitLoc(up)
if ( IsUnitType(up, UNIT_TYPE_STRUCTURE) == true ) and ( IsUnitAliveBJ(up) == true) and ( IsUnitEnemy(up, GetOwningPlayer(uc)) == true) and ( IsUnitType(up, UNIT_TYPE_MAGIC_IMMUNE) == false) then
call UnitDamageTargetBJ( uc, up, dmg, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ( p , "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation (p)
endif
set uc = null
set up = null
set p = null
return true
endfunction
function Trig_Thoi_Son_Actions takes nothing returns nothing
local unit uc = GetTriggerUnit()
local unit ut = GetSpellTargetUnit()
call UnitAddAbility(ut,'A172')
call TriggerSleepAction( ( 1 * I2R(GetUnitAbilityLevelSwapped('A091', uc)) ) )
call UnitRemoveAbility(ut,'A172')
set udg_TempLoc = GetUnitLoc(ut)
set udg_TempGroup = GetUnitsInRangeOfLocAll (500,udg_TempLoc)
call ForGroupBJ( udg_TempGroup, function Group )
call DestroyGroup (udg_TempGroup)
set uc = null
set ut = null
endfunction
//===========================================================================
function InitTrig_Thoi_Son takes nothing returns nothing
set gg_trg_Thoi_Son = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Thoi_Son, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Thoi_Son, Condition( function Trig_Thoi_Son_Conditions ) )
call TriggerAddAction( gg_trg_Thoi_Son, function Trig_Thoi_Son_Actions )
endfunction
Ai xem hộ mình cái này sao mình pick every unit rồi gây damage không được =-=
Mã:function Trig_Thoi_Son_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A091' ) ) then return false endif return true endfunction function Group takes nothing returns boolean local unit uc = GetTriggerUnit() local unit up = [COLOR="#0000CD"]GetEnumUnit() //Picked Unit chứ không phải Matching Unit[/COLOR] local real dmg = (80.00 * I2R(GetUnitAbilityLevelSwapped('A091', uc))) local location p = GetUnitLoc(up) if ( IsUnitType(up, UNIT_TYPE_STRUCTURE) == true ) and ( IsUnitAliveBJ(up) == true) and ( IsUnitEnemy(up, GetOwningPlayer(uc)) == true) and ( IsUnitType(up, UNIT_TYPE_MAGIC_IMMUNE) == false) then call UnitDamageTargetBJ( uc, up, dmg, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL ) call AddSpecialEffectLocBJ( p , "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" ) call DestroyEffectBJ( GetLastCreatedEffectBJ() ) call RemoveLocation (p) endif set uc = null set up = null set p = null return true endfunction function Trig_Thoi_Son_Actions takes nothing returns nothing local unit uc = GetTriggerUnit() local unit ut = GetSpellTargetUnit() call UnitAddAbility(ut,'A172') call TriggerSleepAction( ( 1 * I2R(GetUnitAbilityLevelSwapped('A091', uc)) ) ) call UnitRemoveAbility(ut,'A172') set udg_TempLoc = GetUnitLoc(ut) set udg_TempGroup = GetUnitsInRangeOfLocAll (500,udg_TempLoc) call ForGroupBJ( udg_TempGroup, function Group ) call DestroyGroup (udg_TempGroup) set uc = null set ut = null endfunction //=========================================================================== function InitTrig_Thoi_Son takes nothing returns nothing set gg_trg_Thoi_Son = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Thoi_Son, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Thoi_Son, Condition( function Trig_Thoi_Son_Conditions ) ) call TriggerAddAction( gg_trg_Thoi_Son, function Trig_Thoi_Son_Actions ) endfunction


Cám ơn anh em mày mò làm thử nên còn nhiều cái nhầm lẫn,em còn đặt nhầm điều kiện picked unit là STRUCTURE nữa
P/s: vậy là mỗi lần dùng Loop - Actions như pick every unit .v.v. đều phải dùng một function riêng và gọi nó đúng không anh ?
Và em thắc mắc một điều là mỗi hàm trả cho ta một giá trị (ví dụ boolean trả là true hoặc false) thì cái giá trị đó để làm gì vậy anh ?
function Trig_Thoi_Son_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A091' ) ) then
return false
endif
return true
endfunction
function Trig_Thoi_Son_Actions takes nothing returns nothing
local unit uc = GetTriggerUnit()
local unit ut = GetSpellTargetUnit()
local unit up
local location p
call UnitAddAbility(ut,'A172')
call TriggerSleepAction( ( 1 * I2R(GetUnitAbilityLevelSwapped('A091', uc)) ) )
call UnitRemoveAbility(ut,'A172')
set udg_TempLoc = GetUnitLoc(ut)
set udg_TempGroup = GetUnitsInRangeOfLocAll (500,udg_TempLoc)
loop
set up = FirstOfGroup( udg_TempGroup )
exitwhen up==null
call GroupRemoveUnit( udg_TempGroup, up)
if ( IsUnitType(up, UNIT_TYPE_STRUCTURE) == true ) and ( IsUnitAliveBJ(up) == true) and ( IsUnitEnemy(up, GetOwningPlayer(uc)) == true) and ( IsUnitType(up, UNIT_TYPE_MAGIC_IMMUNE) == false) then
set p = GetUnitLoc(up)
call UnitDamageTargetBJ( uc, up, dmg, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ( p , "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation (p)
set p = null
endif
endloop
call DestroyGroup (udg_TempGroup)
set uc = null
set ut = null
endfunction
//===========================================================================
function InitTrig_Thoi_Son takes nothing returns nothing
set gg_trg_Thoi_Son = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Thoi_Son, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Thoi_Son, Condition( function Trig_Thoi_Son_Conditions ) )
call TriggerAddAction( gg_trg_Thoi_Son, function Trig_Thoi_Son_Actions )
endfunction
(vì thấy đỡ phải remove :-* )Anh Tom-sama này cho em hỏi há
mình trong Jass mà tận dụng các biến real x,y của một unit hay location (mà ko dụng GetLocationX(typelocation) và GetLocationY(typelocation)) thì sẽ đỡ chiếm leak hơn là xài trực típ location hả anh?(vì thấy đỡ phải remove :-* )
cho mình hỏi làm sao sau khi cast skill, tất cả những gì trong một AoE nhất định đều bị slow?? kể cả missle,...
Dùng jass: Issue<type>Order returns boolean
Nếu false có nghĩa skill bạn đã order:
- Ko tồn tại
- Đang bị silent
- Đang cooldown
Nếu true thì order stop là ko cast skill đó nữa
Skill passive mà có cooldown
Nếu ko MUI thì chỉ đơn giản là disable trigger của skill passive đó rồi dùng timer để hết time thì bật lại skill
Nếu MUI thì mình dùng wait/timer + boolean để lưu coi đã cooldown skill chưa (Trigger event unit generic)
Nếu MUI thì mình dùng wait/timer + disable/enable trigger (Trigger event unit specific)