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

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

Ответ
 
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
Я все с нуля делаю сам.
На скринах видны 2 системы: инвентарь и прокачка характеристик. Система инвентаря общеизвестная, он сделан на спеллбуках, а система прокачки придумана только мною, и именно в ней эта проблема.

Цитата:
call DestroyTrigger()

Киньте ссылку на динамическое создание и удаление триггеров без утечек, или напишите код-пример
Старый 06.02.2009, 13:12
alexkill

offline
Опыт: 18,872
Активность:
Код:
function Dinam takes nothing returns nothing
    local trigger t = GetTriggeringTrigger() // срабатываемый динамический триггер
    .... // действия триггера
    call DestroyTrigger(t) // и его удаление
    set t = null
endfunction

function Actions takes nothing returns nothing
    local trigger t = CreateTrigger() // создание динамического триггера t
    local unit u = GetTriggerUnit()
    call TriggerRegisterUnitEvent(t, u, EVENT_UNIT_USE_ITEM) // событие для динамического триггера t (как пример - использование предмета)
    call TriggerAddAction( t, function Dinam) // действие для триггера t
    set u = null
    set t = null
endfunction
Старый 06.02.2009, 13:21
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
А при удалении триггера событие в нем удаляется? и не засоряет ли память этот способ?
Старый 06.02.2009, 13:44
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
JaBeN_Симфер, все удаляется.
Старый 06.02.2009, 13:46
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
Спасибо, буду пробовать, через неделю напишу ответ
Старый 06.02.2009, 13:47
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от JaBeN_Симфер
А при удалении триггера событие в нем удаляется? и не засоряет ли память этот способ?

Вообще-то других способов не существует.
Но раз уж ты заговорил о памяти: лучше все-таки создать переменную типа triggeraction и triggercondition (если есть условие) с соотв. действием и условием, и аттачить ее к хэндлу триггера, а потом в потоке триггера их удалять, используя ф-ции:
Код:
native TriggerRemoveAction  takes trigger whichTrigger, triggeraction whichAction returns nothing

и
Код:
native TriggerRemoveCondition takes trigger whichTrigger, triggercondition whichCondition returns nothing

Но обычно так никто не поступает.
Старый 06.02.2009, 13:55
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
я сделаю, т.к. событие очень частое
спасибо
Старый 06.02.2009, 17:51
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от JaBeN_Симфер
я сделаю, т.к. событие очень частое
спасибо

Если событие частое, то зачем нужно удалять триггер? Просто отключи, а затем, когда понадобится, снова включай.
Старый 06.02.2009, 18:01
Ответ

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

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

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

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



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