Tom_Kazansky
<b><font color="RoyalBlue"><font face="Lucida Cons
- 28/12/06
- Thread starter
- #741
condition "(Local player)" lấy ở đâu ra vậy?
"nhiễm" thì cũng "nhiễm" cho đúng chứ
"nhiễm" thì cũng "nhiễm" cho đúng chứ

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.

condition "(Local player)" lấy ở đâu ra vậy?
"nhiễm" thì cũng "nhiễm" cho đúng chứ![]()
nó như mã jass get localplayerLight Death
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Light Death
Actions
For each (Integer A) from 1 to 10, do (Actions)
Loop - Actions
Set Caster[16] = (Triggering unit)
Set Points[16] = ((Position of Caster[16]) offset by 200.00 towards ((Real((Integer A))) x 36.00) degrees)
Special Effect - Destroy (Create a special effect using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl at Points[16])
Set UnitGroups[16] = (Units within 100.00 of Points[16] matching ((((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True) and (((Matching unit) is alive) Equal to True)))
Unit Group - Pick every unit in UnitGroups[16] and do (Actions)
Loop - Actions
Unit - Cause (Triggering unit) to damage (Picked unit), dealing ((100.00 + (100.00 x (Real((Level of Light Death for (Triggering unit)))))) + (2.00 x (Real((Strength of (Triggering unit) (Include bonuses)))))) damage of attack type Spells and damage type Normal
Custom script: call DestroyGroup(udg_UnitGroups[16])
Custom script: call RemoveLocation(udg_Points[16])
scope FireMassing initializer init
//>>>>>>>>>>>>>>>>>>>>>>>>>SETUP<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
globals
private constant integer SPELL_ID = 'A01P'
private constant integer DUMMY_UNIT_ID = 'e008'
private constant integer EFF_UNIT_ID = 'e007'
private constant string EFF = "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl"
//"Abilities\\Weapons\\Rifle\\RifleImpact.mdl"
//"Abilities\\Spells\\Human\\SpellSteal\\SpellStealMissile.mdl"
//"Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl"
//"Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl"
endglobals
//Advance:
private function speed takes nothing returns real
return 0.01 //lager value, more slower
endfunction
private function range takes nothing returns real
return 1500.00
endfunction
private function radius takes nothing returns real
return 100.00 //the radius for detecting collision
endfunction
private function amount takes nothing returns integer
return 10 //the numbers of arrow per cast
endfunction
private function dam takes integer aLevel returns real
return ( ( 300.00 + ( 100.00 * aLevel ) ) + ( 3.00 * I2R(GetHeroStatBJ(bj_HEROSTAT_STR, GetTriggerUnit(), true)) ) )
endfunction
private function addOn takes unit trigUnit, unit dam2Unit returns nothing
//this option is for advance user, you can add your code here to Make
//more effect when the projectile impact to enemy. ex: knock back, dam over time...
endfunction
//>>>>>>>>>>>>>>>>>>>>>>>ENDSETUP<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
//=================Confuse zone==============//
//Dont edit this bunk of code unless you
//really wanna do
//===========================================//
globals
private constant real MOVE = 10.0 //distance that the projectile will move Per
//*speed()* . You should'nt change this
private constant real deviation = 10.0 //deviation between projectile
endglobals
private struct Projectile
unit u//projectile
unit uT// trigger unit
real angle
real moved = 0
boolean stop = false
method control takes nothing returns nothing
local location moveLoc = PolarProjectionBJ(GetUnitLoc(.u), MOVE, .angle)
//valriable for collision detect:
local group cGrp = GetUnitsInRangeOfLocAll(radius(),moveLoc)
local unit uDam
//move the unit(projectile)
call SetUnitPositionLoc(.u,moveLoc)
//collision detect and dam enemy:
set uDam = FirstOfGroup(cGrp)
if uDam != null then
loop
exitwhen uDam == null
if IsUnitEnemy(uDam,GetOwningPlayer(.uT)) and IsUnitAliveBJ(uDam) then
call UnitDamageTargetBJ(.uT, uDam, dam(GetUnitAbilityLevel(.uT,SPELL_ID)),ATTACK_TYPE_MAGIC,DAMAGE_TYPE_MAGIC)
call addOn(.uT,uDam)
set .stop = true//need improve
endif
call GroupRemoveUnit(cGrp,uDam)
set uDam = FirstOfGroup(cGrp)
endloop
endif
//out of range detect:
if .moved < range() then
set .moved = .moved + MOVE//if still in range, then set the .moved value go up
else
set .stop = true
endif
//play animation
if .stop then
call DestroyEffect(AddSpecialEffectLoc(EFF,moveLoc))
endif
//remove leak
call RemoveLocation(moveLoc)
call DestroyGroup(cGrp)
set moveLoc = null
set cGrp = null
set uDam = null
endmethod
endstruct
globals
private integer Total = 0
private timer T = CreateTimer()
private Projectile array pArr
endglobals
private function timerLoop takes nothing returns nothing
local integer i = 0
loop
exitwhen(i >= Total)
if pArr[i].stop then
call KillUnit(pArr[i].u)//kill the projectile to not display it any more
call pArr[i].destroy()//Not need this instance any more
set Total=Total-1//degrease the Total by 1
if Total > 0 then
set pArr[i]=pArr[Total]
set i=i-1//if not the loops will forget to handle the pArr[Total] ^^
else
call PauseTimer(T)
endif
else
call pArr[i].control()
endif
set i = i + 1
endloop
//call BJDebugMsg("yeah")
endfunction
//extra function for formula caculate:
private function angleCalculate takes real angle, integer iAddOne returns real
local real result = 0
//==========for div number of *amount()*:
local real halfDev //deviation / 2
local real cen1
local real cen2
local integer cen1Index
local integer cen2Index
//==========for odd number of *amount()*:
local integer cenIndex
local real cen
//div:
if ModuloInteger(amount(),2)==0 then
//call BJDebugMsg("so chan")
set halfDev = deviation/2
set cen1 = angle - halfDev
set cen2 = angle + halfDev
set cen1Index = amount()/2
set cen2Index = cen1Index + 1
if iAddOne == cen1Index then
set result = cen1
elseif iAddOne < cen1Index then
set result = cen1 - deviation*(cen1Index - iAddOne)
elseif iAddOne == cen2Index then
set result = cen2
elseif iAddOne > cen2Index then
set result = cen2 + deviation*(iAddOne - cen2Index)
endif
//odd:
else
//call BJDebugMsg("so le")
set cen = angle
set cenIndex = ((amount() - 1)/2) + 1
if iAddOne == cenIndex then
set result = angle
elseif iAddOne > cenIndex then
set result = cen - (deviation*(iAddOne - cenIndex))
else
set result = cen + (deviation*(cenIndex - iAddOne))
endif
endif
return result
endfunction
//====================end=====================//
//Condition================================================================
private function condition takes nothing returns boolean
return GetSpellAbilityId() == SPELL_ID
endfunction
//Actions==================================================================
private function Actions takes nothing returns nothing
local player pT = GetOwningPlayer(GetTriggerUnit())
local location tar = GetSpellTargetLoc()
local location self = GetUnitLoc(GetTriggerUnit())
local real deg = AngleBetweenPoints(self,tar)
local Projectile p
//
local integer iPlus = 1
if Total == 0 then
call TimerStart (T, speed(), true, function timerLoop)
endif
//
loop
exitwhen iPlus > amount()
set p = Projectile.create()
set p.u = CreateUnitAtLoc(pT,EFF_UNIT_ID,self,angleCalculate(deg,iPlus))
set p.angle = angleCalculate(deg,iPlus)
set p.uT = GetTriggerUnit()
//call BJDebugMsg(R2S(angleCalculate(deg,iPlus)))
//call BJDebugMsg(I2S(Total))
set pArr[Total] = p
set Total = Total + 1
set iPlus = iPlus + 1
endloop
//remove leak
set pT = null
call RemoveLocation(tar)
call RemoveLocation(self)
set tar = null
set self = null
endfunction
//Initializer==============================================================
private function init takes nothing returns nothing
local trigger t = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddAction( t, function Actions )
call TriggerAddCondition(t,Condition(function condition))
endfunction
endscope
condition "(Local player)" lấy ở đâu ra vậy?
"nhiễm" thì cũng "nhiễm" cho đúng chứ
Leap of Death
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Leap of Death
Actions
Set Caster[20] = (Triggering unit)
Set Points[20] = (Target point of ability being cast)
Set Dame[9] = ((400.00 + (100.00 x (Real((Level of Leap of Death for Caster[20]))))) + (3.50 x (Real((Strength of Caster[20] (Include bonuses))))))
Unit - Create 1 Dummy for (Owner of Caster[20]) at Points[20] facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Move Caster[20] instantly to Points[20]
EGUI Effect - Create a ring of effects at Points[20] with a radius of 300.00 using 6 effects using the model Objects\Spawnmodels\Undead\UndeadDissipate\UndeadDissipate.mdl that lasts for 2.00 seconds
EGUI Leak - Destroy (Last created special effect)
EGUI Effect - Create an effect at Points[20] using the model Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl that lasts for 2.00 seconds
Set UnitGroups[20] = (Units within (150.00 x (Real((Level of (Ability being cast) for Caster[15])))) of Points[20] matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is in K_Group[2]) Equal to False)) and (((Owner of (Matching unit)) is an enemy of (Owner
Unit Group - Pick every unit in UnitGroups[20] and do (Actions)
Loop - Actions
Unit - Cause Caster[20] to damage (Picked unit), dealing Dame[9] damage of attack type Chaos and damage type Universal
Camera - Shake the camera for (Owner of (Picked unit)) with magnitude 3.00
Camera - Sway the camera target for (Owner of (Picked unit)) with magnitude 20.00 and velocity 5.00
Unit Group - Add (Picked unit) to K_Group[2]
EGUI Leak - Remove Points[20]
EGUI Leak - Destroy UnitGroups[20]
Set Caster[20] = No unit
cho bjn hỏi ở trigger trên có sai chỗ nào? mà sao khi cast spell thì không gây ra dame, và k có cooldown @@ (do skill này tự làm 100% nên mới bị nhìu lỗi @@)Mã:Leap of Death Events Unit - A unit Starts the effect of an ability Conditions (Ability being cast) Equal to Leap of Death Actions Set Caster[20] = (Triggering unit) Set Points[20] = (Target point of ability being cast) Set Dame[9] = ((400.00 + (100.00 x (Real((Level of Leap of Death for Caster[20]))))) + (3.50 x (Real((Strength of Caster[20] (Include bonuses)))))) Unit - Create 1 Dummy for (Owner of Caster[20]) at Points[20] facing Default building facing degrees Unit - Add a 1.00 second Generic expiration timer to (Last created unit) Unit - Move Caster[20] instantly to Points[20] EGUI Effect - Create a ring of effects at Points[20] with a radius of 300.00 using 6 effects using the model Objects\Spawnmodels\Undead\UndeadDissipate\UndeadDissipate.mdl that lasts for 2.00 seconds EGUI Leak - Destroy (Last created special effect) EGUI Effect - Create an effect at Points[20] using the model Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl that lasts for 2.00 seconds Set UnitGroups[20] = (Units within (150.00 x (Real((Level of (Ability being cast) for Caster[15])))) of Points[20] matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is in K_Group[2]) Equal to False)) and (((Owner of (Matching unit)) is an enemy of (Owner Unit Group - Pick every unit in UnitGroups[20] and do (Actions) Loop - Actions Unit - Cause Caster[20] to damage (Picked unit), dealing Dame[9] damage of attack type Chaos and damage type Universal Camera - Shake the camera for (Owner of (Picked unit)) with magnitude 3.00 Camera - Sway the camera target for (Owner of (Picked unit)) with magnitude 20.00 and velocity 5.00 Unit Group - Add (Picked unit) to K_Group[2] EGUI Leak - Remove Points[20] EGUI Leak - Destroy UnitGroups[20] Set Caster[20] = No unit
UMSWE nó có chạy được với patch mới đâu mà cố xài cho nó lỗi ra o.O
private function KiểmTra takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetTriggerUnit())) and IsUnitAliveBJ(GetFilterUnit())==true
endfunction
function CáiGìĐây takes nothing returns nothing
local group G = CreateGroup()
local unit enum
local real dam = sát thương bạn đưa ra
call GroupEnumUnitsInrange(G,GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()),400,Condition(function KiểmTra))
loop
set enum=FirstOfGroup(G)
exitwhen (enum==null)
call UnitDamageTarget(GetTriggerUnit(),enum, dam,false,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_ENHANCED,null)
call GroupRemoveUnit(enum)
endloop
call GroupClear(G)
set enum=null
call DestroyGroup(G)
endfunction
YAN[asian];18497155 nói:Ai còn cái demo map ulti của Ursa trong Dota thì share mình nhé. Thanks!
Mình không có rồi,nhưng bạn thử diễn tả lại chiêu thức đó xem,nếu có thể mình làm!Ai còn cái demo map ulti của Ursa trong Dota thì share mình nhé. Thanks!
cho mình hỏi 1 câu: sau khi làm cho quân tự spawn ở 1 region nào đó, đặt 1 building bên cạnh rồi vào game cứ phá hủy building đó là quân ko spawn nưa thì làm the nào?
Respawn
Events
Time - Every 15.00 seconds of game time
Conditions
Actions
Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees
TurnOff Respawn
Events
Unit - Barracks 0000 <gen> Dies
Conditions
Actions
Trigger - Turn off Respawn <gen>
(Line: 10) (Word: 3) Location Leak
Set Points[16] = ((Position of Caster[16]) offset by 200.00 towards ((Real((Integer A))) x 36.00) degrees)
Set Points[16] = ^Leak
(Line: 10) (Word: 6) Location Leak
Set Points[16] = ((Position of Caster[16]) offset by 200.00 towards ((Real((Integer A))) x 36.00) degrees)
Set Points[16] = ((Position of Caster[16]) ^Leak
Scan Complete
Location leaks: 2
Special Effect leaks: 0
Lightning leaks: 0
Unit Group leaks: 0
Player Group leaks: 0
Variables
UnitGroups[16] : (Line: 12) Unit Group - Removed: Yes
Summary
Total Leaks: 2
Unremoved Variables: 0
Scan duration: 0 seconds
Total Lines Scanned: 17
Total Words Scanned: 159

UMSWE nó có chạy được với patch mới đâu mà cố xài cho nó lỗi ra o.O

Ai làm spell khi cast đối tượng thì hero chạy tới đối tượng tấn công đối tượng đã cast ? Thanks nhìu

Move
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Storm Bolt
Actions
Set Tmp_Cast = (Triggering unit)
Set Tmp_Vitm = (Target unit of ability being cast)
Unit - Order Tmp_Cast to Attack Tmp_Vitm
Wait until ((Distance between (Position of Tmp_Cast) and (Position of Tmp_Vitm)) Less than or equal to 200.00), checking every 0.10 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Then - Actions
Unit - Cause Tmp_Cast to damage Tmp_Vitm, dealing 500.00 damage of attack type Spells and damage type Normal
Else - Actions
YAN[asian];18500070 nói:À đó là skill khi hú lên sẽ cộng dam cho Hero = % máu hiện tại của nó (add = abi +dam), chesk theo thời gian, cứ máu giảm thì dam cũng giảm. Ngày trước xem cũng hiểu hiểu mà lâu ko động quên xừ nó rồi x_x.
Đây,chiêu thức bạn cần gửi theo file dính kèm!Mỹ mãn rồi nhé!
View attachment 133481
