Сейчас 02:07:33 Понедельник, 6 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Смерть-Обратный счёт(Таймер)
Смерть-Обратный счёт(Таймер)
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
Блокировки:
optimized
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 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:)
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Смерть-Обратный счёт(Таймер)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz