- 7/2/04
- 5,764
- 8,509
Thử lại đi, anh lúc đầu cũng thế, vò đấu bút tai ko biết gì cả nhưng phải đọc đi đọc lại kết hợp mở ví dụ spell ra xem. nó giải thích cặn kẽ lắm mà 

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.

function Trig_Wind_summoned_2_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetAttacker()) == 'h000' ) ) then
return false
endif
return true
endfunction
function Trig_Wind_summoned_2_Func036C takes nothing returns boolean
if ( not ( udg_Integer == 0 ) ) then
return false
endif
return true
endfunction
function Trig_Wind_summoned_2_Actions takes nothing returns nothing
set udg_Point_Attacking = GetUnitLoc(GetAttacker())
set udg_Point_Attacked = GetUnitLoc(GetAttackedUnitBJ())
set udg_Real_Wind = AngleBetweenPoints(udg_Point_Attacking, udg_Point_Attacked)
set udg_Point_0[0] = PolarProjectionBJ(udg_Point_Attacking, 160.00, ( udg_Real_Wind + 0.00 ))
set udg_Point_0[1] = PolarProjectionBJ(udg_Point_Attacking, 160.00, ( udg_Real_Wind + 6.00 ))
set udg_Point_0[2] = PolarProjectionBJ(udg_Point_Attacking, 160.00, ( udg_Real_Wind - 6.00 ))
set udg_Point_0[3] = PolarProjectionBJ(udg_Point_Attacking, 160.00, ( udg_Real_Wind + 12.00 ))
set udg_Point_0[4] = PolarProjectionBJ(udg_Point_Attacking, 160.00, ( udg_Real_Wind - 12.00 ))
set udg_Point_0[5] = PolarProjectionBJ(udg_Point_Attacking, 0.00, ( udg_Real_Wind + 0.00 ))
set udg_Point_0[6] = PolarProjectionBJ(udg_Point_Attacking, 0.00, ( udg_Real_Wind + 7.00 ))
set udg_Point_0[7] = PolarProjectionBJ(udg_Point_Attacking, 0.00, ( udg_Real_Wind - 7.00 ))
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[0], ( udg_Real_Wind + 0.00 ) )
set udg_Unit_00[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.80, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[1], ( udg_Real_Wind + 6.00 ) )
set udg_Unit_01[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.80, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[2], ( udg_Real_Wind + -6.00 ) )
set udg_Unit_02[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.80, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[3], ( udg_Real_Wind + 12.00 ) )
set udg_Unit_03[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.80, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[4], ( udg_Real_Wind + -12.00 ) )
set udg_Unit_04[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.80, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[5], ( udg_Real_Wind + 0.00 ) )
set udg_Unit_05[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 1.12, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[6], ( udg_Real_Wind + 7.00 ) )
set udg_Unit_06[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 1.12, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetAttacker()), udg_Point_0[7], ( udg_Real_Wind + -7.00 ) )
set udg_Unit_07[udg_Integer] = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 1.12, 'BTLF', GetLastCreatedUnit() )
if ( Trig_Wind_summoned_2_Func036C() ) then
call StartTimerBJ( udg_Timer, true, 0.06 )
else
endif
set udg_Integer = ( udg_Integer + 1 )
call RemoveLocation (udg_Point_Attacked)
call RemoveLocation (udg_Point_Attacking)
call RemoveLocation (udg_Point_0[0])
call RemoveLocation (udg_Point_0[1])
call RemoveLocation (udg_Point_0[2])
call RemoveLocation (udg_Point_0[3])
call RemoveLocation (udg_Point_0[4])
call RemoveLocation (udg_Point_0[5])
call RemoveLocation (udg_Point_0[6])
call RemoveLocation (udg_Point_0[7])
endfunction
//===========================================================================
function InitTrig_Wind_summoned_2 takes nothing returns nothing
set gg_trg_Wind_summoned_2 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Wind_summoned_2, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Wind_summoned_2, Condition( function Trig_Wind_summoned_2_Conditions ) )
call TriggerAddAction( gg_trg_Wind_summoned_2, function Trig_Wind_summoned_2_Actions )
endfunction
function Trig_Wind_summoned_3_Func001Func025002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_00[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func025002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func025002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_00[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func025002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func025002003002001(), Trig_Wind_summoned_3_Func001Func025002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func025002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func025002003001(), Trig_Wind_summoned_3_Func001Func025002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func026002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_01[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func026002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func026002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_01[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func026002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func026002003002001(), Trig_Wind_summoned_3_Func001Func026002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func026002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func026002003001(), Trig_Wind_summoned_3_Func001Func026002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func027002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_02[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func027002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func027002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_02[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func027002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func027002003002001(), Trig_Wind_summoned_3_Func001Func027002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func027002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func027002003001(), Trig_Wind_summoned_3_Func001Func027002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func028002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_03[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func028002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func028002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_03[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func028002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func028002003002001(), Trig_Wind_summoned_3_Func001Func028002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func028002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func028002003001(), Trig_Wind_summoned_3_Func001Func028002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func029002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_04[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func029002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func029002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_04[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func029002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func029002003002001(), Trig_Wind_summoned_3_Func001Func029002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func029002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func029002003001(), Trig_Wind_summoned_3_Func001Func029002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func030002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_05[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func030002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func030002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_05[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func030002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func030002003002001(), Trig_Wind_summoned_3_Func001Func030002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func030002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func030002003001(), Trig_Wind_summoned_3_Func001Func030002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func031002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_06[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func031002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func031002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_06[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func031002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func031002003002001(), Trig_Wind_summoned_3_Func001Func031002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func031002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func031002003001(), Trig_Wind_summoned_3_Func001Func031002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func032002003001 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Unit_07[udg_For_C])) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func032002003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func032002003002002 takes nothing returns boolean
return ( IsUnitAliveBJ(udg_Unit_07[udg_For_C]) == true )
endfunction
function Trig_Wind_summoned_3_Func001Func032002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func032002003002001(), Trig_Wind_summoned_3_Func001Func032002003002002() )
endfunction
function Trig_Wind_summoned_3_Func001Func032002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Wind_summoned_3_Func001Func032002003001(), Trig_Wind_summoned_3_Func001Func032002003002() )
endfunction
function Trig_Wind_summoned_3_Func001Func033A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_00[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_00[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func034A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_01[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_01[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func035A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_02[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_02[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func036A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_03[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_03[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func037A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_04[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_04[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func038A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_05[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_05[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func039A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_06[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_06[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Func001Func040A takes nothing returns nothing
call UnitDamageTargetBJ( udg_Unit_07[udg_For_C], GetEnumUnit(), 500.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_COLD )
call RemoveUnit( udg_Unit_07[udg_For_C] )
endfunction
function Trig_Wind_summoned_3_Actions takes nothing returns nothing
set udg_For_C = 0
loop
exitwhen udg_For_C > ( udg_Integer - 1 )
set udg_Point[10] = GetUnitLoc(udg_Unit_00[udg_For_C])
set udg_Point[11] = GetUnitLoc(udg_Unit_01[udg_For_C])
set udg_Point[12] = GetUnitLoc(udg_Unit_02[udg_For_C])
set udg_Point[13] = GetUnitLoc(udg_Unit_03[udg_For_C])
set udg_Point[14] = GetUnitLoc(udg_Unit_04[udg_For_C])
set udg_Point[15] = GetUnitLoc(udg_Unit_05[udg_For_C])
set udg_Point[16] = GetUnitLoc(udg_Unit_06[udg_For_C])
set udg_Point[17] = GetUnitLoc(udg_Unit_07[udg_For_C])
set udg_Point[0] = PolarProjectionBJ(udg_Point[10], 40.00, GetUnitFacing(udg_Unit_00[udg_For_C]))
set udg_Point[1] = PolarProjectionBJ(udg_Point[11], 40.00, GetUnitFacing(udg_Unit_01[udg_For_C]))
set udg_Point[2] = PolarProjectionBJ(udg_Point[12], 40.00, GetUnitFacing(udg_Unit_02[udg_For_C]))
set udg_Point[3] = PolarProjectionBJ(udg_Point[13], 40.00, GetUnitFacing(udg_Unit_03[udg_For_C]))
set udg_Point[4] = PolarProjectionBJ(udg_Point[14], 40.00, GetUnitFacing(udg_Unit_04[udg_For_C]))
set udg_Point[5] = PolarProjectionBJ(udg_Point[15], 40.00, GetUnitFacing(udg_Unit_05[udg_For_C]))
set udg_Point[6] = PolarProjectionBJ(udg_Point[16], 40.00, GetUnitFacing(udg_Unit_06[udg_For_C]))
set udg_Point[7] = PolarProjectionBJ(udg_Point[17], 40.00, GetUnitFacing(udg_Unit_07[udg_For_C]))
call SetUnitPositionLoc( udg_Unit_00[udg_For_C], udg_Point[0] )
call SetUnitPositionLoc( udg_Unit_01[udg_For_C], udg_Point[1] )
call SetUnitPositionLoc( udg_Unit_02[udg_For_C], udg_Point[2] )
call SetUnitPositionLoc( udg_Unit_03[udg_For_C], udg_Point[3] )
call SetUnitPositionLoc( udg_Unit_04[udg_For_C], udg_Point[4] )
call SetUnitPositionLoc( udg_Unit_05[udg_For_C], udg_Point[5] )
call SetUnitPositionLoc( udg_Unit_06[udg_For_C], udg_Point[6] )
call SetUnitPositionLoc( udg_Unit_07[udg_For_C], udg_Point[7] )
set udg_Unit_Group[0] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[0], Condition(function Trig_Wind_summoned_3_Func001Func025002003))
set udg_Unit_Group[1] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[1], Condition(function Trig_Wind_summoned_3_Func001Func026002003))
set udg_Unit_Group[2] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[2], Condition(function Trig_Wind_summoned_3_Func001Func027002003))
set udg_Unit_Group[3] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[3], Condition(function Trig_Wind_summoned_3_Func001Func028002003))
set udg_Unit_Group[4] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[4], Condition(function Trig_Wind_summoned_3_Func001Func029002003))
set udg_Unit_Group[5] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[5], Condition(function Trig_Wind_summoned_3_Func001Func030002003))
set udg_Unit_Group[6] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[6], Condition(function Trig_Wind_summoned_3_Func001Func031002003))
set udg_Unit_Group[7] = GetUnitsInRangeOfLocMatching(48.00, udg_Point[7], Condition(function Trig_Wind_summoned_3_Func001Func032002003))
call ForGroupBJ( udg_Unit_Group[0], function Trig_Wind_summoned_3_Func001Func033A )
call ForGroupBJ( udg_Unit_Group[1], function Trig_Wind_summoned_3_Func001Func034A )
call ForGroupBJ( udg_Unit_Group[2], function Trig_Wind_summoned_3_Func001Func035A )
call ForGroupBJ( udg_Unit_Group[3], function Trig_Wind_summoned_3_Func001Func036A )
call ForGroupBJ( udg_Unit_Group[4], function Trig_Wind_summoned_3_Func001Func037A )
call ForGroupBJ( udg_Unit_Group[5], function Trig_Wind_summoned_3_Func001Func038A )
call ForGroupBJ( udg_Unit_Group[6], function Trig_Wind_summoned_3_Func001Func039A )
call ForGroupBJ( udg_Unit_Group[7], function Trig_Wind_summoned_3_Func001Func040A )
call RemoveLocation (udg_Point[0])
call RemoveLocation (udg_Point[1])
call RemoveLocation (udg_Point[2])
call RemoveLocation (udg_Point[3])
call RemoveLocation (udg_Point[4])
call RemoveLocation (udg_Point[5])
call RemoveLocation (udg_Point[6])
call RemoveLocation (udg_Point[7])
call RemoveLocation (udg_Point[10])
call RemoveLocation (udg_Point[11])
call RemoveLocation (udg_Point[12])
call RemoveLocation (udg_Point[13])
call RemoveLocation (udg_Point[14])
call RemoveLocation (udg_Point[15])
call RemoveLocation (udg_Point[16])
call RemoveLocation (udg_Point[17])
call DestroyGroup (udg_Unit_Group[0])
call DestroyGroup (udg_Unit_Group[1])
call DestroyGroup (udg_Unit_Group[2])
call DestroyGroup (udg_Unit_Group[3])
call DestroyGroup (udg_Unit_Group[4])
call DestroyGroup (udg_Unit_Group[5])
call DestroyGroup (udg_Unit_Group[6])
call DestroyGroup (udg_Unit_Group[7])
set udg_For_C = udg_For_C + 1
endloop
endfunction
//===========================================================================
function InitTrig_Wind_summoned_3 takes nothing returns nothing
set gg_trg_Wind_summoned_3 = CreateTrigger( )
call TriggerRegisterTimerExpireEventBJ( gg_trg_Wind_summoned_3, udg_Timer )
call TriggerAddAction( gg_trg_Wind_summoned_3, function Trig_Wind_summoned_3_Actions )
endfunction
, chắc cái trên cũng chẳng có leak gì đâu.em hỏi tý, làm sao khi tải spell về thì có thề dùng được trong world editon, thông cảm vì em hơi gà:nailbit:
Em down cái Jassnewgen về nhưng ko mở đc do thiếu file ijl15.dll, có cách nào khắc phục ko ?? Em down cái này trên thehelper.com. Thanks
Mấy bác cho em hỏi làm sao mà làm cho chiêu đặt boom có tác dụng với unit thuyền, với lại mấy bác hướng dẫn cách khai báo event và điều kiện trong jass với.