XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
NETRAT

offline
Опыт: 83,712
Активность:
vlad_C0M в blizzard.j есть такая константа bj_POLLED_WAIT_INTERVAL и она установлена в 0.1, если ты ее поменяешь во время игры, то получишь вейт с допустимым меньшим интервалом - попробуй, тебе понравится.

По поводу wait, все недостатки видны в самой функции - зависание триггера в очереди налицо. Вместо того, чтобы вешать триггер в очереди на неопределенный срок, советую переводить его на событийную модель - то есть вторая часть триггера срабатывает после завершения таймера. При этом
1) триггер не висит в очереди хез скока
2) постоянные проверки таймера не осуществляются
Экономия памяти и ЦП времени

Триггер нифига не паузится - смотри на фунцию - он Energizer - он продолжает работать, пока все остальные освободили память, он еще работает. То что он полезнее - бред, удобнее - да, но удобство жрет ресурсы. При добавлению через таймер, ничего бы не тормозило. В-общем доводы неубедительные - все видно из кода функции.
Код:
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

Что у вас в проекта с жассерами?
Старый 04.12.2005, 14:57
Warden
:::...
offline
Опыт: 26,106
Активность:
Дайте ссылку на инвентарь Димонта пожалуйста!!!
Старый 19.02.2006, 11:49
N.Sy.Prophet
Йа Байан
offline
Опыт: 13,122
Активность:
такая тема существует в барахолке.
Старый 19.02.2006, 12:18
Iron
Листовой
offline
Опыт: 24,427
Активность:
NETRAT Жжош с динамическим wait-ом в цикле :). Тока я не понял одного, нафиг timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD ? Почему просто не wait-ать 0.1 * timeRemaining.
Старый 19.02.2006, 12:43
NETRAT

offline
Опыт: 83,712
Активность:
Iron там нету ни одной строки моего кода - это б.ж так что все претензии к горе-кодерам близзарда.

тема боянистая - смотрите даты
Старый 19.02.2006, 17:09
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Блин, кто-нибудь может сказать трэкаблы срабатывает если наводишь или как????
Старый 09.04.2006, 00:48
TiM
Старичок
offline
Опыт: 8,594
Активность:
можно сделать, чтобы триггер срабатывал, когда наводишь на трэкэйбл, и можно когда на них нужно нажать. Юзай UMS WE.
Старый 09.04.2006, 01:44
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
А на практике как применять?
Старый 09.04.2006, 03:42
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:29.