Функция последовательно создает несколько заданий с большим объемом текста. На моей карте при первом открытии меню происходит лаг секунд на 5, а на пустой карте лага нет. В чем может быть проблема, если лагает даже с одним заданием и минимальным количеством текста?
function Menu_F9_Init takes nothing returns nothing
    local quest q = CreateQuest()
    local string s = "text"
    call QuestSetTitle(q, "Title")
    call QuestSetDescription(q, s)
    call QuestSetIconPath(q, "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp")
    call QuestSetRequired(q, false)
    call QuestSetDiscovered(q, true)
    call QuestSetCompleted(q, false)
    call FlashQuestDialogButton()
    set s = null
    set q = null
endfunction

Принятый ответ

Clamp, когда ты начнешь внимательно читать что я пишу!
Там грузится не то что он написал в описании задания а все строки из констант и все пути к текстурам.
Что именно грузит движок в момент открытия вкладки задания, можно прелоадом.
Вот содержимое pld файла у меня:
quest.pld
((код jass
call Preload( "war3map.w3i" )
call Preload( "war3map.wts" )
call Preload( "Maps\\Test\\WorldEditTestMap.w3x" )
call Preload( "Sound\\Interface\\GamePause.wav" )
call Preload( "Sound\\Interface\\QuestActivateWhat1.wav" )
call Preload( "UI\\Widgets\\EscMenu\\NightElf\\nightelf-options-menu-background.blp" )
call Preload( "UI\\Widgets\\EscMenu\\Human\\quest-normal-background.blp" )
call Preload( "UI\\Widgets\\EscMenu\\Human\\quest-completed-background.blp" )
call Preload( "UI\\Widgets\\EscMenu\\Human\\editbox-background.blp" )
call Preload( "UI\\Widgets\\EscMenu\\Human\\quest-failed-background.blp" )
call Preload( "ReplaceableTextures\\CommandButtons\\BTNSkeletonArcher.blp" )
call Preload( "ReplaceableTextures\\CommandButtons\\BTNSpy.blp" )
call Preload( "UI\\Widgets\\EscMenu\\NightElf\\nightelf-options-button-highlight.blp" )
call Preload( "ReplaceableTextures\\CommandButtons\\BTN_quq_CCCP.blp" )
call Preload( "ReplaceableTextures\\CommandButtons\\BTNFrostWyrm.blp" )
call Preload( "Sound\\Interface\\BigButtonClick.wav" )
call PreloadEnd( 47.8 )
))

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
7 лет назад
Отредактирован Волчачка
0
Лучше использовать файл строковой таблицы, war3map.wts де STRING 1 {текст} QuestSetDescription(q, "TRIGSTR_1"). Ну и это лишь пример. Лагов с таким способом, по идее не должно быть..
0
21
7 лет назад
0
Простая бж функция вызывает такой же лаг, значит дело не в этом?
Загруженные файлы
0
11
7 лет назад
0
возможно есть баги в вашей карте, которые мешают функции правильно работать. в больших картах обычно делают вторичную загрузку карты после инициализации. то есть, всем игрокам выводится текст, что секунд 15 карта будет догружаться или что-то в этом роде. и в это время вы можете выполнить все основные триггеры. потом игра начнется.
0
21
7 лет назад
0
Dragonear, я пробовал запускать функцию наполнения меню и при инициализации, и в новом потоке после инициализации, и таймером через некоторое время, когда вся подгрузка завершена, но никакой разницы в этом нет. Какие баги могут влиять на меню Задания?
0
29
7 лет назад
Отредактирован Волчачка
0
JaBeN_Симфер:
Простая бж функция вызывает такой же лаг, значит дело не в этом?
Попробуйте сделать Preloader для иконок, которые использует квест.
Preloader() и засунуть файл MyPreload.pld c внутренним
MyPreload.pld
function PreloadFiles takes nothing returns nothing
    //...call Preload( "war3map.wts" )
   call Preload( "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp" )
	call PreloadStart() //или call PreloadEnd( 15.0 )
endfunction
Внутри WE
Preloader ("MyPreload.pld ")
// код создания квеста
//call PreloadEnd( 15.0 ) хз
0
21
7 лет назад
0
KingMaximax, не помогает
0
30
7 лет назад
0
JaBeN_Симфер, проверь наличие лага в сетевой игре.

Теория такова: при открытии меню квестов в одиночной игре происходит пауза игры, которая может и вызывать лаг. При первой паузе алгоритм хешируется и дальнейших лагов не вызывает, чем и объясняется описанное поведение. В сетевой же игре пауза, очевидно, не ставится.
2 комментария удалено
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.