У меня есть герой, основной фишкой которого я планировал сделать чередование абилок. То есть, применив, допустим, молот бурь, эта способность заменялась бы в панели приказов на удар грома, и наоборот. Стоит заметить, что способности, которые я хочу чередовать - это способности НЕ героя, а юнита. То есть, всё что надо было бы по идее сделать, это скрывать одну способность в панели приказов и показывать новую.
И вот в чём проблема: когда я пытаюсь отследить применение молота бурь (способности юнита, которую я спионерил у Горного короля, о да), то у меня ничего не выходит. Я использовал все события, связанные со способностями, и момент каста Молота бурь всё равно не регистрируется, и способность не скрывается. Что посоветуете?
Внизу прикрепил триггер, которым я пытался решить это дело. Аналогичная структура, но с другими способностями, должна была быть для удара грома непосредственно.

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

Я победил. Я использовал другую способность и мой креативный мозг в очередной раз оказался сильней. Но я оставлю вопрос открытым, потому что мне просто интересно как бы вы это решили.
Ответы (2)
9
Makeba, Да нет, я просто приспособил для своих целей способность на основе Винных Паров, и всё сработало замечательно.
25
Эм... но у тебя же в триггере всего 1 проверка на использование МОлота бурь, в обратную сторону на использование удара грома ты не проверяешь :D
+ много лишних событий. Так ты можешь вызвать триггер несколько раз за применение 1 способки что не хорошо для твоей системы.

Хотя если у тебя такой-же триггер сделан для удара грома - то опять же, просто удали все лишние события, оставь только одно событие. И лучше всего оставить "прекращает применение способности".

По поводу альтернатив - кроме блокировки способностей можно было бы добавлять / удалять их, особенно если таких юнитов у тебя много или больше 1, то твоя система уже не работала корректно.
Ответы (2)
9
Эм... но у тебя же в триггере всего 1 проверка на использование МОлота бурь, в обратную сторону на использование удара грома ты не проверяешь :D
+ много лишних событий. Так ты можешь вызвать триггер несколько раз за применение 1 способки что не хорошо для твоей системы.

Хотя если у тебя такой-же триггер сделан для удара грома - то опять же, просто удали все лишние события, оставь только одно событие. И лучше всего оставить "прекращает применение способности".

По поводу альтернатив - кроме блокировки способностей можно было бы добавлять / удалять их, особенно если таких юнитов у тебя много или больше 1, то твоя система уже не работала корректно.
Речь не об этом. Триггер на проверку Удара грома у меня есть, он работает замечательно, я проверил. Другой вопрос, почему молот бурь не отлавливается. Вот это для меня загадка дыры была.
25
Just_Orc, не понимаю тебя. Как не отлавливается? Ты 100% что-то попутал. Вот пустая карта сделал за минуту и все ловит:
И тест:
Все работает изи. И не надо пихать 4 событий, одного вполне хватит.
Вот тебе этот тест карта пример.
Загруженные файлы
8
Вот так вот?
'AQQQ' - Удар грома
'AWWW' - Молот бурь
library Spell

    function SpellFunc takes nothing returns nothing
        local unit u = GetTriggerUnit()
        if GetSpellAbilityId() == 'AQQQ' 
            UnitRemoveAbility(u,'AQQQ')
            UnitAddAbility(u,'AWWW' )
        elseif GetSpellAbilityId() == 'AWWW' 
            UnitRemoveAbility(u,'AWWW')
            UnitAddAbility(u,'AQQQ' )
        endif
    endfunction

    function SpellFunc_Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_ENDCAST )
        TriggerAddAction(t, function SpellFunc )
    endfunction

endlibrary
Ответы (3)
5
Tredor46, Плохой способ из-за сбрасывания перезарядки способности. При удалении способности, так же сбрасывается её перезарядка. И при дальнейшем добавлении её же, можно будет использовать снова.
Лучше, всё таки блокировать для игрока.
Но нужно помнить, если имеется несколько таких бойцов с такими способностями, то способность будет не видна у остальных бойцов.
9
DazzleFirst, Это нормально потому что боец у нас герой, и он на игрока такой один
23
Я бы пробовал отлов приказа через событие юнит отдал приказ, если у абилки есть ид приказа. Если нет, то поменял бы абилку на абилку с приказом
Ответы (1)
9
EugeAl, Я тоже об этом подумал. Однако честно говоря, я решил уже не морочить себе голову и просто сделать способность на основе Винных паров. Так чередование одной способности и другой работает для моих целей просто замечательно. Но сам факт того, что молот бурь почему-то с трудом поддаётся отлову, меня позабавил
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.