- Joined
- Jan 27, 2007
- Messages
- 208
Hi, can someone in here convert this JASS Code so i can use it in normal WE?
Its Detect Damage System that my friends made. I can use it after i activate my trigger that needs this system by Turn that it On in "Damage Register" Trigger. Like this
JASS:
library DD initializer InitTrig_Detect_Damage_Events
globals
hashtable hash = InitHashtable()
endglobals
function AnyUnitTakesDamage takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger())
call ConditionalTriggerExecute( gg_trg_Damage_Register )
call EnableTrigger(GetTriggeringTrigger())
endfunction
// part 1
function AddDamageTriggers takes nothing returns nothing
local trigger takedamage = CreateTrigger()
call TriggerRegisterUnitEvent(takedamage,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
call SaveTriggerActionHandle(hash,GetHandleId(takedamage),StringHash("action"),TriggerAddAction(takedamage,function AnyUnitTakesDamage))
call SaveTriggerHandle(hash,GetHandleId(GetTriggerUnit()),StringHash("TakeDamageTrigger"),takedamage)
endfunction
// part 2
function RemoveDamageTriggers takes nothing returns nothing
local trigger me = LoadTriggerHandle(hash,GetHandleId(GetTriggerUnit()),StringHash("TakeDamageTrigger"))
// delete action and trigger
call TriggerRemoveAction(me,LoadTriggerActionHandle(hash,GetHandleId(me),StringHash("action")))
call FlushChildHashtable(hash,GetHandleId(me))
call DestroyTrigger(me)
set me = null
endfunction
// part 3
function InitTrig_Detect_Damage_Events takes nothing returns nothing
local trigger entermap = CreateTrigger()
local group startingunits = CreateGroup()
local unit u
local trigger takedamage
local trigger upondeath = CreateTrigger()
call GroupEnumUnitsInRect(startingunits,bj_mapInitialPlayableArea,null)
loop
set u = FirstOfGroup(startingunits)
exitwhen u == null
set takedamage = CreateTrigger()
call TriggerRegisterUnitEvent(takedamage,u,EVENT_UNIT_DAMAGED)
call SaveTriggerActionHandle(hash,GetHandleId(takedamage),StringHash("action"),TriggerAddAction(takedamage,function AnyUnitTakesDamage))
call SaveTriggerHandle(hash,GetHandleId(u),StringHash("TakeDamageTrigger"),takedamage)
call GroupRemoveUnit(startingunits,u)
endloop
set takedamage = null
// unit enters the map/revives
call TriggerRegisterAnyUnitEventBJ(entermap ,EVENT_PLAYER_HERO_REVIVE_FINISH)
call TriggerRegisterEnterRectSimple(entermap, bj_mapInitialPlayableArea)
call TriggerAddAction(entermap,function AddDamageTriggers)
// unit dies
call TriggerRegisterAnyUnitEventBJ(upondeath,EVENT_PLAYER_UNIT_DEATH)
call TriggerAddAction(upondeath,function RemoveDamageTriggers)
endfunction
endlibrary
Its Detect Damage System that my friends made. I can use it after i activate my trigger that needs this system by Turn that it On in "Damage Register" Trigger. Like this
-
Damage Register
-
Events
-
Conditions
-
Actions
-
Trigger - Run Maximize Power Effect <gen> (checking conditions)
-
-
-
Custom script: call FlushGameCache( InitGameCache( "localvars.w3v" ) )
-
Custom script: set udg_LocalVars = InitGameCache( "localvars.w3v" )