Skip to content

Commit

Permalink
add events, new functions,
Browse files Browse the repository at this point in the history
these events added
   - onPlayStart
   - onPlayEnd
   - onLoading
   - onPlayPause
   - onPlayResume

new functions added:
   - onPlayStart(name, function)
   <br>This event will trigger after the sound
   <br>is loaded and start playing in game.
   - onPlayStart(name, function)
   - onPlayEnd(name, function)
   - onLoading(name, function)
   - onPlayPause(name, function)
   - onPlayResume(name, function)

   - getTimeStamp(name)
   - getMaxDuration(name)
   - setTimeStamp(name, time)
   - setTimeStamp(source ,name, time)

new column in array added

timeStamp
maxDuration
  • Loading branch information
Xogy committed Jul 13, 2020
1 parent 6aa25a9 commit dbf2702
Show file tree
Hide file tree
Showing 19 changed files with 475 additions and 98 deletions.
19 changes: 19 additions & 0 deletions .idea/$PRODUCT_WORKSPACE_FILE$

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/xsound.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 29 additions & 2 deletions client/events.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,39 @@ RegisterNUICallback("data_status", function(data)
soundInfo[data.id].playing = false
TriggerEvent("xSound:songStopPlaying", data.id)
end
if data.type == "maxDuration" then
soundInfo[data.id].maxDuration = data.time
end
end)

RegisterNUICallback("events", function(data)
local id = data.id
local type = data.type
if type == "onPlay" then
if globalOptionsCache[id] ~= nil and globalOptionsCache[id].onPlayStart ~= nil then
globalOptionsCache[id].onPlayStart(getInfo(id))
end
end
if type == "onEnd" then
if globalOptionsCache[id] ~= nil and globalOptionsCache[id].onPlayEnd ~= nil then
globalOptionsCache[id].onPlayEnd(getInfo(id))
end
end
if type == "onLoading" then
if globalOptionsCache[id] ~= nil and globalOptionsCache[id].onLoading ~= nil then
globalOptionsCache[id].onLoading(getInfo(id))
end
end
end)

RegisterNetEvent("xsound:stateSound")
AddEventHandler("xsound:stateSound", function(state, data)
local soundId = data.soundId

if state == "timestamp" then
setTimeStamp(soundId, data.time)
end

if state == "play" then
PlayUrl(soundId, data.url, data.volume, data.loop or false)
end
Expand All @@ -19,13 +46,13 @@ AddEventHandler("xsound:stateSound", function(state, data)

if state == "position" then
if soundExists(soundId) then
Position(soundId,data.position)
Position(soundId, data.position)
end
end

if state == "distance" then
if soundExists(soundId) then
Distance(soundId,data.distance)
Distance(soundId, data.distance)
end
end

Expand Down
29 changes: 29 additions & 0 deletions client/exports/events.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
function onPlayStart(name, delegate)
globalOptionsCache[name].onPlayStart = delegate
end

exports('onPlayStart', onPlayStart)

function onPlayEnd(name, delegate)
globalOptionsCache[name].onPlayEnd = delegate
end

exports('onPlayEnd', onPlayEnd)

function onLoading(name, delegate)
globalOptionsCache[name].onLoading = delegate
end

exports('onLoading', onLoading)

function onPlayPause(name, delegate)
globalOptionsCache[name].onPlayPause = delegate
end

exports('onPlayPause', onPlayPause)

function onPlayResume(name, delegate)
globalOptionsCache[name].onPlayResume = delegate
end

exports('onPlayResume', onPlayResume)
24 changes: 12 additions & 12 deletions client/exports/info.lua
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
soundInfo = {}

defaultInfo = {
volume = 1.0,
url = "",
id = "",
position = nil,
distance = 0,
playing = false,
paused = false,
loop = false,
isDynamic = false,
}

function getLink(name_)
return soundInfo[name_].url
end
Expand Down Expand Up @@ -74,3 +62,15 @@ function isDynamic(name_)
end

exports('isDynamic', isDynamic)

function getTimeStamp(name_)
return soundInfo[name_].timeStamp or -1
end

exports('getTimeStamp', getTimeStamp)

function getMaxDuration(name_)
return soundInfo[name_].maxDuration or -1
end

exports('getMaxDuration', getMaxDuration)
27 changes: 26 additions & 1 deletion client/exports/manipulation.lua
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ function Destroy(name_)
name = name_
})
soundInfo[name_] = nil

if globalOptionsCache[name_] ~= nil and globalOptionsCache[name_].onPlayEnd ~= nil then
globalOptionsCache[name_].onPlayEnd(getInfo(name_))
end

