Система воскрешения (Jass) - Форум


Правила форума ·

  • Страница 1 из 1
  • 1
Форум » Warcraft III » Триггеры и Jass » Система воскрешения (Jass)
Система воскрешения (Jass)

NoExist

#1
Можно как то поменять этот год? Из него я понял, что он воскрешает в стартовой локации юнита, но мне надо, что бы игроки 1-6 в одной областе и 7-12 в другой... Можно так сделать с этим кодом?

H_A_PK

#2
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)
  local real x = 0
  local real y = 0
   
   if GetPlayerId(p) <= 5 then
    set x = GetRectCenterX(udg_rect1)\\ udg_rect1 облость для первой команды
    set y = GetRectCenterY(udg_rect1)
   else
    set x = GetRectCenterX(udg_rect2)\\ udg_rect2 облость для второй команды
    set y = GetRectCenterY(udg_rect2)
   endif   
    
//Воскрешает героя в стартовой локации,можно менять
   call ReviveHero(u,x,y,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
call TriggerRegisterPlayerUnitEvent(trig,Player(i),EVENT_PLAYER_UNIT_DEATH,null)
set i=i+1
exitwhen i==11
endloop
call TriggerAddAction(trig,function Trig_Revive_Hero_Actions)
set trig=null
endfunction

держи

И чтоб ты знал, я добавил только это:
Code
local real x = 0
  local real y = 0
   
   if GetPlayerId(p) <= 5 then
    set x = GetRectCenterX(udg_rect1)\\ udg_rect1 облость для первой команды
    set y = GetRectCenterY(udg_rect1)
   else
    set x = GetRectCenterX(udg_rect2)\\ udg_rect2 облость для второй команды
    set y = GetRectCenterY(udg_rect2)
   endif  
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#4
Quote (NoExist)
спасибо =) я в джассе не бум бум вазе =\ но хочу научиться wink

Проверил, Работает ?
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

NoExist

#5
set x = GetRectCenterX(udg_rect1)\\ udg_rect1 облость для первой команды
Заменил на область, но что в этом варианте, что с областью, выходит ошибка "Отсутствует название" dry

H_A_PK

#6
NoExist, создай переменные типа облости rect1 и rect2
при инициализации карты поставь такие действия
Code
установить переменную rect1 = твоя облость
установить переменную rect2 = твоя облость2
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

NoExist

#7
Хм, я из одной статейке понял, что переменные не надо создавать в джассе... Спс, буду знать =)
Теперь пишет "Отсутствует знак " и там ) скобка и сверху по 1 черточке с каждой стороны... Не помню как такую поставить...

Добавлено (26.07.11, 10:09)
---------------------------------------------
')'
вот такой вот, в строке set x = GetRectCenterX(udg_rect1)\\ udg_rect1 облость для первой команды

H_A_PK

#8
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)
   local real x = 0
   local real y = 0
     
    if GetPlayerId(p) <= 5 then
     set x = GetRectCenterX(udg_rect1) //udg_rect1 облость для первой команды
     set y = GetRectCenterY(udg_rect1)
    else
     set x = GetRectCenterX(udg_rect2) // udg_rect2 облость для второй команды
     set y = GetRectCenterY(udg_rect2)
    endif    
      
//Воскрешает героя в стартовой локации,можно менять
    call ReviveHero(u,x,y,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
call TriggerRegisterPlayerUnitEvent(trig,Player(i),EVENT_PLAYER_UNIT_DEATH,null)
set i=i+1
exitwhen i==11
endloop
call TriggerAddAction(trig,function Trig_Revive_Hero_Actions)
set trig=null
endfunction

fixed
Quote (NoExist)
что переменные не надо создавать в джассе...

O_Oбред сумашедшего... дай мне линк на эту статью
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D
Форум » Warcraft III » Триггеры и Jass » Система воскрешения (Jass)
  • Страница 1 из 1
  • 1
Поиск: