XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
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
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
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
И как их оптимизировать?) Я просто еще нуб в Jass)
Старый 31.03.2012, 00:26
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
//Вместо того, чтоб "включать" триггер как раньше вызывай это:
//custom code: call TimerStart(CreateTimer(),0.04,true,function Trig_Swift_punch_run2_Actions)

function Trig_Swift_punch_run2_Actions takes nothing returns nothing
    local real mx=GetUnitX(udg_Mage)
    local real my=GetUnitY(udg_Mage)
    local real tx=GetUnitX(udg_target)
    local real ty=GetUnitY(udg_target)
    local real angle-0.
    if ((((mx>=tx-250.) and (mx<=tx+250.)) and ((my>=ty-250.) and (my<=ty+250.))) or (GetWidgetLife(udg_Mage)<=0.)) then
        //Если udg_Mage находится в квадратной области со стороной 500. и центром в точке udg_target
        //Или умер
        call DestroyTimer(GetExpiredTimer())
    else
        set angle=Atan2(ty-my,tx-mx)
        call SetUnitPosition(udg_Mage,mx+66.*Cos(angle),my+66.*Sin(angle))
        call IssueTargetOrder(udg_Mage,"attack",udg_target)
    endif
endfunction
Старый 31.03.2012, 02:02
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
OK
Hellfim,
А здесь есть утечки??
((код 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
ScorpioT1000
Работаем
offline
Опыт: отключен
весь код - однга большгая утешка
Старый 31.03.2012, 04:32
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
В этой статье есть про утечки. Также, посмотри статьи с форума из подраздела статьи. Там тоже что-то было.
Вся твоя функция - просто конверт GUI в джасс. Из утечек там только отсутствия обнуления udg_Mage и udg_target (после смерти/удаления юнита они будут ссылаться на область памяти с ним, поэтому будет мини-утечка, пока этим переменным не присвоят другие значения).
Конкретно у IssueTargetOrderBJ( udg_Mage, "attack", udg_target ) можно просто удалить "BJ", и будет вызываться нативная функция, но не везде так просто.
Воспользуйся этими ссылкам:
Закрыто.
Старый 31.03.2012, 22:25
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:52.