![]()
JassMan
свободен
![]() offline
Опыт:
4,193Активность: |
TriggerRemoveAction
Я хотел научится полностью удалять триггер из памяти игры, и дошёл до этой функции, и застрял на ней.
Приведу к примеру код:
Выдаёт ошибку в строчке call TriggerRemoveAction(trg,GetAttachedTriggerAction(trg,"My_Function")): Отсутствует название.
Если закоментить эту строку, то всё нормально. Так что это 100% эта строка виновата.
Я уже везде пытался найти опечатку у себя, думал может что не правильно написал — так нет, всё верно!
Так как же удалить правильно Action от триггера? |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
я пользуюсь этим
|
![]() |
#2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Nekit1234007
![]() ![]() offline
Опыт:
11,916Активность: |
GetAttachedTriggerAction — это вообще откуда? 16гб говорит правду. |
![]() |
#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) )) |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
JassMan
свободен
![]() offline
Опыт:
4,193Активность: |
Nekit1234007 это я нашёл в CasterSystem.j
В общем, народ, как полностью удалить триггер из памяти игры?
Достаточно ли этого? : call TriggerRemoveAction(T, TA) call TriggerRemoveCondition(T, TC) call DestroyTrigger(T) |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
я делаю так
|
![]() |
#6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
JassMan
свободен
![]() offline
Опыт:
4,193Активность: |
ну а remove чем отличается?
Это как с группами? clear чистит но не удаляет, а remove уже память игры освобождает. |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
это удаляет все действия и условия тригера, твои удаляют 1 условие или одно действие |
![]() |
#8
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
JassMan
свободен
![]() offline
Опыт:
4,193Активность: |
всё тобою сказанное противоречит тому, что Алекс написал: set TA = TriggerAddAction(T, function A) |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
а если в тригере 80 действий что по одному удалять? |
![]() |
#10
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
AlexKARASb
Learning cpp
![]() ![]() offline
Опыт:
22,103Активность: |
JassMan,
не противоречит, внимательно прочитай, это альтернатива. Значение слова альтернатива не есть противоречие )), ну думаю просто ты не заметил, не важно я отошел от темы. Точный ответ на твой вопрос тебе может дать только составитель нативок, то-есть разработчики близзарда.
Ну из моего предположения: ремув сработает быстрее, тк система сразу получит указатель на действие триггера, а очистка потребует некоторого времени на самостоятельный поиск этого указателя. Ну как видишь исходя из моей логики я бы офк пользовался бы remove'ом, но если у тебя кол-во действий в триггере велико, то пользуйся очисткой. А в общем ты зря время тратишь на такие тонкости |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Klop
Папа римский
![]() ![]() offline
Опыт:
13,006Активность: |
У меня вопрос по этой теме,если я сделаю как сделал AlexKARASb, то дейсвия будут удалятся,а при новом событии заново создаватся,т.е не удаляя в конце дейсвия и условия является утечкой??? или это не обязательно |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
AlexKARASb
Learning cpp
![]() ![]() offline
Опыт:
22,103Активность: |
ничего само собой не создается, действия создаются непосредственно заданным вами кодом. переформулируйте свой вопрос, тк не понятно что в вопросе вы хотели спросить. И да это будет утечкой - не удалить триггер полностью каждый ваш вопрос страннее предыдущего, обязательность растяжимое понятие. При рациональном управлении данными, да; а при решении задачи любыми способами лишь бы был результат, нет. |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Klop
Папа римский
![]() ![]() offline
Опыт:
13,006Активность: |
AlexKARASb:
AlexKARASb:
Cпасибо то что надо) |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Master_chan
Полуночный командир
![]() offline
Опыт:
15,660Активность: |
вообще вроде полностью удалить триггер невозможно, так что лучше думать о целесообразности использования такой конструкции |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
идиоты...
отсоединение действия от триггера не уничтожает это действие... |
![]() |
#16
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|