Вот задаюсь таким вопросом потоков при исполнении триггера. У меня есть заклинание, оно поочерёдно создаёт дамми юнитов с жизнью с 5.5 сек.(создаются они не мгновенно, а в промежутках по 0.5 сек.), за это время они наносят аое урон с эффектом падающей звезды. Однако если во время исполнения этого заклинания скастовать любое другое триггерное заклинание, то дамми юниты перестанут спавниться и это заклинание сработает лишь наполовину. Но я глядел что у других людей этой проблемы нет. Глядел это на примере способности "прыжок" в нескольких картах. Там юниты спокойно прыгают толпами (а учитывая что это изменение x,y,z координат, то без триггеров не обойтись). За сиим вопрос - как исполнять много триггеров разом, чтобы они не перекрывали исполнение друг друга?

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

AllChosen, ты пока что не понимаешь, что делаешь.
ты должен вместо цикла с вэйтом использовать "периодичный" таймер и сдвигать координаты, но пока что советуют посмотреть примеры xgm.guru/p/wc3/spellmaker-stomp-spell-creation
есть таймер одноразовый и периодичный, это все один и то же таймер, просто запускает разные режимы. через TimerStart. Вы таймер уже создали так смотрю, теперь нужно ловить запуски таймеров
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
24
5 лет назад
4
Выкинуть вейты в мусорку и использовать таймеры.
2
3
5 лет назад
2
prog:
Выкинуть вейты в мусорку и использовать таймеры.
В таком случае триггер продолжит работу, несмотря на другие запущенные триггеры и всё такое? Я о таймерах до этого момента не особо слышал, пока без понятия - как это и чем их едят
0
28
5 лет назад
0
prog, или использовать локалки.
3
27
5 лет назад
3
разве варкрафт многопоточный? нет имеет один поток, просто поочередно выполняет. инфа
Загруженные файлы
2
29
5 лет назад
2
Читать статьи там эта тема триста раз описана.
3
27
5 лет назад
3
там есть разные ситуации. либо лимит операции, либо вечное зацикливание, либо в потоке не записан/не переносится значение варкрафтовской переменной. там значение варкрафтовской переменной-константы на потоки завязаны
2
29
5 лет назад
2
там есть разные ситуации
Там скорее всего глобалки с вэйтами и чистое гуи с тыщей утечек
3
27
5 лет назад
Отредактирован MpW
3
NazarPunk, скорее всего так. меня другое интересует. а я давно уже пробовал с вэйтами тест, где разные в разных потоках GetTriggerUnit() имеет разных юнитов. И короче GetTriggerUnit() и пр константы вара это никак не обычная глобалка, которая хранит лишь одно значение
2
3
5 лет назад
2
Steal nerves:
NazarPunk, скорее всего так. меня другое интересует. а я давно уже пробовал с вэйтами тест, где разные в разных потоках GetTriggerUnit() имеет разных юнитов. И короче GetTriggerUnit() и пр константы вара это никак не обычная глобалка, которая хранит лишь одно значение
Безусловно, проблем в моих триггерах много. Однако во всём приходится разбираться потихоньку, ибо без практики никак) Но вот таймеры меня заинтересовали. По ссылочкам из вашего документа я увидел лишь эту цитату "Создать поток можно запуском одноразового таймера с минимальной задержкой", но, признаться, не особо её понял. А код у меня такой вот, достаточно простенький, что ж поделать)
Загруженные файлы
0
27
5 лет назад
Отредактирован MpW
0
AllChosen, у тебя триггер то и простой. Но не понятный, должен работать, у тебя же нет задержек (ни вэйтов, ни таймеров). Что не работает?
Что у тебя за условие с "CharsList", не проще ли номера сравнивать чем id?
if number==1 then

elseif number ==2 then

endif
еще мб юнит не может кастовать, тк ты даймика DummyUnit создаешь слишком далеко от точки каста (он у тебя создается практически в центре карты 0,0)?
0
3
5 лет назад
Отредактирован AllChosen
0
Steal nerves:
AllChosen, у тебя триггер то и простой. Но не понятный, должен работать, у тебя же нет задержек (ни вэйтов, ни таймеров). Что не работает?
Что у тебя за условие с "CharsList", не проще ли номера сравнивать чем id?
if number==1 then

elseif number ==2 then

endif
еще мб юнит не может кастовать, тк ты даймика создаешь слишком далеко от точки каста?
Извиняюсь, я немного неправильно скинул код. Та способность, которую я перекинул, подразумевает wait в конце каждой итерации цикла, чтобы эффекты появлялись плавно. В этом вся проблема, поскольку этот триггер перекрывается другими. Не могли бы вы мне объяснить - как конкретно в этой ситуации может помочь таймер? А лист там нужен для рандомизации спавна даммиков. Т.е, грубо говоря, в листе записываются значения координат +- (т.е. x будет положительным, а y - отрицательным) и т.д. для того, чтобы определить - на какой части должен заспавниться даммик. (К примеру x = 110 (число создаётся рандомно) / y = -90 и т.д.)
Загруженные файлы
0
27
5 лет назад
Отредактирован MpW
0
AllChosen, ты пока что не понимаешь, что делаешь.
ты должен вместо цикла с вэйтом использовать "периодичный" таймер и сдвигать координаты, но пока что советуют посмотреть примеры xgm.guru/p/wc3/spellmaker-stomp-spell-creation
есть таймер одноразовый и периодичный, это все один и то же таймер, просто запускает разные режимы. через TimerStart. Вы таймер уже создали так смотрю, теперь нужно ловить запуски таймеров
Принятый ответ
0
3
5 лет назад
0
Steal nerves:
AllChosen, ты пока что не понимаешь, что делаешь.
ты должен вместо цикла с вэйтом использовать "периодичный" таймер и сдвигать координаты, но пока что советуют посмотреть примеры xgm.guru/p/wc3/spellmaker-stomp-spell-creation
есть таймер одноразовый и периодичный, это все один и то же таймер, просто запускает разные режимы. через TimerStart
Спасибо вам) Теперь хоть буду понимать в чем стоит дальше разбираться)
0
27
5 лет назад
0
AllChosen, ищи статьи про таймеры и карты с примерами. пример движение снарядов
0
29
5 лет назад
0
ищи статьи про таймеры и карты с примерами. пример движение снарядов
Проблема статей в том, что их никто не читает.
Здесь например похожий случай реализован.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.