os.time()
トリックを行う必要があります。Lua の Web サイトでドキュメントを参照できます。
しばらくしてから何かが発生することを許可する背後にあるロジックは、関数が最後に使用されてからの経過時間をチェックすることです。論理的には、それは -
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