Я не совсем понял, как они вобще работают. Куда их нужно ставить то? Прочитал несколько статей и... всё равно непонятно. Можете объяснить на живом примере, куда я и хотел запихнуть таймер на срабатывание триггера? Триггер должен срабатывать не чаще, чем раз в 3 секунды.

Принятый ответ

Создаёшь в догонку к имеющемуся ещё две переменные, логическую и таймер.
В момент когда срабатывает проверка шанса, рядом, следующим же условием добавляешь что "твоя_логическая = НЕТ", а в действиях которые идут дальше "set твоя_логическая = ДА", после чего заводишь твой_таймер однократно на 3 секунды.
Далее создаёшь триггер с событием "твой_таймер истекает", а в действиях делаешь возврат значения логической на НЕТ (" set твоя_логическая = НЕТ " ). Готово.
Да, я не хуже других понимаю что это очень далеко от "хорошего исполнения", но справедливости ради - это же просто демонстрация базы (азы).
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
0
Похожие вопросы:

ответ
PT153:
Вспомнил про один баг. Есть сделать PauseTimer() на периодический таймер, а потом на этой таймер использовать ResumeTimer(), то таймер повторит свой цикл лишь раз, а потом остановится.
сам не пользуюсь ResumeTimer, но щас проверил, действительно не работает что-то. Видимо, это работает только тогда, когда таймер не до конца дошел.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
Можно было сделать по-другому.
Еще не понимаю, зачем нам нужен периодический таймер.
  1. можем логическую переменную b завести и таймер t
  2. нанес противник урон = проверяем логическую переменную, если истина, запускаем одноразовый таймер, и ставим ложь в логической переменной = false
if b then 
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.?mdl",u,"origin"))
call UnitDamageTarget(udg_u,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call TimerStart(udg_t,0.5,false,function t3a)
set b = false
endif
  1. когда таймер запустится
function t3a takes nothing returns nothing
    call PauseTimer(udg_t)
    set b = true
endfunction
думаю все что надо это call ResumeTimer() заменить на call TimerStart()
ответ
Ну если у тебя через локалку что-то неправильно иногда работает, значит просто у тебя где-то ошибка (или ты вообще делаешь это не так).
Для того что бы работать парой таймер+юнит впринципе то больше ничего и не нужно - таймер и сам юнит. Но если у тебя должно запускаться параллельно несколько точно таких же таймеров, то тут может подойти массив таймеров (и массив юнитов). При срабатывании одного из таймеров ты можешь ссылаться на юнита записанного под тем же индексом массива ( unit[X] и timer[X] соответственно).
А ещё в триггер можно добавлять события на срабатывания новых таймеров.

0
27
2 года назад
0
лол, тут и без таймеров можно, в первом действии отключаешь триггер, в последнем ставишь действие "ждать", после которого ставишь включение триггера
0
5
2 года назад
0
лол, тут и без таймеров можно, в первом действии отключаешь триггер, в последнем ставишь действие "ждать", после которого ставишь включение триггера
Да, последнее предложение передаёт не то, о чём я хотел спросить, но вот тема даёт. Мне нужен именно таймер после срабатывания триггера, а не отключение и выключение. Просто у меня триггер хилит. И если крипов много, то за тот микроскопический период времени, если много кто атакует владельца итема, то он моментально восстановит хп. Поэтому и нужен таймер после срабатывания, а не то, что предложено Вами)
0
18
2 года назад
0
Есть же событие - periodic event, оно со встроенным таймером. Его можно попробовать
0
20
2 года назад
Отредактирован ssbbssc
0
лол, тут и без таймеров можно, в первом действии отключаешь триггер, в последнем ставишь действие "ждать", после которого ставишь включение триггера
вейты шляпа баганая же
0
5
2 года назад
0
Есть же событие - periodic event, оно со встроенным таймером. Его можно попробовать
EugeAl: Вот с этим как раз таки проблема. Я не знаю, куда его вставить, чтобы таймер был на срабатывание триггера
Есть же событие - periodic event, оно со встроенным таймером. Его можно попробовать
0
26
2 года назад
Отредактирован Hate
0
Есть же событие - periodic event, оно со встроенным таймером. Его можно попробовать
EugeAl: Вот с этим как раз таки проблема. Я не знаю, куда его вставить, чтобы таймер был на срабатывание триггера
Есть же событие - periodic event, оно со встроенным таймером. Его можно попробовать
тоесть вам говорят "событие" а вы до сих пор не понимаете куда копать?
expiration timer это вообще совершенно другое. вам проще выложить задумку сначала, потому что возможно тут логика построения уже не предполагает работы по другому
0
26
2 года назад
Отредактирован Extremator
0
Создаёшь в догонку к имеющемуся ещё две переменные, логическую и таймер.
В момент когда срабатывает проверка шанса, рядом, следующим же условием добавляешь что "твоя_логическая = НЕТ", а в действиях которые идут дальше "set твоя_логическая = ДА", после чего заводишь твой_таймер однократно на 3 секунды.
Далее создаёшь триггер с событием "твой_таймер истекает", а в действиях делаешь возврат значения логической на НЕТ (" set твоя_логическая = НЕТ " ). Готово.
Да, я не хуже других понимаю что это очень далеко от "хорошего исполнения", но справедливости ради - это же просто демонстрация базы (азы).
Принятый ответ
0
27
2 года назад
Отредактирован rsfghd
0
вейты шляпа баганая же
на малых периодах, да, но тут целые 3 секунды, не понимаю какие принципы мешают автору через них сделать

