При касте способности создаётся эффект на боссе, но если атаковать этого босса или другого юнита, то этот эффект с каждым ударом рандомно может прерваться или начать анимацию заново. В ранних версиях карты такого не было, анимация не прерывалась и не начиналась заново. Из за чего такое может происходить? Хелп

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

DarkLigthing, только 1 раз проверял? этот баг не всегда и у меня срабатывал

Всем большое спасибо за помощь. Удаляя триггеры по несколько папок, методом исключения нашёл триггеры из за которых всё это происходило, не знаю откуда там это действие в триггере, но я валерий меладзе получается

DarkLigthing, спасибо большое что подсказал проверить триггеры с событием юнит атакован)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
13
4 года назад
0

Bergi_Bear, Maniac_91, в более ранних версиях карты этого косяка не было, не смотря на то что триггеры не менялись конкретно для этого босса. Баг срабатывает не всегда, вообще не понятно что его триггерит. У меня есть предположения что это из за того что в карте добавилось больше триггеров с событиями Юнит атакован (всего их около 30), также были случаи когда открывал карту в других редакторах и сохранял.

Maniac_91, делал босса неуязвимым и в этот момент атаковал другого юнита - это всё равно триггерило баг, вообще что в варике может вызвать прерывание или самопроизвольный запуск анимации эффекта?
2
18
4 года назад
2
На прикреплённом видео видно, как заклинание (основанное на "Огненном ударе" Чародея крови, полагаю) наносит периодический урон, и при каждом получении урона на паладина цепляется эффект. Чтобы избежать этого, можно ввести логическую переменную. Например, назовём её Fire_Effect. При атаке делаем проверку. "Если Fire_Effect = Да", то не запускаем действия. "Если Fire_Effect = Нет", то устанавливаем "Fire_Effect = Да" и продолжаем все оставшиеся действия, в конце устанавливаем "Fire_Effect = Нет". Также в условия нужно добавить, что "Атакованный юнит = Огненный паладин 0043", чтобы триггер не реагировал на атаки по другим юнитам.
триггеров с событиями Юнит атакован (всего их около 30)
На мой взгляд, лучше сделать одним триггером с несколькими событиями "Юнит получает урон" (не "атакован") и проверкой условиями "Триггерный юнит равно ...".
что в варике может вызвать прерывание или самопроизвольный запуск анимации эффекта?
На ум приходят только триггеры.
2
15
4 года назад
Отредактирован DarkLigthing
2
Переписал триггер без Wait, спецэффект перестал сбиваться.
function EndEffect takes nothing returns nothing
    call DestroyEffect(udg_FirePalladinEffect01)
    call PauseUnit(gg_unit_E000_0043, false)
    call IssueImmediateOrder( gg_unit_E000_0043, "thunderclap" )
    call PauseTimer(GetExpiredTimer())
    call DestroyTimer(GetExpiredTimer())
endfunction

function Trig_FirePalladin04_Actions takes nothing returns nothing
    local timer t = CreateTimer()
    if GetRandomInt(1,2) == 1 then
     else
     set udg_FirePalladinEffect01 = AddSpecialEffectTarget("war3mapImported\\File00802.mdx", gg_unit_E000_0043, "origin")
     call PauseUnit(gg_unit_E000_0043,true)
     call SetUnitAnimation( gg_unit_E000_0043, "Stand Channel" )
     call TimerStart(t,3.00,false,function EndEffect)
     endif
     set t = null
endfunction

//===========================================================================
function InitTrig_FirePalladin04 takes nothing returns nothing
    set gg_trg_FirePalladin04 = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_FirePalladin04, 13.00 )
    call TriggerAddAction( gg_trg_FirePalladin04, function Trig_FirePalladin04_Actions )
endfunction

Нужно избавляться от wait. Вместо wait тебе нужно будет запустить таймер, который по окончанию вызовет функцию, продолжающую необходимые действия. В эту функцию значения локально не передать, только через хэш-таболицу, либо через глобалки. И вообще надо взять за правило всегда избегать wait если это возможно.
0
13
4 года назад
Отредактирован easypeasy
0
На прикреплённом видео видно, как заклинание (основанное на "Огненном ударе" Чародея крови, полагаю) наносит периодический урон, и при каждом получении урона на паладина цепляется эффект
Способность на основе удара грома, кастуется в самом конце действий триггера, после спецэффекта. Видимо не ту способность посмотрел, в вопросе я прикрепил скриншот с триггерами для этой способности

