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

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

Закрытая тема
 
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Вызывает ли функция утечки?
Давно хотел узнать вызывает ли утечки этот код по созданию плавающего текста:

Код:
local location l = GetUnitLoc(GetSpellTargetUnit() )
    local real r = 0.15
    call CreateTextTagLocBJ( ( "-" + ( I2S(( GetHeroXP(udg_HERO[1]) - R2I(( I2R(GetHeroXP(udg_HERO[1])) * r )) )) + " EXP" ) ), l, 0, 15.00, 100, 0.00, 0.00, 0 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 1.00 )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
    call RemoveLocation(l) 
    set l = null
Старый 29.04.2009, 21:51
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
по-моему надо текст через перемнные удалять, хотя тут не уверен, а с локациями норм
Старый 29.04.2009, 21:57
agentex

offline
Опыт: 34,834
Активность:
да вызывает во первых потому что создается игровой обьект текстатг и не уничтожается, ну и BJ надо раскрывать смотреть
Старый 29.04.2009, 22:26
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
agentex А есть готовая функция создание текстага без утечек с такими же параметрами, ну какими вы жассеры пользуетесь для их создания?
Старый 29.04.2009, 22:31
agentex

offline
Опыт: 34,834
Активность:
Ninbous готовой нету нужно самому писать. суть в том чтобы созданный текстаг занести в переменную, ну а потом уничтожить его по таймеру

agentex добавил:
причем timeout этого таймера должно быть равно lifetime текстага
Старый 29.04.2009, 22:54
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
agentex Т.е. нада сделать так?

Код:
local location l = GetUnitLoc(GetSpellTargetUnit() )
    local real r = 0.15
    local string s = "Моя строка" // просто пример
    call CreateTextTagLocBJ( s, l, 0, 15.00, 100, 0.00, 0.00, 0 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 1.00 )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
    call PolledWait( 4 )
    set s = "" // вроде так обнуляются строки?
    call RemoveLocation(l) 
    set l = null
Старый 29.04.2009, 23:08
J
expert
offline
Опыт: 48,447
Активность:
Код:
local unit Target = GetSpellTargetUnit()
local real x = GetUnitX(Target)     
local real y = GetUnitY(Target)
local real r = 0.15
local texttag tt = CreateTextTag()
call SetTextTagTextBJ(tt, "-" + I2S(GetHeroXP(udg_HERO[1])*(1.0-r))+" EXP", 15)
call SetTextTagPos(tt, x, y, 0)
call SetTextTagColor(tt, 255, 0, 0, 255)
call SetTextTagVelocityBJ( tt, 64, 90 )
call SetTextTagPermanent( tt, false )
call SetTextTagFadepoint( tt, 1 )
call SetTextTagLifespan( tt, 4 )
непомню удаляется ли тег сам или нет

Отредактировано J, 01.05.2009 в 00:43.
Старый 29.04.2009, 23:24
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Ninbous, не совсем, посмотри, ты раскрыл BJ функцию, а в ней еще есть BJ. Раскрывай до конца. И кстати, строки не надо обнулять.

Hellfim добавил:
J, насколько я помню - сам удаляется, если он непостоянный.
Старый 29.04.2009, 23:33
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
J Спасибо буду юзать это как образец =)
HellfimЯ незнаю как раскрывать BJ (еше статью про BJ непрочитал), про строки буду знать, спасиб.
Старый 29.04.2009, 23:47
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Ninbous, эммм... Ну наверное я просто не так выразился. Допустим имеется BJ функция

Код:
native HideUnitBJ takes unit u returns nothing


Мы находим ее в JNPG, и смотрим что находится внтури нее, а именно

Код:
function HideUnitBJ takes unit u returns nothing
    call ShowUnit(u,false)
endfunction


И в конечный код мы пишем что-то типо

Код:
function xXx takes nothing returns nothing
    local unit z=GetTriggerUnit()
    call ShowUnit(z,false)//вместо call HideUnitBJ(z)
    //--->
    set z=null
endfunction
Старый 30.04.2009, 00:01
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
локэшион не удаляешь
всмысле до nullа нужно DestroyHandle/Location()
текстаг сам по себе очищается
Старый 01.05.2009, 00:20
Закрытая тема

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

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

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

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



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