Вопрос, да да я нуб,про условие вопрсо
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:28:18 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Code function Trig_Spell_Conditions takes nothing returns boolean return (GetSpellAbilityId() == 'A000') endfunction
function Trig_Spell_Actions takes nothing returns nothing local unit c= GetSpellAbilityUnit() local unit t= GetSpellTargetUnit() local real x=GetUnitX(t) local real y=GetUnitY(t) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", x,y)) set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = 8 loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", t, "overhead")) call UnitDamageTarget(c, t, ( ( I2R(GetUnitAbilityLevel(c, 'A000')) * 50.00 ) + 25.00 ), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS ) call PolledWait (1)
set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop set c = null set t = null endfunction //=========================================================================== function InitTrig_Spell takes nothing returns nothing local integer index=0 set gg_trg_Spell = CreateTrigger( ) loop call TriggerRegisterPlayerUnitEvent(gg_trg_Spell, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call TriggerAddCondition( gg_trg_Spell, Condition (function Trig_Spell_Conditions)) call TriggerAddAction( gg_trg_Spell, function Trig_Spell_Actions ) endfunction
Все работает,но я не знаю куда засунуть условие если t != жив, то ничего не делать
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:35:20 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Dreii, Надо чтобы цикл прекротился когда t умрёт?
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:36:31 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [san9], ага
|
|
|
|
Kartoha | Дата: Воскресенье, 12 Декабря 2010, 16:39:11 | Сообщение # 4 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| Тот же код, но со вставленным условием: Code function Trig_Spell_Conditions takes nothing returns boolean return (GetSpellAbilityId() == 'A000') endfunction
function Trig_Spell_Actions takes nothing returns nothing local unit c= GetSpellAbilityUnit() local unit t= GetSpellTargetUnit() local real x=GetUnitX(t) local real y=GetUnitY(t) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", x,y))
set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = 8 loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd if ( IsUnitAliveBJ(t) == true ) then call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", t, "overhead")) call UnitDamageTarget(c, t, ( ( I2R(GetUnitAbilityLevel(c, 'A000')) * 50.00 ) + 25.00 ), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS ) call PolledWait (1)
set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop endif set c = null set t = null endfunction //=========================================================================== function InitTrig_Spell takes nothing returns nothing local integer index=0 set gg_trg_Spell = CreateTrigger( ) loop call TriggerRegisterPlayerUnitEvent(gg_trg_Spell, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set index = index + 1 exitwhen index == bj_MAX_PLAYER_SLOTS endloop call TriggerAddCondition( gg_trg_Spell, Condition (function Trig_Spell_Conditions)) call TriggerAddAction( gg_trg_Spell, function Trig_Spell_Actions ) endfunction
Сообщение отредактировал Kartoha - Воскресенье, 12 Декабря 2010, 16:39:28 |
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:40:20 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Kartoha, не работает
|
|
|
|
Kartoha | Дата: Воскресенье, 12 Декабря 2010, 16:41:24 | Сообщение # 6 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| Dreii, триггер не включается?
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:41:38 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Kartoha, все заработало endif переставил
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:42:18 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Code local unit c= GetSpellAbilityUnit() local unit t= GetSpellTargetUnit() local real x=GetUnitX(t) local real y=GetUnitY(t) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", x,y)) set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = 8 loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd if GetUnitStateSwap(UNIT_STATE_LIFE, t) > 0 then call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", t, "overhead")) call UnitDamageTarget(c, t, ( ( I2R(GetUnitAbilityLevel(c, 'A000')) * 50.00 ) + 25.00 ), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS ) call PolledWait (1) set bj_forLoopAIndex = bj_forLoopAIndex + 1 endif endloop set c = null set t = null
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:42:22 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Кто знает чем можно заменить PolledWait (1)
|
|
|
|
Kartoha | Дата: Воскресенье, 12 Декабря 2010, 16:42:40 | Сообщение # 10 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| Только хотел сказать об этом=)
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:43:37 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (Dreii) Кто знает чем можно заменить PolledWait (1) Таймер.Но придётся юзать Hash
Сообщение отредактировал [san9] - Воскресенье, 12 Декабря 2010, 16:44:12 |
|
|
|
Kartoha | Дата: Воскресенье, 12 Декабря 2010, 16:43:39 | Сообщение # 12 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| Quote (Dreii) Kartoha, все заработало endif переставил Я про это)
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:44:52 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [san9], это долго?
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:46:06 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (Dreii) [san9], это долго? Нет. У тебя PolledWait тупо делает чтоб цикл работал каждую 1 сек?
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:46:57 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [san9], ага
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:48:55 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Dreii, Ну щас напишу.
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 16:49:40 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [san9], жду
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 16:59:16 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Code function func2 takes nothing returns nothing local timer e=GetExpiredTimer() local unit c=LoadUnitHandle(udg_Hash, GetHandleId(e),1) local unit t=LoadUnitHandle(udg_Hash, GetHandleId(e),2) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", t, "overhead")) call UnitDamageTarget(c, t, ( ( I2R(GetUnitAbilityLevel(c, 'A000')) * 50.00 ) + 25.00 ), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS ) set с = null set t = null set e = null endfunction
function func1 takes nothing returns nothing local unit c= GetSpellAbilityUnit() local unit t= GetSpellTargetUnit() local real x=GetUnitX(t) local real y=GetUnitY(t) local timer e call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", x,y)) set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = 8 loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd if GetUnitStateSwap(UNIT_STATE_LIFE, t) > 0 then set e = CreateTimer() set c= LoadUnitHandle(udg_Hash, GetHandleId(e),1) set t=LoadUnitHandle(udg_Hash, GetHandleId(e),2) call TimerStart(e, 1, false, function func2) set bj_forLoopAIndex = bj_forLoopAIndex + 1 set e = null endif endloop set c = null set t = null endfunction Создай переменную hash и при инициализации карты инициализируй хеш Code set udg_Hash=InitHashtable() Ну вроде нечего не напутал.
|
|
|
|
Dreii | Дата: Воскресенье, 12 Декабря 2010, 17:01:30 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [san9], сложно))Для простого мпелла пойдет и wait, но все равно огромное спасибо
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 17:03:07 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (Dreii) Для простого мпелла пойдет и wait Угу. И возможнве не выполнения дальнейших действий
|
|
|
|
EdiTTORR | Дата: Воскресенье, 12 Декабря 2010, 17:26:59 | Сообщение # 21 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Quote (|san9|) Таймер.Но придётся юзать Hash Вопрос на засыпку, как сделать это без хеша? Ну.. кто ответит?
Местами здесь.
|
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 18:11:37 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (EdiTTORR) Вопрос на засыпку, как сделать это без хеша? Ну.. кто ответит? Думаеш глобалки?
|
|
|
|
EdiTTORR | Дата: Воскресенье, 12 Декабря 2010, 18:26:35 | Сообщение # 23 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Quote (|san9|) Думаеш глобалки? Именно! Но вопрос - возможно-ли на глобалках это сделать.... Кто-нибудь знает?
Местами здесь.
Сообщение отредактировал EdiTTORR - Воскресенье, 12 Декабря 2010, 18:28:03 |
|
|
|
[san9] | Дата: Воскресенье, 12 Декабря 2010, 18:29:24 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (EdiTTORR) Именно! Но вопрос - возможно-ли на глобалках это сделать.... Кто-нибудь знает? Массив офк. Но думаеш лучше?
|
|
|
|
EdiTTORR | Дата: Воскресенье, 12 Декабря 2010, 20:19:30 | Сообщение # 25 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Quote (|san9|) Массив офк. Но думаеш лучше? Нет, ну что массив то я знаю, но как сделать спелл с таймером и передавать юнита другой фкции при помощи только массивов?(если спелл могут применить более 40 юнитов на карте одновременно...)
Местами здесь.
|
|
|
|