JassMan
свободен
offline
Опыт:
4,193Активность: |
TriggerRemoveAction
Я хотел научится полностью удалять триггер из памяти игры, и дошёл до этой функции, и застрял на ней.
Приведу к примеру код:
Выдаёт ошибку в строчке call TriggerRemoveAction(trg,GetAttachedTriggerAction(trg,"My_Function")): Отсутствует название.
Если закоментить эту строку, то всё нормально. Так что это 100% эта строка виновата.
Я уже везде пытался найти опечатку у себя, думал может что не правильно написал — так нет, всё верно!
Так как же удалить правильно Action от триггера? |
30.11.2010, 15:22 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
я пользуюсь этим
|
30.11.2010, 15:34 | #2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
GetAttachedTriggerAction — это вообще откуда? 16гб говорит правду. |
30.11.2010, 15:51 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
Альтернатива очистке - удаление:
((код jass
globals
trigger T = null triggeraction TA = null triggercondition TC = null endglobals )) ((код jass
trigger creation
set T = CreateTrigger() set TA = TriggerAddAction(T, function A) set TC = TriggerAddCondition(T, Condition(function B)) )) ((код jass
delete trigger call TriggerRemoveAction(T, TA) call TriggerRemoveCondition(T, TC) call DestroyTrigger(T) )) |
30.11.2010, 16:52 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
Nekit1234007 это я нашёл в CasterSystem.j
В общем, народ, как полностью удалить триггер из памяти игры?
Достаточно ли этого? : call TriggerRemoveAction(T, TA) call TriggerRemoveCondition(T, TC) call DestroyTrigger(T) |
30.11.2010, 18:07 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
я делаю так
|
30.11.2010, 18:17 | #6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
ну а remove чем отличается?
Это как с группами? clear чистит но не удаляет, а remove уже память игры освобождает. |
30.11.2010, 18:20 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
это удаляет все действия и условия тригера, твои удаляют 1 условие или одно действие |
30.11.2010, 18:23 | #8
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
всё тобою сказанное противоречит тому, что Алекс написал: set TA = TriggerAddAction(T, function A) |
30.11.2010, 19:56 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
а если в тригере 80 действий что по одному удалять? |
30.11.2010, 20:04 | #10
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
JassMan,
не противоречит, внимательно прочитай, это альтернатива. Значение слова альтернатива не есть противоречие )), ну думаю просто ты не заметил, не важно я отошел от темы. Точный ответ на твой вопрос тебе может дать только составитель нативок, то-есть разработчики близзарда.
Ну из моего предположения: ремув сработает быстрее, тк система сразу получит указатель на действие триггера, а очистка потребует некоторого времени на самостоятельный поиск этого указателя. Ну как видишь исходя из моей логики я бы офк пользовался бы remove'ом, но если у тебя кол-во действий в триггере велико, то пользуйся очисткой. А в общем ты зря время тратишь на такие тонкости |
30.11.2010, 21:20 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
У меня вопрос по этой теме,если я сделаю как сделал AlexKARASb, то дейсвия будут удалятся,а при новом событии заново создаватся,т.е не удаляя в конце дейсвия и условия является утечкой??? или это не обязательно |
30.11.2010, 21:46 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
ничего само собой не создается, действия создаются непосредственно заданным вами кодом. переформулируйте свой вопрос, тк не понятно что в вопросе вы хотели спросить. И да это будет утечкой - не удалить триггер полностью каждый ваш вопрос страннее предыдущего, обязательность растяжимое понятие. При рациональном управлении данными, да; а при решении задачи любыми способами лишь бы был результат, нет. |
30.11.2010, 22:21 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
AlexKARASb:
AlexKARASb:
Cпасибо то что надо) |
30.11.2010, 22:49 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
вообще вроде полностью удалить триггер невозможно, так что лучше думать о целесообразности использования такой конструкции |
30.11.2010, 22:51 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
идиоты...
отсоединение действия от триггера не уничтожает это действие... |
04.12.2010, 15:26 | #16
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|