|
|
|
|
Смерть-Обратный счёт(Таймер)
|
|
Black)Angel_Nastya | Дата: Понедельник, 03 Января 2011, 18:20:53 | Сообщение # 1 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 16
Блокировки:
| Если герой умирает,то как сделать чтобы вверху экрана был таймер,сколько осталось до возрождения? Только чтобы таймер был каждый для своего.
Tutti con il passato:)
|
|
|
|
SirNikolas | Дата: Понедельник, 03 Января 2011, 18:27:34 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Окно таймера показывается только владельцу умершего героя?
|
|
|
|
Black)Angel_Nastya | Дата: Понедельник, 03 Января 2011, 18:28:17 | Сообщение # 3 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 16
Блокировки:
| SirNikolas, Да.
Tutti con il passato:)
|
|
|
|
SirNikolas | Дата: Понедельник, 03 Января 2011, 18:30:49 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Сколько героев может умереть у каждого игрока? Добавлено (03-01-2011, 18:30) --------------------------------------------- Воскрешаются ли нейтральные герои?
|
|
|
|
Black)Angel_Nastya | Дата: Понедельник, 03 Января 2011, 18:31:25 | Сообщение # 5 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 16
Блокировки:
| У каждого игрока 1 герой. Добавлено (03-01-2011, 18:31) ---------------------------------------------
Quote (SirNikolas) Воскрешаются ли нейтральные герои? нейтральных нету )
Tutti con il passato:)
|
|
|
|
Dreii | Дата: Понедельник, 03 Января 2011, 18:35:58 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Black)Angel_Nastya, Code globals hashtable Hash=InitHashtable() endglobals function Trig_Revive_Hero_Taimer takes nothing returns nothing local timer t=GetExpiredTimer() local integer ID=GetHandleId(t) local unit u=LoadUnitHandle(Hash,ID,0) local integer i=LoadInteger(Hash,ID,1) local timerdialog w=LoadTimerDialogHandle(Hash,ID,2) local location loc=GetStartLocationLoc(GetPlayerStartLocation(GetOwningPlayer(u))) call ReviveHeroLoc(u,loc,true ) if (GetLocalPlayer()==GetOwningPlayer(u)) then call PanCameraToTimed(GetUnitX(u),GetUnitY(u),0.60) endif call PauseTimer(t) call DestroyTimer(t) call DestroyTimerDialog(w) call RemoveLocation(loc) call FlushChildHashtable(Hash,ID) set t=null set u=null set loc=null endfunction function Trig_Revive_Hero_Actions takes nothing returns nothing local timer t=CreateTimer() local integer ID=GetHandleId(t) local timerdialog w if IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)==true then set w=CreateTimerDialog(t) call TimerDialogSetTitle(w,GetPlayerName(GetOwningPlayer(GetTriggerUnit()))) call TimerDialogDisplay(w,true) if (GetLocalPlayer()==GetOwningPlayer(GetTriggerUnit())) then call TimerDialogDisplay(w,true) endif call SaveUnitHandle(Hash, ID,0,GetTriggerUnit()) call SaveInteger(Hash, ID,1,GetHeroLevel(GetTriggerUnit()) * 5 ) call SaveTimerDialogHandle(Hash,ID,2,w) call TimerStart(t, GetHeroLevel(GetTriggerUnit())*5.,true,function Trig_Revive_Hero_Taimer) set t=null endif endfunction
//=========================================================================== function InitTrig_Revive_Hero takes nothing returns nothing local integer index=0 local trigger trig=CreateTrigger() loop call TriggerRegisterPlayerUnitEvent(trig,Player(index),EVENT_PLAYER_UNIT_DEATH,null)
set index=index + 1 exitwhen index==bj_MAX_PLAYER_SLOTS endloop call TriggerAddAction(trig,function Trig_Revive_Hero_Actions) set trig=null endfunction
|
|
|
|
Black)Angel_Nastya | Дата: Понедельник, 03 Января 2011, 18:36:42 | Сообщение # 7 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 16
Блокировки:
| Dreii, Спасибо )
Tutti con il passato:)
|
|
|
|
SirNikolas | Дата: Понедельник, 03 Января 2011, 18:43:21 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| optimizedCode globals hashtable Hash=InitHashtable() endglobals
function Trig_Revive_Hero_Taimer takes nothing returns nothing local timer t = GetExpiredTimer() local integer ID = GetHandleId(t) local unit u = LoadUnitHandle(Hash, ID, 0) local player p = GetOwningPlayer(u) call ReviveHero(u,GetStartLocationX(p), GetStartLocationY(p), true) if GetLocalPlayer() == p then call PanCameraToTimed(GetUnitX(u), GetUnitY(u), .6) endif call DestroyTimer(t) call DestroyTimerDialog(LoadTimerDialogHandle(Hash, ID, 2)) call FlushChildHashtable(Hash, ID) set t = null set u = null set p = null endfunction
function Trig_Revive_Hero_Actions takes nothing returns nothing local unit u = GetTriggerUnit() local timer t local integer ID local timerdialog w if IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) then set t = CreateTimer() set ID = GetHandleId(t) set w=CreateTimerDialog(t) call TimerDialogSetTitle(w, GetHeroProperName(u)) if GetLocalPlayer() == GetOwningPlayer(u) then call TimerDialogDisplay(w,true) endif call SaveUnitHandle(Hash, ID, 0, u) call SaveTimerDialogHandle(Hash, ID, 2, w) call TimerStart(t, GetHeroLevel(u) * 5., true, function Trig_Revive_Hero_Taimer) set t = null endif set u = null endfunction
//=========================================================================== function InitTrig_Revive_Hero takes nothing returns nothing local integer index=0 local trigger trig=CreateTrigger() loop call TriggerRegisterPlayerUnitEvent(trig,Player(index),EVENT_PLAYER_UNIT_DEATH,null) exitwhen index==15 set index=index + 1 endloop call TriggerAddAction(trig,function Trig_Revive_Hero_Actions) set trig=null endfunction Dreii, у тебя была утечка таймера при каждой смерти не-героя.
Сообщение отредактировал SirNikolas - Вторник, 04 Января 2011, 09:46:40 |
|
|
|
Dreii | Дата: Понедельник, 03 Января 2011, 18:43:52 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| SirNikolas, торопилсо))
|
|
|
|
Black)Angel_Nastya | Дата: Понедельник, 03 Января 2011, 18:45:34 | Сообщение # 10 |
2 уровень
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 16
Блокировки:
| SirNikolas, Спасибки =*
Tutti con il passato:)
|
|
|
|
|
|
|
|
|
|
|