Чел кидал пример работы с фильтрами, там в коде он обнуляет переменную после return, что, естественно, у меня вызвало ошибку.
Пример его кода:
function Trig_Kill_Conditions takes nothing returns boolean
local unit u = GetTriggerUnit()
local integer i = GetUnitTypeId(u)
return IsUnitType(u, UNIT_TYPE_TOWNHALL) == false or \
i != 'hfoo' or \
i != 'n006'
set u = null
endfunction
Пример моего кода:
private boolean dwFilter() {
unit u = GetFilterUnit()
integer id = GetUnitUserData(u)
unit u2 = LoadUnitHandle(HT, id, waterguardsBase_hid)
return (GetUnitUserData(u) == 'n002') and (UnitAlive(u)) and ((DistanceBetweenCoords(GetUnitX(u), GetUnitY(u), GetUnitX(u2), GetUnitY(u2)) >= 850.00) or (not UnitAlive(u2)))
u = null
u2 = null
}
Как у него все работает?
Не вводить переменные, которые оставляют после себя утечки?
Но с локальными переменные работает быстрее, чем постоянно ссылаться на GetFilterUnit() или постоянно загружать с хэш-таблицы.
Не вводить переменные, которые оставляют после себя утечки?
Но с локальными переменные работает быстрее, чем постоянно ссылаться на GetFilterUnit() или постоянно загружать с хэш-таблицы.
Принятый ответ
Эмм как насчет глобальных переменных, т.к в фильтрах ты не создаешь условия а только делаешь проверки, без разрыва потока вейтами, то глобалки доступное и изящное решение.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
KaneThaumaturge, Почему не выйдет? Что собрался делать напиши, какое условие?
Я так сделал, думаю не особо затратно будет:
Отредактирован quq_CCCP
Только непойму почему ты не можешь юзать глобалки? В них просто заносишь нужные данные перед условием как в локалки и все, но их обнулять ненужно.
Отредактирован KaneThaumaturge
Я сделал, спасибо. Хотя второй вариант тоже не плох.