Сказали мне что Wait работает нестабильно, при паузе в игре он продолжает отсчитывать. Сказали что нужно ставить Таймеры. Но о каких Таймерах идёт речь? Это какие-то самодельные триггеры, или те Таймеры что в таблице отсчитывают время? Дайте подробности как их нужно правильно делать.

на гуях:
сперва создаем таймеры в редакторе переменных (скажем штук 5 таймеров):
когда нужна задержка, запускаем таймер:
и еще нужен другой триггер, который выполняет действия когда таймер истечет - те что должны быть выполнены после задержки:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Сама функция TriggerSleepAction (Wait) не вызывает утечек, но багнута и при использовании в качестве задержек может способствовать утечкам, поэтому никаких вейтов в спеллах и всяких респаунах - только таймеры, вейты нужны для синхронизации данных и роликов и точка!

22
AlexSan, задержка перед обнулением переменной не нужна, сам таймер никуда от этого не исчезает
локальная переменная обнуляется чтобы не утекала ссылка на объект
15
В GUI, в меню создания переменных, их тип так и называется "Таймер".
В действиях триггера, это раздел "Обратный отсчет".
7
AlexSan, сгодится на крайний случай, но Я работаю на GUI, мне нужно малой кровью сделать.
Не пойму, зачем так извращаться? Есть "Wait", а под ним, тут же, "Wait (game-time)", проверил тщательно, ждал 5 минут в Паузе Игры 30-ти секундную задержку, всё работает. А под ним, ещё, Wait For Condition, Wait For Sound, на любую потребу.
17
используй вайты,таймеры нужны для точности да и для малых периудов то ейть вейты с 0.01 = 0.2 примерно,да и темболее 0.2-1 сек погрешности это пустяк
7
вейты с 0.01 = 0.2 примерно,да и темболее 0.2-1 сек погрешности это пустяк
Тогда нет, у меня есть такие важные периоды... Объясни тогда, как правильно написать таймер? Просто создал, не помогло. Тут вечно не договаривают. Скупы на слова. Приходится вытягивать по слову.
22
Принятый ответ
на гуях:
сперва создаем таймеры в редакторе переменных (скажем штук 5 таймеров):
когда нужна задержка, запускаем таймер:
и еще нужен другой триггер, который выполняет действия когда таймер истечет - те что должны быть выполнены после задержки:
Загруженные файлы
7
и еще нужен другой триггер
У меня есть Wait-ы в цикле Integer, и там очень важное заклинание, которое Я долго делал, которое работает стабильно, всё отлажено... Отказаться жалко. И после каждого прохода цикла идёт проверка условия, изменилось ли значение в булёвой переменной в режиме реального времени. А за тем циклом, идёт другой цикл, и немного вводного и конечного кода, и кругом Wait-ы. И получается, что нельзя триггер прерывать, и переносить в другой триггер тот же самый участок кода. У меня там 120 проходов, и что, на каждое истечение Таймера делать новый триггер с тем же кодом? Это 120 триггеров, и каждый передаёт управление следующему по таймеру? Жаль нет функции "Go To", как это в других языках программирования. Возможно действительно, стоит сделать отдельный триггер как jass-функцию, к которой и нужно обращаться через Custom Script? Но будет ли он обратно переходить на ту точку откуда его вызвали? В Гуях такого нет.
22
Dagger667, подумай
триггер срабатывает каждый раз когда таймер истекает. тебе не нужно 120 триггеров.
достаточно запустить периодический таймер один раз и будет тебе цикл каждые 0.01 сек. пока не остановишь таймер
стандартный wait game-time это и есть таймер в одну строчку который ты хотел сделать. он именно так и работает, что можно легко подсмотреть в jngp.
сложные спеллы лучше делать на джассе и если поставить jngp, то он легче чем эти гуи для всего кроме триггеров в два действия. ничего сложного там нет. в ЖНГП есть поисковик функций, никаких кодов там учить наизусть не нужно.
7
периодический таймер
Ах да, периодический же ещё есть... Значит можно разбить где-то на два-три триггера. Использовать TurnOn и TurnOff, чтобы они зря не мотали, и передавать управление следующему триггеру. У меня там два по 120 в одном триггере, значит два таких триггера хватит. Один отработал, передал другому... Но код мне придётся писать вместе с таймером, верно? То есть это не универсальный таймер, а для какого-то одного триггера? Для другого нужно делать другой таймер?
22
Dagger667, да, придется разбивать на отдельные триггеры если хочешь задержку меньше 0.1 сек.
На каждый цикл действий свой триггер и свой таймер.
Проблемы с turnon/turnoff будут если спелл использует больше чем один юнит.
7
Проблемы с turnon/turnoff будут если спелл использует больше чем один юнит.
Здесь поподробней. Какие меня ждут проблемы и что с этим делать?
На эту тему даже вопрос задавал недавно, никто толком не ответил.
22
Dagger667, проблема будет если два юнита используют один и тот же спелл одновременно, так как триггер один и тот же
выключаешь триггер, а тут другой юнит вдруг использует спелл и снова включает триггер. перезаписывает переменные, и т.д., что может повлиять на работу спелла первого юнита, если тот еще не закончил свою работу
26
Dagger667:
Проблемы с turnon/turnoff будут если спелл использует больше чем один юнит.
Здесь поподробней. Какие меня ждут проблемы и что с этим делать?
На эту тему даже вопрос задавал недавно, никто толком не ответил.
делается через массивы. но надо уметь делать стаки
7
но надо уметь делать стаки
Я думаю разберусь самостоятельно. Потому что делал динамические массивы, которые смещали значение и ключ на один назад, когда юнит выбывал из него, или делал контрольную переменную, которая проверяла, не используется ли в это время этот период кода кем-то ещё, и всё на Гуях. Но в любом случае спасибо за поддержку! Побеспокою вновь когда будет что-то действительно сложное!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.