diff --git a/imports/requestAudioBank/client.lua b/imports/requestAudioBank/client.lua new file mode 100644 index 0000000..51abab2 --- /dev/null +++ b/imports/requestAudioBank/client.lua @@ -0,0 +1,15 @@ +---Loads audio bank +---@param audioBank string +---@param timeout number? +---@return boolean +function lib.requestAudioBank(audioBank, timeout) + RequestScriptAudioBank(audioBank, false) + + if not coroutine.isyieldable() then return true end + + return lib.waitFor(function() + if RequestScriptAudioBank(audioBank, false) then return true end + end, ("failed to load audiobank '%s'"):format(audioBank), timeout or 500) +end + +return lib.requestAudioBank \ No newline at end of file diff --git a/resource/interface/client/notify.lua b/resource/interface/client/notify.lua index 484ebaa..ae19135 100644 --- a/resource/interface/client/notify.lua +++ b/resource/interface/client/notify.lua @@ -14,6 +14,9 @@ ---@field iconAnimation? IconAnimationType; ---@field iconColor? string; ---@field alignIcon? 'top' | 'center'; +---@field sound? {bank?: string, set: string, name: string} + +local enableSound = GetConvar('ox:enableSound', 'true') == 'true' ---`client` ---@param data NotifyProps @@ -23,6 +26,18 @@ function lib.notify(data) action = 'notify', data = data }) + if not enableSound then return end + if data.sound then + if data.sound?.bank then + lib.requestAudioBank(data.sound.bank) + end + local soundId = GetSoundId() + PlaySoundFrontend(soundId, data.sound.name, data.sound.set, true) + ReleaseSoundId(soundId) + if data.sound?.bank then + ReleaseNamedScriptAudioBank(data.sound.bank) + end + end end ---@class DefaultNotifyProps