Парюсь с 10 утра, он просто игнорирует часть кода в фигурных скобках.
**{Это игнорирует
function HeroArcheressSkillAFirst_Stun takes nothing returns nothing
call PauseUnitBJ( true, GetEnumUnit() )
endfunction
}**
**{Это игнорирует
function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endfunction
}**
**{Это игнорирует
function HeroArcheressSkillAFirst_Quit takes nothing returns nothing
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
RemoveUnit( HeroArcheressSkillADammi )
TriggerSleepAction (1.00)
call UnitRemoveBuffBJ ( 'B006' , GetEnumUnit() )
call PauseUnitBJ( false , GetEnumUnit() )
endfunction
}**
function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Второй триггер запущен" )
**{А в общем смысле игнорирует тупо все в этом куске
if ( HeroArcheressSkillACircle == 0 ) then
call ForGroupBJ( HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Stun )
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Стан запущен" )
else
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Что то пошло не так в стане" )
endif
if ( HeroArcheressSkillACircle < HeroArcheressSkillALevel ) then
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, ( "Триггер на урон первый урон старт. Переменная = " + I2S (HeroArcheressSkillACircle) ) )
call ForGroupBJ( HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage )
set HeroArcheressSkillACircle = HeroArcheressSkillACircle + 1
TriggerSleepAction (1.00)
TriggerExecute ( gg_trg_HeroArcheressSkillAFirst )
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Урон старт" )
else
call ForGroupBJ( HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Quit )
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Урон стоп " )
endif
endfunction
}**
===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
set gg_trg_HeroArcheressSkillAFirst = CreateTrigger( )
call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction
Во всем коде понатыкано проверочных сообщений, однако высвечивается только самое первое и только 1 раз

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

короче, вот рабочий вариант
смотреть сюда
function Trig_HeroArcheressSkillAFirst_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ASkA'
endfunction

function HeroArcheressSkillAFirst_SelectGroup takes nothing returns nothing
    if GetUnitAbilityLevel(GetEnumUnit(), 'B006') > 0 then
        call PauseUnit(GetEnumUnit(), true)
        call GroupAddUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Стан")
    endif
endfunction

function Trig_HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    set HeroArcheressSkillADammi = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'h003', GetSpellTargetX(), GetSpellTargetY(), bj_UNIT_FACING) //создаем дамми
    call UnitApplyTimedLife(HeroArcheressSkillADammi, 'BTLF', GetUnitAbilityLevel(GetTriggerUnit(), 'ASkA')) //таймер жизни для дамми
    
    call TriggerSleepAction (1.) //из-за ауры увеличил задержку
    //убрал утечки
    call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 500.00, null)
    call ForGroup(g , function HeroArcheressSkillAFirst_SelectGroup )
    call DestroyGroup(g)
    set g = null
    //
    call TimerStart (HeroArcheressSkillATimer, 1., true, null) //запускаем таймер
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillABase takes nothing returns nothing
    set gg_trg_HeroArcheressSkillABase = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HeroArcheressSkillABase, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_HeroArcheressSkillABase, Condition( function Trig_HeroArcheressSkillAFirst_Conditions ) )
    call TriggerAddAction( gg_trg_HeroArcheressSkillABase, function Trig_HeroArcheressSkillAFirst_Actions )
endfunction
globals
    integer HeroArcheressSkillACircle = 0
    timer HeroArcheressSkillATimer = CreateTimer() //таймер
endglobals

