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)
