From 165950ad2e6879a6a3527f7982d9aea439ddc9ad Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 28 Sep 2025 23:25:17 +0300 Subject: [PATCH 1/7] Add ability to edit volume --- .../internetradio/config/ShRadioConfig.lua | 1 + .../internetradio/logic/gui/CRadioGUI.lua | 19 ++++++---- .../logic/handle_radio/CHandleRadio.lua | 35 ++++++++++++++++-- .../logic/handle_radio/SHandleRadio.lua | 36 ++++++++++++++++++- 4 files changed, 81 insertions(+), 10 deletions(-) diff --git a/[gameplay]/internetradio/config/ShRadioConfig.lua b/[gameplay]/internetradio/config/ShRadioConfig.lua index 329dc0ac3..86b5bead2 100644 --- a/[gameplay]/internetradio/config/ShRadioConfig.lua +++ b/[gameplay]/internetradio/config/ShRadioConfig.lua @@ -5,6 +5,7 @@ -- ####################################### RADIO_CREATE_SPEAKER_DELAY = 1000 +RADIO_VOLUME_DELAY = 200 RADIO_TOGGLE_SPEAKER_DELAY = 1500 RADIO_DESTROY_SPEAKER_DELAY = 1500 RADIO_ALLOW_CUSTOM_URLS = true diff --git a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua index 83b633217..dd18fb62a 100644 --- a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua +++ b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua @@ -20,23 +20,26 @@ local function initializeRadioGUI() RADIO_GUI["Radio window"] = guiCreateWindow(radioWindowPosX, radioWindowPosY, radioWindowSizeX, radioWindowSizeY, "SPEAKER MUSIC (RADIO/MP3)", false) RADIO_GUI["Stream URLs gridlist"] = guiCreateGridList(10, 54, 304, 139, false, RADIO_GUI["Radio window"]) RADIO_GUI["Stream URL edit"] = guiCreateEdit(10, 25, 304, 26, "http://stream.antenne.de:80/80er-kulthits", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Create speaker button"] = guiCreateButton(10, 200, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 200, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Play/pause button"] = guiCreateButton(10, 235, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Close button"] = guiCreateButton(162, 235, 150, 30, "Close", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Volume"] = guiCreateScrollBar(10, 200, 302, 20, true, false, RADIO_GUI["Radio window"]) + RADIO_GUI["Create speaker button"] = guiCreateButton(10, 230, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 230, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Play/pause button"] = guiCreateButton(10, 265, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Close button"] = guiCreateButton(162, 265, 150, 30, "Close", false, RADIO_GUI["Radio window"]) RADIO_GUI["Toggle remote speakers checkbox"] = guiCreateCheckBox(15, 345, 180, 17, "Allow other players speakers", allowRemoteSpeakers, false, RADIO_GUI["Radio window"]) RADIO_GUI["Toggle remote speakers label"] = guiCreateLabel(167, 345, 150, 17, "", false, RADIO_GUI["Radio window"]) RADIO_GUI["Radio station URL column"] = guiGridListAddColumn(RADIO_GUI["Stream URLs gridlist"], "Radio station", 0.8) - + guiSetVisible(RADIO_GUI["Radio window"], false) guiEditSetMaxLength(RADIO_GUI["Stream URL edit"], RADIO_STREAM_URL_MAX_LENGTH) guiWindowSetSizable(RADIO_GUI["Radio window"], false) guiGridListSetSortingEnabled(RADIO_GUI["Stream URLs gridlist"], false) - + guiScrollBarSetScrollPosition(RADIO_GUI["Volume"], 100) + loadRadioStations() addEventHandler("onClientGUIClick", RADIO_GUI["Stream URLs gridlist"], onClientGUIClickLoadStationStreamURL, false) + addEventHandler("onClientGUIScroll", RADIO_GUI["Volume"], onClientGUIScrollVolume, false) addEventHandler("onClientGUIClick", RADIO_GUI["Create speaker button"], onClientGUIClickCreateSpeaker, false) addEventHandler("onClientGUIClick", RADIO_GUI["Play/pause button"], onClientGUIClickToggleSpeaker, false) addEventHandler("onClientGUIClick", RADIO_GUI["Destroy speaker button"], onClientGUIClickDestroySpeaker, false) @@ -77,4 +80,6 @@ function onClientResourceStartRadioGUI() toggleRadioGUI() end -addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) \ No newline at end of file +addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) + +setTimer(toggleRadioGUI, 500, 1) diff --git a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua index 1eb28fe94..e660f9e90 100644 --- a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua @@ -91,6 +91,7 @@ function toggleSpeakerSounds(playerElement, toggleOn) local speakerDimension = getElementDimension(speakerBox) local speakerSoundMaxDistance = speakerData.speakerSoundMaxDistance local speakerStreamURL = speakerData.speakerStreamURL + local speakerVolume = speakerData.speakerVolume local speakerNewSound = playSound3D(speakerStreamURL, speakerBoxPosX, speakerBoxPosY, speakerBoxPosZ, true, false) if (not speakerNewSound) then @@ -106,7 +107,7 @@ function toggleSpeakerSounds(playerElement, toggleOn) setSoundPaused(speakerNewSound, speakerPaused) setSoundMaxDistance(speakerNewSound, speakerSoundMaxDistance) - setSoundVolume(speakerNewSound, 1) + setSoundVolume(speakerNewSound, speakerVolume) attachElements(speakerNewSound, speakerBox) end @@ -130,6 +131,7 @@ end function onClientGUIClickCreateSpeaker() local streamURL, errorCode = getStreamURLFromEdit() + local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100 if (not streamURL) then local textToDisplay = errorCode or "SPEAKER: Invalid URL, please check your input!" @@ -145,7 +147,18 @@ function onClientGUIClickCreateSpeaker() return false end - triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL) + triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL, volume) +end + +function onClientGUIScrollVolume() + local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100 + local createDelayPassed = getOrSetPlayerDelay(localPlayer, "volume", RADIO_VOLUME_DELAY) + + if (not createDelayPassed) then + return false + end + + triggerServerEvent("onServerEditVolume", localPlayer, volume) end function onClientGUIClickToggleSpeaker() @@ -208,6 +221,18 @@ function setPlayerSpeakerData(playerElement, speakerData) return true end +function setPlayerSpeakerVolume(playerElement, volume) + local validElement = isElement(playerElement) + local speakerSound = speakerSounds[playerElement] + + if (not validElement or not speakerSound) then + return false + end + + setSoundVolume(speakerSound, volume) + return true +end + function setPlayerSpeakerPaused(playerElement, pauseState) local playerSpeakerData = getPlayerSpeakerData(playerElement) @@ -319,6 +344,12 @@ end addEvent("onClientCreateSpeaker", true) addEventHandler("onClientCreateSpeaker", root, onClientCreateSpeaker) +function onClientUpdateVolume(volume) + setPlayerSpeakerVolume(source, volume) +end +addEvent("onClientUpdateVolume", true) +addEventHandler("onClientUpdateVolume", root, onClientUpdateVolume) + function onClientToggleSpeaker(pauseState) setPlayerSpeakerPaused(source, pauseState) end diff --git a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua index 76ec70cd3..b2aa1088d 100644 --- a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua @@ -19,6 +19,17 @@ function setPlayerSpeakerData(playerElement, speakerData) return true end +function updateSpeakerVolume(playerElement, volume) + local playerSpeakerData = getPlayerSpeakerData(playerElement) + + if (not playerSpeakerData) then + return false + end + + playerSpeakerData.speakerVolume = volume + triggerClientEvent(root, "onClientUpdateVolume", playerElement, volume) +end + function getPlayerSpeakerData(playerElement) local validElement = isElement(playerElement) @@ -74,7 +85,7 @@ function isObjectSpeaker(objectElement) return false end -function onServerCreateSpeaker(streamURL) +function onServerCreateSpeaker(streamURL, volume) if (not client) then return false end @@ -117,6 +128,7 @@ function onServerCreateSpeaker(streamURL) speakerStreamURL = streamURL, speakerSoundMaxDistance = RADIO_MAX_SOUND_DISTANCE, speakerPaused = false, + speakerVolume = volume } setPlayerSpeakerData(client, speakerData) @@ -124,6 +136,28 @@ end addEvent("onServerCreateSpeaker", true) addEventHandler("onServerCreateSpeaker", root, onServerCreateSpeaker) +function onServerEditVolume(volume) + if (not client or client ~= source) then + return false + end + + local createDelayPassed = getOrSetPlayerDelay(client, "volume", RADIO_VOLUME_DELAY) + + if (not createDelayPassed) then + return false + end + + local speakerData = playerSpeakers[client] + + if (not speakerData or not speakerData.speakerBox) then + return false + end + + updateSpeakerVolume(client, volume) +end +addEvent("onServerEditVolume", true) +addEventHandler("onServerEditVolume", root, onServerEditVolume) + function onServerToggleSpeaker() if (not client) then return false From 483b62c21eaf4d46e8f1786591cd2de4e1787e2b Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 28 Sep 2025 23:37:56 +0300 Subject: [PATCH 2/7] Removes useless codes I added toggleRadioGUI for testing and forget to remove it before push --- [gameplay]/internetradio/logic/gui/CRadioGUI.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua index dd18fb62a..82957d00f 100644 --- a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua +++ b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua @@ -35,7 +35,7 @@ local function initializeRadioGUI() guiWindowSetSizable(RADIO_GUI["Radio window"], false) guiGridListSetSortingEnabled(RADIO_GUI["Stream URLs gridlist"], false) guiScrollBarSetScrollPosition(RADIO_GUI["Volume"], 100) - + loadRadioStations() addEventHandler("onClientGUIClick", RADIO_GUI["Stream URLs gridlist"], onClientGUIClickLoadStationStreamURL, false) @@ -80,6 +80,4 @@ function onClientResourceStartRadioGUI() toggleRadioGUI() end -addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) - -setTimer(toggleRadioGUI, 500, 1) +addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) \ No newline at end of file From 960000e3324df48754e7ca5b6a0c24924773801c Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 28 Sep 2025 23:25:17 +0300 Subject: [PATCH 3/7] Add ability to edit volume --- .../internetradio/config/ShRadioConfig.lua | 1 + .../internetradio/logic/gui/CRadioGUI.lua | 19 ++++++---- .../logic/handle_radio/CHandleRadio.lua | 35 ++++++++++++++++-- .../logic/handle_radio/SHandleRadio.lua | 36 ++++++++++++++++++- 4 files changed, 81 insertions(+), 10 deletions(-) diff --git a/[gameplay]/internetradio/config/ShRadioConfig.lua b/[gameplay]/internetradio/config/ShRadioConfig.lua index 329dc0ac3..86b5bead2 100644 --- a/[gameplay]/internetradio/config/ShRadioConfig.lua +++ b/[gameplay]/internetradio/config/ShRadioConfig.lua @@ -5,6 +5,7 @@ -- ####################################### RADIO_CREATE_SPEAKER_DELAY = 1000 +RADIO_VOLUME_DELAY = 200 RADIO_TOGGLE_SPEAKER_DELAY = 1500 RADIO_DESTROY_SPEAKER_DELAY = 1500 RADIO_ALLOW_CUSTOM_URLS = true diff --git a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua index 83b633217..dd18fb62a 100644 --- a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua +++ b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua @@ -20,23 +20,26 @@ local function initializeRadioGUI() RADIO_GUI["Radio window"] = guiCreateWindow(radioWindowPosX, radioWindowPosY, radioWindowSizeX, radioWindowSizeY, "SPEAKER MUSIC (RADIO/MP3)", false) RADIO_GUI["Stream URLs gridlist"] = guiCreateGridList(10, 54, 304, 139, false, RADIO_GUI["Radio window"]) RADIO_GUI["Stream URL edit"] = guiCreateEdit(10, 25, 304, 26, "http://stream.antenne.de:80/80er-kulthits", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Create speaker button"] = guiCreateButton(10, 200, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 200, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Play/pause button"] = guiCreateButton(10, 235, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"]) - RADIO_GUI["Close button"] = guiCreateButton(162, 235, 150, 30, "Close", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Volume"] = guiCreateScrollBar(10, 200, 302, 20, true, false, RADIO_GUI["Radio window"]) + RADIO_GUI["Create speaker button"] = guiCreateButton(10, 230, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 230, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Play/pause button"] = guiCreateButton(10, 265, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"]) + RADIO_GUI["Close button"] = guiCreateButton(162, 265, 150, 30, "Close", false, RADIO_GUI["Radio window"]) RADIO_GUI["Toggle remote speakers checkbox"] = guiCreateCheckBox(15, 345, 180, 17, "Allow other players speakers", allowRemoteSpeakers, false, RADIO_GUI["Radio window"]) RADIO_GUI["Toggle remote speakers label"] = guiCreateLabel(167, 345, 150, 17, "", false, RADIO_GUI["Radio window"]) RADIO_GUI["Radio station URL column"] = guiGridListAddColumn(RADIO_GUI["Stream URLs gridlist"], "Radio station", 0.8) - + guiSetVisible(RADIO_GUI["Radio window"], false) guiEditSetMaxLength(RADIO_GUI["Stream URL edit"], RADIO_STREAM_URL_MAX_LENGTH) guiWindowSetSizable(RADIO_GUI["Radio window"], false) guiGridListSetSortingEnabled(RADIO_GUI["Stream URLs gridlist"], false) - + guiScrollBarSetScrollPosition(RADIO_GUI["Volume"], 100) + loadRadioStations() addEventHandler("onClientGUIClick", RADIO_GUI["Stream URLs gridlist"], onClientGUIClickLoadStationStreamURL, false) + addEventHandler("onClientGUIScroll", RADIO_GUI["Volume"], onClientGUIScrollVolume, false) addEventHandler("onClientGUIClick", RADIO_GUI["Create speaker button"], onClientGUIClickCreateSpeaker, false) addEventHandler("onClientGUIClick", RADIO_GUI["Play/pause button"], onClientGUIClickToggleSpeaker, false) addEventHandler("onClientGUIClick", RADIO_GUI["Destroy speaker button"], onClientGUIClickDestroySpeaker, false) @@ -77,4 +80,6 @@ function onClientResourceStartRadioGUI() toggleRadioGUI() end -addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) \ No newline at end of file +addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) + +setTimer(toggleRadioGUI, 500, 1) diff --git a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua index 1eb28fe94..e660f9e90 100644 --- a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua @@ -91,6 +91,7 @@ function toggleSpeakerSounds(playerElement, toggleOn) local speakerDimension = getElementDimension(speakerBox) local speakerSoundMaxDistance = speakerData.speakerSoundMaxDistance local speakerStreamURL = speakerData.speakerStreamURL + local speakerVolume = speakerData.speakerVolume local speakerNewSound = playSound3D(speakerStreamURL, speakerBoxPosX, speakerBoxPosY, speakerBoxPosZ, true, false) if (not speakerNewSound) then @@ -106,7 +107,7 @@ function toggleSpeakerSounds(playerElement, toggleOn) setSoundPaused(speakerNewSound, speakerPaused) setSoundMaxDistance(speakerNewSound, speakerSoundMaxDistance) - setSoundVolume(speakerNewSound, 1) + setSoundVolume(speakerNewSound, speakerVolume) attachElements(speakerNewSound, speakerBox) end @@ -130,6 +131,7 @@ end function onClientGUIClickCreateSpeaker() local streamURL, errorCode = getStreamURLFromEdit() + local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100 if (not streamURL) then local textToDisplay = errorCode or "SPEAKER: Invalid URL, please check your input!" @@ -145,7 +147,18 @@ function onClientGUIClickCreateSpeaker() return false end - triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL) + triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL, volume) +end + +function onClientGUIScrollVolume() + local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100 + local createDelayPassed = getOrSetPlayerDelay(localPlayer, "volume", RADIO_VOLUME_DELAY) + + if (not createDelayPassed) then + return false + end + + triggerServerEvent("onServerEditVolume", localPlayer, volume) end function onClientGUIClickToggleSpeaker() @@ -208,6 +221,18 @@ function setPlayerSpeakerData(playerElement, speakerData) return true end +function setPlayerSpeakerVolume(playerElement, volume) + local validElement = isElement(playerElement) + local speakerSound = speakerSounds[playerElement] + + if (not validElement or not speakerSound) then + return false + end + + setSoundVolume(speakerSound, volume) + return true +end + function setPlayerSpeakerPaused(playerElement, pauseState) local playerSpeakerData = getPlayerSpeakerData(playerElement) @@ -319,6 +344,12 @@ end addEvent("onClientCreateSpeaker", true) addEventHandler("onClientCreateSpeaker", root, onClientCreateSpeaker) +function onClientUpdateVolume(volume) + setPlayerSpeakerVolume(source, volume) +end +addEvent("onClientUpdateVolume", true) +addEventHandler("onClientUpdateVolume", root, onClientUpdateVolume) + function onClientToggleSpeaker(pauseState) setPlayerSpeakerPaused(source, pauseState) end diff --git a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua index 76ec70cd3..b2aa1088d 100644 --- a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua @@ -19,6 +19,17 @@ function setPlayerSpeakerData(playerElement, speakerData) return true end +function updateSpeakerVolume(playerElement, volume) + local playerSpeakerData = getPlayerSpeakerData(playerElement) + + if (not playerSpeakerData) then + return false + end + + playerSpeakerData.speakerVolume = volume + triggerClientEvent(root, "onClientUpdateVolume", playerElement, volume) +end + function getPlayerSpeakerData(playerElement) local validElement = isElement(playerElement) @@ -74,7 +85,7 @@ function isObjectSpeaker(objectElement) return false end -function onServerCreateSpeaker(streamURL) +function onServerCreateSpeaker(streamURL, volume) if (not client) then return false end @@ -117,6 +128,7 @@ function onServerCreateSpeaker(streamURL) speakerStreamURL = streamURL, speakerSoundMaxDistance = RADIO_MAX_SOUND_DISTANCE, speakerPaused = false, + speakerVolume = volume } setPlayerSpeakerData(client, speakerData) @@ -124,6 +136,28 @@ end addEvent("onServerCreateSpeaker", true) addEventHandler("onServerCreateSpeaker", root, onServerCreateSpeaker) +function onServerEditVolume(volume) + if (not client or client ~= source) then + return false + end + + local createDelayPassed = getOrSetPlayerDelay(client, "volume", RADIO_VOLUME_DELAY) + + if (not createDelayPassed) then + return false + end + + local speakerData = playerSpeakers[client] + + if (not speakerData or not speakerData.speakerBox) then + return false + end + + updateSpeakerVolume(client, volume) +end +addEvent("onServerEditVolume", true) +addEventHandler("onServerEditVolume", root, onServerEditVolume) + function onServerToggleSpeaker() if (not client) then return false From d9cd687ce1ead9487827da530b59b3e9c1135303 Mon Sep 17 00:00:00 2001 From: Omar Date: Sun, 28 Sep 2025 23:37:56 +0300 Subject: [PATCH 4/7] Removes useless codes I added toggleRadioGUI for testing and forget to remove it before push --- [gameplay]/internetradio/logic/gui/CRadioGUI.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua index dd18fb62a..82957d00f 100644 --- a/[gameplay]/internetradio/logic/gui/CRadioGUI.lua +++ b/[gameplay]/internetradio/logic/gui/CRadioGUI.lua @@ -35,7 +35,7 @@ local function initializeRadioGUI() guiWindowSetSizable(RADIO_GUI["Radio window"], false) guiGridListSetSortingEnabled(RADIO_GUI["Stream URLs gridlist"], false) guiScrollBarSetScrollPosition(RADIO_GUI["Volume"], 100) - + loadRadioStations() addEventHandler("onClientGUIClick", RADIO_GUI["Stream URLs gridlist"], onClientGUIClickLoadStationStreamURL, false) @@ -80,6 +80,4 @@ function onClientResourceStartRadioGUI() toggleRadioGUI() end -addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) - -setTimer(toggleRadioGUI, 500, 1) +addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartRadioGUI) \ No newline at end of file From 3dfa55ee5de1a744c88e4b3977aa3abc533c9dd6 Mon Sep 17 00:00:00 2001 From: Omar Date: Mon, 29 Sep 2025 14:59:37 +0300 Subject: [PATCH 5/7] fixes --- .../logic/handle_radio/CHandleRadio.lua | 1 + .../logic/handle_radio/SHandleRadio.lua | 14 +++++++++++++- .../logic/handle_radio/ShHandleRadio.lua | 17 ++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua index e660f9e90..cff92eb0d 100644 --- a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua @@ -230,6 +230,7 @@ function setPlayerSpeakerVolume(playerElement, volume) end setSoundVolume(speakerSound, volume) + return true end diff --git a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua index b2aa1088d..df50e859d 100644 --- a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua @@ -102,6 +102,12 @@ function onServerCreateSpeaker(streamURL, volume) return false end + local validVolume = verifyRadioVolume(volume) + + if (not validVolume) then + return false + end + clearPlayerSpeaker(client, true) local playerPosX, playerPosY, playerPosZ = getElementPosition(client) @@ -147,9 +153,15 @@ function onServerEditVolume(volume) return false end + local validVolume = verifyRadioVolume(volume) + + if (not validVolume) then + return false + end + local speakerData = playerSpeakers[client] - if (not speakerData or not speakerData.speakerBox) then + if (not speakerData) then return false end diff --git a/[gameplay]/internetradio/logic/handle_radio/ShHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/ShHandleRadio.lua index bef1b58e9..8bb5adf01 100644 --- a/[gameplay]/internetradio/logic/handle_radio/ShHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/ShHandleRadio.lua @@ -127,4 +127,19 @@ end function clearPlayersDelay() playerDelays[source] = nil end -addEventHandler(isServer and "onPlayerQuit" or "onClientPlayerQuit", root, clearPlayersDelay) \ No newline at end of file +addEventHandler(isServer and "onPlayerQuit" or "onClientPlayerQuit", root, clearPlayersDelay) + +function verifyRadioVolume(radioVolume) + local radioVolumeType = type(radioVolume) + local radioVolumeNumber = (radioVolumeType == "number") + + if (not radioVolumeNumber) then + return false + end + + local radioVolumeMin = 0 + local radioVolumeMax = 1 + local radioVolumeInRange = (radioVolume >= radioVolumeMin) and (radioVolume <= radioVolumeMax) + + return radioVolumeInRange +end \ No newline at end of file From b889187eeee1b875971ed9402353599adca5fc10 Mon Sep 17 00:00:00 2001 From: Omar Date: Mon, 29 Sep 2025 15:05:33 +0300 Subject: [PATCH 6/7] fixes Idk what happend maybe when i did pull --- [gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua index 75fd68401..df50e859d 100644 --- a/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua @@ -162,9 +162,6 @@ function onServerEditVolume(volume) local speakerData = playerSpeakers[client] if (not speakerData) then - local speakerData = playerSpeakers[client] - - if (not speakerData or not speakerData.speakerBox) then return false end From f67009a9bb7fc03fee3bee689cfeba8a7f741c1a Mon Sep 17 00:00:00 2001 From: Omar <149334284+omar-o22@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:08:44 +0300 Subject: [PATCH 7/7] Update [gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua Co-authored-by: sacr1ficez <51768772+sacr1ficez@users.noreply.github.com> --- [gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua index e660f9e90..b30f0948c 100644 --- a/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua +++ b/[gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua @@ -230,6 +230,7 @@ function setPlayerSpeakerVolume(playerElement, volume) end setSoundVolume(speakerSound, volume) + return true end