Вот вам пример(это воскрешение героя)
Code
function Trig_Revive_Hero_Taimer takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer ID=GetHandleId(t)
local unit u=LoadUnitHandle(udg_Hash,ID,0)
local player p=GetOwningPlayer(u)
local timerdialog w=LoadTimerDialogHandle(udg_Hash,ID,2)
//Воскрешает героя в стартовой локации,можно менять
call ReviveHero(u,GetStartLocationX(GetPlayerStartLocation(p)),GetStartLocationY(GetP layerStartLocation(p)),true )
if GetLocalPlayer()==GetOwningPlayer(u)then
call PanCameraTo(GetUnitX(u),GetUnitY(u))
endif
call PauseTimer(t)
call DestroyTimer(t)
call DestroyTimerDialog(w)
call FlushChildHashtable(udg_Hash,ID)
set t=null
set u=null
set p=null
set w=null
endfunction
function Trig_Revive_Hero_Actions takes nothing returns nothing
local timer t
local integer ID
local timerdialog w
local unit u=GetTriggerUnit()
if IsUnitType(u,UNIT_TYPE_HERO)==true then
set t=CreateTimer()
set ID=GetHandleId(t)
set w=CreateTimerDialog(t)
//Создает окно таймера в котором будет написанно имя игрока владельца умершего героя
call TimerDialogSetTitle(w,GetPlayerName(GetOwningPlayer(u)))
call TimerDialogDisplay(w,true)
call SaveUnitHandle(udg_Hash,ID,0,u)
call SaveTimerDialogHandle(udg_Hash,ID,2,w)
//Запускает таймер,GetHeroLevel(u)*3. время через которое возродиться наш герой.
call TimerStart(t,GetHeroLevel(u)*3.,true,function Trig_Revive_Hero_Taimer)
set t=null
set w=null
endif
set u=null
endfunction
function InitTrig_Revive_Hero takes nothing returns nothing
local integer i=0
local trigger trig=CreateTrigger()
loop
exitwhen i==11
call TriggerRegisterPlayerUnitEvent(trig,Player(i),EVENT_PLAYER_UNIT_DEATH,null)
set i=i+1
endloop
call TriggerAddAction(trig,function Trig_Revive_Hero_Actions)
set trig=null
endfunction