Output giving me a nil error, even if that's what I want?

You can do this:

while true do
	for a, sound in pairs(script.Parent:GetChildren()) do
		if sound:IsA("Sound") and workspace.Map.SoundRegions:FindFirstChild(sound.Name) == nil then
			sound:Stop()
		end
	end	
end

:FindFirstChild() returns nil if it doesn’t find the child, returns the child if it does.
Your code is also terrible performance-wise and functionality-wise. I suggest you use the ZonePlus module to detect whenever a player enters and exits a zone, it’s pretty great.

1 Like