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

Без ответа.


Просмотров: 290

KingMaximax #1 - 3 месяца назад (отредактировано ) 0
Лучше использовать файл строковой таблицы, war3map.wts де STRING 1 {текст} QuestSetDescription(q, "TRIGSTR_1"). Ну и это лишь пример. Лагов с таким способом, по идее не должно быть..
JaBeN_Симфер #2 - 3 месяца назад 0
Простая бж функция вызывает такой же лаг, значит дело не в этом?
прикреплены файлы
Dragonear #3 - 3 месяца назад 0
возможно есть баги в вашей карте, которые мешают функции правильно работать. в больших картах обычно делают вторичную загрузку карты после инициализации. то есть, всем игрокам выводится текст, что секунд 15 карта будет догружаться или что-то в этом роде. и в это время вы можете выполнить все основные триггеры. потом игра начнется.
JaBeN_Симфер #4 - 3 месяца назад 0
Dragonear, я пробовал запускать функцию наполнения меню и при инициализации, и в новом потоке после инициализации, и таймером через некоторое время, когда вся подгрузка завершена, но никакой разницы в этом нет. Какие баги могут влиять на меню Задания?
KingMaximax #5 - 3 месяца назад (отредактировано ) 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 ) хз
JaBeN_Симфер #6 - 3 месяца назад 0
KingMaximax, не помогает
Clamp #7 - 3 месяца назад 0
JaBeN_Симфер, проверь наличие лага в сетевой игре.

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