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

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

Ответ
 
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Утечка
Есть ли здесь утечка?
Код:
function Trig_Night_Elf_Special_Actions takes nothing returns nothing
local effect u
   local location l
    set l = GetRandomLocInRect(GetPlayableMapRect()) 
    call AddSpecialEffectLocBJ( l, "Abilities\\Spells\\NightElf\\Starfall\\StarfallTarget.mdl" )
    set u =( GetLastCreatedEffectBJ() )
    call TriggerSleepAction( GetRandomReal(1.00, 2.00) )
    call DestroyEffectBJ( u )
    set u = null
    set l = null
endfunction

//===========================================================================
function InitTrig_Night_Elf_Special takes nothing returns nothing
    set gg_trg_Night_Elf_Special = CreateTrigger(  )
    call DisableTrigger( gg_trg_Night_Elf_Special )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Night_Elf_Special, GetRandomReal(10.00, 35.00) )
    call TriggerAddAction( gg_trg_Night_Elf_Special, function Trig_Night_Elf_Special_Actions )
endfunction


Тэг "code" вам в помощь...

Отредактировано DioD, 30.09.2006 в 15:56.
Старый 30.09.2006, 12:31
J
expert
offline
Опыт: 48,447
Активность:
утечка есть!!! щас я тебе сделаю как надо...

Jon добавил:
Код:
function Trig_Night_Elf_Special_Actions takes nothing returns nothing
    local real   X = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
    local real   Y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))    
    local effect u = AddSpecialEffect("Abilities\\Spells\\NightElf\\Starfall\\StarfallTarget.mdl", X, Y)
    call TriggerSleepAction(GetRandomReal(1, 2))
    call DestroyEffect(u)
    set u = null
endfunction

//===========================================================================
function InitTrig_Night_Elf_Special takes nothing returns nothing
    set gg_trg_Night_Elf_Special = CreateTrigger()
    call DisableTrigger           ( gg_trg_Night_Elf_Special                                         )
    call TriggerRegisterTimerEvent( gg_trg_Night_Elf_Special, GetRandomReal(10, 35), true            )
    call TriggerAddAction         ( gg_trg_Night_Elf_Special, function Trig_Night_Elf_Special_Actions)
endfunction


ищи 10 различий:)

но я чето не понимаю зачем тебе удалять эфект имено через рандомное время... но как было так и сделал...
Старый 30.09.2006, 15:42
Sergey
Старейший
offline
Опыт: 44,363
Активность:
GetPlayableMapRect() - функция, которая создает регион размером с карту. Регион создает, но не удаляет. Знчит - учечка.
set l = GetRandomLocInRect(GetPlayableMapRect())
  • создает точку (не считая региона). Точка создается, но не удаляется (не путать с действиемсм
set l = null - это обнуляет переменную, но не удаляет объект).
Итого: 2 утечки.
Старый 30.09.2006, 15:47
J
expert
offline
Опыт: 48,447
Активность:
Sergey почему? GetPlayableMapRect() возвращает переменую уже готового "региона на всю карту" (которая одна на всю игру)... и ничего нового не создает вроде как...
Старый 30.09.2006, 15:48
DioD

offline
Опыт: 45,134
Активность:
Код:
function Trig_Night_Elf_Special_Actions takes nothing returns nothing
    local rect z = GetWorldBounds()
    local location l=GetRandomLocInRect(z)
    local effect u=AddSpecialEffectLocBJ( l, "Abilities\\Spells\\NightElf\\Starfall\\StarfallTarget.mdl" )
    call TriggerSleepAction( GetRandomReal(1.00, 2.00) )
    call DestroyEffect( u )
    call RemoveRect(z)
    call RemoveLocation(l)
    set u = null
    set l = null
    set z = null
endfunction
Старый 30.09.2006, 15:55
J
expert
offline
Опыт: 48,447
Активность:
DioD диод как всегда опоздал:)
Старый 30.09.2006, 15:56
dk

offline
Опыт: 60,293
Активность:
Что-то я про ремув точки не посмотрел! А про GetPlayableMapRect() я думал, что утечки не дает.

Отредактировано Dead_knight, 30.09.2006 в 16:18.
Старый 30.09.2006, 15:57
DioD

offline
Опыт: 45,134
Активность:
GetWorldBounds()
вот эта функция требуется для создания и удаления ректа с карту
Старый 30.09.2006, 15:59
J
expert
offline
Опыт: 48,447
Активность:
DioD и кодик у тя кривоват...
Цитата:
Что-то я про ремув точки не посмотрел!

всмысле? где имено?
Цитата:
А про GetPlayableMapRect() я думаю, что утечки не дает.

угу.. мне тоже так кажется...
Старый 30.09.2006, 15:59
DioD

offline
Опыт: 45,134
Активность:
ткните пальцем а то я не понял где и что надо
Старый 30.09.2006, 16:00
dk

offline
Опыт: 60,293
Активность:
Цитата:
всмысле? где имено?

Да я про свой первый пост. Косанул я.
Старый 30.09.2006, 16:03
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Всем огромное спасибо!!!
Старый 30.09.2006, 16:49
remal
нечто
offline
Опыт: 2,087
Активность:
народ, вы бредите. GetPlayableMapRect возвращает ссылку на переменную и не создаёт утечку.
Старый 30.09.2006, 23:31
DioD

offline
Опыт: 45,134
Активность:
эта функция возращает готовую глобалку ну ни как не ссылку.
Старый 01.10.2006, 07:23
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от DioD
эта функция возращает готовую глобалку ну ни как не ссылку.

а теперь представь как выглядит реализация данного момента на C++, на котором написан интерпритатор. возвращается указатель. ещё вопросы?
Старый 01.10.2006, 20:05
IIIAXMATUCT

offline
Опыт: 30
Активность:
GetRectCenter() тоже утечку создаёт, очень удивился когда узнал.
Или утекает только рект?
Т.е. set udg_location = OffsetLocation( GetRectCenter(GetEntireMapRect()), x, y ).
Старый 07.12.2006, 12:07
DioD

offline
Опыт: 45,134
Активность:
две точки + рект
Старый 07.12.2006, 12:40
p01nTT

offline
Опыт: 11,160
Активность:
а как насчёт bj_playableMapArea?? если я конечно названием не ошибся
Старый 07.12.2006, 12:59
J
expert
offline
Опыт: 48,447
Активность:
Код:
Т.е. set udg_location = OffsetLocation( GetRectCenter(GetEntireMapRect()), x, y ).

GetRectCenter - первая точка
OffsetLocation - вторая точка
GetEntireMapRect() - 1 рект

Jon добавил:
p01nTT bj_playableMapArea - ты ошмбся.. может ты имел ввиду bj_mapInitialPlayableArea?? это переменая константа, она не создает рект, он всегда в ней...
Старый 07.12.2006, 15:55
p01nTT

offline
Опыт: 11,160
Активность:
Jon А если её использовать?
Старый 08.12.2006, 11:27
Ответ

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

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

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

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



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