There is a new exploit that causes all the players in a game to shake/dance like crazy. Here’s a gif of it: https://gyazo.com/44801a104ed273c9b3196c4a6616b3c3
Don’t know why or how its being caused. The game is FE. Anyone else facing this issue?
There is a new exploit that causes all the players in a game to shake/dance like crazy. Here’s a gif of it: https://gyazo.com/44801a104ed273c9b3196c4a6616b3c3
Don’t know why or how its being caused. The game is FE. Anyone else facing this issue?
Kinda a bug where animations played on players, that aren’t their own client, replicate.
Repro code I used:
if game.Players.LocalPlayer.Name ~= "Player1" then
local Humanoid = game.Players:WaitForChild("Player1").Character:WaitForChild("Humanoid")
while not Humanoid:IsDescendantOf(game.Workspace) do wait() end
wait(2)
local Animation = Instance.new("Animation")
Animation.AnimationId = "http://www.roblox.com/asset/?id=182435998"
Humanoid:LoadAnimation(Animation):Play()
end
On top of this, people are also playing sounds in other character’s “Head” (such as death noise or swimming noise), which replicates and causes servers to eventually crash since they are playings too many sounds.
Make a separate topic for that exploit if you have any details, it’s a bit off-topic here (this is about “Mass Player Dance Bug”).
Found the cause
This is awesome just saying. I’ve always wondered if this could happen.
Used base code: (indeed works like @TheNexusAvenger said)
while wait(1) do
for i,v in pairs(game:GetService('Players'):GetChildren()) do
Player = v.Name
AnimationId = "33796059"
local Anim = Instance.new("Animation")
Anim.AnimationId = "rbxassetid://"..AnimationId
local k = game.Players[Player].Character.Humanoid:LoadAnimation(Anim)
k:Play() --Play the animation
k:AdjustSpeed(99)
end
end
------------------------------------------------------------
while wait(1) do
for i,v in pairs(game:GetService('Players'):GetChildren()) do
Player = v.Name
AnimationId = "248263260"
local Anim = Instance.new("Animation")
Anim.AnimationId = "rbxassetid://"..AnimationId
local k = game.Players[Player].Character.Humanoid:LoadAnimation(Anim)
k:Play() --Play the animation
k:AdjustSpeed(2)
end
end
(got posted in an exploit Discord around 14h ago, but luckily not v3rm it seems)
Oh, they have it already. My game’s servers are doing synchronous dabbing.
I wonder if you could use an animation that moves the head 1e5 studs down (in the void) to kill someone this way
Perhaps a temp patch would be an animation authentication system which will be painful
Use this script to stop it from happening until Roblox release an official patch.
local authorizedAnimations = {600843952,180436334,180436148,180435571,180435792,125750702,180426354,178130996,182393478,180426354}
local player = game.Players.LocalPlayer
player.Character.Humanoid.AnimationPlayed:connect(function(animInstance)
local auth = false
local animIdStr = string.match(animInstance.Animation.AnimationId,"%d+")
for _,t in pairs(authorizedAnimations) do
if (animIdStr == tostring(t)) then
auth = true
end
end
if (not auth) then
animInstance:Stop()
end
end)
Edit: Working on detecting speed too.
They could still spam roblox animations, but good enough for me!
Yeah, still looking into detecting the speed so even if they did, it would be at default speed.
Yeah. Until then, gj roblox (this issue isn’t as bad as the constraint replication issue)
I’ll keep the thread updated if I figure out anything else for you.
Thank you!
Nice solution, but that’s only for R6, right? No R15, much less avatar animations.
A more secure way is to modify the Animate scripts/localscripts to know which animationtracks they have, so that they can only play them if those are validated.
Although for stuff other than characters, animations played on the client doesn’t replicate IIRC. Custom characters could work to further fix the issue then.
When this is fixed please don’t restrict animations to the player’s own character. Instead, restrict it to the player’s character and characters in which the player has physics control on the HumanoidRootPart.
My suspicion is that the people who started working on the new instances (Like constraints, updated humanoid code, animation objects, accessories etc) forgot some sort of Filtering Enabled opt-in property check - or maybe it inherits the ignore from the BaseParts?
(just speculating)
It’s kind of intended. When you play an animation on your own character, it tells the server and other clients that you’re doing that animation, so they can locally play it too. (otherwise have to replicate every change of your joint every tick, which would never be smooth, nor efficient). Just seems like they didn’t add a check for this there.