Из того что приходит в голову только триггерная атака. Ну тоесть если подумать какой толк от залпа вместо одного снаряда если урон от этого только меньше. Если например у противника уменьшение урона от каменной брони.
У меня своя система брони и атаки, просто мне нужна способность, которая выпускает в цель снаряды (то есть несколько снарядов в течение некоторого времени).
Я могу и триггерно это сделать, но вдруг есть такая способность.
PT153, Есть идеи как заменить эту функцию? Ну или строка кастом скрипта. Заодно я узнаю как это делается на джассе.
Заменить g на bj_lastCreatedGroup или любую другую глобальную переменную. Но нужно написать свои функции для общих случаев.
А так можно прямо в самом триггере.
set nospawn = CreateGroup()
call GroupEnumUnitsInRangeOfLoc(nospawn, spawn, 500., null)
...
Мне нужно это не для одного юнита. А для юнитов в области. И я проверил утечки были от того что добавлялись события.
Юнит входит в область Вся карта только 1 раз за игру, то есть событие Юнит получает урон добавляется только 1 раз. А в триггере, куда добавляется событие, есть условие (какое Вам нужно), при котором триггер будет срабатывать, как я и написал.
Триггер Init.
События - Юнит входит в Вся карта.
Условия - Тип юнита равно Манекен.
Действия - Добавить событие в триггер Maneken Боевая единица Вошедший юнит получает урон.
Триггер Maneken.
События - ИХ НЕТ.
Условия - Атакованный юнит находится в области (какая нужна).
Действия - Создать плавающий текст над Атакованный юнит (и прочее).
Всегда так делал, всё работало, и никаких утечек нет.
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
local group g = CreateGroup()
call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
call DestroyBoolExpr(filter)
return g
endfunction
Это функция, которая используется Вашим действием. Тут всё время будет утекать переменная g, так как она не обнуляется.
Не используйте группы, нахватаесть утечек от них и от локаций, которые используются во многих BJ функциях.
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 быстрее доступа в хеш? Просто я хотел лишь иметь такую же функцию у таймеров.
» WarCraft 3 / Аттачменты у способностей
Edited by PT153
» WarCraft 3 / Аттачменты у способностей
» WarCraft 3 / Баффы, основанные на одной способности
» WarCraft 3 / Засунул цепную молнию в сферу молний, а иконку никак не скрыть
Edited by PT153
» WarCraft 3 / Опять они
Edited by PT153
» WarCraft 3 / Залп снарядов
Патиссончик:
Патиссончик: А жаль. :(
Ладно, спасибо.
» WarCraft 3 / Залп снарядов
Alexey103: У меня своя система брони и атаки, просто мне нужна способность, которая выпускает в цель снаряды (то есть несколько снарядов в течение некоторого времени).
Edited by PT153
» WarCraft 3 / Опять они
А так можно прямо в самом триггере.
Edited by PT153
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
Edited by PT153
» WarCraft 3 / Опять они
Не используйте группы, нахватаесть утечек от них и от локаций, которые используются во многих BJ функциях.
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
» WarCraft 3 / Опять они
Edited by PT153
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
Тем более Вам нужно это для всего 1 юнита! О какой утечке вообще речь?
Edited by PT153
» WarCraft 3 / Add event DamageTaken создаёт утечку, как исправить?
События - Юнит входит в Вся карта.
Условия - Тип юнита равно Манекен.
Действия - Добавить событие в триггер Maneken Боевая единица Вошедший юнит получает урон.
События - ИХ НЕТ.
Условия - Атакованный юнит находится в области (какая нужна).
Действия - Создать плавающий текст над Атакованный юнит (и прочее).
Edited by PT153
» WarCraft 3 / как триггерно поменять слот предмета?
Edited by PT153
» WarCraft 3 / потеряны аргументы: missing define arguments
hook нужен для выполнения некоторых действий, когда вызывается нативка. При этом аргументы функции func должны совпадать с аргументами nativefunc.
Edited by PT153
» WarCraft 3 / Покупка в спелбуках
А предметы? В некоторых картах что-то такое видел.
» WarCraft 3 / Создание image
Edited by PT153
» WarCraft 3 / Создание image
» WarCraft 3 / Создание image
» WarCraft 3 / Покупка в спелбуках
» WarCraft 3 / Иниц. глоб. переменных
По-моему, когда я пытался так написать, меня крашился вар. Тоже самое с CreateRegion().
» WarCraft 3 / DestroyGroup()
» WarCraft 3 / GetTimerUserData
PT153: Хотелось бы это узнать.
» WarCraft 3 / GetTimerUserData