我在lua reload部分设置了这个设置,我很乐意为它设置一个冷却功能,就像是如何进行主火和二次火力一样。反正有吗?这是我的代码。
function SWEP:Reload()
if Chaos == 0 then
Chaos = 1
self.Owner:SetModel("models/_tails_ models/characters/sonic heroes/super_sonic/supersonic.mdl")
self.Weapon:EmitSound( "weapons/now.wav" )
elseif Chaos == 1 then
Chaos = 0
self.Owner:SetModel("models/_tails_ models/characters/sonic heroes/sonic/sonic.mdl")
end
end
答案 0 :(得分:3)
os.time()
应该做到这一点。
您可以在Lua网站上查看documentation。
仅在某个时间之后允许某事发生的逻辑是检查自上次使用该函数以来经过的时间。 从逻辑上讲,它将是 -
timeElapsed = lastTimeOfUse - timeNow
如果timeElapsed > cooldownPeriod
然后允许事件发生并设置lastTimeOfUse = timeNow
。
如果您的意思是重新加载功能只能在 60 (更改为任何内容)秒之后才能运行,请尝试以下操作: -
-- Settings
cooldown = 60 -- Cooldown period in Seconds
-- Reload function with cooldown
local lastReloadTime=0;
function SWEP:Reload()
if ((os.time()-lastReloadTime)>cooldown) then -- Allows only after cooldown time is over
if Chaos == 0 then
Chaos = 1
self.Owner:SetModel("models/_tails_ models/characters/sonic heroes/super_sonic/supersonic.mdl")
self.Weapon:EmitSound( "weapons/now.wav" )
elseif Chaos == 1 then
Chaos = 0
self.Owner:SetModel("models/_tails_ models/characters/sonic heroes/sonic/sonic.mdl")
end
lastReloadTime=os.time() -- Sets this time as last using time of Reload
end
end
根据您的评论,如果您想将声音循环到特定时间,那么这样的事情应该起作用
-- Settings
durationOfPlayback = 3 -- for how long you want to play the sound in seconds
-- Specifications
durationOfSoundFile = 1 -- length of sound file in seconds
-- Sound playback for a specific time cooldown
noOfTimesToPlay = math.floor(durationOfPlayback/durationOfSoundFile)
function SWEP:Reload()
...
for i = 1, noOfTimesToPlay do
{
self.Weapon:EmitSound( "weapons/now.wav" )
lastSoundTime=os.time()
--This line will make the loop wait till 1 playback is complete
while((os.time()-lastSoundTime)<durationOfSoundFile) do end
}
...
end