os.time()
должен сделать трюк. Вы можете взглянуть на documentation на веб-сайте Lua.
Логика, позволяющая что-то произойти только после sometime - проверить время, прошедшее с момента последнего использования функции. Логически, это было бы -
timeElapsed = lastTimeOfUse - timeNow
Если timeElapsed > cooldownPeriod
затем разрешить событие иметь место и установить lastTimeOfUse = timeNow
.
Если вы имеете в виду что-то вроде функции перезагрузки будет работать только после того, как (изменить его к чему-либо) секунд, попробуйте следующее: -
-- 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
Прошу прощения за какое-либо замешательство, с которым я столкнулся. Но я редактировал свой вопрос, что я имел в виду. Я тоже опубликую его здесь. «Я имею в виду, что я могу установить таймер для части emitsound, извините за любую путаницу». На самом деле то, что вы предоставили, может быть только тем, что мне нужно, но может также спросить, так как мне любопытно. В любом случае, чтобы установить таймер на self.weapon: emitsound part. –
Не обращайте внимания на все, что я сказал, что сработало! Спасибо, много человек! Я очень ценю это :) –
Да, тогда вам придется использовать ту же технику для звуковой части излучателя, используя другую переменную, называемую lastSoundTime, и, зацикливая ее до истечения периода охлаждения. Позвольте мне попытаться отредактировать мой ответ. Добро пожаловать :) Продолжайте отличную работу и подавите свое воображение. – Chique