Правильно ли будет написать такой код для карты с кучей заклинаниями, чтобы все обрабатывал 1 триггер? Есть ли что-то плохое в этом?
    function Actions takes nothing returns nothing
        local integer abilid = GetSpellAbilityId()

        if (abilid == 'A006') then
            call DoSomething()
        elseif (abilid == 'A001')
	    call DoSomething()
	elseif (abilid == 'A002')
	    call DoSomething()
	elseif (abilid == 'A003')
	    call DoSomething()
	elseif (abilid == 'A004')
	    call DoSomething()
	elseif (abilid == 'A005')
	    call DoSomething()
	endif
    endfunction


    function Init takes nothing returns nothing
        local trigger trg = CreateTrigger()
        call TriggerRegisterPlayerUnitEvent(trg, Player(0),  EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
        call TriggerAddAction(trg, function Actions)
        set trg = null
    endfunction

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

То что ты сделал не быстрее, но вот писать так очень неудобно, лучше сделать как привели пример во втором посту, ибо так довольно удобно.
У меня вовсе 1 триггер на все спеллы, просто добавляю имя нужной функции в бд + ро код спелла и радуюсь, не надо какждый раз писать делать триггер, писать события и условия, когда просто сделал функцию где описал все что нужно от спелла и занес её в бд, просто и удобно.
Работать это дело будет в любом случаи, хоть по 1 триггерну на каждый спелл, хоть ветвление как у тебя, хоть экзекуты.
0
26
7 лет назад
0
да нет, все верно.
0
1
7 лет назад
0
Думаю, лучше использовать это.
0
27
7 лет назад
Отредактирован MpW
0
Вроде бы все правильно. Ничего страшного нет, но если у тебя очень много скилов, то мб сделать базу данных.
Единственное, что неудобно искать. Когда функции дохера в один файлик вложено.
Недавно была тема на этот вопрос xgm.guru/p/wc3/190367
0
16
7 лет назад
0
с тз движка разницы никакой, главное, чтобы ветки шли легко для тебя самого (добавление/поиск нужных)
0
32
7 лет назад
0
То что ты сделал не быстрее, но вот писать так очень неудобно, лучше сделать как привели пример во втором посту, ибо так довольно удобно.
У меня вовсе 1 триггер на все спеллы, просто добавляю имя нужной функции в бд + ро код спелла и радуюсь, не надо какждый раз писать делать триггер, писать события и условия, когда просто сделал функцию где описал все что нужно от спелла и занес её в бд, просто и удобно.
Работать это дело будет в любом случаи, хоть по 1 триггерну на каждый спелл, хоть ветвление как у тебя, хоть экзекуты.
Принятый ответ
0
5
7 лет назад
0
Вроди все правильно
0
28
7 лет назад
0
имхо писать кучу ифов не самое умное решение
мало того что неудобно так ещё при касте спела находящегося в 20 elseif выигрыш скорости теряется
лучше юзать бд
и хоть всё обрабатывается в 1 триггере массивные заклинания(более 30 строк кода) лучше хранить в разных файлах
Чтобы оставить комментарий, пожалуйста, войдите на сайт.