SсRealm, понимаешь, нельзя просто взять и вставить таймер вместо вейта? Они немного по разному работают. Вейт просто приостанавливает на время выполнение кода в текущем потоке, а таймер создаёт новый поток, запуская указанную функцию. В гуи нельзя создавать функции, единственный способ как-то взаимодействовать с этим таймером, - это триггер, регистрирующий завершение отсчёта времени. Тебе для каждого таймера придётся создавать свой триггер, а уже там выполнять продолжение твоего кода.
Думаю, что можно сделать через группу. В твоём триггере просто перебираешь всех юнитов и двигаешь куда тебе нужно. Тогда тебе нужно будет только добавлять в группу новых юнитов, которые должны так двигаться. А если не хочешь, чтобы юнит двигался - удаляешь его из группы.
Например, создаешь триггер, который регистрирует новых юнитов, вошедших в карту. В условии проверяешь тип юнита. Если подходит, то добавляешь его в ту группу, что я описал выше.
Extremator, разве функция, которую ты скинул не есть стандартный гуишный вейт? В гуи не используется TriggerSleepAction( ), там используется BJ-шная функция PolledWait( ):
globals
constant real bj_POLLED_WAIT_INTERVAL = 0.10
constant real bj_POLLED_WAIT_SKIP_THRESHOLD = 2.00
endglobals
function PolledWait takes real duration returns nothing
local timer t
local real timeRemaining
if (duration > 0) then
set t = CreateTimer()
call TimerStart(t, duration, false, null)
loop
set timeRemaining = TimerGetRemaining(t)
exitwhen timeRemaining <= 0
// If we have a bit of time left, skip past 10% of the remaining
// duration instead of checking every interval, to minimize the
// polling on long waits.
if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
call TriggerSleepAction(0.1 * timeRemaining)
else
call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
endif
endloop
call DestroyTimer(t)
endif
endfunction
UPD: В гуи, окзывается, есть два вида вейта: TriggerSleepAction и PolledWait. Находятся прямо друг за дружкой.
Проверка на приказ unimmolation должна работать. Делал в своё время способность на основе жара преисподней. Приказ ловится, когда заканчивается мана и даже юнит умирает.
Сложно ли сделать подсветку и для Lua? По сути нужно просто давить новые ключевые слова (do, end, ...) и новые функции из всяких таблиц (math, table, ...). Или всё не так просто, как мне показалось на первый взгляд?
Мне ивент очень понравился, но играют в него какие-то редкостные токсики. Если чуть что сделал не так, то обязательно кто-нибудь откроет рот в твой адрес. Смысл гореть с кастомки, в которой за победу дают лишь на 1-3 поинта больше?
» WarCraft 3 / Как сделать команду -spect?
Отредактирован scopterectus
» WarCraft 3 / Хук оригинальной функции хоткея
» WarCraft 3 / Враждебность НПЦ при выходе из стелса.
» WarCraft 3 / Помощь с триггерами
Отредактирован scopterectus
» WarCraft 3 / Пассивные иконки Рефоржа
» WarCraft 3 / Помощь с триггерами
» WarCraft 3 / Таймер вместо вейт
» WarCraft 3 / Вращающиеся модели
» WarCraft 3 / Вращающиеся модели
» WarCraft 3 / Помощь с триггерами
Отредактирован scopterectus
» WarCraft 3 / Как сделать команду -spect?
» WarCraft 3 / Таймер вместо вейт
Отредактирован scopterectus
» WarCraft 3 / Таймер вместо вейт
» Мир безумного / Blizzard исполнилось 30 лет!
» WarCraft 3 / Аое замедление без деформации рельефа?
» WarCraft 3 / Жар преисподней (приказ)
Отредактирован scopterectus
» WarCraft 3 / Аое замедление без деформации рельефа?
Отредактирован scopterectus
» WarCraft 3 / Как поменять иконку свободный рабочий не у всех расс
» WarCraft 3 / Мы ждали этого так долго - обновление лаунчера Battle.net 😌
» WarCraft 3 / TESH для Reforged
» WarCraft 3 / Доп мс если рядом враг.
» Мир безумного / В Dota 2 вернулось хэллоуинское событие Diretide
Отредактирован scopterectus
» Администрация XGM / UI на английском
Отредактирован ScorpioT1000
» Администрация XGM / UI на английском
» Администрация XGM / UI на английском