Добавлен  scopterectus 
                            
                            
                            
                            
                            
                            
                        
                        
                    Обязательно ли нужно удалять способность после добавления?
	function PreloadAbility takes integer abilityId returns nothing
        if ( didInit ) then
            if ( UnitAddAbility( unitPreloader, abilityId ) ) then
                call UnitRemoveAbility( unitPreloader, abilityId )
            debug else
                debug call BJDebugMsg( "PreloadAbility(...) :    Ability '" + RAW2S( abilityId ) + "' does not exist." )
            endif
        else
            debug call BJDebugMsg("PreloadAbility(...)    Attempt to prealod abilty before library initialization.")
            call Initialization( )
            if ( UnitAddAbility( unitPreloader, abilityId ) ) then
                call UnitRemoveAbility( unitPreloader, abilityId )
            debug else
                debug call BJDebugMsg( "PreloadAbility(...) :    Ability '" + RAW2S( abilityId ) + "' does not exist." )
            endif
        endif
    endfunction	call SetUnitInvulnerable( ... )
//	или
	call UnitAddAbility( unit, 'Avul' )
	Принятый ответ
Кривоватая подгрузка,  удалять не обязательно.  Лучше юзать preload без этаких костылей, темболее в JASS есть механизмы автоматического создания pld скриптов.
    
        
            
                `
            
            
                
        
    
    ОЖИДАНИЕ РЕКЛАМЫ...
            
                    
                        Чтобы оставить комментарий, пожалуйста, войдите на сайт.
                    
                
             
                        
                        
                    
 WC3
                                WC3
                            



 
                    
                
Ред. MpW
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
Где 2 тебя папка вара? В ней будет папка save ( там данные кампаний хранятся, типо сколько игрок пошел, че есть у героя). Ну туда сохранит, а так путь можно указать любой, который вздумается, т.к прилоду пофиг, хоть в раздел с виндой...
Ред. scopterectus
Ред. PT153
PlealoadGen() сохраняет абсолютно всё: модельки звуки, текстуры.
local integer l = StringLength(s)
local string sub = SubString(s, l - 3, l - 1)
call Preload(s)
if sub == "md" or sub == "MD" then
call DestroyEffect(AddSpecialEffect(s, 0, 0))
endif
endfunction
Можно схитрить, сделать по pld скрипту для каждого героя, а в таверне продавать пустышки - при выборе героя, вызываем pld скрипт, после подгрузки - секунды 3, создаем героя для игрока.