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.
Nhận xét sau khi xem qua trigger:
- ko MUI
- Leaks:
+ Locations:
Cứ mỗi 0.01s leak 4 location này
+ Group:
Như trên, cứ 0.01s leak 2 group (chả biết tốn bao nhiêu bộ nhớ nhưng...ko hề vớ vẩn)
Ngoài ra:
global variables ko cần phải null
Tắt, bật collides của unit trước và sau khi deal damage để làm gì ?
----
Và trigger kiểu này, unit 1 cast, chưa xong, unit 2 cast thì các rìu của unit 1 cast sẽ bị remove ? tức là WE của unit 1 sẽ bị dừng ?

.Unit - Move Ball_1 instantly to (TempLoc offset by ([B]Distance[/B] x [B](Sin((1.00 x (Real(Int)))[/B]))) towards Angle1 degrees), facing Angle1 degrees
Set [I]Int [/I]= [U](Int + 1)[/U]
Set [I]Angle1[/I] = [U](Angle1 + 0.30)[/U]
|Khó nói quá|
rồi quay trở lại. Nhưng nhờ lệnh đó thì Cay cây búa sẽ bị làm đi theo dúng hướng nhắm tới. 180 lần thây đổi. Chia ra 2 nghĩa là sẽ có 90 lần unit sẽ hướng về phía trước . 90 lần sau Unit búa sẽ đi lùi.có ai chỉ tui cách lấy cái dòng đính lên trang này ko ( tại ở nhà có mấy con thay cung hay hay (nhưng ma những cai skill thường ko MUI đựơc)

scope WildAxes
//******************************************************************************************
//*
//* Wild Axes - By emjlr3, Original seen in DotA Allstars
//*
//* Hurl two axes outward, which then intersect and return. Each axe can
//* only damage a unit once and destroys trees in its wake.
//*
//* Requires:
//* - "TT" trigger copied to your map, if not already there
//* - The "Wild Axes" ability copied to your map
//* - The "Wild Axes" unit copied to your map
//* - A vJASS Preprocessor
//*
//******************************************************************************************
globals
// Config. Globals:
private constant integer abil_id = 'A07E' // Wild Axes ability rawcode
private constant integer dummy_id = 'e007' // Wild Axes unit rawcode
private constant real speed = .028 // Speed for axes, this is an arbitrary value, increasing it increases the axes speed, while decreasing it decreases their speed
private constant real width = 375. // Width for bezier curve, larger values give a wider arc, and vice versa
private constant real area = 150. // Area to damage units around axes and destroy trees
private constant string sfx = "Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl" // Effect created on hit units
private constant attacktype attack_type = ATTACK_TYPE_HERO // Attack type for damage
private constant damagetype damage_type = DAMAGE_TYPE_NORMAL // Damage type for damage
// Needed Globals:
public trigger Trigger = null // Output trigger will be WildAxes_Trigger, which can be used publically
private group G = CreateGroup()
private group TempG = null
private player P = null
private location L = null
private rect R = null
endglobals
// Config. Functions:
private function Damage takes integer lvl returns real
return 60.+(lvl*30.) // Damage/lvl
endfunction
private struct data
unit u
unit axe
player p
group grp
real x
real y
real xl
real yl
real a = 1.
real outx
real outy
real ang
integer lvl
boolean first = true
endstruct
private function Conditions takes nothing returns boolean
return GetSpellAbilityId()==abil_id
endfunction
private function Filt takes nothing returns boolean
return not IsUnitInGroup(GetFilterUnit(),TempG) and GetWidgetLife(GetFilterUnit())>.405 and not IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE) and IsUnitEnemy(GetFilterUnit(),P)
endfunction
private function Kill_Trees takes nothing returns nothing
call KillDestructable(GetEnumDestructable())
endfunction
private function Effects takes unit u, real x, real y, group grp, integer lvl returns nothing
local unit dum
set R = Rect(x-150.,y-150.,x+150.,y+150.)
call EnumDestructablesInRect(R,null,function Kill_Trees)
call GroupClear(G)
set P = GetOwningPlayer(u)
set TempG = grp
call GroupEnumUnitsInRange(G,x,y,area,Condition(function Filt))
loop
set dum = FirstOfGroup(G)
exitwhen dum==null
call GroupRemoveUnit(G,dum)
call UnitDamageTarget(u,dum,Damage(lvl),false,false,attack_type,damage_type,null)
call DestroyEffect(AddSpecialEffectTarget(sfx,dum,"chest"))
call GroupAddUnit(grp,dum)
endloop
endfunction
private function Movement takes nothing returns boolean
local data d = TT_GetData()
local real b = 1.-d.a
call SetUnitX(d.axe,d.x*d.a*d.a+d.outx*2*d.a*b+d.xl*b*b)
call SetUnitY(d.axe,d.y*d.a*d.a+d.outy*2*d.a*b+d.yl*b*b)
call Effects(d.u,GetUnitX(d.axe),GetUnitY(d.axe),d.grp,d.lvl)
if d.first then
set d.a = d.a-speed
else
set d.a = d.a+speed
set d.x = GetUnitX(d.u)
set d.y = GetUnitY(d.u)
endif
if d.a<0. and d.first then
set d.first = false
set d.outx = d.x+width*Cos(Atan2(d.yl-d.y,d.xl-d.x)+d.ang)
set d.outy = d.y+width*Sin(Atan2(d.yl-d.y,d.xl-d.x)+d.ang)
endif
if d.a>1. and d.first==false then
call DestroyGroup(d.grp)
call RemoveUnit(d.axe)
call d.destroy()
return true
endif
return false
endfunction
private function Actions takes nothing returns nothing
local data d1 = data.create()
local data d2 = data.create()
set d1.u = GetTriggerUnit()
set d2.u = d1.u
set d1.x = GetUnitX(d1.u)
set d2.x = d1.x
set d1.y = GetUnitY(d1.u)
set d2.y = d1.y
set d1.p = GetOwningPlayer(d1.u)
set d2.p = d1.p
set d1.axe = CreateUnit(d1.p,dummy_id,d1.x,d1.y,0.)
set d2.axe = CreateUnit(d1.p,dummy_id,d1.x,d1.y,0.)
set d1.grp = CreateGroup()
set d2.grp = CreateGroup()
set d1.lvl = GetUnitAbilityLevel(d1.u,abil_id)
set d2.lvl = d1.lvl
set L = GetSpellTargetLoc()
set d1.xl = GetLocationX(L)
set d2.xl = d1.xl
set d1.yl = GetLocationY(L)
set d2.yl = d1.yl
set d1.outx = d1.x+width*Cos(Atan2(d1.yl-d1.y,d1.xl-d1.x)+45.)
set d1.outy = d1.y+width*Sin(Atan2(d1.yl-d1.y,d1.xl-d1.x)+45.)
set d2.outx = d1.x+width*Cos(Atan2(d1.yl-d1.y,d1.xl-d1.x)-45.)
set d2.outy = d1.y+width*Sin(Atan2(d1.yl-d1.y,d1.xl-d1.x)-45.)
set d1.ang = -45.
set d2.ang = 45.
call TT_Start(function Movement,d1)
call TT_Start(function Movement,d2)
call RemoveLocation(L)
endfunction
//===========================================================================
public function InitTrig takes nothing returns nothing
set Trigger = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( Trigger, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( Trigger, Condition( function Conditions ) )
call TriggerAddAction( Trigger, function Actions )
endfunction
endscope
thui dù sao cũng cảm ơn nhiều để em diza` ôm cài máy mò suốt đêm vậy
em thích mấy cái phép thể loại băng nên thấy cái nào cool là em muôn học hết không biết có làm được hay không nhưng cũng đáng để thử chứ
thank nhìu
Freezing Field??. Đây:
- TẠo skill frost nova dummy có target là self.
- TẠo cái dummy <= model nào đó (nghi là cái model nhỏ wá => frost nova nhin effect cung bé tẹo hay là dùng none thì se ko có cái wái jì cả nên dùng trigger tạo effect cho nó gọn :'>)
- Làm cái skil channel đưa cho thèng tướng nó xài. Nhớ là có cái ji đó nó phải víible mới có icon để xài.
- Làm 1 trigger create randon dummy rui ỏder nó cast frost nova vào ngưới nó. (lưu ý là chỉ có AOE damage của frost nova là damage enemy thui nhé)
- Xong (có jì ko hỉu cũng chịu thui <= (điểm văn kém lén :'>))
. Tiện thể để máu của neutral dummy là 1 để trúng Frost Nova thì chết luôn, đỡ phải lo duration buff 
(hy vọng sớm nhận được trả lời vì em đang bí làm spell 1 hồi muốn điên luôn
)