|
|
|
|
Pause Unit
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 13:16:30 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Значит мне надо сделать так, что когда юнит кастует спелл, он входит в паузу, то есть не может получать никакие приказы. Через какое то время, пауза убирается, и юнит снова может получать приказы. Как это делается. Я пробовал call PauseUnit(u, true), но оно паузит юнита, а приказ каста абилки остаётся, и после паузы он сам его возобновляет. В итоге получается что юнит постоянно сам заходит и выходит из паузы. Короче управлять им уже невозможно.
|
|
|
|
Ty3uK | Дата: Суббота, 01 Октября 2011, 13:20:15 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А приказывать стоп перед этим, не?
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 13:24:49 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Ty3uK) А приказывать стоп перед этим, не? Ну так тогда он остановит каст спелла.
|
|
|
|
Mep3aB4uK | Дата: Суббота, 01 Октября 2011, 14:50:25 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| FatalBlade, У меня что то похожее было, я сделал кд абилки больше длительности паузы.
|
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:06:10 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code function Trig_PauseSpell_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local unit u = LoadUnitHandle(udg_Hash, id, 0) //... call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) set t = null endfunction
function Trig_PauseSpell_Actions takes nothing returns nothing local timer t = CreateTimer() call SaveAgentHandle(udg_Hash, GetHandleId(t), 0, GetTriggerUnit()) call TimerStart(t, .0, false, function Trig_PauseSpell_Timer) set t = null endfunction Добавлено (01 Октябрь 2011, 15:06:10) ---------------------------------------------
Quote (SirNikolas) call TimerStart(t, .0, false, function Trig_PauseSpell_Timer) Суть в этой строчке.
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 15:17:24 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Mep3aB4uK) FatalBlade, У меня что то похожее было, я сделал кд абилки больше длительности паузы. Ну само собой у меня кд больше длительности паузы. Может ты имеешь ввиду Casting Time? но тогда юниты будут долго кастовать абилки.
Quote (SirNikolas) Суть в этой строчке. В чём суть таймер с нулевой длительностью?))) И я так и не понял... Паузить в второй функции или в первой?
|
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:21:30 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) В чём суть таймер с нулевой длительностью?))) В том, что за время в 0 секунд юнит успеет докастовать способность. Паузить в фукции таймера.
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 15:25:42 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) В том, что за время в 0 секунд юнит успеет докастовать способность. Паузить в фукции таймера. А если способность - не канал? Или вообще какой нибудь ThunderClap, который даже с нулевой Casting Time кастуется около 1/3 секунды? И тут должен быть 0, или можно там 0.01 или 0.02 ?
Сообщение отредактировал FatalBlade - Суббота, 01 Октября 2011, 15:29:30 |
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:28:45 | Сообщение # 9 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Если у тебя EVENT_PLAYER_UNIT_SPELL_EFFECT, то все сработает. P. S. "Канал" тоже не мгновенный.
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 15:30:45 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) P. S. "Канал" тоже не мгновенный. Канал можно настроить мгновенным.
|
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:32:29 | Сообщение # 11 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| "Канал" отнимает время на произнесение заклинания, как и "Thunder clap". Добавлено (01 Октябрь 2011, 15:32:29) ---------------------------------------------
Quote (FatalBlade) И тут должен быть 0, или можно там 0.01 или 0.02 ? Можно и больше нуля, но зачем?
|
|
|
|
Ty3uK | Дата: Суббота, 01 Октября 2011, 15:45:12 | Сообщение # 12 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Канал настроить-же можно. Ставишь ноль или одну сотую секунды- и все в шоколаде
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 15:45:43 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Можно и больше нуля, но зачем? Я не уверен что после 0 любые абилки успеют сработать. Ведь есть много таких которым нужно несколько долей секунды на каст.
А вообще проблема что у меня с паузами, это не изза абилок, а изза приказов. Юнит кастует спелл, срабатывает триггер, включается пауза. Пауза как бы сохраняет приказ юнита, и когда пауза проходит, возобновляет приказ. А раз она возобновила приказ, и юнит снова кастует спелл, и снова срабатывает триггер на этот спелл, и снова включается пауза, и снова сохраняется приказ, и потом снова возобновляется. Вот так у меня в итоге и получилось, что юнит тупо застрял на месте. Бесконечный цикл.
Пауза впринципе отсрочивает приказы. То есть она сама по себе как таймер + хэш
|
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:49:42 | Сообщение # 14 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| FatalBlade, ты думаешь, я не использовал нулевой таймер для подобных целей? Ty3uK, ты никогда не сделаешь применение "Канала" таким же быстрым, как применение "Стремительности" ("Wind walk").
|
|
|
|
Ty3uK | Дата: Суббота, 01 Октября 2011, 15:51:39 | Сообщение # 15 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ок, шеф, не буду спорить
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 15:55:22 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Ty3uK, ты никогда не сделаешь применение "Канала" таким же быстрым, как применение "Стремительности" ("Wind walk"). Вот пример: Code function Trig_Strength_Conditions takes nothing returns boolean return ( GetSpellAbilityId() == 'A0K9' ) endfunction
function Trig_Strength_Actions takes nothing returns nothing call IssueImmediateOrder( GetTriggerUnit(), "stop" ) call IssueImmediateOrder( GetTriggerUnit(), "stop" ) if ( GetPlayerState(GetOwningPlayer(GetTriggerUnit()), PLAYER_STATE_RESOURCE_LUMBER) >= 1) then call AdjustPlayerStateSimpleBJ(GetOwningPlayer(GetTriggerUnit()), PLAYER_STATE_RESOURCE_LUMBER, -1) call ModifyHeroStat( bj_HEROSTAT_STR, GetTriggerUnit(), bj_MODIFYMETHOD_ADD, 1 ) call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Items\\AIam\\AIamTarget.mdl", GetTriggerUnit(), "origin") ) endif endfunction
//=========================================================================== function InitTrig_Strength takes nothing returns nothing set gg_trg_Strength = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Strength, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Strength, Condition( function Trig_Strength_Conditions ) ) call TriggerAddAction( gg_trg_Strength, function Trig_Strength_Actions ) endfunction
Это канал. Он настолько стремителен, что я могу кастануть его хоть 10 раз в секунду. Он реагирует на каждый клик. Правда тут хитрость с "стопом" )Добавлено (01 Октябрь 2011, 15:55:22) ---------------------------------------------
Quote (SirNikolas) FatalBlade, ты думаешь, я не использовал нулевой таймер для подобных целей? И какие абилки ты использовал?
Сообщение отредактировал FatalBlade - Суббота, 01 Октября 2011, 15:54:36 |
|
|
|
Ty3uK | Дата: Суббота, 01 Октября 2011, 15:58:00 | Сообщение # 17 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А... Убери эту гадость и юзай return GetSpellAbilityId() == ''
|
|
|
|
SirNikolas | Дата: Суббота, 01 Октября 2011, 15:58:08 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) EVENT_PLAYER_UNIT_SPELL_CAST Мана не снимается, перезарядка не идет. Надо EVENT_PLAYER_UNIT_SPELL_EFFECT.Quote (FatalBlade) И какие абилки ты использовал? "Канал". Заклинание перемещает юнита в целевую точку и делает еще много разной дребедени. Если юнита переместить сразу же, у способности не пойдет перезарядка, поэтому нужен нулевой таймер.
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 16:02:41 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Мана не снимается, перезарядка не идет. Надо EVENT_PLAYER_UNIT_SPELL_EFFECT. Тут и не надо) Это система Статов в Диабло. При получения уровня герой получает 5 статов. Сама кнопка улучшения определённого стата - абилка канал.
А так да, я знаю об этом. У меня есть скилл Charge как у Пала в Д2, и есть скилл похожий на Omnislash из Доты, и много других, и все каналы, и я на них настроил таймер 0.05.Добавлено (01 Октябрь 2011, 16:02:41) ---------------------------------------------
Quote (Ty3uK) А... Убери эту гадость и юзай return GetSpellAbilityId() == '' дак у меня так и написано)))
|
|
|
|
Ty3uK | Дата: Суббота, 01 Октября 2011, 16:05:14 | Сообщение # 20 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Сорри, меня спутал телефон претензий нет
|
|
|
|
FatalBlade | Дата: Суббота, 01 Октября 2011, 17:40:39 | Сообщение # 21 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Почему когда я даю юниту паузу, то все эффекты которые прикрепленны к нему удаляются?
|
|
|
|
[san9] | Дата: Суббота, 01 Октября 2011, 17:42:34 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| FatalBlade, Используй событие привёл способность в действие.
|
|
|
|
|
|
|
|
|
|
|