Как оказалось, все советы, данные мне - ни о чем. И как всегда я сам нашел решение проблемы.
Quote (CHLSN)
function Trig_M_Actions takes nothing returns nothing trigger g = CreateTrigger() unit d = GetAttacker() unit u = GetTriggerUnit() if not IsUnitType( u, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then TriggerAddAction( g, function Trig_M_Attack ) TriggerRegisterUnitEvent( g, u, EVENT_UNIT_DAMAGED ) endif d = null u = null TriggerSleepAction( 15.00 ) DestroyTrigger( g ) g = null endfunction
Скорее всего, получается так, что программе нечего разрушать, поэтому и вылетает с фатальной ошибкой (ну, пишет типа: память не может быть "read" - как правило, игра обращается к участку памяти, который не отведен для переменной). Исправил так:
trigger g = null
unit u
if (...) then
...
PolledWait( 30 )
DestroyTrigger( g )
g = null
endif
u = null Я так думаю локалки нормально подчищаются, но во всяком случае ошибки уже не выдает.
Добавлено (03-01-2011, 04:23)
---------------------------------------------
При этом локальный триггер уже изначально обнулен.