FJ's (Experimental) Character Anticheat

Are you OK with others using (or forking) it in their own games? Do you have a licence for this?

2 Likes

It appears as if it doesn’t recognize terrain as something valid to stand on which causes a flying false positive to occur. It should also support swimming in terrain water if that has anything to do with fixing it recognizing terrain as a platform as well.

5 Likes

There’s a quirk where position changes don’t fire a changed event when they’re done by physics or client-to-server replication, but server script changes do fire it.

-- An exception for when a server script explicitly teleports the player.
-- Exploiters are not able to trigger this from their side due to the way
-- replication works.
Torso:GetPropertyChangedSignal("CFrame"):Connect(Reset)

Knock yourself out. Though you’ll have to modify it for whatever you’re doing, since much of it is hard-coded and doesn’t anticipate every situation a game could put it through.

That’s why I didn’t put this into Community Resources. It’s not easy to use for those who are new to it. :laughing:

Oh, and yeah. It’s experimental, so it’s unstable at the moment.


The script was failing to detect the terrain within a region surrounding the player, so my fix for that was to explicitly add it to the list of things surrounding the player.

As for swimming in water, I need to figure out how to detect whether the player is inside of water. I’m hardly familiar to terrain, since I mostly use blocks for creating worlds

9 Likes

As for water, could you try creating a Region3 around the player and using Terrain:ReadVoxels to determine if they’re inside of water or not?

1 Like

I’ve figured it out.

-- Are we inside terrain water?
local tRegion = Region3.new(Torso.Position - Vector3.new(1, 1, 1), Torso.Position + Vector3.new(1, 1, 1)):ExpandToGrid(4)
local td1, td2 = workspace.Terrain:ReadVoxels(tRegion, 4)
for x, xt in ipairs(td1) do
	for y, yt in ipairs(xt) do
		for z, cell in ipairs(yt) do
			if cell == Enum.Material.Water then
				return workspace.Terrain
			end
		end
	end
end
2 Likes

If you set your humanoid’s JumpPower to anything above 50 on the server, it still thinks you’re flying despite being set on the server. This doesn’t occur for WalkSpeed though.

Also I’m not sure if this is a dev console bug or not, but the script rate appears to be rising indefinitely, and I’m not observing this rate rising behavior with any of my other scripts.

The max jump height is coded into the configuration module. This is because I am unable to precisely determine jump height from the Humanoid.JumpPower property. It has to be determined from trial-and-error.

1 Like

That’s a really cool project however what do you plan to do agaisnt the exploiter than set back their veolocity if it exceed an limit. I beleive this is how exploiter can bypass your anti cheat.

It sets their velocities to zero, so they can’t “catapult” themselves to far away places.

For no clip, small part in center of humanoid root part. If it touches something it’s not suppose to, that’s a no clipper.

That’s a bad idea. If I attach a part to the player’s character, they have physics control over it, which means they can tell the server whether or not it touched something, or detach it entirely and teleport it to a far-away location.

The server checks. The part is created on the server.

repro.rbxl (21.8 KB)

I rest my case.

2 Likes

No you weld the part to the character’s humanoid root part, silly.

1 Like

That’s what I did.

Just look at the file.

You’re doing it wrong.

I’ve been using this and it’s proven effective.

1 Like

I did exactly what you said I should do. The part is attached to the HumanoidRootPart with a weld so I can touch it to stuff.

Go read the scripts!

For your future reference, make a note that local manipulation of certain properties of welds, specifically those which are a descendant of the character, replicate to the server.

You should keep on improving and advancing this anticheat.
This creation of yours could be useful for many games, like obbies for example. Maybe certain games that are targeted for exploiting(which are many) should use this feature, there may be some bugs but it could help a lot!

3 Likes

This is really cool! I like the features and methods used to make this work!
I’m actually making a basic AE myself and also plan on releasing it.

A feature that you could try to implement is a ignores system (I made this in my AE) that can stop important people getting affected by certain checks.

Keep it up! Hope to see some good updates!

1 Like