Заметил, что во многих системах и наработках, что, то, что должно произойти во время активации триггера добавляют в trigger condition, a не в trigger action. Зачем это нужно?

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

Ну TriggerCondition не создает утечки, он остаётся висеть в boolexpre а вот triggeraction нужно удалять в месте с триггером ( если триггеры создаются и удаляются )
А так разницы немного, не работают вейты и другой лимит операций.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
13
7 лет назад
0
Пример?
0
32
7 лет назад
Отредактирован quq_CCCP
0
Ну TriggerCondition не создает утечки, он остаётся висеть в boolexpre а вот triggeraction нужно удалять в месте с триггером ( если триггеры создаются и удаляются )
А так разницы немного, не работают вейты и другой лимит операций.
Принятый ответ
0
21
7 лет назад
0
quq_CCCP, и какой же лимит операций? Больше или всё же меньше?
0
32
7 лет назад
0
ScopteRectuS:
quq_CCCP, и какой же лимит операций? Больше или всё же меньше?
меньше, там же нужно вернуть результат.
Но это ни играет никакой особой роли, там разница незначительна и вам никогда это не понадобится.
0
21
7 лет назад
0
quq_CCCP, пользуясь случаем, хотел еще спросить.
Нет ли какой-либо разницы в добавлении в один триггер нескольких trigger condition и trigger action (кроме вышесказанного)
call TriggerAddCondition(trig1, cond1)
call TriggerAddCondition(trig1, cond2)
call TriggerAddCondition(trig1, cond3)
call TriggerAddCondition(trig1, cond4)
call TriggerAddCondition(trig1, cond5)
// и
сall TriggerAddAction(trig2, action1)
сall TriggerAddAction(trig2, action2)
сall TriggerAddAction(trig2, action3)
сall TriggerAddAction(trig2, action4)
сall TriggerAddAction(trig2, action5)
0
32
7 лет назад
0
Ну смотря что вам нужно, все условия и действия будут выполнятся в порядке их добавления в триггер, но вот стоит одному условию, причем неважно какому по счету вернуть false как не выполнится ни один TriggerAction. Добавлять 10 условий тупо, как будто вы несможите задать критерии отбора в одном условии, а вот дейсвтий можно добавлять сколько влезет, пряпо в действиях TriggerCondition а затем удалять прямо в TriggerAction, таким образом действие выполнится только 1 раз при срабатывании триггера.
Но такое редко нужно, да и вовсе есть Execute, TimerStart, ForGroup, ForForce если вам приспичило выполнить некий code.
5
16
7 лет назад
5
есть слух, что condition разрушается автоматически. хотя, на самом деле, я не думаю, что близзарды как-то разделяли эти типы, скорее всего, оба протекают. Ведь что AddCondition(), что AddAction() создают агенты-объекты, о которых почему-то все забывают.
type triggercondition extends agent
type triggeraction extends handle
хрен его знает, как там на самом деле, я просто использую Condition() на автомате. Может, оно лучше, а может, разницы и нет. В любом случае, есть не просит - функция не обязана вообще что-либо возвращать, чтобы использоваться в триггерном Condition() (ваще ничего, ошибка только у проверки синтаксиса, игре плевать, если это не асинхронный триггер (чего я делать неопытным не рекомендую))
Про оп лимит тоже забудь, он здесь ни причем. Когда у тебя 300к операций, две на возврат значения (а оно будет, даже если ты не хочешь, игра сама присобачит return 0) ничего не решат ни в какой ситуации.
В идеале все действия можно выполнять прямо в condition, не дожидаясь перезхолда в Action (а зачем, если ты уже здесь знаешь результат, true/false?). Ну а к одному триггеру можно собачить сколько угодно Condition, которые будут выполняться в порядке каком-то (хз каком, не интересовался), но всегда все, независимо от предыдущих результатов.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.