Товарищи, прошу вас о помощи, у меня почему то отказали некоторые триггеры *до этого работали* а некоторые вообще работают косячно, кто бы мог помочь? Я над этой картой работаю уже где то год. Пожалуйста, СПАСИТЕ, ВЫТАЩИТЕ МЕНЯ ИЗ ЭТОЙ КЛЕТКИ!

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

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

ответ
А приказ остановиться не пробовали?
ответ
во первых
код после ретурна не выполняется и 2 ретурна писать нельзя
во вторых
ты статьи вообще читал?
в самых начальных статьях по джасс сказано что так писать нельзя
это сказано в самых начальных статьях про локальные переменные
в третьих это не стол заказов
ответ
короче, вот рабочий вариант
смотреть сюда
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

21
возможно, принудительное завершение потока
10
ClotPh:
возможно, принудительное завершение потока
даже если так, как это исправить?
28
Конкретнее опишите проблему. Какие именно триггеры не работают?
10
Босс то включает огненные столбы и такаяющий урон, то нет. книжка спуаниться 2 раза из кобальда, звук у 2рого кобальда не воспроизводиться, и т.д. случилось это недавно, когда я начал разрабатывать диалог 1 и диалог 2, и в целом триггеры для башни магов.
PT153:
Конкретнее опишите проблему. Какие именно триггеры не работают?
но не сразу, а звук у кобальда не работает в триггере кобольды в корридоре. и они работали, работали, и бац, перестали. Я потом удалил пару триггеров, где то 4 переменные и перелопатил старые, чтобы сократить триггерный апокалипсис один хрен..
18
Taurenus, надеюсь, осталась копия карты ДО этих косяков? Тогда можно будет с ней поработать - сократить количество триггеров, удалить утечки памяти. Если не осталась, то придётся работать с такой версией.
Нужно объединить триггеры с одинаковыми событиями. Например, "Юнит атакован". Собрать все события атаки юнита, скопировать их в новый триггер, а в нём уже делать проверку: если атакованный юнит равен такому-то, то делать одни действия, иначе проверить, равен ли атакованный юнит другому. Периодические триггеры ("Каждые 1.0 секунд) объединить, убрав из условий триггера (Bloodkei = 1 или 2 или 3 и т. д .) в условия в действиях (If/Then/Else). Ещё можно (даже нужно) объединить триггеры с событием "Инициализация карты" и заменить это событие на "Время - прошло 0.01 с.", потому что не все действия возможно выполнить при инициализации карты. Чтобы не запутаться, можно оставлять комментарии (есть такое действие).
Насчёт утечек памяти - советую прочитать про это статью, да и вообще весь сборник статей про освоение JASS и дополнение к нему. После чего с новыми полученными знаниями оптимизировать карту.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.