Global Audio Exploit

Heya, a game I develop on has an issue with exploits, Global audio to be exact we’ve enacted an anti-cheat for flying speeding but global audio is still an issue even though we’ve removed radios

I’ve tried removing the remotes for the radio as I read that may be the reason why but it continued
Can anyone help me with this?

1 Like

try checking for backdoor scripts, type “script” in the workspace and see if there are any suspicious scripts that are not added by you ( they can be anything )
or download this plugin Ro-Defender™ Plugin v8.7 - Roblox
( in my project before downloading this plugin, there are scripts named “fix” or “debounce” inside random objects. Those are backdoor scripts )

I’ve tried that and the radios are the reason why it’s being played I don’t know how to fix it, nor have i found any solution on here

The code to play the music should be handled by the server (if its for everyone). Any remotes used by a client involving music should only be able to request music not directly invoke music to play.

We had our programmer rework the code but it still continued although we had the remotes reworked it continued I’ve heard of a exploit which caused this I can’t see any other solution other then adding an anti cheat for the radios

I guess we’d have to see your code then to help you figure out what the issue is.

local button = script.Parent.Parent
local Textscreen = script.Parent.Parent.TextScreen
local Numscreen = script.Parent.Parent.NumScreen
local dot = script.Parent.Parent.Dot
local TextGUI = Textscreen.SurfaceGui
local NumGUI = Numscreen.SurfaceGui
local MUSIC = script.Parent:WaitForChild("MUSIC")
local music = script.Parent:WaitForChild("Music")
local static = script.Parent:WaitForChild("Static")
local tune = script.Parent:WaitForChild("Tune")
local SoundIdMsg = music.SoundId
local SoundId = music.SoundId
local UpdateVP = script.Parent.UpdateVP

button.ClickDetector.MouseClick:connect(function(player)
	if not player.PlayerGui:FindFirstChild("Pop") then
		local newgui = script.Parent.Pop:Clone()
		newgui.Frame.Radio.Value = script.Parent.Parent
		newgui.Parent = player.PlayerGui
		newgui.Frame.Script.Disabled = false
	end
end)

MUSIC.OnServerEvent:connect(function(player, MusicID)
	music.Playing = false
	music:Stop()
	static:Stop()
	music.SoundId = "rbxassetid://"..MusicID
	NumGUI.TextLabel.Text = player.Name
	NumGUI.Enabled = true
	Numscreen.Material = "Neon"
	Numscreen.BrickColor = BrickColor.new("Hurricane grey")
	local Asset = game:GetService("MarketplaceService"):GetProductInfo(MusicID, Enum.InfoType.Asset)
	TextGUI.TextLabel.Text = Asset.Name
	TextGUI.Enabled = true
	Textscreen.Material = "Neon"
	Textscreen.BrickColor = BrickColor.new("Hurricane grey")
	dot.Material = "Neon"
	dot.BrickColor = BrickColor.new("Artichoke")
	script.Parent.StartMusic:Play()
	wait(1)
	music:Play()
	static:Play()
	music.Playing = true
end)

UpdateVP.OnServerEvent:connect(function(player, Volume,Pitch)
	if tonumber(Volume) > 2 then
		Volume = "2"
	end
	if tonumber(Pitch) > 2 then
		Pitch = "2"
	end
	music.Volume = Volume
	music.PlaybackSpeed = Pitch
	static.Volume = Volume*6
	tune:Play()
end)


This is the entirety of the reworked code

Yeah see both of those are directly connected to remote events. The first one take the musicID directly from the remote and plays it. Instead take a “request”. Then queue the request and make it wait to be played until the last one finishes or something. Depending on how you want all this function.

If the intention is for players to choose they music they listen to individually, then move the music playing code onto the client. Playing on the server plays for everyone, playing on the client will be just for that client.

Check SoundService and then if there are bad audios, ClearAllChildren.

We want EVERYONE to hear it not just the player and we don’t want to queue music for individual players

So you want everyone to hear the music. But you also want to let everyone change the music without a queue?

Correct. We want them to be able to play without a queue

Then I don’t see what the problem your having is.

Global audio issue exploiters are playing over every sound and earraping music

Because your not queuing play requests. Any client can invoke the play function and start playing a sound. The previous sound isn’t over so multiple music plays at the same time. That last statement wasn’t true I see in your code you are stopping the previous sound. So its just a matter of players playing new sounds. But its possible that if the method is invoked at relatively the same time by 2+ clients multiple sounds get played at the same time.

Gotcha, So a fix would either be a anti cheat to check for exploits,

Or queue request for music so exploiting the music wouldn’t be possible

I don’t think there is any exploitation happening exactly. You may just need a debounce. But if you don’t implement a queue clients will be stopping/playing new songs nearly constantly. Alot of the “Club” type games out there have a song play queue and also a downvote system. The down vote will cancel the current song if enough players don’t enjoy it.

the issue is an external program Injecting audio part into the game

because even after the exploiter leaves

The loud earraping music is still playing

If a client creates a part, then it only exists on the client. So idk how they would be doing that.

I don’t know either hence why I came here :laughing: