function WAIT_EX takes real s returns nothing
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction
SсRealm, все что щас делаешь немного глупо. Лишняя работа.
вэйт немного дольше работает, чем таймер. Пример, таймер в 0.00 сек моментально срабатывает, а вэйт в 0.00 сек заметно дольше кажется 1 сек ушла у него. Может эти вещи не очевидны, но в некоторые моментах заметно. Не могу просто вспомнить хорошие примеры. Только с приказом, и то дурацкий метод. Пример, когда нужно было отменить приказ:
с вэйтом от полученного юнит успевает повернуться.
с таймером юнит уже стоит, будто и не получал приказ.
А вспомнил, короче нужно спрятать иконку сразу же, но при событии он не сразу создается. Пример юнит начал строительство, здания еще как бы не существует. Поэтому делаем задержку. Вообще во многих событиях происходят так: нас уведомляют что произойдет. Ну вот мне нужно спрятать иконку:
вэйт с 0.00 сек - видно на на доле секунд иконку прежде чем исчезает. это как-то не красиво.
с таймером 0.00 сек - я вообще ничего не вижу. что вообще то хорошо
видна же разница.
Но не хочу говорить что вэйт плохой. И прочее. Он может быть и полезным. К примеру задержку между приказами. Пример продажа всех итемов с инвентаря в магазин. Там можно замутить авто-продажу. Продажа происходит мгновенная, но чтобы выполнить все приказы нужна задержка. Можно было и на таймер, но код длиннее был бы
function WAIT_EX takes real s returns nothing
А вот этот код нельзя на custom script записать, а то я е пойму как мне выйти на этот таймер?
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
От души! просто заменю все старые триггреные вейты на костом скрипт!)))
Слухайте, че!Я тут конечно дико извиняюсь, что лезу со своей триггерной мордой, но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
И все. Тоесть для коротких и быстрых периодов это не годится, но раз уж вейт такой глючный!
Я могу и на локалках попробовать через custom script )))
Почему нет?!😊
Не может. У всего происходящего есть своя последовательность. Затереть юнита инициировавшего ивент не так уж и просто, но способы есть. В основном все проблемы с потерей такого юнита сводятся к тому что сам вэйт ни при чём, а всему виной каша идущая до/после.
По поводу вэйта - если уж не нравится стандартный, то как вариант, сварганить и юзать что-то на подобии этого:
function WAIT_EX takes real s returns nothing
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction
Это означает,что каждый раз когда я использую вейт, включается таймер равный этому вейту?
То есть я пишу этот код и вейты больше не глючат?
Рефордж я показывал просто для примера, на сколько там просто и не нужна никакие заморочки. Паузить и уничтожать одноразовый таймер, это обязательно иначе будет небольшая утечка в памяти (ибо это древний баг варкрафта), если таймер периодический, то разумеется его тоже надо будет остановить, дабы он не болтался без дела
С ранних лет невзлюбил понятие "триггеный юнит" то есть тот, отношении которого подпадает действие конкретного триггера, а вариантов могутт быть миллионы. Варик может тупануть. Поэтому стараюсь конкретно использовать глобалку типтбоевая единица с его именем ваня там, маша, пися.
Центр области , приходться, хотя опять же говорили утечна область и лучше конкретно к какому то предмету идти или зданию.
Спасибо тебе, бергибир, только что я из того спообен понять?
Ну, щас сяду и попробую накидать вот это вот все в custom script, скорее всего работать не будет и я без понятия, зачем паузить запущеный таймер?! Как он посчитает, сколько времени мне нужно подождать?
Итог: это разбираться, зачем нужна хеш таблица и на примере ткакого нибудь заклинания где я уже видел таймер с хэшем , Как он отсрачивает события вместо вейта.
Опять же рефордж отдаютт аутсорсерам и может он ещё вернётся. Там видно будет, а пока только так
Проблема в твоих алгоритмах. В игре не может быть такого как "не успеть". А также вся логика игры строго однопоточная, все события происходят сторого последовательно и конкуретных ситуаций быть не может.
Не однократно замечал за вариком, когда не успевает. Возможно виной тому Гуи и глобальные, потому что триггерщик я конченый.
Типичная ситуация когда нужно подменить героя убрать одного, а поставить на его место другого. Первого убивают, второй просто не успевает подмениться.
Даю и забираю триггерно предмет: опять же нужно сделать неуязвивым, поставит на паузу, дать предмет, потом повторить в обратную сторону
SсRealm, в триггере у Ивана таймер какой? последний запущенный? дай скрин
Еще там в триггере китайца почему переменная от Ивана?
Так, все . С китайцем Иваном я разобрался. Как минимум у одного игрока может быть только один герой и отображение таймера воскрешения я решил. Но по прежнему идет наложение таймеров воскршения и ожидания волны(((
SсRealm, ну если это последний запущенный, то это вполне может быть какой-то левый таймер из другого триггера.
Попробуй просто поставить туда свою переменную. Гуи триггеры автоматичски создают объект таймера в начале игры для каждой переменной. То есть переменная IvanTimer это уже готовый таймер который можно запускать.
Чушь! Создал отдельный таймер с отдельным окном для героя китайца и он все равно синхронизируется с Героем Ванькой, и с таймером отсчета,хотя при этом вообще у нег должен отображаться owner Китаец игроку другого цвета. Бредятина какая то!
Почему используется "последний запущенный таймер" а не какой-то отдельный из переменной?
А как ты собрался создать? Сначало последний запущеный, потом он он схраняется в переменную и уже через переменную используется.
Еще есть вариант сделать бы это все через локалки, но я понятие не имею, как называется окно и таймер в локальных(((
вот для отсчета волны, он сам по себе работает и даже исчезает ( скрыть там с отдельного триггера_)
Воскрешение для героя.Ваш ненавистный "wait" к делу не относится. В варианте А создается логическая "Да", когда умирает впервые и Нет все последующие разы. Это чтобы не создавать по сто раз а просто скрывать и показывать окно заново.
Все по отдельности прекрасно работает, но вместе они накладываются
Триггеры предназначены для удобства разработки, если вам удобно разрабатывать на jass, переводите в jass. Существенного значения это не оказывает
Я не о том.
Любой триггер переводится в джасс перед активации карты. А если перед самой активацие карты перевести в джасс текстом, то фунция перевода в триггер удаляется из кода?
SсRealm, никак не поможет, переходи на луа ты ж в юнити уходил, с возвращением
Слишком сложно. В юнити ,если сделал беги отдельно работаешь над прыжками и прыжок написан криво, то не работает уже не прыжок ни ходьба. И так со всем. Кроме того я ни одной строчки кода не понимаю:-(
» WarCraft 3 / Таймер вместо вейт
А вот этот код нельзя на custom script записать, а то я е пойму как мне выйти на этот таймер?
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction
» WarCraft 3 / Таймер вместо вейт
» WarCraft 3 / Таймер вместо вейт
И все. Тоесть для коротких и быстрых периодов это не годится, но раз уж вейт такой глючный!
Я могу и на локалках попробовать через custom script )))
Почему нет?!😊
То есть я пишу этот код и вейты больше не глючат?
» WarCraft 3 / Таймер вместо вейт
» WarCraft 3 / Как сделать команду -spect?
» WarCraft 3 / Таймер вместо вейт
Центр области , приходться, хотя опять же говорили утечна область и лучше конкретно к какому то предмету идти или зданию.
Спасибо тебе, бергибир, только что я из того спообен понять?
Ну, щас сяду и попробую накидать вот это вот все в custom script, скорее всего работать не будет и я без понятия, зачем паузить запущеный таймер?! Как он посчитает, сколько времени мне нужно подождать?
Итог: это разбираться, зачем нужна хеш таблица и на примере ткакого нибудь заклинания где я уже видел таймер с хэшем , Как он отсрачивает события вместо вейта.
Опять же рефордж отдаютт аутсорсерам и может он ещё вернётся. Там видно будет, а пока только так
» WarCraft 3 / Варик не успевает считать
Типичная ситуация когда нужно подменить героя убрать одного, а поставить на его место другого. Первого убивают, второй просто не успевает подмениться.
Даю и забираю триггерно предмет: опять же нужно сделать неуязвивым, поставит на паузу, дать предмет, потом повторить в обратную сторону
» WarCraft 3 / Изменение цвета иллюзий
» WarCraft 3 / Наложение Таймеров
» WarCraft 3 / Наложение Таймеров
» WarCraft 3 / Наложение Таймеров
Еще есть вариант сделать бы это все через локалки, но я понятие не имею, как называется окно и таймер в локальных(((
» WarCraft 3 / Наложение Таймеров
» WarCraft 3 / Наложение Таймеров
Все по отдельности прекрасно работает, но вместе они накладываются
» WarCraft 3 / Еще одна глупая идея про оптимизацию
» WarCraft 3 / Еще одна глупая идея про оптимизацию
Любой триггер переводится в джасс перед активации карты. А если перед самой активацие карты перевести в джасс текстом, то фунция перевода в триггер удаляется из кода?
» WarCraft 3 / Про оптимизацию
» Unity / Поповоду перемещения
» Unity / Поповоду перемещения
единицу уже давно добавил, не помогает
» Unity / Поповоду перемещения
Ред. N7 Molot
» Unity / Поповоду перемещения
» Unity / Поповоду перемещения
» Unity / Поповоду перемещения
Вот этот? Что далше?
» Unity / Поповоду перемещения
» Unity / Поповоду перемещения
» Unity / Поповоду перемещения