Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua设置重新加载的冷却时间_Lua_Garrys Mod - Fatal编程技术网

Lua设置重新加载的冷却时间

Lua设置重新加载的冷却时间,lua,garrys-mod,Lua,Garrys Mod,我在我的lua重新加载部分设置了这个,我想为它设置一个冷却功能,就像主火和副火一样。有什么办法吗?这是我的密码 function SWEP:Reload() if Chaos == 0 then Chaos = 1 self.Owner:SetModel("models/_tails_ models/characters/sonic heroes/super_sonic/supersonic.mdl") self.Weapon:EmitSo

我在我的lua重新加载部分设置了这个,我想为它设置一个冷却功能,就像主火和副火一样。有什么办法吗?这是我的密码

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
os.time()。
您可以在Lua网站上查看

允许某些事情只在某个时间之后发生的逻辑是检查自上次使用该函数以来经过的时间。 从逻辑上讲,应该是这样的-

timeElapsed = lastTimeOfUse - timeNow
如果
timeappeased>collodowperiod
,则允许事件发生并设置
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
——设置
durationOfPlayback=3——以秒为单位播放声音的时间
--规格
DurationOfSondFile=1——声音文件的长度(以秒为单位)
--特定冷却时间的声音播放
noOfTimesToPlay=math.floor(播放持续时间/声音文件持续时间)
函数SWEP:Reload()
...
对于i=1,noOfTimesToPlay do
{
武器:发射声音(“武器/now.wav”)
lastSoundTime=os.time()
--该行将使循环等待1次播放完成

while((os.time()-lastSoundTime)我很抱歉我有点匆忙。但是,我编辑了我的问题以了解我的意思。我也将把它发布在这里。“我的意思是,有没有一种方法可以为emitsound部分设置计时器,对不起,有任何困惑。”事实上,你提供的可能正是我所需要的,但我很好奇,不妨问一下。是否有必要为自己设置一个计时器。武器:发射声音部分。无视我所说的一切!非常感谢!我真的很感激:)是的,那么你也必须对发出声音部分使用同样的技术,使用另一个变量lastSoundTime,并循环它,直到冷却期结束。让我试着编辑我的回复。非常欢迎:)继续努力,放下你的想象力。Idk我的其他评论去了哪里,所以我只想总结一下我所说的谢谢你,老兄!我真的很感谢你抽出时间来帮助我。