I have multiple sounds playing at once. Say Billy is over here and John is over there. Once Billy is close enough to hear John's radio, Billy's gui background music turns off so he can hear Johns's music, and once he backs away so he cant hear John's music, his gui background music turns back on.

I am using startergui to house the backrground music and then a simple radio gui that applies a sound to your humanoid root part. So I was like: "Okay I can just see if I am in max range of the sound." So I took the max range of the sound instance and applied it to a magnitude of both humanoids (a for loop for my own player instance with all other players). From there I see if a humanoid is playing a sound, and then if there is one, both player's (the one playing the music and the one listening to it) background musics are turned off until the music is ended

here's my scripts:

local starterGui = script.Parent
local player = game.Players.LocalPlayer
local Run = game:GetService("RunService")
local radius = 20

Run.RenderStepped:Connect(function()
	local char = player.Character
	local root = char:FindFirstChild("HumanoidRootPart")
	local MySounds = 0
	if root:FindFirstChildOfClass("Sound") then
		MySounds = MySounds+1
	end
	for _, players in pairs(game.Players:GetChildren()) do
		if players ~= player then
			if players.Character then
				local chars = players.Character
				local theirRoot = chars:FindFirstChild("HumanoidRootPart")
				local mag = (root.Position-theirRoot.Position).Magnitude
				if mag <= radius then
					if theirRoot:FindFirstChildOfClass("Sound") then
						MySounds = MySounds+1
					end
				end
			end
		end
	end
	if MySounds > 0 then
		for _, sound in pairs(SoundFolder:GetChildren()) do
			if sound.ClassName == "Sound" then
				if sound.IsPlaying == true then
					sound:Pause()
				elseif sound.IsPlaying == false then
					sound:Stop()
				end
			end
		end
	elseif MySounds == 0 then
		for _, sound in pairs(SoundFolder:GetChildren()) do
			if sound.ClassName == "Sound" then
				if sound.IsPaused == true then
					sound:Resume()
				elseif sound.IsPaused == false then
					sound:Play()
				end
			end
		end
	end
end)

Basically it checks if there is a sound in the vacinity of the local player, and if there is, then the local player's background music is turned off, vice versa with the player playing the music.

I dont have any outcome errors, and when I tested it, It shut off the music, but then when I backed away from the music, it wouldn't turn it back on.

Any help?

Edit: the sound being represented in the script is the background sound. I just want it to check if there is any radio sounds in the other players humanoidrootparts if they are even close enough for the local player to hear

(Hope all my thoughts clear things up)