function InitTrig_Explode_Corpses takes nothing returns nothing local trigger trig = CreateTrigger() local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) exitwhen i == 11 set i = i + 1 endloop call TriggerAddCondition(trig, Filter(function Trig_Explode_Corpses_Conditions)) call TriggerAddAction(trig, function Trig_Explode_Corpses_Actions) set trig = null endfunction
Тут создаётся локальный триггер. В чём разница между локальным триггером и глобальным триггером?
В чём разница между локальным триггером и глобальным триггером?
Такая же как и глобальная группа и локальная + глобалный триггер автоматически прописываеться CreateTrigger() если ты создал его в Редакторе триггеров.
Глобальный триггер все равно будет висеть в карте. Так зачем создавать еще и локалку, если уже есть глобальная переменная?
Добавлено (01 Декабрь 2011, 22:35:14) --------------------------------------------- Разницы в производительности не будет. Локалку еще и обнулить надо будет
Если они периодически создаются во время игры, а не при ините. А так - практически все равно.
Если я создаю локальный триггер в ините триггера, тоесть под полосой //================= Вот так например:
Code
local trigger trig = CreateTrigger() local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) exitwhen i == 11 set i = i + 1 endloop call TriggerAddCondition(trig, Filter(function Trig_Explode_Corpses_Conditions)) call TriggerAddAction(trig, function Trig_Explode_Corpses_Actions) set trig = null
Это ведь создаёт локальный триггер всего 1 раз, не так ли?
Quote (SirNikolas)
Чтобы выкинуть глобалку триггера из блока globals.
Quote (|DUОS|)
А смысл? Ты же не сможешь обратиться тогда к нему из другого тригга.
В большинстве случаев это и не нужно. А зачем нужна глобалка, которая не используется?
SirNikolas, Ставлю ситуацию. Тебе нужно массово регнуть юнитов на событие дамага, причём если появляется новый юнит, то его должно тоже регать. Твои хвалёные локалтригги с этим не справятся.
Офк меньше. Сейвать тригги в хэш, конечно, выход, но какова гарантия того, что ты сам не забудешь, куда ты его сохранил? Я так однажды переписывал интегер и гадал, почему он принимает левые значения
[DUОS], глобальный массив триггеров со значениями локальных триггеров или завести глобалку типа триггер сделать ей set = этот ваш локальный триггер и в другой функе использовать эту глобалку
И зачем лишнее действие? Создать локальный триггер (это занять ячейку памяти), приравнять его к глобальному (лишнее действие), чтобы потом банально обнулить локальный. Зачем? Игра не стоит свеч, Холмс.