我正在尝试修改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
答案 0 :(得分:1)
很可能是Lua的break
命令的某种组合,在您的while循环中设置一个条件,可以更清楚地传达循环的意图(而不只是true
...),并且最好使用FiveM的{{ 1}}函数。该函数here的文档说,该参数是暂停当前执行线程的毫秒数。
花一些时间来理解这些元素,您要修改的代码并进行实验。因此,不仅仅是为您编码。
答案 1 :(得分:1)
有一个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)