Anti-j#rk | Quickly stop exploiters from this popular cheat

Sure, some measures will eventually be bypassed. However, I believe relying solely on Roblox to stop exploits shouldn’t be done either. The more cheating measures there are, the more time and effort it takes for exploiters to break them & often causing exploiters to give up.

In my opinion implementing ban waves with alt-bans seems effective enough, which of course does let bad actors cheat for a while. But as it goes unnoticed an alt ban discourages this kind of behavior.
At the same point requiring less attention to patch exploiters slipping through the measures.

However yes, I agree with what you mean.

3 Likes

Not hating. Just being a bit ironic here.

Also, @Civil_Engineer or whoever they were as I can’t find their username. Why are you bringing up a previous opinion of mine? If I hate something thats my opinion. No need to bring your nose into this.

Most people call me ragebaiters for actually no reasons and I find it offensive and dumb.

1 Like

No. I mean they can create/take a part and move it around, via Vector3.

I’m not updated of this thread lore so could you please tell me how what he said was ironic?

1 Like

Not him. Me. What I said at first was used in an ironic way. I should’ve made it clear but I thought using a skull emoji and using the phrase “peak programming” was enough to understand my attempt at being humorous.

1 Like

haha charlotte you are very funny

3 Likes

although the code’s quality isn’t top tier, the idea is pretty underrated lol

1 Like

I would much prefer a client-sided whitelist since that would guarantee that nobody would see their animation.
All the animations from Roblox’s end are in the character:


So you simply need to cross check the game’s animation ids and the animation ids imported from Roblox and stop the animation if it is being created by the client.
Now that I think of it, Roblox might be able to stop this exploit if they stop R15 animations being created and replicated from the client.

EDIT:
[originally I thought] The reason I say client-sided is because if the animation is stopped on the server it will continue for all clients.
[after testing] You can do either server or client, but if it is client-sided checking, you could turn it off and see the exploited animations (if you’re a moderator or dev)

EDIT 2:

local white_list = {}

local Players = game:GetService("Players")

local function onPlayerAdded(Player)
	Player.CharacterAdded:Connect(function(Char)
		local anims = Char:WaitForChild("Animate")
		Char:WaitForChild("Humanoid"):WaitForChild("Animator").AnimationPlayed:Connect(function(track)
			local id = track.Animation.AnimationId
			if white_list[id] then
				return nil
			end
			for _,string_value in pairs(anims:GetChildren()) do
				for _,animation in pairs(string_value:GetChildren()) do
					if animation.AnimationId==id then
						return nil
					end
				end
			end
			-- sus
			warn("User "..Player.Name.."("..tostring(Player.UserId)..") attempted to play unrecognized animation : "..tostring(id))
			track:Stop()
		end)
	end)
end

-- add game's animation ids to the whitelist
Players.PlayerAdded:Connect(onPlayerAdded)
for _,plr in pairs(Players:GetPlayers()) do onPlayerAdded(plr) end
1 Like

I wish I could do that too, but there are plenty of games that play animations in the client.
Though not that many but still a significant amount to consider.

1 Like

I don’t get it. If they’re on the client they’re on the server. Just whitelist the animations that you play on the client. Generally speaking, I keep all animation objects in a folder in replicated storage. I load and play them on the client sure but they’re replicated to the client, used locally, and then created and loaded by the server by the animation controller. However in my code, I only check the id, which will be the same.

1 Like

One thing to note is if you aren’t checking animation object .AnimationId and are instead checking something like “rbxassetid://123123123”. That might not work since once that is put into an animation object, it could be changed automatically.


image

Set by a script:

image

If I paste the id in directly in studio window it changes to a rbxassetid://

image

do i need this even if im making a singleplayer game? also i thought roblox fixed this themselves?

Not really, you would use this in a scenario where you wouldn’t want your players exposed to this inappropriate animation.

I appreciate this a lot! There are cheats that aren’t really that complicate to fix and giving such an easy solution to everyone is really chill! :slight_smile:
(Plus the usage of words on the code made me laugh a lot lol)