Создал два отдельных таймера. У каждого свои переменные для окон и для самого таймера. Один таймер для воскрешения, другой для отчета до волны, но они срабатывают одновременно друг с другом в чем причина?

Принятый ответ

biridius:
SсRealm, в триггере у Ивана таймер какой? последний запущенный? дай скрин
Еще там в триггере китайца почему переменная от Ивана?
Так, все . С китайцем Иваном я разобрался. Как минимум у одного игрока может быть только один герой и отображение таймера воскрешения я решил. Но по прежнему идет наложение таймеров воскршения и ожидания волны(((
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
3 года назад
0
Похожие вопросы:

ответ
делаю в таких способностях таким таймерам малый период, время остановки определяю через перезаписываемую целочисленную
^ метод Фрога
в MyAbility проверяй есть ли уже абилка 'A06B' у этого юнита
и если есть - ищи таймер и меняй ему время на новое (опять 25 сек - обновление)
ответ
Там все гораздо проще, на каждого юнита аттачится экземпляр структуры где хранится цель, заклинатель, кол-во урона в сек, и сколько хп у тебя было, по нему высчитывается урон каждые 4 секунды. Тебе ни 10 таймеров ни группы не нужны.

function WC5 takes nothing returns boolean
    local trigger t = GetTriggeringTrigger( )
    local integer S5I = GetHandleId( t )
    local unit P7I = ( LoadUnitHandle( HashData, ( S5I ), ( 2 ) ) )
    local unit P8I = ( LoadUnitHandle( HashData, ( S5I ), ( 17 ) ) )
    local integer SUI = GetUnitAbilityLevel( P7I, 'A0NO' )
    local integer NPI = GetTriggerEvalCount( t )
    local real WD5 = ( LoadReal( HashData, ( S5I ), ( 392 ) ) )
    local real H84 = 0
    if GetTriggerEventId( ) == EVENT_WIDGET_DEATH then
        call DestroyEffect( ( LoadEffectHandle( HashData, ( S5I ), ( 32 ) ) ) )
        call FlushChildHashtable( HashData, ( S5I ) )
        call S0I( t )
    else
        if NPI == 4 or NPI == 8 or NPI == 12 then
            call DestroyEffect( ( LoadEffectHandle( HashData, ( S5I ), ( 32 ) ) ) )
            if NPI == 12 then
                call FlushChildHashtable( HashData, ( S5I ) )
                call S0I( t )
            elseif NPI == 4 or NPI == 8 then
                call SaveEffectHandle( HashData, ( S5I ), ( 32 ), ( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) ) )
            endif
            set H84 = ( 0.08 + SUI * 0.08 ) * QDI( WD5 - GetUnitState( P8I, UNIT_STATE_LIFE ), 0 )
            if H84 > 0 then
                call UYI( "+" + I2S( R2I( H84 ) ), 2, P8I, 0.023, 68, 0, 187, 216 )
            endif
        endif
        call DamageTarget( P7I, P8I, 1, 5 * SUI + H84 )
    endif
    set t = null
    set P7I = null
    set P8I = null
    return false
endfunction

function WE5 takes nothing returns nothing
    local trigger t = CreateTrigger( )
    local integer S5I = GetHandleId( t )
    local unit P7I = GetTriggerUnit( )
    local unit P8I = GetEnumUnit( )
    call DestroyEffect( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) )
    call TriggerRegisterTimerEvent( t, 1, true )
    call TriggerRegisterDeathEvent( t, P8I )
    call TriggerAddCondition( t, Condition( function WC5 ) )
    call SaveUnitHandle( HashData, ( S5I ), ( 17 ), ( P8I ) )
    call SaveUnitHandle( HashData, ( S5I ), ( 2 ), ( P7I ) )
    call SaveReal( HashData, ( S5I ), ( 392 ), ( ( GetUnitState( P8I, UNIT_STATE_LIFE ) ) * 1.0 ) )
    call SaveEffectHandle( HashData, ( S5I ), ( 32 ), ( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) ) )
    set t = null
    set P7I = null
    set P8I = null
endfunction

function WF5 takes nothing returns nothing
    local unit P7I = GetTriggerUnit( )
    local location l = GetSpellTargetLoc( )
    local real x = GetLocationX( l )
    local real y = GetLocationY( l )
    local group g = NTI( )
    local integer SUI = GetUnitAbilityLevel( P7I, 'A0NO' )
    call GroupEnumUnitsInRange( g, x, y, 180 + 25, Condition( function D01 ) )
    call ForGroup( g, function WE5 )
    call NSI( g )
    call RemoveLocation( l )
    set l = null
    set g = null
endfunction

function WG5 takes nothing returns boolean
    if GetSpellAbilityId( ) == 'A0NO' then
        call WF5( )
    endif
    return false
endfunction

function NI1 takes nothing returns nothing
    local trigger t = CreateTrigger( )
    call UMI( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition( function WG5 ) )
    set t = null
endfunction
Как видишь все очень примитивно.Точно так же делаешь структуру с данными кто, где, когда. Нет смысла пытатся хранить сразу группу.

2
7
3 года назад
2
Сейчас отдел экстрасенсов подключатся к рассмотрению данного вопроса, если конечно автор не выложит код в студию.
0
20
3 года назад
0
вот для отсчета волны, он сам по себе работает и даже исчезает ( скрыть там с отдельного триггера_)

Воскрешение для героя.Ваш ненавистный "wait" к делу не относится. В варианте А создается логическая "Да", когда умирает впервые и Нет все последующие разы. Это чтобы не создавать по сто раз а просто скрывать и показывать окно заново.
Все по отдельности прекрасно работает, но вместе они накладываются
0
27
3 года назад
Отредактирован rsfghd
0
А разве это не из-за того, что ты свернул игру? Ты переходил в полноэкранный режим?
у меня из-за маленького монитора не всё вмещалось :с
0
20
3 года назад
0
rsfghd:
А разве это не из-за того, что ты свернул игру? Ты переходил в полноэкранный режим?
у меня из-за маленького монитора не всё вмещалось :с
Ты вообще не понял! У меня оба окна срабатывают одновременно!
0
21
3 года назад
Отредактирован biridius
0
Обратный отчет - start (Last Started Timer)...
Почему используется "последний запущенный таймер" а не какой-то отдельный из переменной?
0
20
3 года назад
0
biridius:
Обратный отчет - start (Last Started Timer)...
Почему используется "последний запущенный таймер" а не какой-то отдельный из переменной?
А как ты собрался создать? Сначало последний запущеный, потом он он схраняется в переменную и уже через переменную используется.
Еще есть вариант сделать бы это все через локалки, но я понятие не имею, как называется окно и таймер в локальных(((
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.