Введение. Memory Leak (англ. Утечка памяти) это опасная вещь, которая очень часто встречается в Warcraft и приводит к небольшим / невыносимым лагам или просто напросто повисанию. Что может вызывать утечку памяти? Утечку памяти вызывают GUI триггеры которые оставляют за собой не удалённые вещи: - Точка - Группа юнитов - Группа игроков - Спецэффекты - Звуки Расскажу я про самое распространённое (про точку) - Позиция воина (Position of unit) - Точка с полярным смещением (Point with Polar offset) - Точка со смещением по оси координат (Point with offset) - И все остальные точки (включая центр региона и случайную точку там-же) Начнём с элементарного (эффекты, звуки). Чтобы убрать мемори лик от спецэффекта или звука нужно просто-напросто сделать после него действие: для спецэффекта Destroy (Last created special effect) для звука Destroy (Last played sound) Теперь посложнее (точки). Позиция юнита / Точка в области: Перед тем как использовать точку пихаем её в переменную Set Loc = (Position of (Triggering unit)) или Set Loc = (Center of (Playable map area)) или Set Loc = (Random point in (Playable map area)) или то что вам нужно Далее следует ваше действие Сразу после действия удаляем точку Custom script: call RemoveLocation(udg_Loc) Ещё сложнее (Точка со смещением) Точка со смещением создаёт двойную утечку памяти, а именно: - Точка от которой ведётся смещение - Конечная точка Для того чтобы устранить утечку требуется 2 переменных, а далее всё по плану Set Loc = (Position of (Triggering unit)) Set Loc2 = (Loc offset by 256.00 towards 90.00 degrees) Далее идёт ваше действие с использованием второй (!) переменной Custom script: call RemoveLocation(udg_Loc2) Custom script: call RemoveLocation(udg_Loc) Вот собственно и всё |