Добавлен Феникс
function damage takes nothing returns nothing
local effect e = AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodFootman.mdl", GetEnumUnit(), "chest") // Создаём спецэффект //
call UnitDamageTarget(caster, GetEnumUnit(), 100, TRUE, FALSE, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
call TriggerSleepAction(0.3)
call DestroyEffect(e)
set e = null
endfunction
Почему утекает спецэффект?
Принятый ответ
function check takes nothing returns boolean
local unit u = GetFilterUnit()
local player p = GetOwningPlayer(caster)
local real coneAngle = TransferDegrees(bj_RADTODEG * Atan2(GetUnitY(u) - GetUnitY(caster), GetUnitX(u) - GetUnitX(caster)))
local real sector = 30
local boolean answer = u != caster and IsUnitEnemy(u, p) and IsUnitVisible(u, p) and IsUnitAliveBJ(u) and GetUnitFacing(caster) - coneAngle <= sector and GetUnitFacing(caster) - coneAngle >= sector - sector*2
set u = null
set p = null // игрока можно не обнулять, их всё же очень конечное количество.
return answer
endfunction
Потому что никто из твоих FilterUnit() не был убран из игры. Без обнуления после удаления юнита хэндл бы остался, а с обнулением, был бы освобождён для нового использования.На кол-во handles это никак не повлияло.
Поставь в игровых константах Decay Time - Effects время меньше, но не очень маленькое, а то анимация смерти эффекта проигрываться не будет.У них стандартное время смерти 5 секунд, смотри игровые константы.
Чтобы не плодить переменные эффекта, сделай такие функции:
function CreateEffectPoint takes string s, real x, real y returns nothing
call DestroyEffect(AddSpecialEffect(s, x, y))
endfunction
function CreateEffectTarget takes string s, widget w, string att returns nothing
call DestroyEffect(AddSpecialEffectTarget(s, w, att))
endfunction
Во время сохранения при включённой оптимизации кода и выключенном режиме дебага эти 2 функции будут "раскрыты", и в конечном коде будут только DestroyEffect(AddSpecialEffectTarget(...)).
У Inline оптимизации есть некоторые требования для передаваемых параметров, потому функции не в некоторых случаях не будут "раскрыты".
У Inline оптимизации есть некоторые требования для передаваемых параметров, потому функции не в некоторых случаях не будут "раскрыты".
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Феникс
Ред. PT153
У Inline оптимизации есть некоторые требования для передаваемых параметров, потому функции не в некоторых случаях не будут "раскрыты".
Тоже самое с boolexpr
Они никуда не утекают