Добавлен SсRealm
Сделал таймер воскрешения и вроде правильно указал, что должно отображаться только для локальной u, владелец умирающего юнита, и работает, но таймер воскрешения все - равно отображается у всех игроков. Подскажите, где я ошибся?
function Trig_____________________________________007_Conditions takes nothing returns boolean
if ( not ( IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true ) ) then
return false
endif
if ( not ( GetOwningPlayer(GetDyingUnit()) != Player(11) ) ) then
return false
endif
return true
endfunction
if ( not ( IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true ) ) then
return false
endif
if ( not ( GetOwningPlayer(GetDyingUnit()) != Player(11) ) ) then
return false
endif
return true
endfunction
function Trig_____________________________________007_Actions takes nothing returns nothing
local real tm
local timer t
local timerdialog IvanWindow
local unit u
set u = GetDyingUnit()
set tm = 20.00
set t = CreateTimer()
call StartTimerBJ( t, false, tm )
t=bj_lastStartedTimer
call CreateTimerDialogBJ( t, ( "Герой воскресится через :" + R2S(tm) ) )
set IvanWindow = bj_lastCreatedTimerDialog
call TimerDialogDisplayForPlayerBJ( true,IvanWindow, GetOwningPlayer(u) )
call TimerDialogDisplayBJ( true,IvanWindow )
call WAIT_EX(20.)
call PanCameraToTimedLocForPlayer( GetOwningPlayer(u), GetRectCenter(gg_rct________________002), 1.00 )
call ReviveHeroLoc( u, GetRectCenter(gg_rct________________002), true )
call TimerDialogDisplay(IvanWindow,false )
call DestroyTimerDialog( IvanWindow )
set u=null
set t =null
set IvanWindow=null
endfunction
local real tm
local timer t
local timerdialog IvanWindow
local unit u
set u = GetDyingUnit()
set tm = 20.00
set t = CreateTimer()
call StartTimerBJ( t, false, tm )
t=bj_lastStartedTimer
call CreateTimerDialogBJ( t, ( "Герой воскресится через :" + R2S(tm) ) )
set IvanWindow = bj_lastCreatedTimerDialog
call TimerDialogDisplayForPlayerBJ( true,IvanWindow, GetOwningPlayer(u) )
call TimerDialogDisplayBJ( true,IvanWindow )
call WAIT_EX(20.)
call PanCameraToTimedLocForPlayer( GetOwningPlayer(u), GetRectCenter(gg_rct________________002), 1.00 )
call ReviveHeroLoc( u, GetRectCenter(gg_rct________________002), true )
call TimerDialogDisplay(IvanWindow,false )
call DestroyTimerDialog( IvanWindow )
set u=null
set t =null
set IvanWindow=null
endfunction
===========================================================================
function InitTrig_____________________________________007 takes nothing returns nothing
set gg_trg_____________________________________007 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_____________________________________007, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_____________________________________007, Condition( function Trig_____________________________________007_Conditions ) )
call TriggerAddAction( gg_trg_____________________________________007, function Trig_____________________________________007_Actions )
endfunction
function InitTrig_____________________________________007 takes nothing returns nothing
set gg_trg_____________________________________007 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_____________________________________007, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_____________________________________007, Condition( function Trig_____________________________________007_Conditions ) )
call TriggerAddAction( gg_trg_____________________________________007, function Trig_____________________________________007_Actions )
endfunction
Принятый ответ
konvan5, У меня лишняя строчка была в коде, после показать конкретному юниту, было еще показать вообще. Сам нашел и исправил
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
(мб по умолчанию у тебя оно открыто уже)
Отредактирован konvan5
Вот удали показ таймера и посмотри, будет ли он. Если да - значит при создании он уже виден всем, а значит надо спрятать для всех кроме нужного игрока.
Убиваю синего, который герой и союзник. Таймер отчета все- равно появляется видим у меня
set IvanWindow = bj_lastCreatedTimerDialog
call TimerDialogDisplayForPlayerBJ( true,IvanWindow, GetOwningPlayer(u) )
call TimerDialogDisplayForPlayerBJ( false, GetLastCreatedTimerDialogBJ(), Player(0) )
call TimerDialogDisplayBJ( true,IvanWindow )
call WAIT_EX(20.)
Прочитай еще раз предпоследнюю строку своего кода и осмысли его :)
Отредактирован konvan5
кстати, если у тебя в карте больше 2 игроков, надеюсь ты не оставишь код в таком виде, иначе таймер все равно будет виден, но другим игрокам кроме 0 игрока. Если все-же прячешь. Так что протести на других игроках, что все в порядке.
Таймер отсчета сделал отдельно.
Решил довести до ума свою самую простую и самую первую карту, оставил только ладншафт и код решил заново переписать. Столько лет прошло, пора ее привести в порядок!))