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

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

Ответ
 
Созерцатель

offline
Опыт: 82
Активность:
Вопрос по утечкам - редактор WCIII
Доброго времени суток, такой вот вопрос возник, вызовет ли это утечку? Если да, как удалить область которая создается (если создается) при "RectFromCenterSizeBJ(p), 1000.00, 1000.00)" ? Спасибо.
function removeitem takes nothing returns nothing
call RemoveItem( GetEnumItem() )
endfunction
function Trig_q_Actions takes nothing returns nothing
local location p
call EnumItemsInRectBJ( RectFromCenterSizeBJ(p), 1000.00, 1000.00), function removeitem )
call removeLocation (p)
endfunction
Старый 02.02.2015, 13:45
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
если в близзард.ж вы нашли ф-ию которая создает объекты - то просто разверните эту функцию, записывая объекты в переменные и удаляя когда надо
Старый 02.02.2015, 13:50
Созерцатель

offline
Опыт: 82
Активность:
дружище, я ничего не понял... Есть действие удаляющее именно область?
Старый 02.02.2015, 13:55
Melissa
Я всегда хочу как лучше!
offline
Опыт: 31,596
Активность:
call RemoveRect(udg_Rect)
Прикрепленные файлы
Тип файла: w3x Leak.w3x (19.2 Кбайт, 6 просмотров )
Старый 02.02.2015, 14:09
Созерцатель

offline
Опыт: 82
Активность:
Спасибо!
Еще вопрос...
как сделать чтобы юнит подбирал выбранный предмет без глобалок (как то типо так)
function removeitem takes nothing returns nothing
call IssueTargetItemOrder( u, "smart", GetEnumItem() )
endfunction
function Trig_q_Actions takes nothing returns nothing
local unit u
local location p
call EnumItemsInRectBJ( RectFromCenterSizeBJ(p), 1000.00, 1000.00), function removeitem )
call removeLocation (p)
endfunction
ведь локалка задается только в одной функции а вот так сделать нельзя...
function removeitem takes unit u returns nothing
ибо
call EnumItemsInRectBJ( RectFromCenterSizeBJ(p), 1000.00, 1000.00), function removeitem (u) )
работать не будет...

Отредактировано Созерцатель, 02.02.2015 в 14:29.
Старый 02.02.2015, 14:22
Melissa
Я всегда хочу как лучше!
offline
Опыт: 31,596
Активность:
Глобалки в функциях использовать можно, насколько я знаю.
А также можно передвигать регион с места на место, дабы не создавать и не удалять каждый раз.
Старый 02.02.2015, 14:34
Созерцатель

offline
Опыт: 82
Активность:
с ними я уже сделал) вопрос как сделать с локалками то же самое)) за идею передвижения большое спасибо!
Старый 02.02.2015, 14:37
Melissa
Я всегда хочу как лучше!
offline
Опыт: 31,596
Активность:
С точками то же самое кстати можно, правда в стандартном ГУИ там нет функции. Чета call movelocation(точка, икс игрек).
Насчёт локалок хз, у меня странная аллергия на них ещё с дельфи.
Старый 02.02.2015, 14:56
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Созерцатель, так безусловно делать нельзя, и ваш пример один из случаев, когда стоит использовать глобальные переменные.
Также, стоит заметить, что несмотря на то, что вы вызвали функцию RemoceLocation(p) утечка всё равно осталась, т.к. перед выходом из функции необходимо обнулить все переменные с типом handle (это unit, location и т.п., т.е. игровые объекты). Обнуление делается, например, так: set p=null
Старый 02.02.2015, 14:58
Созерцатель

offline
Опыт: 82
Активность:
Спасибо за ответы, друзья, буду делать через глобалки. Про обнуление знаю, просто не написал в примере) вопрос исчерпан.
Старый 02.02.2015, 15:14
adic3x

offline
Опыт: 108,439
Активность:
А я вам скажу, что все стандартные кампании делались на BJ с этими вашими страшными и ужасными "утечками" и замечательно игрались на древнем железе начала 2000... Нет , там конечно не делались вещи, которые делаются сейчас, но вы не должны столько времени уделять этим самым утечкам в 2015.
Старый 02.02.2015, 15:23
Созерцатель

offline
Опыт: 82
Активность:
ADOLF, согласен) просто карта вылетает, предварительно полчаса игры терпит и усё... хочется до конца чтобы игралась, уже все утечки возможные перебрал и пофиксил, но вот с этими bj вопрос у меня и возник
Старый 02.02.2015, 15:43
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,259
Активность:
ADOLF, в кампаниях то какраз вроде локации удалялись и групы, близзы таки позаботились о основных источников утечек, в картах от близзов куча темповых глобалок куда и записывают хендлы которые нужно а после удаляют....
Старый 02.02.2015, 17:56
ScorpioT1000
Работаем
offline
Опыт: отключен
посмотри cj_antibj_base.j на основе этого построено - устраняет часть утечек бж в гуи
еще есть экспериментальная ALL.j - она вообще не дает утекать локациям (и прочему, даже в гуи!), но могут потеряться "постоянные" объекты, поэтому их надо помечать специально
Старый 02.02.2015, 20:44
Созерцатель

offline
Опыт: 82
Активность:
к сожалению не дружу с cjass и vjass и редактор у меня стандартный варовский))
Старый 03.02.2015, 06:41
ScorpioT1000
Работаем
offline
Опыт: отключен
Удали его тогда)))))))))))0000000000000000
Старый 03.02.2015, 08:33
Созерцатель

offline
Опыт: 82
Активность:
да нее брось, не удалю, помогает коротать вечера
Старый 03.02.2015, 09:50
adic3x

offline
Опыт: 108,439
Активность:
Созерцатель:
просто карта вылетает, предварительно полчаса игры терпит и усё... хочется до конца чтобы игралась, уже все утечки возможные перебрал и пофиксил, но вот с этими bj вопрос у меня и возник
От утечек карты не вылетают, но начинают тормозить. Может надо было начать с вылетов?
ADOLF добавил:
в кампаниях то какраз вроде локации удалялись и групы, близзы таки позаботились о основных источников утечек
В случайном порядке открыл Undead04.w3m из RoC, ничего не удаляется, ничего не обнуляется, точки берутся как центр региона, и тому подобное. С другой стороны, там как будто нет каких либо периодических действий, поэтому нагрузка таки меньше.
Старый 03.02.2015, 11:42
Doc

offline
Опыт: 63,163
Активность:
У близзов норм код только в гоначках
Старый 03.02.2015, 12:28
adic3x

offline
Опыт: 108,439
Активность:
У близзов норм код только в гоначках
В гоночках свое движение, поэтому там и есть чему течь.
Старый 03.02.2015, 12:44
Ответ

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

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

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

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



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