#lua
#lua
Вопрос:
Я пытаюсь изменить сценарий FiveM, и я пытаюсь выйти из цикла в Lua через 4 секунды, но я не знаю как.
Я не знаю, что я делаю, и мне нужна помощь.
Citizen.CreateThread(function()
function drawscaleform(scaleform)
scaleform = RequestScaleformMovie(scaleform)
while not HasScaleformMovieLoaded(scaleform) do
Citizen.Wait(0)
end
PushScaleformMovieFunction(scaleform, "SHOW_POPUP_WARNING")
PushScaleformMovieFunctionParameterFloat(500.0)
PushScaleformMovieFunctionParameterString("ALERT")
PushScaleformMovieFunctionParameterString("~b~Peacetime Active")
PushScaleformMovieFunctionParameterString("This Means No Priority Calls")
PushScaleformMovieFunctionParameterBool(true)
PushScaleformMovieFunctionParameterInt(0)
PopScaleformMovieFunctionVoid()
DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255, 0)
end
while true do
Citizen.Wait(0)
drawscaleform("POPUP_WARNING")
end
end)
Я хотел бы выйти из цикла while true
через 4 секунды
Ответ №1:
Скорее всего, какая-то комбинация break
команды Lua, устанавливающая условие в вашем цикле while, которое более четко передает намерение цикла (кроме просто while true
…) и лучше использовать Citizen.Wait()
функцию FiveM. В документации для этой функции здесь говорится, что аргументом является количество миллисекунд для приостановки текущего потока выполнения.
Потратьте некоторое время на понимание этих элементов, кода, который вы пытаетесь изменить, и поэкспериментируйте. SO не будет просто кодировать для вас.
Ответ №2:
Существует функция Citizen.SetTimeout
FiveM для вызова функции по истечении определенного периода. Вот один (непроверенный) способ, которым вы могли бы его использовать:
Citizen.CreateThread(function()
function drawscaleform(scaleform)
...
end
local wait = true
Citizen.SetTimeout(4000, function() wait = false end)
while wait do
Citizen.Wait(0)
drawscaleform("POPUP_WARNING")
end
end)