globalOptionsCache[name_] = nil
end

exports('Destroy', Destroy)
Expand All @@ -40,6 +46,10 @@ function Resume(name_)
})
soundInfo[name_].playing = true
soundInfo[name_].paused = false

if globalOptionsCache[name_] ~= nil and globalOptionsCache[name_].onPlayResume ~= nil then
globalOptionsCache[name_].onPlayResume(getInfo(name_))
end
end

exports('Resume', Resume)
Expand All @@ -51,6 +61,10 @@ function Pause(name_)
})
soundInfo[name_].playing = false
soundInfo[name_].paused = true

if globalOptionsCache[name_] ~= nil and globalOptionsCache[name_].onPlayPause ~= nil then
globalOptionsCache[name_].onPlayPause(getInfo(name_))
end
end

exports('Pause', Pause)
Expand All @@ -75,4 +89,15 @@ function setVolumeMax(name_, vol)
soundInfo[name_].volume = vol
end

exports('setVolumeMax', setVolumeMax)
exports('setVolumeMax', setVolumeMax)

function setTimeStamp(name_, timestamp)
getInfo(name_).timeStamp = timestamp
SendNUIMessage({
name = name_,
status = "timestamp",
timestamp = timestamp,
})
end

exports('setTimeStamp', setTimeStamp)
12 changes: 8 additions & 4 deletions client/exports/play.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function PlayUrl(name_, url_, volume_, loop_)
function PlayUrl(name_, url_, volume_, loop_, options)
SendNUIMessage({
status = "url",
name = name_,
Expand All @@ -11,19 +11,21 @@ function PlayUrl(name_, url_, volume_, loop_)
loop = loop_ or false,
})

if soundInfo[name_] == nil then soundInfo[name_] = defaultInfo end
if soundInfo[name_] == nil then soundInfo[name_] = getDefaultInfo() end

soundInfo[name_].volume = volume_
soundInfo[name_].url = url_
soundInfo[name_].id = name_
soundInfo[name_].playing = true
soundInfo[name_].loop = loop_ or false
soundInfo[name_].isDynamic = false

globalOptionsCache[name_] = options or { }
end

exports('PlayUrl', PlayUrl)

function PlayUrlPos(name_, url_, volume_, pos, loop_)
function PlayUrlPos(name_, url_, volume_, pos, loop_, options)
SendNUIMessage({
status = "url",
name = name_,
Expand All @@ -35,7 +37,7 @@ function PlayUrlPos(name_, url_, volume_, pos, loop_)
volume = volume_,
loop = loop_ or false,
})
if soundInfo[name_] == nil then soundInfo[name_] = defaultInfo end
if soundInfo[name_] == nil then soundInfo[name_] = getDefaultInfo() end

soundInfo[name_].volume = volume_
soundInfo[name_].url = url_
Expand All @@ -44,6 +46,8 @@ function PlayUrlPos(name_, url_, volume_, pos, loop_)
soundInfo[name_].playing = true
soundInfo[name_].loop = loop_ or false
soundInfo[name_].isDynamic = true

globalOptionsCache[name_] = options or { }
end

exports('PlayUrlPos', PlayUrlPos)
32 changes: 32 additions & 0 deletions client/main.lua
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
globalOptionsCache = {}

function getDefaultInfo()
return {
volume = 1.0,
url = "",
id = "",
position = nil,
distance = 0,
playing = false,
paused = false,
loop = false,
isDynamic = false,
timeStamp = 0,
maxDuration = 0,
}
end

Citizen.CreateThread(function()
Citizen.Wait(1000)
local refresh = config.RefreshTime
Expand All @@ -14,4 +32,18 @@ Citizen.CreateThread(function()
z = pos.z
})
end
end)

Citizen.CreateThread(function()
Citizen.Wait(1100)
while true do
for k, v in pairs(soundInfo) do
if v.playing then
if getInfo(v.id).timeStamp < getInfo(v.id).maxDuration then
getInfo(v.id).timeStamp = getInfo(v.id).timeStamp + 1
end
end
end
Citizen.Wait(1000)
end
end)
8 changes: 8 additions & 0 deletions extension/main.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
--
-- Created by IntelliJ IDEA.
-- User: xogos
-- Date: 13.07.2020
-- Time: 13:22
-- To change this template use File | Settings | File Templates.
--

1 change: 1 addition & 0 deletions fxmanifest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ client_scripts {
"client/exports/info.lua",
"client/exports/play.lua",
"client/exports/manipulation.lua",
"client/exports/events.lua",

"client/emulator/interact_sound/client.lua",
}
Expand Down
Loading

0 comments on commit dbf2702

Please sign in to comment.