Нужно избавляться от wait. Вместо wait тебе нужно будет запустить таймер, который по окончанию вызовет функцию, продолжающую необходимые действия.
Вместо wait я пробовал запускать таймер, и через событие когда этот таймер закончится - совершал остальные действия триггера(анпаузил босса, удалял эффект, и кастовал Удар грома) но при этом всё равно эффект прерывался. Я может что то не так делаю, можно ли на гуи через обычный таймер этот пофиксить?

DarkLigthing, у тебя точно работает без прерывания эффекта?
Вот я даже просто создаю эффект на боссе и эффект при атаке этого босса всё равно начинает прерываться и даже пропадает
походу дело не в действии wait
Загруженные файлы
2
15
4 года назад
2
easypeasy:
Вместо wait я пробовал запускать таймер, и через событие когда этот таймер закончится - совершал остальные действия триггера(анпаузил босса, удалял эффект, и кастовал Удар грома) но при этом всё равно эффект прерывался. Я может что то не так делаю, можно ли на гуи через обычный таймер этот пофиксить?
Если ты всё сделал правильно с таймером, то возможно это не wait. Единственное отличие моего кода от того что в GUI это отсутствие BJ функций, таймер точно такой же. Может это BJ конфликтует с чем-то в другой части триггеров. А такое пофиксить без вмешательства Jass... проблематично. Пока что идей нет, но ты можешь убедиться что мой код работает если конвертируешь свой триггер Paladin04 в текст и заменишь его содержимое, тем что я дал выше.
2
7
4 года назад
Отредактирован Mechanicus
2
easypeasy, может лучше создавать эффект не на юните, а на точке где он находится?
0
13
4 года назад
0
DarkLigthing, я тут обнаружил что при создании любого эффекта на любой боевой единице, при атаке эффект может прерваться или пропасть, а может ли такое быть что у меня в карте есть код, (который я когда то ипортировал через другие редакторы, создающий этот баг) и который я сейчас не вижу через стандартный редактор варика?

Mechanicus, это тоже не помогает, эффект может прерываться или пропасть вообще

но ты можешь убедиться что мой код работает если конвертируешь свой триггер Paladin04 в текст и заменишь его содержимое
боюсь я это не осилю, только в гуи немного разбираюсь
2
15
4 года назад
2
easypeasy:
DarkLigthing, я тут обнаружил что при создании любого эффекта на любой боевой единице, при атаке эффект может прерваться или пропасть, а может ли такое быть что у меня в карте есть код, (который я когда то ипортировал через другие редакторы, создающий этот баг) и который я сейчас не вижу через стандартный редактор варика?
Возможно дело вот в чём, значит, при создании эффекта через триггеры ты наверняка знаешь, что он записывается во внутриигровую глобальную переменную bj_lastCreatedEffect именно к ней ты обращается, когда в триггерах выбираешь вариант (Last Created Special Effect). Проверь если эта переменная перезаписывается где-то в коде периодический или при атаке юнита.
0
13
4 года назад
0
DarkLigthing, хорошо, проверю ещё раз все триггеры. А у тебя прерывание эффекта до того как переписал триггер было?
2
15
4 года назад
2
easypeasy:
DarkLigthing, хорошо, проверю ещё раз все триггеры. А у тебя прерывание эффекта до того как переписал триггер было?
Было, так же как у тебя на видео. Теперь так:
Загруженные файлы
1
13
4 года назад
1
DarkLigthing, только 1 раз проверял? этот баг не всегда и у меня срабатывал

Всем большое спасибо за помощь. Удаляя триггеры по несколько папок, методом исключения нашёл триггеры из за которых всё это происходило, не знаю откуда там это действие в триггере, но я валерий меладзе получается

DarkLigthing, спасибо большое что подсказал проверить триггеры с событием юнит атакован)
Загруженные файлы
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.