![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
Как удалить события из триггера ?
Как удалить все события из тригера на JASS ? |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Icy
Это Я!
![]() ![]() offline
Опыт:
1,785Активность: |
Может быть я скажу хрень - но никак!
Но есть конечно альтернатива: создать новый триггер и добавить в него все условия и действия твоего триггера |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
в том то и дело что удалять триггер и создавать новый - утечно т.к старый триггер удаляется не поностью, как мне недавно сказали. |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Icy
Это Я!
![]() ![]() offline
Опыт:
1,785Активность: |
Zanozus, оО, кто сказал???
Если вызвать действия очищения условий и действий, то даже байта в памяти не останется.
Хотя это не факт, мб структура триггера не удаляется из памяти, а удаляются только его действия, условия и события, ну и прочая хрень, связанная со списками и не нужная для нового тригера |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Скайнет
Kicked by ZlaYa1000
![]() ![]() offline
Опыт:
8,234Активность: |
фапать на утечки надо тогда, когда у тебя эти действия будут периодическими. если ты пару раз пересоздашь триггер - ничего страшного не будет |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
действия будут периодическими, поэтому и говорю про утечки. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Icy
Это Я!
![]() ![]() offline
Опыт:
1,785Активность: |
Zanozus, близы конечно ещё те перцы, но у них не настолько кривые руки, чтобы движок создавал утечки(если скрипт написан без них)
Да и вместо того, чтобы пинать воздух, возьми да и запусти периодик триггер с 0.01 периодом и твоим действием пересоздания, в жассе я вижу ты шариш, так что писать код мне не нужно |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Exp
![]() offline
Опыт:
435Активность: |
Zanozus, события удаляются только в процессе дестроя триггера. Условия и действия можно (и нужно) удалить отдельно, перед дестроем.
|
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
а что насчет утечек после удаленич тригера ? Можно поподробнее насколько они велики ? |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Exp
![]() offline
Опыт:
435Активность: |
Zanozus, они есть, на счёт размера не осведомлём, но если не будешь сздавать и удалять 500+ тригеров в секунду, то не заметишь.
В конце концов системы детекта урона, те, которые работают на динамическом создании триггеров, не вешают компы даже в мясных картах. |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
просто я сейчас пишу систему по определению манакоста спелла, там примерно при каждом изменении маны удаляется и создается новый триггер, почти закончил, остался только этот вопрос. |
![]() |
#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, обнулить все эти переменные, потом уже удалять триггер и обнулять его переменную
При соблюдении этого условия у тебя не будет ни одной утечки от твоей системы |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
нашел переменные типа triggeraction и triggercondition как в них сохранять ? (пример) |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Icy
Это Я!
![]() ![]() offline
Опыт:
1,785Активность: |
Создание:
Удаление:
|
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
кондишины удалять не надо. |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
JassMan
свободен
![]() offline
Опыт:
4,193Активность: |
Эту тему можешь почитать |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
тогда возник такой вопрос: как сохранить переменную типа triggeraction в хеш-таблицу ? последняя фраза Dioda в той теме меня просто убила. Что это значит ? Что нет никакого смысла удалять действие отдельно от триггера ? |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hellfim
Новичок
![]() ![]() offline
Опыт:
79,707Активность: |
Zanozus, для системы, определяющей манакост спела нужно 2 триггера (не динамических), все. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Zanozus
Уехал учиться
![]() ![]() offline
Опыт:
8,512Активность: |
это я знаю: Юнит приводит способность в действие и юнит завершает применение способности. проблема если спелл со Временем подготовки тогда регенерация маны исказит результат. Чтобы точно определить и прикрутил сюда еще событие мана юнита становится меньше N. А его нужно создавать динамически и потом удалять. |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hellfim
Новичок
![]() ![]() offline
Опыт:
79,707Активность: |
Zanozus, ну тогда, наверное следует изменить первое событие на "Начинает применять способность" ? В JASS называется EVENT_PLAYER_UNIT_SPELL_CHANNEL. И уж тогда не триггер создавать на каждого юнита, а таймер, который будет смотреть изменение маны юнита. |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|