首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在x秒内跳出循环

如何在x秒内跳出循环
EN

Stack Overflow用户
提问于 2019-04-14 00:02:40
回答 2查看 2.3K关注 0票数 0

我正在尝试修改一个FiveM脚本,并且我试图在4秒后打破Lua中的循环,但我不知道如何操作。

我不知道我在做什么,需要一些帮助。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2019-04-14 03:09:39

很可能是Lua的break命令的某种组合,在while循环上设置一个条件,以便更清楚地传达循环的意图(而不只是while true...)更好地使用FiveM的Citizen.Wait()函数。该函数here的文档说明该参数是暂停当前执行线程的毫秒数。

花一些时间来理解这些元素,了解您试图修改的代码,并进行实验。所以我不会只为你写代码。

票数 1
EN

Stack Overflow用户

发布于 2019-04-14 08:03:47

有一个FiveM函数Citizen.SetTimeout,用于在经过一段时间后调用函数。以下是你可以使用它的一种(未经测试的)方法:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55667369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档