а, я так понимаю автору нужно сохранить муи что ли? или в чём прикол

Просто у меня триггер хилит. И если крипов много, то за тот микроскопический период времени, если много кто атакует владельца итема, то он моментально восстановит хп.
держу в курсе, отменяя атаку оно всё равно будет восстанавливать хп, таким образом союзник или противник может абузить эту дичь и выхиливать на фул героя
0
18
2 года назад
0
Нейни, В действия этого триггера. Правда, непонятно, зачем делать такую странную конструкцию. Что там в задумке то?
0
27
2 года назад
0
EugeAl, по задумке ему нужно срабатывание триггера с минимальным интервалом 3 секунды
0
5
2 года назад
Отредактирован Нейни
0
вейты шляпа баганая же
на малых периодах, да, но тут целые 3 секунды, не понимаю какие принципы мешают автору через них сделать

а, я так понимаю автору нужно сохранить муи что ли? или в чём прикол

Просто у меня триггер хилит. И если крипов много, то за тот микроскопический период времени, если много кто атакует владельца итема, то он моментально восстановит хп.
держу в курсе, отменяя атаку оно всё равно будет восстанавливать хп, таким образом союзник или противник может абузить эту дичь и выхиливать на фул героя
Это просто пример в теме. Тот триггер на хил срабатывает не когда герой наносит урон, а потому другой юнит атакован (гер), а когда получает (гер). И поэтому в толпе врагов этот итем слишком силён. Но да, надо было мне объяснить получше

Создаёшь в догонку к имеющемуся ещё две переменные, логическую и таймер.
В момент когда срабатывает проверка шанса, рядом, следующим же условием добавляешь что "твоя_логическая = НЕТ", а в действиях которые идут дальше "set твоя_логическая = ДА", после чего заводишь твой_таймер однократно на 3 секунды.
Далее создаёшь триггер с событием "твой_таймер истекает", а в действиях делаешь возврат значения логической на НЕТ (" set твоя_логическая = НЕТ " ). Готово.
Да, я не хуже других понимаю что это очень далеко от "хорошего исполнения", но справедливости ради - это же просто демонстрация базы (азы).
Окей, попробую, спасибо
0
18
2 года назад
0
rsfghd, ну тогда это periodic event, других простых вариантов не вижу
0
27
2 года назад
0
других простых вариантов не вижу

??
Загруженные файлы
0
27
2 года назад
0
Тот триггер на хил срабатывает не когда герой наносит урон, а потому другой юнит атакован (гер), а когда получает (гер).
что?
0
18
2 года назад
0
rsfghd, а, таким образом, ну тогда понятно, но это принципиально другая схема.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.