26

» WarCraft 3 / Переодически подвисает таймер

ScorpioT1000, поэтому идеально для такого использовать таймеры вместе с событиями окончания таймера в отдельных триггерах/функциях.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, кстати, только сейчас заметил, схожую тему выше показал EugeAl, но у меня будет еще более точная проверка за счет меньшего слипа + интегрирован сразу же в твой код с твоим таймером, то есть не придется создавать второй параллельный таймер, как если бы ты юзал этот вейт.
26

» WarCraft 3 / Переодически подвисает таймер

Принятый ответ
По сути тут мы проверяем каждые 0.1 сек, когда там таймер завершится (с помощью call TriggerSleepAction(0.1)), и дальше закрываем окно. Все локально, в одном коде без дополнительных событий. Не сказать, что прямо оптимизированно и точно, но для твоей задачи сгодится. Если надо более точное время - ставишь не 0.1 а 0.01 или 0.05 к примеру.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, в итоге, подставив реализацию вейта и немного переделав, получится вот такой код:
function Trig_ReadyTime_Actions takes nothing returns nothing
    local timerdialog IvanWindow
    local real Timerivan
    local timer IvanTimer 
    set Timerivan = 10.00 
    set IvanTimer  = CreateTimer()
    call StartTimerBJ( IvanTimer, false, Timerivan )
    call CreateTimerDialogBJ( IvanTimer, ( "Следующая волна:" ) )
    set IvanWindow = bj_lastCreatedTimerDialog
    call TimerDialogDisplayForPlayerBJ( true, IvanWindow, GetOwningPlayer(udg_Hero[1] ))
    call TimerDialogDisplayForPlayerBJ( true, IvanWindow, GetOwningPlayer(udg_Hero[2] ))
    call TimerDialogDisplayForPlayerBJ( true, IvanWindow, GetOwningPlayer(udg_Hero[3] ))
    call TimerDialogDisplayForPlayerBJ( true, IvanWindow, GetOwningPlayer(udg_Hero[4] ))
    call TimerDialogDisplayForPlayerBJ( true, IvanWindow, GetOwningPlayer(udg_Hero[5] ))
    loop
        call TriggerSleepAction(0.1)
        exitwhen TimerGetRemaining(IvanTimer) == 0.
    endloop
    call TimerDialogDisplayBJ( false, IvanWindow )
    call DestroyTimerDialogBJ( IvanWindow )
    call DestroyTimer(IvanTimer)
    set IvanTimer = null
    set IvanWindow = null
    call TriggerExecute( gg_trg_Wawe )
endfunction
Некоторые вещи я тебе тут убрал лишние и добавил уничтожение таймера.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, вот как раз проблема внутри вейта... просто таймер и действие TriggerSleepAction с указанием одного и того-же времени на самом деле могут ждать разное время. Одно привязывается к игровому времени а второе к системному.
К примеру если у тебя карта лагает, время может замедлятся/ ускорятся внутри игры, а вот системное будет стабильное. Помню уже были подобные проблемы со временем.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, а еще, тебе же надо дождаться окончания таймера, почему бы вместо вейта не использовать ожидание окончания таймера как УЖЕ сделано в вейте? :D
Без отдельного триггера с событием.
26

» WarCraft 3 / Переодически подвисает таймер

Как минимум если поставить задержку в 1 секунду, такой проблемы я не вижу.
Загруженные файлы
26

» WarCraft 3 / Переодически подвисает таймер

Хотя не, причина похоже не в этом, сейчас подумаем теперь над твоим кодом...
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, у тебя действия в инициализации запускаются. Из-за этого могут быть сдвиги какие-то. Как то-же окно таймера в инициализации, как помню, не создается.
Поэтому запускай триггер по событию "время прошло". Хотя бы 0.01 сек ставишь и уже не в инициализации запускаешь триггер.
Типа так:
Если что, действия инициализации происходят во время загрузки карты (в конце в основном).
Загруженные файлы
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, я думаю ты просто запутался в своей реализации, начал использовать разные инструменты, смешав их в одну кучу, и в итоге не получается так как ты хочешь. Может тогда опишешь изначальную цель, что ты хочешь получить (четко и понятно по порядку).
В идеале еще предоставишь карту, как у тебя работает. Можешь вынести весь нужный код в отдельную пустую карту, чтобы мы могли потестить твой случай и сказать в чем ты не прав, ибо по скринам не всегда понятно, что у тебя пошло не так ибо может быть ты не всю информацию нам предоставляешь.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, ну с таким подходом, естественно, локальные переменные смысла делать нет, используй глобалки. Ты же не планируешь 100 таймеров одновременно запускать.
26

» WarCraft 3 / Переодически подвисает таймер

SсRealm, как это может не сработать? Если таймер запущен то событие будет запущено :D
26

» WarCraft 3 / Переодически подвисает таймер

wait и таймер могут завершиться немного с разным временем, даже если ты поставил одинаковое число. Лучше делай по событию "таймер истек" действия по закрытию окна, а не через wait.
Так-же мне показалось много странного в коде. Ты сам сможешь объяснить каждую строку, зачем она нужна, вот тут к примеру:
set IvanTimer = CreateTimer()
IvanTimer=bj_lastStartedTimer
Мне кажется тут есть лишние строки кода, но мб чего-то не помню и надо потестить.

А чтобы потестить - скинь карту с примером :)
26

» Администрация XGM / Сломался счетчик уведомлений

ScorpioT1000, ты мне сбросил какую-то способность?)
У меня +1 очко способностей еще показало теперь, но уровень я не поднимал.
26

» Администрация XGM / Сломался счетчик уведомлений

ScorpioT1000, а в самой сети я не очень понял что должен был там увидеть, но вот скрин:
Загруженные файлы
26

» Администрация XGM / Сломался счетчик уведомлений

Теперь счетчик вовсе не обнуляется и только увеличивается :D
Загруженные файлы
26

» WarCraft 3 / Отслеживание НЕ использования способности

Принятый ответ
Можно.

Как? Ставишь перед таймер логическую переменную-флажок = false
Другой триггер:
Событие - юнит применил способность
Условие - твоя способность
Действие - твоя переменная = true
Далее если после таймера проверяешь, если переменная == true, значит применил способку. Иначе не применял.

Если способок таких много или юнитов много, то делай через хеш с привязкой к юниту.
26

» WarCraft 3 / Возможно ли урезать Warcraft 3 Reforged?

Ну если пиратка, то почему бы и нет, всю HD графику можно урезать :D

Думаю кто-то наверняка разбирался в файлах рефа...
26

» WarCraft 3 / Аура дамага

Ну если ты хочешь чтобы ауру нельзя было обнаружить - делай триггерную систему :D