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

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

Ответ
 
Kenshi245

offline
Опыт: 2,252
Активность:
Polled_wait2
Нашел в инете якобы более грамотную версию стандартной функции, как думаете стоит использовать ее или нет?

Код:
function PolledWait2 takes real duration returns nothing
 local real timeRemaining
 local real st=TimerGetElapsed( bj_gameStartedTimer)
    if st <= 0 then
        set bj_gameStartedTimer = CreateTimer()
        call TimerStart(bj_gameStartedTimer, 1000000, false, null)
    endif
    if (duration > 0) then
        loop
            set timeRemaining = duration - TimerGetElapsed( bj_gameStartedTimer) + st
            exitwhen timeRemaining <= 0
            if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
                call TriggerSleepAction(0.1 * timeRemaining)
            else
                call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
            endif
        endloop
    endif
endfunction

Отредактировано df Hunter, 01.04.2008 в 00:21.
Старый 31.03.2008, 22:16
Q

offline
Опыт: 360,164
Активность:
рекомендую использовать теги для корректного отображения кода
Старый 31.03.2008, 23:44
Toadcop

offline
Опыт: 54,313
Активность:
Kenshi245 ну автор Вексориан... + не якобы а 100% грамотней =) а использовать любой вейт не стоит так что...
Старый 01.04.2008, 01:13
adic3x

offline
Опыт: 108,439
Активность:
стоит использовать таймеры
Старый 01.04.2008, 10:10
Kenshi245

offline
Опыт: 2,252
Активность:
Цитата:
Сообщение от ADOLF
стоит использовать таймеры


Можно пример? О каких именно вейт таймерах ты говоришь?
Старый 01.04.2008, 15:41
adic3x

offline
Опыт: 108,439
Активность:
на сайте статья: создание простого стомп спела
Старый 01.04.2008, 20:14
Kenshi245

offline
Опыт: 2,252
Активность:
А можно ссылку, а то поиск ничего не выдал?
Старый 01.04.2008, 21:38
adic3x

offline
Опыт: 108,439
Активность:
Старый 01.04.2008, 21:46
Kenshi245

offline
Опыт: 2,252
Активность:
а как работает функция call TimerStart(timer, 5, true, function rrr())?
Старый 01.04.2008, 23:04
J
expert
offline
Опыт: 48,447
Активность:
скобки у функции rrr убрать, т.е.
call TimerStart(t, 5, true, function rrr)
Создаеш таймер t, и запускаеш его этой функцией, и каждый 5 секунд будет выполнятся функция rrr
Старый 01.04.2008, 23:06
ScorpioT1000
Работаем
offline
Опыт: отключен
угу или false тада 1 рас)
Старый 02.04.2008, 00:43
Kenshi245

offline
Опыт: 2,252
Активность:
А зачем тогда вообще Polled wait нужен если проще этой функцией задержку сделать?
Старый 03.04.2008, 19:54
J
expert
offline
Опыт: 48,447
Активность:
кокраз поледом и проще сделать, но полед и простой слип имеют много недостатков, потому пользуются таймером
Старый 03.04.2008, 20:03
Kenshi245

offline
Опыт: 2,252
Активность:
Попробовал таймером, не пашет, не хочет передавать параметры типа GetSpellTarget.

Код:
// ### Death Coil Spell ###
function Death_Coil_Hit takes nothing returns nothing
call SetWidgetLife(GetSpellTargetUnit(),GetWidgetLife(GetSpellTargetUnit())-1000)
endfunction

function Spell_Death_Coil takes nothing returns nothing
    local timer timerA = CreateTimer()
    call TimerStart(timerA, 1, false, function Death_Coil_Hit)
    set timerA = null
endfunction
Старый 04.04.2008, 12:54
J
expert
offline
Опыт: 48,447
Активность:
бгы, какой ты наивный, именно поэтому вэйти и удабнее... таймер это отдельная конструкция запущеная в отдельном потоке, область видимости локалок или подобных функций, от функции где был создан таймер, до самой функции таймера нераспространяется, передавай туда значения через глобалки или кеш
Старый 04.04.2008, 12:57
Kenshi245

offline
Опыт: 2,252
Активность:
А глобалки можно объявить не юзая редактор переменных?
Или есть какая-нибудь статься по работе с хешем, кроме той, что на сайте, уж больно сложно там.

Отредактировано Kenshi245, 04.04.2008 в 13:38.
Старый 04.04.2008, 13:29
Лось

offline
Опыт: 7,223
Активность:
1) В Jass New Gen Pack можно.
2) Вот Статия.

Отредактировано Лось, 04.04.2008 в 13:43.
Старый 04.04.2008, 13:37
Kenshi245

offline
Опыт: 2,252
Активность:
В этом случае надо делать еще какие-нибудь манипуляции чтобы таймер не висел в памяти или он самоудалится через 1 сек?



Код:
function Spell_Death_Coil takes nothing returns nothing
    local timer timerA = CreateTimer()
    call TimerStart(timerA, 1, false, function Death_Coil_Hit)
    set timerA = null
endfunction
Старый 04.04.2008, 16:13
Лось

offline
Опыт: 7,223
Активность:
DestroyTimer(timer) - удалить таймер. PauseTimer(timer) - запаузить таймер.
Старый 04.04.2008, 16:19
J
expert
offline
Опыт: 48,447
Активность:
Kenshi245 Если ты создаеш одноразовый таймер то удалять его всеравно нужно в любом случае, просто в конце функции Death_Coil_Hit() ставиш строчку
call DestroyTimer(GetExpiredTimer())
Старый 04.04.2008, 16:45
Ответ

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

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

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

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



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