Обязательно ли нужно удалять способность после добавления?
	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 скриптов.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
quq_CCCP:
Кривоватая подгрузка, удалять не обязательно. Лучше юзать preload без этаких костылей, темболее в JASS есть механизмы автоматического создания pld скриптов.
У меня в карте 100500 способностей. Можно ли их всех тупо добавить одному юниту для подгрузки (без удаления)?
21
PT153, зависит от их максимального уровня. Возможно Вам понадобится подгружать не 100500, а уже 50250 способностей.
28
Я про эток:
call PreloadGenClear()
call PreloadGenStart()
call TriggerSleepActions(2.00)
call PreloadGenEnd("save//mydata.pld")
Вызываем этот код пред созданием героя, чуствуем просадку фпс, побегали, покастовали спеллы (вейт нужно подольше). Идем смотреть что в текстовик сохранилось, там будет полный список того что загружал движок.
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
Можно сделать триггер на команду в чат. Побегал за всех героев, покастовал все спелы, написал команду, файл сохранился.
PlealoadGen() сохраняет абсолютно всё: модельки звуки, текстуры.
Модели всё же стоит ещё и создавать.
Я просто беру всё то, что записал прелоад в файле, копирую в триггер, и все Preload заменяю на PreloadFile.
function PreloadFile takes string s returns nothing
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
Теперь пролагов при касте спелов и прочего не будет.
PlealoadGen(), насколько я знаю, не подгружает САМИ способности, поэтому их нужно добавлять.
32
PT153, ну у меня тоже дофига, правда я разделил добавление таймером - можно уперется в лимит операций.
Можно схитрить, сделать по pld скрипту для каждого героя, а в таверне продавать пустышки - при выборе героя, вызываем pld скрипт, после подгрузки - секунды 3, создаем героя для игрока.
28
ScopteRectuS:
PT153, зависит от их максимального уровня. Возможно Вам понадобится подгружать не 100500, а уже 50250 способностей.
Добавлять-то можно во время инициализации. Я о том, что у юнита возможно есть лимит способностей. А тогда их и надо удалять (Ваш вопрос).
32
Про лимит ничего не знаю, не достигал его.
Но важно чтобы юнита видели игроки - иначе модели и звуки с иконками и текстом не подгрузятся...
28
quq_CCCP:
Про лимит ничего не знаю, не достигал его.
Но важно чтобы юнита видели игроки - иначе модели и звуки с иконками и текстом не подгрузятся...
То есть надо подгружать после инициализации?
32
PT153, увы да, но зачем подгружать все? Если и половины в игре не будет?
При пике подгружайте все данные этого героя.
Тем более сделать через preloader скрипт ничего не стоит автоматически, все сделает для вас движок.
Имея файла задаете исходя из id героя (или даммика который продается в таверне), так не понадобится делать базу данных...
21
quq_CCCP:
Я про эток:
call PreloadGenClear()
call PreloadGenStart()
call TriggerSleepActions(2.00)
call PreloadGenEnd("save//mydata.pld")
Вызываем этот код пред созданием героя, чуствуем просадку фпс, побегали, покастовали спеллы (вейт нужно подольше). Идем смотреть что в текстовик сохранилось, там будет полный список того что загружал движок.
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
Понял, почему не работало. Нужно писать "save\\mydata.pld"
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.