PT153, Вау, а я не знал. Этот вопрос был создан как раз для того чтоб найти способ избежать утечек из-за добавления события, а не для того чтоб вы писали очевидные вещи. Но пока, альтернативы ни на гуи ни на джасс никто не предоставил.
С чего Вы взяли, что создаётся утечка от добавления события? Об этом много статей, и, насколько мне известно, как только юнит умирает, все события, связанные с ним, удаляются.
Тем более Вам нужно это для всего 1 юнита! О какой утечке вообще речь?
Я указал на ошибку, из-за которой добавляется много одинаковых событий (а следом баги и лаги):
То, что делаете Вы, будет работать ужасно, так как событие будет добавляться каждый раз, когда юнит атакован, и триггер по созданию текста будет срабатывать столько раз, сколько событий.
Триггер Init.
События - Юнит входит в Вся карта.
Условия - Тип юнита равно Манекен.
Действия - Добавить событие в триггер Maneken Боевая единица Вошедший юнит получает урон.
Триггер Maneken.
События - ИХ НЕТ.
Условия - Атакованный юнит находится в области (какая нужна).
Действия - Создать плавающий текст над Атакованный юнит (и прочее).
То, что делаете Вы, будет работать ужасно, так как событие будет добавляться каждый раз, когда юнит атакован, и триггер по созданию текста будет срабатывать столько раз, сколько событий.
hook 'nativefunc' 'func'
hook нужен для выполнения некоторых действий, когда вызывается нативка. При этом аргументы функции func должны совпадать с аргументами nativefunc.
P. S.: не делайте так:
function onRemoval takes unit u returns nothing
call RemoveUnit(u)
endfunction
hook RemoveUnit onRemoval
PT153, одно обращение к хт = 2 обращения к массиву.
Структуры помогают только когда ты записываешь в хт индекс структуры, по которому и ищеш данные в массивах.
Для переодик таймера я уже кинул пример как еще можно, там вовсе локалки.
widget можно дать кастомное число, и туда я записываю номер структуры. SetUserData быстрее доступа в хеш? Просто я хотел лишь иметь такую же функцию у таймеров.
спойлер - хештаблицы медленнее в сравнении с доступом по массиву. как только ты дописываешь еще пару строк к массиву (т.к. тебе надо вычислить ключ), внезапно хт становится быстрее. так что не мудри
нет ничего быстрее нативок. а каждая строка JASS-кода существенно замедляет работу. Экономия на спичках
Ага, то есть
integer array DATA
...
local integer a = DATA[GetHandleId(timer)]
медленнее чем
hashtable DATA
...
local integer a = LoadInteger(DATA, GetHandleId(timer), 0)
TriggerEvalute наследует поток из которого запущен
Я вот так тоже думал, хотел убедиться в этом. А зачем тогда добавлять действия, если они никогда не вызываются? И это нормально, что TriggerAddAction берёт функцию, которая что-то возвращает?
Ещё вот что интересно. В TriggerAddCondition() можно просто передавать функцию (то есть без Condition), причём даже функцию, которая возвращает что-то отличное от boolean (вроде). Но тут всё же используется функция Condition(). Зачем?
Покрутите графу "Тип". Если не поможет, то перезапустите редактор. Если и это не поможет, то уберите галку "Нестандартные технологии" и используйте триггеры.
Создай на основе предметной способности Аура Смерти или любой другой, у которой показывается иконка, поставь в неё все данные другого предмета, убрав лишнее, и войну дай ту и ту способность и будет тебе иконка.
Зачем юзать ауры, когда можно взять готовые болванки, типа Asth или Agyb.
Только ручное применение - неизвестно, я так и не нашел инфы по этому.
Тут как всегда локализаторы постарались. В оригинале это Unique Cast, что интуитивно понятно, что значит: если отдавать приказ группе, то заклинание будет использовано только одним юнитом, а не всеми.
адрес будет переиспользован, когда объект больше в игре не существует. хендл при этом может и не освободиться - т.е. прошлый останется навсегда "занятым". Реальный адрес никакой роли при этом не играет. RemoveUnit заставляет движок забыть о юните, что иногда чревато, лучше убивать, а потом таймером Remove, либо просто позволить ему разложиться (с тем же эффектом, но стандартная работа игры)
Хм, а если у юнита стоит Can't raise, does not decay, то он сразу разложится, как только пройдёт Death Time?
» WarCraft 3 / Опять они
Ред. PT153
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
Тем более Вам нужно это для всего 1 юнита! О какой утечке вообще речь?
Ред. PT153
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
События - Юнит входит в Вся карта.
Условия - Тип юнита равно Манекен.
Действия - Добавить событие в триггер Maneken Боевая единица Вошедший юнит получает урон.
События - ИХ НЕТ.
Условия - Атакованный юнит находится в области (какая нужна).
Действия - Создать плавающий текст над Атакованный юнит (и прочее).
Ред. PT153
» WarCraft 3 / как триггерно поменять слот предмета?
Ред. PT153
» WarCraft 3 / потеряны аргументы: missing define arguments
hook нужен для выполнения некоторых действий, когда вызывается нативка. При этом аргументы функции func должны совпадать с аргументами nativefunc.
Ред. PT153
» WarCraft 3 / Покупка в спелбуках
А предметы? В некоторых картах что-то такое видел.
» WarCraft 3 / Создание image
Ред. PT153
» WarCraft 3 / Создание image
» WarCraft 3 / Создание image
» WarCraft 3 / Покупка в спелбуках
» WarCraft 3 / Иниц. глоб. переменных
По-моему, когда я пытался так написать, меня крашился вар. Тоже самое с CreateRegion().
» WarCraft 3 / DestroyGroup()
» WarCraft 3 / GetTimerUserData
PT153: Хотелось бы это узнать.
» WarCraft 3 / GetTimerUserData
Ред. PT153
» WarCraft 3 / GetTimerUserData
Я думаю, что нет, но суть понял, спасибо.
Ред. PT153
» WarCraft 3 / как сделать из обычного юнита героя
Последствия мне неизвестны.
» WarCraft 3 / Строение структур
» WarCraft 3 / Строение структур
Ред. PT153
» WarCraft 3 / Строение структур
И это нормально, что TriggerAddAction берёт функцию, которая что-то возвращает?
Ещё вот что интересно. В TriggerAddCondition() можно просто передавать функцию (то есть без Condition), причём даже функцию, которая возвращает что-то отличное от boolean (вроде). Но тут всё же используется функция Condition(). Зачем?
Ред. PT153
» WarCraft 3 / Юниты пропали из меню "Технологии"
» WarCraft 3 / Иконки способностей для предметов
» WarCraft 3 / Как сделать свиток телепорта из доты?
Ред. PT153
» WarCraft 3 / Настройка Канала
Ред. PT153
» WarCraft 3 / Утечка или не утечка.
Ред. PT153
» WarCraft 3 / Утечка или не утечка.