Lua 设置重装冷却时间。

我在 lua 重新加载部分中有这个设置,我很想为它设置一个冷却函数,就像 primaryfire 和 secondary fire 一样。有没有什么方法可以做到这一点?这是我的代码。

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
点赞
用户1914985
用户1914985

os.time() 应该可以解决。 你可以在 Lua 网站上查看文档

只有在“某段时间”之后才允许某些事情发生的逻辑是检查自上次使用函数以来经过的时间。 逻辑上,应该是:

timeElapsed = lastTimeOfUse - timeNow

如果 timeElapsed > cooldownPeriod,则允许事件发生并设置 lastTimeOfUse = timeNow


如果你想让 reload 函数在 60 秒后才起作用(将其更改为任何值),请尝试以下操作:

-- 设定
cooldown = 60 -- 冷却时间,以秒为单位

-- Reload 函数加入冷却时间
local lastReloadTime=0;
function SWEP:Reload()
    if ((os.time()-lastReloadTime)>cooldown) then -- 只在冷却时间过后才允许
        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() -- 记录 Reload 的最后使用时间
    end
end

根据您的评论,如果您想循环播放声音直到特定时间,可以使用以下代码:

-- 设定
durationOfPlayback = 3 -- 播放声音的时长(秒)

-- 规格
durationOfSoundFile = 1 -- 声音文件的长度(秒)

-- 播放声音,带有特定时间冷却
noOfTimesToPlay = math.floor(durationOfPlayback/durationOfSoundFile)
function SWEP:Reload()
    ...
    for i = 1, noOfTimesToPlay do
    {
            self.Weapon:EmitSound( "weapons/now.wav" )
            lastSoundTime=os.time()

            -- 这一行将使循环等待,直到一个播放完成
            while((os.time()-lastSoundTime)<durationOfSoundFile) do end
    }
    ...
end
2014-09-02 21:02:07