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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » как отследить пассивку
как отследить пассивку
DreiiДата: Воскресенье, 09 Января 2011, 16:33:42 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Как отследить если юнит получил пассивку?И кем он будет?GetLearningUnit()?

 

KartohaДата: Воскресенье, 09 Января 2011, 16:47:46 | Сообщение # 2
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Code
function Conditions takes nothing returns boolean
return GetLearnedSkillBJ() == 'AHbz' - код способности
endfunction

function Actions takes nothing returns nothing
     local unit u = GetLearningUnit() - юнит выучивший паччивку
endfunction

function InitTrig_trg takes nothing returns nothing
     set gg_trg_trg = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_trg, EVENT_PLAYER_HERO_SKILL )
     call TriggerAddCondition( gg_trg_trg, Condition( function Conditions ) )
     call TriggerAddAction( gg_trg_trg, function Actions )
endfunction

 

DreiiДата: Воскресенье, 09 Января 2011, 17:16:35 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Kartoha,
Code
globals
hashtable Hash=InitHashtable()
endglobals
function Trig_HPAura_Timer takes nothing returns nothing
local group g=CreateGroup()
local timer t = GetExpiredTimer()  
local integer ID = GetHandleId(t)   
local unit c = LoadUnitHandle(Hash,ID,0)
local unit e
local real x=GetUnitX(c)
local real y=GetUnitY(c)
call GroupEnumUnitsInRange(g,x,y,1000.,null)    
    loop  
     set e=FirstOfGroup(g)  
     exitwhen (e == null)  
     if GetUnitAbilityLevel(e,'BUau') > 0 then
     call SetUnitState(e, UNIT_STATE_LIFE,GetUnitState(e, UNIT_STATE_LIFE) + 2.)
      call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Heal\\HealTarget.mdl",e, "chest"))
      endif  
     call GroupRemoveUnit(e)
    endloop  
call DestroyGroup(g)
call DestroyTimer(t)  
call FlushChildHashtable(Hash, ID)
set e=null
set c=null
set g=null
set t=null
endfunction
function Trig_HPAura_Actions takes nothing returns nothing
local timer t
local integer ID
     if  GetLearnedSkill() == 'AUau' then  
           set t = CreateTimer()
           set ID = GetHandleId(t)
           call SaveUnitHandle(Hash,ID, 0, GetLearningUnit())  
           call TimerStart(t, 1., true, function Trig_HPAura_Timer)
      endif
      set t=null
    endfunction
//===========================================================================
function InitTrig_HPAura takes nothing returns nothing
  local integer index=0
  local trigger trig=CreateTrigger()
     loop
         call TriggerRegisterPlayerUnitEvent(trig, Player(index),EVENT_PLAYER_HERO_SKILL, null)
         set index = index + 1
         exitwhen index == 16
     endloop
     call TriggerAddAction(trig, function Trig_HPAura_Actions )
     set trig=null
endfunction

не робит,может я что то в действиях не правильно делаю,но не робит




Сообщение отредактировал Dreii - Воскресенье, 09 Января 2011, 17:22:15
 

KartohaДата: Воскресенье, 09 Января 2011, 17:37:07 | Сообщение # 4
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Dreii, для начала замени событие на
Quote (Kartoha)
call TriggerRegisterAnyUnitEventBJ( gg_trg_trg, EVENT_PLAYER_HERO_SKILL )

и никаких циклов. Дальше читать не стал, возможно в событии и трабл.
 

incomeДата: Воскресенье, 09 Января 2011, 17:47:38 | Сообщение # 5
3 уровень
Группа: Заблокированные
Сообщений: 63
Награды: 0
Репутация: 20
Блокировки:
Quote (Kartoha)
Dreii, для начала замени событие на Quote (Kartoha) call TriggerRegisterAnyUnitEventBJ( gg_trg_trg, EVENT_PLAYER_HERO_SKILL ) и никаких циклов. Дальше читать не стал, возможно в событии и трабл.

все и так нормально зачем убирать цкилы.

Dreii,
у тебя всё это сработает 1 раз (если у скилла 1 уровень), т.к. в конце ты чистишь таблицу, и разрушаешь таймер, и у тебя идет проверка на бафф, а он появляется не сразу при изучении ауры, скорее всего, поэтому ничего и не происходит


Не ошибается только тот, кто ничего не делает


Сообщение отредактировал income - Воскресенье, 09 Января 2011, 17:56:07
 

KartohaДата: Воскресенье, 09 Января 2011, 17:49:06 | Сообщение # 6
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Quote (income)
все и так нормально зачем убирать цкилы.

Вопрос в другом, зачем их вообще создавать там где они не нужны?
 

incomeДата: Воскресенье, 09 Января 2011, 17:51:35 | Сообщение # 7
3 уровень
Группа: Заблокированные
Сообщений: 63
Награды: 0
Репутация: 20
Блокировки:
Code

function TriggerRegisterAnyUnitEventBJ takes trigger trig, playerunitevent whichEvent returns nothing
     local integer index

     set index = 0
     loop
         call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)

         set index = index + 1
         exitwhen index == bj_MAX_PLAYER_SLOTS
     endloop
endfunction

как бы раскрытие БЖ


Не ошибается только тот, кто ничего не делает
 

DreiiДата: Воскресенье, 09 Января 2011, 18:01:33 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
income, Kartoha, всем спасибо сделал более проще
Code
function Trig_HPAura_Actions takes nothing returns nothing
local group g=CreateGroup()
local unit e
call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea,null)
   loop  
     set e=FirstOfGroup(g)  
     exitwhen e == null  
     if GetUnitAbilityLevel(e,'BUau') > 0 then
     call SetWidgetLife(e, GetWidgetLife(e) + 50.)
      call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\OrbCorruption\\OrbCorruptionSpecialArt.mdl",e,"chest"))
      endif  
      call GroupRemoveUnit(g,e)
     endloop  
   call DestroyGroup(g)
set g=null
set e=null
endfunction

//===========================================================================
function InitTrig_HPAura takes nothing returns nothing
     call TimerStart(CreateTimer(), 1.,true, function Trig_HPAura_Actions)
   endfunction



 

SirNikolasДата: Понедельник, 10 Января 2011, 07:27:11 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dreii)
set e=null
Он ведь уже равен null при выходе из цикла.


 

CHLSNДата: Понедельник, 10 Января 2011, 08:49:37 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, #3. Пишешь:
Code
function InitTrig_HPAura takes nothing returns nothing  
   local integer index=0  
   local trigger trig=CreateTrigger()  
      loop  
          call TriggerRegisterPlayerUnitEvent(trig, Player(index),EVENT_PLAYER_HERO_SKILL, null)  
          set index = index + 1  
          exitwhen index == 16  
      endloop  
      call TriggerAddAction(trig, function Trig_HPAura_Actions )  
      set trig=null  
endfunction

Ткни-ка мне в то место в том коде, где у тебя какая-то из функций имеет название trig




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Понедельник, 10 Января 2011, 12:06:25 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
 local trigger trig=CreateTrigger() 


 

rixt7956Дата: Понедельник, 10 Января 2011, 13:06:53 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Quote (SirNikolas)
Он ведь уже равен null при выходе из цикла.
не тупи
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » как отследить пассивку
  • Страница 1 из 1
  • 1
Поиск:

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