Всем привет создать юнит дамми с переменным или без переменной не будет ли утечкой?
local unit d = CreateUnit(GetOwningPlayer(u), 'n02T', GetUnitX(c), GetUnitY(c), 90)
call UnitApplyTimedLife(d, 'BTLF', 2)
set d = null

или без
call UnitApplyTimedLife(CreateUnit(GetOwningPlayer(u), 'n02T', GetUnitX(c), GetUnitY(c), 90), 'BTLF', 2)

Принятый ответ

rsfghd:
Гуванч
утечек это не вызовет

не?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
14
3 года назад
0
думаю эплитайм не будет корректно работать с этим так что юзай пременные и зачем ты не хочешь их юзать? всего 5 сек. и переменная объявлена\обнулена

можно еще юзать глобалку bj_lastCreatedUnit = CreateUnit(...)

и вообще я не юзаю аплитаймер а делаю отрицательный реген в РО ставлю жизнь 2 ед а реген -1 ед. и он сам умрет и ты будешь знать что даммики точно уходят без всякого остатка или можно поставить жизнь на 100 а реген на -5 за 20 сек. он уйдет
2
2
3 года назад
Отредактирован Nikolay36
2
Гуванч, ты не понял вопрос, я умею без остатков удалять и стереть дамми перeменные. Я задал вопрос о том что без переменных дамми быстро работает, просто летает, но это не вызовет ли утечек?
0
14
3 года назад
Отредактирован Гуванч
0
Nikolay36:
Гуванч:
думаю эплитайм не будет корректно работать с этим так что юзай пременные

Nikolay36:
Гуванч, ты не понял вопрос, я умею без остатков удалять и стереть дамми перeменные. Я задал вопрос о том что без переменных дамми быстро работает, просто летает, но это не вызовет ли утечек?
быстро это да но объявление это для того что бы избежать корявых багов

например я когда только только начал делать триггерные спелы вычислял урон так
арифметика(Ловкость * арифметика(10 + арифметика(100 * уровень способности))) и в итоги урон был просто смертельным но суть не в этом с переменными будет точность действий а без них не всегда

утечек это не вызовет
0
2
3 года назад
0
Гуванч, короче можно запутаться скажи, просто надо правильно вставить скопки и работать цветными кодами jass
0
14
3 года назад
0
Nikolay36:
Гуванч, короче можно запутаться скажи, просто надо правильно вставить скопки и работать цветными кодами jass
агась но не спеши может кто то по опытнее ответит тебе
1
28
3 года назад
1
Код идентичен, только первый занимает больше строк, но более удобен для дальнейших модификаций.
3
27
3 года назад
3
Гуванч, походу ты вообще не врубился что чел спросил. Насчёт самого автора - счётчик хэндлов в помощь. Он выявит есть ли тут утечка или нет. Но я и без него скажу, что ничего не утекает, второй вариант лишь быстрее работает т.к. нет объявления, обращение и обнуление переменной. У комментатора выше есть ресурс на тему утечек, можешь ознакомиться. Утекает не функция, а ссылка, если не обнулять. call RemoveLocation( Location (0, 0) ) тоже не вызовет утечки, потому что нет объявления переменной (ссылки), которую можно случайно не обнулить
0
14
3 года назад
0
rsfghd:
Гуванч
утечек это не вызовет

не?
Принятый ответ
4
27
3 года назад
4
думаю эплитайм не будет корректно работать с этим так что юзай пременные и зачем ты не хочешь их юзать? всего 5 сек. и переменная объявлена\обнулена
Это всё равно что сказать, что функция нерабочая
0
14
3 года назад
0
rsfghd:
Это всё равно что сказать, что функция нерабочая
зачем люди пытаются добиться скорости функции? есть карты которые сделаны исключительно на ГУИ и не кто не жалуется мол скорости не хватает вы делаете на джассе раскрывая BJ функции это уже увеличение скорости потому что не вызывают каждый раз другую функцию не парьтесь об этом главное результат же игроки не скажут же что в игре много утечек исправь если карта интересная то его будут играть и с утечками как говорил драколич дота стала популярной когда от и до была на ГУИ

прочитай статью об утечках там написано что 1 переменная весит 4 байта это меньше даже чем одна иконка но решать тебе если тебе это нужно делай но от этого толку уж совсем мало
2
8
3 года назад
Отредактирован goodlyhero
2
прочитай статью об утечках там написано что 1 переменная весит 4 байта это меньше даже чем одна иконка но решать тебе если тебе это нужно делай но от этого толку уж совсем мало
В некоторых картых это очень важно, например если у тебя рпг дрочильня на 3+ часов, то из-за утечек она имеет все шансы стать непроходимой дрочильней.

Например в карте Journey To The End (карта ужасна, играть не советую, но некоторые модели приятны), игра фаталит где-то на третьем-четвертом часу благодаря как раз таки необнуленным локалкам, во многом в bj функциях. (CountLivingPlayerUnitsOfTypeId - ей спасибо) .

Остальные утечки автор закрыл, во многом благодаря кастом скрипту с bj_wantdestroygroup.

Конечно, если бы кто-то решился и написал бы правильную версию blizzard.j и внес некоторые изменения в гуиишные функции - гуи бы работал сильно лучше, но я таких проектов не видел, может это никому неинтересно, не знаю.

И да, UnitApplyTimedLife - утечек не вызывает, так как просто вешает на юнита баф призванного. Если бы бафы текли варкрафт долго бы не прожил.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.