У меня есть три триггера
//Воскрешение героя
function Trig_Renistal_Conditions takes nothing returns boolean
return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO)
endfunction
function Timer1 takes nothing returns nothing
call ReviveHero(u1[0], GetRectCenterX(gg_rct________________020), GetRectCenterY(gg_rct________________020), false)
if ( GetLocalPlayer() == Player(0) ) then
call PanCameraToTimed(GetRectCenterX(gg_rct________________020) , GetRectCenterY(gg_rct________________020) , 0.00)
endif
if (GetLocalPlayer() == Player(0)) then
call TimerDialogDisplay(d[0], false)
endif
call PauseTimer(ti[0])
endfunction
function Trig_Renistal_Actions takes nothing returns nothing
set ti[0] = CreateTimer()
set d[0] = CreateTimerDialog(ti[0])
call DisplayTextToPlayer(Player(0) , 0 , 0 , "Твой герой был повержен в бою. Ты потерял немного золота, до появления героя 25 секунд.")
call SetPlayerState(Player(0) , PLAYER_STATE_RESOURCE_GOLD , ( GetPlayerState(Player(0) , PLAYER_STATE_RESOURCE_GOLD) - 200 ))
if ( GetLocalPlayer() == Player(0) ) then
call TimerDialogDisplay(d[0] , true)
endif
call TimerDialogSetTitle(d[0] , "Время до возрождения")
call TimerStart(ti[0] , 25.00 , false , function Timer1)
call SetUnitPosition(u2[0] , GetUnitX(u1[0]), GetUnitY(u1[0]))
endfunction
//===========================================================================
function InitTrig_Renistal takes nothing returns nothing
set gg_trg_Renistal = CreateTrigger( )
call TriggerRegisterPlayerUnitEvent(gg_trg_Renistal, Player(0), EVENT_PLAYER_UNIT_DEATH, null)
call TriggerAddCondition( gg_trg_Renistal, Condition( function Trig_Renistal_Conditions ) )
call TriggerAddAction( gg_trg_Renistal, function Trig_Renistal_Actions )
endfunction
//Смена точки воскрешения
function Trig_Repick_Town_Hero_Actions takes nothing returns nothing
call TriggerSleepAction( 0.50 )
call AddSpecialEffect ("Abilities\\Spells\\Human\\Resurrect\\ResurrectCaster.mdl", GetRectCenterX(gg_rct________________080), GetRectCenterY(gg_rct________________080))
call DisableTrigger( GetTriggeringTrigger() )
call DisableTrigger( gg_trg_Renistal )
call DisableTrigger( gg_trg_Renistal2 )
call DisableTrigger( gg_trg_Renistal3 )
call DisableTrigger( gg_trg_Renistal4 )
call DisableTrigger( gg_trg_Renistal5 )
call DisableTrigger( gg_trg_Renistal6 )
call DisableTrigger( gg_trg_Renistal7 )
call DisableTrigger( gg_trg_Renistal8 )
call EnableTrigger( gg_trg_Repic_HERO_1 )
call EnableTrigger( gg_trg_Repic_HERO_2 )
call EnableTrigger( gg_trg_Repic_HERO_3 )
call EnableTrigger( gg_trg_Repic_HERO_4 )
call EnableTrigger( gg_trg_Repic_HERO_5 )
call EnableTrigger( gg_trg_Repic_HERO_6 )
call EnableTrigger( gg_trg_Repic_HERO_7 )
call EnableTrigger( gg_trg_Repic_HERO_8 )
endfunction
//===========================================================================
function InitTrig_Repick_Town_Hero takes nothing returns nothing
local region r = CreateRegion()
set gg_trg_Repick_Town_Hero = CreateTrigger( )
call RegionAddRect(r, gg_rct________________072)
call TriggerRegisterEnterRegion(gg_trg_Repick_Town_Hero, r, null)
call TriggerAddAction( gg_trg_Repick_Town_Hero, function Trig_Repick_Town_Hero_Actions )
endfunction
//Новое воскрешение
function Trig_Repic_HERO_1_Conditions takes nothing returns boolean
return IsUnitType(GetDyingUnit() , UNIT_TYPE_HERO)
endfunction
function Timer_1 takes nothing returns nothing
call ReviveHero(u1[0] , GetRectCenterX(gg_rct________________072) , GetRectCenterY(gg_rct________________072) , false)
if ( GetLocalPlayer() == Player(0) ) then
call PanCameraToTimed(GetRectCenterX(gg_rct________________072) , GetRectCenterY(gg_rct________________072) , 0.00)
endif
call EnableTrigger(gg_trg_Repick_Town)
if (GetLocalPlayer() == Player(0)) then
call TimerDialogDisplay(td[0], false)
endif
call PauseTimer(tt[0])
endfunction
function Trig_Repic_HERO_1_Actions takes nothing returns nothing
set tt[0] = CreateTimer()
set td[0] = CreateTimerDialog(tt[0])
call DisplayTextToPlayer(Player(0) , 0 , 0 , "Твой герой был повержен в бою. Ты потерял немного золота, до появления героя 25 секунд.")
call SetPlayerState(Player(0) , PLAYER_STATE_RESOURCE_GOLD , ( GetPlayerState(Player(0) , PLAYER_STATE_RESOURCE_GOLD) - 200 ))
if ( GetLocalPlayer() == Player(0) ) then
call TimerDialogDisplay(td[0] , true)
endif
call TimerDialogSetTitle(td[0] , "Время до возрождения")
call TimerStart(tt[0] , 25.00 , false , function Timer_1)
call SetUnitPosition(u2[0] , GetUnitX(u1[0]), GetUnitY(u1[0]))
call DisableTrigger(gg_trg_Repick_Town)
endfunction
//===========================================================================
function InitTrig_Repic_HERO_1 takes nothing returns nothing
set gg_trg_Repic_HERO_1 = CreateTrigger()
call DisableTrigger( gg_trg_Repic_HERO_1 )
call TriggerRegisterPlayerUnitEvent(gg_trg_Repic_HERO_1 , Player(0) , EVENT_PLAYER_UNIT_DEATH , null)
call TriggerAddCondition(gg_trg_Repic_HERO_1 , Condition(function Trig_Repic_HERO_1_Conditions))
call TriggerAddAction(gg_trg_Repic_HERO_1 , function Trig_Repic_HERO_1_Actions)
endfunction
Проблема в том, что герой воскрешается только во второй точке.
Если до герой умрет не дойдя до 2 точки, то он не возрождается.