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

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

Закрытая тема
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Не выполняется условие
Всем доброй ночи, возникла такая проблемка.
Имею такую конструкцию
» codeъ
function BuffDuration takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local real Duration = LoadReal(udg_Hash,GetHandleId(t),1)
    set Duration = Duration - 1.00
    call SaveReal(udg_Hash,GetHandleId(t),1, Duration)
    call DisplayTextToForce( GetPlayersAll(), R2S(Duration) )
        if Duration == 0.00 then
            call DestroyTimer(t)
        endif
    set t = null
endfunction
    
    
function Buff takes unit uTarg, real Duration, integer IdOfEffect returns nothing
    local unit u = uTarg
    local integer IdE = IdOfEffect
    local timer t = CreateTimer()
    // ------------------------------
    call SaveReal(udg_Hash,GetHandleId(t),1,Duration)
    call TimerStart(t, 1.00, true, function BuffDuration)
    call DisplayTextToForce( GetPlayersAll(), "buff starts" )
        
        
        if LoadReal(udg_Hash,GetHandleId(t),1) == 0.00 then
        call FlushChildHashtable(udg_Hash,GetHandleId(t))
            if IdE == 1 then
                call SetUnitUserData( u, 0 )
                call DisplayTextToForce( GetPlayersAll(), "buff end of effect" )
                call DisplayTextToForce( GetPlayersAll(), I2S(GetUnitUserData(u)) )
            endif
        endif
    set t = null
    set u = null
endfunction
все вроде ок, время отсчитывается, но проблема в том что дальше
if IdE == 1 then
ничего не идет. в чем трабла, не пойму?...
вызываю этим
function Trig_Test_Barrier_Actions takes nothing returns nothing
    local unit uTarg = GetSpellTargetUnit()
    call SetUnitUserData( uTarg, 350 )
    call Buff( uTarg, 5.00, 1)
endfunction
Старый 21.04.2012, 03:28
prog

offline
Опыт: 32,865
Активность:
Ты делаешь проверку if LoadReal(udg_Hash,GetHandleId(t),1) == 0.00 then раньше чем произойдет хоть односрабатывание таймера - соответственно это условие никогда не выполнится, разве что ты сразу задашь Duration равным нулю.
Старый 21.04.2012, 06:43
Klop
Папа римский
offline
Опыт: 13,006
Активность:
if LoadReal(udg_Hash,GetHandleId(t),1) == 0.00 then
        call FlushChildHashtable(udg_Hash,GetHandleId(t))
            if IdE == 1 then
                call SetUnitUserData( u, 0 )
                call DisplayTextToForce( GetPlayersAll(), "buff end of effect" )
                call DisplayTextToForce( GetPlayersAll(), I2S(GetUnitUserData(u)) )
            endif
        endif
это должно быть в функции BuffDuration
Старый 21.04.2012, 10:33
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
вот я краб, проснулся и дошло, заглянул сюда, правильно дошло) спасибки)
вот что бывает если не спать а писать код :D
Старый 21.04.2012, 13:10
Закрытая тема

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

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

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

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



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