function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
    if GetWidgetLife(HeroArcheressSkillADammi) > 0 then //проверяем, жив ли дамми юнит
        call BJDebugMsg("Урон" )
        call UnitDamageTarget(udg_HeroArcheress, GetEnumUnit(), 50, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    else //иначе удаляем его из группы и снимаем паузу
        call PauseUnit(GetEnumUnit(), false)//PauseUnitBJ( false , GetEnumUnit() )
        call GroupRemoveUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Выход")
    endif
endfunction

function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    call ForGroup(HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage)
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
    set gg_trg_HeroArcheressSkillAFirst = CreateTrigger(  )
    call TriggerRegisterTimerExpireEvent(gg_trg_HeroArcheressSkillAFirst, HeroArcheressSkillATimer) //событие таймер истекает
    call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
7
8 лет назад
Отредактирован Ige
0
HeroArcheressSkillACircle = -1 или на любое другое нужное тебе число
а лучше даже все целочисленные "приравнять" к чему-либо, чтобы подобных багов не было
0
9
8 лет назад
0
Она глобальная, прировнял к -1, оно так же пропускает тот же кусок кода
function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
if ( HeroArcheressSkillACircle < HeroArcheressSkillALevel ) then
if ( HeroArcheressSkillACircle == 0 ) then
call PauseUnitBJ( true, GetEnumUnit() )
endif
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
set HeroArcheressSkillACircle = HeroArcheressSkillACircle + 1
call TriggerSleepAction (1.00)
call TriggerExecute ( gg_trg_HeroArcheressSkillAFirst )
else
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
call TriggerSleepAction (1.00)
call UnitRemoveBuffBJ ( 'B006' , GetEnumUnit() )
call PauseUnitBJ( false , GetEnumUnit() )
call RemoveUnit ( HeroArcheressSkillADammi )
endif
endfunction
function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
call ForGroupBJ( HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage )
endfunction
===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
set gg_trg_HeroArcheressSkillAFirst = CreateTrigger( )
call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction
Переписал, в итоге триггер так же запускается, но дальше, как дело доходит до групп игнорит написанное.
0
7
8 лет назад
Отредактирован Ige
0
проверил у себя
не работает
    globals
        integer HeroArcheressSkillACircle
    endglobals

    function Action takes nothing returns nothing
        call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Второй триггер запущен" )
        
        if ( HeroArcheressSkillACircle == 0 ) then
            call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Стан запущен" )
        else
            call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Что то пошло не так в стане" )
        endif
    endfunction
работает
    globals
        integer HeroArcheressSkillACircle = -1
    endglobals

    function Action takes nothing returns nothing
        call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Второй триггер запущен" )
        
        if ( HeroArcheressSkillACircle == 0 ) then
            call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Стан запущен" )
        else
            call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Что то пошло не так в стане" )
        endif
    endfunction
присвой всем переменным значения HeroArcheressSkillALevel, HeroArcheressSkillACircle , HeroDefenderSkllBLevel
0
9
8 лет назад
0
globals
integer HeroArcheressSkillACircle = 0
endglobals
function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
if ( HeroArcheressSkillACircle < HeroArcheressSkillALevel ) then
if ( HeroArcheressSkillACircle == 0 ) then
call PauseUnitBJ( true, GetEnumUnit() )
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Стан" )
endif
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
set HeroArcheressSkillACircle = HeroArcheressSkillACircle + 1
call TriggerSleepAction (1.00)
call TriggerExecute ( gg_trg_HeroArcheressSkillAFirst )
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Урон" )
else
call UnitDamageTargetBJ( udg_HeroArcheress, GetEnumUnit(), 500, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
call TriggerSleepAction (1.00)
call UnitRemoveBuffBJ ( 'B006' , GetEnumUnit() )
call PauseUnitBJ( false , GetEnumUnit() )
call RemoveUnit ( HeroArcheressSkillADammi )
set HeroArcheressSkillACircle = 0
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Выход" )
endif
endfunction
function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, ("Запуск переменная равна: " + I2S (HeroArcheressSkillACircle) ) )
call ForGroupBJ( HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage )
endfunction
===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
set gg_trg_HeroArcheressSkillAFirst = CreateTrigger( )
call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction
А с наполнением даже так не пашит.
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, ("Запуск переменная равна: " + I2S (HeroArcheressSkillACircle) ) ) единственная адкватно работающая строка
Хотя если где то ошибка с переменными, он должен был хотя бы сказать:
call DisplayTimedTextToForce( GetPlayersAll(), 1.00, "Выход" )
0
7
8 лет назад
0
globals
	integer HeroArcheressSkillACircle = 0, HeroArcheressSkillALevel = 0
endglobals
0
9
8 лет назад
Отредактирован WakVellios
0
Прописана в вызывающем триггере. Вообщем точнее:
Есть инициализация глобалок. Это триггер номер 1.
Есть триггер применения способности 2.
И триггер на нанесение периодического урона 3.
Проверял глобалки, они с нормальными значениями, 2 триггер создает дамми, нормально присваивает ему переменную. Третий триггер который я собственно и не могу разобрать, запускается, и все на этом. Как дело долшло до выбора группы целей, он замыкается в себе и вырубается.
Загруженные файлы
0
7
8 лет назад
0
не заметил сразу еще одну ошибку
unit HeroArcheressSkillADammi = null
0
9
8 лет назад
0
Поставил. он по прежнему отказывается работать. Во втором триггере исправил переменную юнита, с udg_Archeress на udg_HeroArcheress
0
7
8 лет назад
Отредактирован Ige
0
потерялся в коде) где группа HeroArcheressSkillAGroup создается?
globals
	integer PlayerNumber = 1, HeroArcheressSkillALevel =  -1, HeroArcheressSkillACircle = -1 , HeroDefenderSkllBLevel =-1
	location ArcheressAbilityTargetPoint
	real Bonus = 0
	group HeroArcheressSkillAGroup = CreateGroup()
	unit HeroArcheressSkillADammi = null
endglobals
0
9
8 лет назад
0
На первом скриншоте
Инициализируется
Тут заполняется юнитами
Загруженные файлы
0
7
8 лет назад
0
в общем я вижу как юниты добавляются в группу HeroArcheressSkillAGroup, но не вижу, где эта группа создается
	set HeroArcheressSkillAGroup = CreateGroup()
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.