Обнулял всё, что только в голову взбрело, даже то, что не нужно, и всё равно они есть.. Как же оно задолбало. Может что-то пропустил, не обнулил, не удалил, я хз.
Научите нуба, пожалуйста, избавляться от этой саранчи. Практически среди всех способностей похожего типа присутствуют эти 1-3 утечки, которые растут при быстром касте абилок
Прикладываю карту
Научите нуба, пожалуйста, избавляться от этой саранчи. Практически среди всех способностей похожего типа присутствуют эти 1-3 утечки, которые растут при быстром касте абилок
Прикладываю карту
Принятый ответ
Код:
globals
hashtable H = InitHashtable()
real x
real y
group g = CreateGroup()
real MaxX
real MinX
real MaxY
real MinY
unit bj_lastFilterUnit = null
endglobals
function GetCorX takes real x returns real
if ( x < MinX ) then
return MinX
endif
if ( x > MaxX ) then
return MaxY
endif
return x
endfunction
function GetCorY takes real y returns real
if ( y < MinY ) then
return MinY
endif
if ( y > MaxY ) then
return MaxY
endif
return y
endfunction
function Trig_Frost_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A000' )
endfunction
function Enemy_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and GetWidgetLife(bj_lastFilterUnit) > 0.405 and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE )
endfunction
function Group_Damage_Enemy_Enum takes nothing returns nothing
local unit enemy = GetEnumUnit()
call UnitDamageTarget( bj_lastReplacedUnit, enemy, 100.00, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS )
call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\FrostArmor\\FrostArmorDamage.mdl", enemy, "chest" ) )
set enemy = null
endfunction
function Timer_Dummy_Move_Expires takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = GetHandleId(t)
local unit cast = LoadUnitHandle( H, id, 0 )
local unit dummy = LoadUnitHandle( H, id, 1 )
local real facing = LoadReal( H, id, 2 )
local real dist = LoadReal( H, id, 3 ) + 32.00
set x = GetCorX( GetUnitX(dummy) + 32.00 * Cos( facing ) )
set y = GetCorY( GetUnitY(dummy) + 32.00 * Sin( facing ) )
call SetUnitX( dummy, x )
call SetUnitY( dummy, y )
call GroupClear( g )
set bj_groupEnumOwningPlayer = GetOwningPlayer( cast )
call GroupEnumUnitsInRange( g, x, y, 125.00, Condition( function Enemy_Filter ) )
if dist < 1500.00 and FirstOfGroup( g ) == null then
call SaveReal( H, id, 3, dist )
else
call GroupClear( g )
set bj_groupEnumOwningPlayer = GetOwningPlayer( cast )
call GroupEnumUnitsInRange( g, x, y, 225.00, Condition( function Enemy_Filter ) )
set bj_lastReplacedUnit = cast
call ForGroup( g, function Group_Damage_Enemy_Enum )
call FlushChildHashtable( H, id )
call PauseTimer(t)
call DestroyTimer(t)
call KillUnit(dummy)
endif
set t = null
set cast = null
set dummy = null
endfunction
function Trig_Frost_Actions takes nothing returns nothing
local timer t = CreateTimer()
local integer id = GetHandleId(t)
local unit cast = GetSpellAbilityUnit()
local real dx = GetUnitX(cast)
local real dy = GetUnitY(cast)
local real facing = Atan2(GetSpellTargetY() - dy, GetSpellTargetX() - dx)
local unit dummy = CreateUnit( GetOwningPlayer(cast), 'u000', GetCorX( dx + 64.00 * Cos(facing) ), GetCorY( dy + 64.00 * Sin(facing) ), facing * bj_DEGTORAD )
call SetUnitPathing( dummy, false )
call UnitApplyTimedLife( dummy, 'BTLF', 0.00 )
call SaveUnitHandle( H, id, 0, cast )
call SaveUnitHandle( H, id, 1, dummy )
call SaveReal( H, id, 2, facing )
call SaveReal( H, id, 3, 0.00 )
call TimerStart( t, 0.03125, true, function Timer_Dummy_Move_Expires )
set cast = null
set dummy = null
set t = null
endfunction
//===========================================================================
function InitTrig_Frost takes nothing returns nothing
set gg_trg_Frost = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Frost, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Frost, Condition( function Trig_Frost_Conditions ) )
call TriggerAddAction( gg_trg_Frost, function Trig_Frost_Actions )
endfunction
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
беды с олдовостью
Отредактирован DracoL1ch
Проблема таймеров 0.01 в высокой нагрузке при нулевом смысле в этой самой скорости. Пару снарядов сделать так можно, но для активно используемых вещей 002 более чем хорошо, даже 0.325 терпимо для не чётких моделей
Отредактирован ScorpioT1000
Отредактирован rsfghd
Утечек нет или что?