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

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

Закрытая тема
 
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
Несколько вопросов по оптимизации
Ммм... поехали
Требуется ли обнулять хэндлы из перечня параметров которые функция берет?
Вызывает ли утечку, к примеру, Location(GetUnitX(u),GetUnitY(u))?
следует ли обнулять глобальные переменные хэндлы перед их перезаписью (прим. - udg_unit)?
спасает ли функция set bj_wantDestroyGroup = true от утечки при использовании ForGroup?
Старый 11.11.2010, 04:07
_Red

offline
Опыт: 4,095
Активность:
FKoFF:
Требуется ли обнулять хэндлы из перечня параметров которые функция берет?
не помню
FKoFF:
Вызывает ли утечку, к примеру, Location(GetUnitX(u),GetUnitY(u))?
да
FKoFF:
следует ли обнулять глобальные переменные хэндлы перед их перезаписью (прим. - udg_unit)?
обнулять - необезательно, удалять - да
FKoFF:
спасает ли функция set bj_wantDestroyGroup = true от утечки при использовании ForGroup?
только от одной (удаление группы)
Старый 11.11.2010, 05:17
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
_Red:
обнулять - необезательно, удалять - да
как ты удалишь хэндл юнита из глобальной переменной?

Отредактировано FKoFF, 11.11.2010 в 06:17.
Старый 11.11.2010, 06:05
_Red

offline
Опыт: 4,095
Активность:
RemoveUnit(unit)
unit=null
пологаю примерно так
Старый 11.11.2010, 07:28
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
_Red,
насколько мне известно достаточно убить юнита и обнулить переменную дальше вар всё сделает сам
Старый 11.11.2010, 07:56
Nekit1234007

offline
Опыт: 11,916
Активность:
Автор вообще читал как пользоваться джассом и про типы его данных?
Старый 11.11.2010, 08:04
Klop
Папа римский
offline
Опыт: 13,006
Активность:
FKoFF:
Location(GetUnitX(u),GetUnitY(u))
Используй координаты зачем Location
FKoFF:
Требуется ли обнулять хэндлы из перечня параметров которые функция берет?
Незнаю я стараюсь обнулять всё
FKoFF:
следует ли обнулять глобальные переменные хэндлы перед их перезаписью (прим. - udg_unit)
смотря в каком случае,если переменная используется в спелл,то после выполнения спелла надо обнулять если там виси какой то нужный тебе герой ,а потом его перезаписываеш то вроде ненадо
FKoFF:
спасает ли функция set bj_wantDestroyGroup = true от утечки при использовании ForGroup?
зачем это надо,изначальне заноси группу в локалку например
local group g = CreateGroup()
local boolexpr b = Condition(function Filter)
call GroupEnumUnitsInRange(g,x,y,500,b)
call ForGroup(g,function Damage)
call DestroyBoolExpr(b)
call DestroyGroup(g)
set g = null
set b = null
Что то вроде такого
Старый 11.11.2010, 08:16
JassMan
свободен
offline
Опыт: 4,193
Активность:
По поводу Location писал вчера xgm.ru/forum/showpost.php?p=931093&postcount=8
По поводу группы:
local group g=CreateGroup()
local boolexpr b=Condition(function bla_bla) Добавляем функцию на условия и записывает этот бул-экспр в переменную для дальнейшего удаления.
call GroupEnumUnitsInRange(g,x,y,radius,b) Если условия не нужны, то вместо b ставится null.
call ForGroup(g,function GroupActions)
call DestroyGroup(g)
call DestroyBoolExpr(b)
set g=null
set b=null
Любые переменные кроме типов: boolean, integer, real, string, player — нужно обнулять
А объекты ремувить или дестроить
Хотя юнитов достаточно убить а дальше вар сам их удалить по истечению некоторого времени. Просто можно это сделать сразу. Тем самым освободив хендл
Старый 11.11.2010, 08:24
_Red

offline
Опыт: 4,095
Активность:
16GB:
_Red,
насколько мне известно достаточно убить юнита и обнулить переменную дальше вар всё сделает сам
верно, но варкрафт подождет пока юнит разлагается, ведь пока валяется труп его можно воскресить, или сделать из него скелетов, удаляя его сразу мы освобождаем хендл (как сказал JassMan )
Старый 11.11.2010, 08:41
ScorpioT1000
Работаем
offline
Опыт: отключен
Требуется ли обнулять хэндлы из перечня параметров которые функция берет?
нет, насколько мне известно от адольфа и тоадкопа, в стеке они очищаются сами (что странно, ведь сами по себе локальные переменные тоже работают в "стеке")
ScorpioT1000 добавил:
JassMan всё правильно говорит вроде
ScorpioT1000 добавил:
удаляя его сразу мы освобождаем хендл
там вроде при ремуве не срабатывают эвенты итп, и типа если у тебя событие зарегистрировано на "юнит умирает", допустим, удалить его из какойто очереди, то тут это не сработает. ну вобщем это просто надо всё иметь ввиду
Старый 11.11.2010, 11:40
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
Nekit1234007:
Автор вообще читал как пользоваться джассом и про типы его данных?
звучит как попытка самовыражения из уст молодого подавана.
Остальных благодарю, тему можно закрывать.
Старый 11.11.2010, 14:20
Nekit1234007

offline
Опыт: 11,916
Активность:
Не читал, ок.
Старый 11.11.2010, 14:23
Закрытая тема

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

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

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

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



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