如何在x秒内跳出循环

我正在尝试修改一个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)

我想在4秒后跳出while true的循环。

点赞
用户4403144
用户4403144

很可能是 Lua 的 break 命令,通过在 while 循环中设置条件更清楚地传达循环的意图(而不仅仅是 while true...),以及更好地使用 FiveM 的 Citizen.Wait() 函数的组合。该函数的文档可在 这里 找到,其中参数是当前执行线程暂停的毫秒数。

花些时间了解这些元素、你尝试修改的代码并进行实验,Stack Overflow 不会为你编写代码。

2019-04-13 19:09:38
用户33252
用户33252

有一个名为 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)
2019-04-14 00:03:46