XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Как удалить события из триггера ?
Как удалить все события из тригера на JASS ?
Старый 26.12.2010, 17:21
Icy
Это Я!
offline
Опыт: 1,785
Активность:
Может быть я скажу хрень - но никак!
Но есть конечно альтернатива: создать новый триггер и добавить в него все условия и действия твоего триггера
Старый 26.12.2010, 17:32
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
в том то и дело что удалять триггер и создавать новый - утечно т.к старый триггер удаляется не поностью, как мне недавно сказали.
Старый 26.12.2010, 17:41
Icy
Это Я!
offline
Опыт: 1,785
Активность:
Zanozus, оО, кто сказал???
Если вызвать действия очищения условий и действий, то даже байта в памяти не останется.
Хотя это не факт, мб структура триггера не удаляется из памяти, а удаляются только его действия, условия и события, ну и прочая хрень, связанная со списками и не нужная для нового тригера
Старый 26.12.2010, 17:48
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
фапать на утечки надо тогда, когда у тебя эти действия будут периодическими. если ты пару раз пересоздашь триггер - ничего страшного не будет
Старый 26.12.2010, 18:08
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
действия будут периодическими, поэтому и говорю про утечки.
Старый 26.12.2010, 18:12
Icy
Это Я!
offline
Опыт: 1,785
Активность:
Zanozus, близы конечно ещё те перцы, но у них не настолько кривые руки, чтобы движок создавал утечки(если скрипт написан без них)
Да и вместо того, чтобы пинать воздух, возьми да и запусти периодик триггер с 0.01 периодом и твоим действием пересоздания, в жассе я вижу ты шариш, так что писать код мне не нужно
Старый 26.12.2010, 18:19
Exp

offline
Опыт: 435
Активность:
Zanozus, события удаляются только в процессе дестроя триггера. Условия и действия можно (и нужно) удалить отдельно, перед дестроем.
Старый 26.12.2010, 19:02
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
а что насчет утечек после удаленич тригера ? Можно поподробнее насколько они велики ?
Старый 26.12.2010, 19:12
Exp

offline
Опыт: 435
Активность:
Zanozus, они есть, на счёт размера не осведомлём, но если не будешь сздавать и удалять 500+ тригеров в секунду, то не заметишь.
В конце концов системы детекта урона, те, которые работают на динамическом создании триггеров, не вешают компы даже в мясных картах.
Старый 26.12.2010, 19:25
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
просто я сейчас пишу систему по определению манакоста спелла, там примерно при каждом изменении маны удаляется и создается новый триггер, почти закончил, остался только этот вопрос.
Старый 26.12.2010, 19:32
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
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
нашел переменные типа triggeraction и triggercondition
как в них сохранять ? (пример)
Старый 26.12.2010, 19:59
Icy
Это Я!
offline
Опыт: 1,785
Активность:
Создание:
set ta = TriggerAddAction(trigger, action)
set tc = TriggerAddCondition(trigger, condition)
Удаление:
call TriggerRemoveAction(trigger, ta)
call TriggerRemoveCondition(trigger, tc)
Старый 26.12.2010, 20:54
DioD

offline
Опыт: 45,134
Активность:
кондишины удалять не надо.
Старый 26.12.2010, 21:04
JassMan
свободен
offline
Опыт: 4,193
Активность:
Эту тему можешь почитать
Старый 26.12.2010, 21:30
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
тогда возник такой вопрос: как сохранить переменную типа triggeraction в хеш-таблицу ?
последняя фраза Dioda в той теме меня просто убила. Что это значит ? Что нет никакого смысла удалять действие отдельно от триггера ?
Старый 26.12.2010, 21:40
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Zanozus, для системы, определяющей манакост спела нужно 2 триггера (не динамических), все.
Старый 26.12.2010, 21:42
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
это я знаю: Юнит приводит способность в действие и юнит завершает применение способности.
проблема если спелл со Временем подготовки тогда регенерация маны исказит результат.
Чтобы точно определить и прикрутил сюда еще событие мана юнита становится меньше N. А его нужно создавать динамически и потом удалять.
Старый 26.12.2010, 21:50
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Zanozus, ну тогда, наверное следует изменить первое событие на "Начинает применять способность" ? В JASS называется EVENT_PLAYER_UNIT_SPELL_CHANNEL. И уж тогда не триггер создавать на каждого юнита, а таймер, который будет смотреть изменение маны юнита.
Старый 26.12.2010, 22:27
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:28.