Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
Как удалить события из триггера ?
Как удалить все события из тригера на JASS ? |
26.12.2010, 17:21 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Icy
Это Я!
offline
Опыт:
1,785Активность: |
Может быть я скажу хрень - но никак!
Но есть конечно альтернатива: создать новый триггер и добавить в него все условия и действия твоего триггера |
26.12.2010, 17:32 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
в том то и дело что удалять триггер и создавать новый - утечно т.к старый триггер удаляется не поностью, как мне недавно сказали. |
26.12.2010, 17:41 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Icy
Это Я!
offline
Опыт:
1,785Активность: |
Zanozus, оО, кто сказал???
Если вызвать действия очищения условий и действий, то даже байта в памяти не останется.
Хотя это не факт, мб структура триггера не удаляется из памяти, а удаляются только его действия, условия и события, ну и прочая хрень, связанная со списками и не нужная для нового тригера |
26.12.2010, 17:48 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
фапать на утечки надо тогда, когда у тебя эти действия будут периодическими. если ты пару раз пересоздашь триггер - ничего страшного не будет |
26.12.2010, 18:08 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
действия будут периодическими, поэтому и говорю про утечки. |
26.12.2010, 18:12 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Icy
Это Я!
offline
Опыт:
1,785Активность: |
Zanozus, близы конечно ещё те перцы, но у них не настолько кривые руки, чтобы движок создавал утечки(если скрипт написан без них)
Да и вместо того, чтобы пинать воздух, возьми да и запусти периодик триггер с 0.01 периодом и твоим действием пересоздания, в жассе я вижу ты шариш, так что писать код мне не нужно |
26.12.2010, 18:19 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Exp
offline
Опыт:
435Активность: |
Zanozus, события удаляются только в процессе дестроя триггера. Условия и действия можно (и нужно) удалить отдельно, перед дестроем.
|
26.12.2010, 19:02 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
а что насчет утечек после удаленич тригера ? Можно поподробнее насколько они велики ? |
26.12.2010, 19:12 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Exp
offline
Опыт:
435Активность: |
Zanozus, они есть, на счёт размера не осведомлём, но если не будешь сздавать и удалять 500+ тригеров в секунду, то не заметишь.
В конце концов системы детекта урона, те, которые работают на динамическом создании триггеров, не вешают компы даже в мясных картах. |
26.12.2010, 19:25 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
просто я сейчас пишу систему по определению манакоста спелла, там примерно при каждом изменении маны удаляется и создается новый триггер, почти закончил, остался только этот вопрос. |
26.12.2010, 19:32 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Icy
Это Я!
offline
Опыт:
1,785Активность: |
Zanozus, можешь спокойно создавать и удалять триггер, НО ПРИ ОДНОМ УСЛОВИИ:
1 - не использовать TriggerClearActions
2 - не использовать TriggerClearConditions всё же близы криворукие и это нифига не удаляет действия и условия
3 - запоминать так же как и триггер, его действия и условия в переменные и после, того как он не понадобится, сначала удалить все действия используя TriggerRemoveAction, потом условия используя TriggerRemoveCondition, обнулить все эти переменные, потом уже удалять триггер и обнулять его переменную
При соблюдении этого условия у тебя не будет ни одной утечки от твоей системы
Icy добавил:
Zanozus, можешь спокойно создавать и удалять триггер, НО ПРИ ОДНОМ УСЛОВИИ: 1 - не использовать TriggerClearActions
2 - не использовать TriggerClearConditions всё же близы криворукие и это нифига не удаляет действия и условия
3 - запоминать так же как и триггер, его действия и условия в переменные и после, того как он не понадобится, сначала удалить все действия используя TriggerRemoveAction, потом условия используя TriggerRemoveCondition, обнулить все эти переменные, потом уже удалять триггер и обнулять его переменную
При соблюдении этого условия у тебя не будет ни одной утечки от твоей системы |
26.12.2010, 19:48 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
нашел переменные типа triggeraction и triggercondition как в них сохранять ? (пример) |
26.12.2010, 19:59 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Icy
Это Я!
offline
Опыт:
1,785Активность: |
Создание:
Удаление:
|
26.12.2010, 20:54 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
кондишины удалять не надо. |
26.12.2010, 21:04 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
Эту тему можешь почитать |
26.12.2010, 21:30 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
тогда возник такой вопрос: как сохранить переменную типа triggeraction в хеш-таблицу ? последняя фраза Dioda в той теме меня просто убила. Что это значит ? Что нет никакого смысла удалять действие отдельно от триггера ? |
26.12.2010, 21:40 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,707Активность: |
Zanozus, для системы, определяющей манакост спела нужно 2 триггера (не динамических), все. |
26.12.2010, 21:42 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
это я знаю: Юнит приводит способность в действие и юнит завершает применение способности. проблема если спелл со Временем подготовки тогда регенерация маны исказит результат. Чтобы точно определить и прикрутил сюда еще событие мана юнита становится меньше N. А его нужно создавать динамически и потом удалять. |
26.12.2010, 21:50 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,707Активность: |
Zanozus, ну тогда, наверное следует изменить первое событие на "Начинает применять способность" ? В JASS называется EVENT_PLAYER_UNIT_SPELL_CHANNEL. И уж тогда не триггер создавать на каждого юнита, а таймер, который будет смотреть изменение маны юнита. |
26.12.2010, 22:27 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|