我正在尝试修改一个FiveM脚本,并且我试图在4秒后打破Lua中的循环,但我不知道如何操作。
我不知道我在做什么,需要一些帮助。
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
发布于 2019-04-14 03:09:39
很可能是Lua的break命令的某种组合,在while循环上设置一个条件,以便更清楚地传达循环的意图(而不只是while true...)更好地使用FiveM的Citizen.Wait()函数。该函数here的文档说明该参数是暂停当前执行线程的毫秒数。
花一些时间来理解这些元素,了解您试图修改的代码,并进行实验。所以我不会只为你写代码。
发布于 2019-04-14 08:03:47
有一个FiveM函数Citizen.SetTimeout,用于在经过一段时间后调用函数。以下是你可以使用它的一种(未经测试的)方法:
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)https://stackoverflow.com/questions/55667369
复制相似问题