NIKZ
Изучаю Jass
offline
Опыт:
6,036Активность: |
Есть ли здесь утечки?
((код jass
function Trig_Swift_punch_run2_Conditions takes nothing returns boolean
if ( not ( IsUnitAliveBJ(udg_Mage) == true ) ) then return false endif return true endfunction function Trig_Swift_punch_run2_Actions takes nothing returns nothing
if ( RectContainsUnit(RectFromCenterSizeBJ(GetUnitLoc(udg_target), 250.00, 250.00), udg_Mage ) != true ) then call SetUnitPositionLocFacingLocBJ( udg_Mage, PolarProjectionBJ(GetUnitLoc(udg_Mage), 66.00, AngleBetweenPoints(GetUnitLoc(udg_Mage), GetUnitLoc(udg_target))), GetUnitLoc(udg_target) ) call IssueTargetOrderBJ( udg_Mage, "attack", udg_target ) else call DisableTrigger( GetTriggeringTrigger() ) endif endfunction function InitTrig_Swift_punch_run2 takes nothing returns nothing set gg_trg_Swift_punch_run2 = CreateTrigger( ) call DisableTrigger( gg_trg_Swift_punch_run2 ) call TriggerRegisterTimerEventPeriodic( gg_trg_Swift_punch_run2, 0.04 ) call TriggerAddCondition( gg_trg_Swift_punch_run2, Condition( function Trig_Swift_punch_run2_Conditions ) ) call TriggerAddAction( gg_trg_Swift_punch_run2, function Trig_Swift_punch_run2_Actions ) endfunction )) Есть ли тут утечки? |
31.03.2012, 00:05 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
тут
RectFromCenterSizeBJ(GetUnitLoc(udg_target), 250.00, 250.00) и тут
call SetUnitPositionLocFacingLocBJ( udg_Mage, PolarProjectionBJ(GetUnitLoc(udg_Mage), 66.00, AngleBetweenPoints(GetUnitLoc(udg_Mage), GetUnitLoc(udg_target))), GetUnitLoc(udg_target) ) считать сколько их там даже не буду, много |
31.03.2012, 00:24 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NIKZ
Изучаю Jass
offline
Опыт:
6,036Активность: |
И как их оптимизировать?) Я просто еще нуб в Jass) |
31.03.2012, 00:26 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
|
31.03.2012, 02:02 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NIKZ
Изучаю Jass
offline
Опыт:
6,036Активность: |
((код jass
function Trig_Swift_punch_cast2_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00T' ) ) then return false endif return true endfunction function Trig_Swift_punch_cast2_Actions takes nothing returns nothing
set udg_Mage = GetTriggerUnit() set udg_target = GetSpellTargetUnit() call IssueTargetOrderBJ( udg_Mage, "attack", udg_target ) call SetUnitAnimation( udg_Mage, "walk" ) call TimerStart(CreateTimer(),0.04,true,function Trig_Swift_punch_run2_Actions) endfunction function InitTrig_Swift_punch_cast2 takes nothing returns nothing set gg_trg_Swift_punch_cast2 = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Swift_punch_cast2, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Swift_punch_cast2, Condition( function Trig_Swift_punch_cast2_Conditions ) ) call TriggerAddAction( gg_trg_Swift_punch_cast2, function Trig_Swift_punch_cast2_Actions ) endfunction )) наверное IssueTargetOrderBJ Кстати как устранять их? Утечек? |
31.03.2012, 03:11 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
весь код - однга большгая утешка |
31.03.2012, 04:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
В этой статье есть про утечки. Также, посмотри статьи с форума из подраздела статьи. Там тоже что-то было.
Вся твоя функция - просто конверт GUI в джасс. Из утечек там только отсутствия обнуления udg_Mage и udg_target (после смерти/удаления юнита они будут ссылаться на область памяти с ним, поэтому будет мини-утечка, пока этим переменным не присвоят другие значения).
Конкретно у IssueTargetOrderBJ( udg_Mage, "attack", udg_target ) можно просто удалить "BJ", и будет вызываться нативная функция, но не везде так просто.
Воспользуйся этими ссылкам:
Закрыто. |
31.03.2012, 22:25 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|