как отследить пассивку
|
|
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
Блокировки:
| Он ведь уже равен 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 при выходе из цикла. не тупи
|
|
|
|