Функция последовательно создает несколько заданий с большим объемом текста. На моей карте при первом открытии меню происходит лаг секунд на 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_Симфер, проверь наличие лага в сетевой игре.

Теория такова: при открытии меню квестов в одиночной игре происходит пауза игры, которая может и вызывать лаг. При первой паузе алгоритм хешируется и дальнейших лагов не вызывает, чем и объясняется описанное поведение. В сетевой же игре пауза, очевидно, не ставится.
3 комментария удалено
0
30
7 лет назад
0
quq_CCCP, когда ты начнёшь читать тред перед тем, как дать свой ответ, я перестану выпиливать твои посты с повторами, задолбал.
0
12
7 лет назад
Отредактирован Astra
0
Еще на форуме обсуждалось это давненько. При первом открытии осуществляется подгрузка непонятно чего, потом все это дело хешируется и больше лагов не возникает. Насколько понимаю это неизлечимо.
В сетевой тоже подвисает.
0
32
7 лет назад
0
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
21
7 лет назад
Отредактирован JaBeN_Симфер
0
В сетевой тоже лаг происходит. И лаг даже не 5 секунд длится, а 20-30. Интерфейс стандартный, изменений минимум в текстах.
0
32
7 лет назад
0
JaBeN_Симфер, а он все равно грузит текстуры и текст, весь текст из wts и w3I, а это туча текста.
Внимательно смотри что я выложил под катом, станет понятно почему такой лаг.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.