MadAntiCheat V2 - A Much Needed Upgrade

Hitbox expanding as in it checks for size changes in other player’s characters, and the speed check goes off of a stud check, not a velocity check.

Yo, im Conra_virusman, formally known as @kinglol123468. Im gonna make my first post useful and give you a tip to improve the anti-speed. As we have noticed that anti-speed is really bad. Theres a way you can make a anti-speed without using the client. All server. This uses the Humanoid.runningfunction. Heres the code


game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
	local oldpos
	char.Humanoid.Running:Connect(function(spped)
		if (spped > char.Humanoid.WalkSpeed+5) then
			char:SetPrimaryPartCFrame(CFrame.new(oldpos))
		else
			oldpos = char.HumanoidRootPart.Position
		end
end)
	end)
end)

2 Likes

That is a very bold claim which holds zero weight to it. It’s impossible to pull off in a 2nd party anti-cheat.

2 Likes

I think your misunderstanding the advantages of a system like this. It’s not to prevent exploiters from essentially teleporting their camera to see any portion of the map. The point of this module is to make it so the client cannot just replicate it’s character position to the server which in turn is used by internal game systems (for example a racing game finish line) and replication to other players.

So here’s how the speed check will help. Let’s say the exploiter requests a position change for their character position on the server, by changing the humanoidrootpart.CFrame of their character to make them go to the finish line in a running game. Since character model has networkownership this would replicate. However, with this on a magnitude check would invalidate the client request, making it so the exploiter only teleports the fake character they made. (If they were using the default roblox character, nothing would happen as it would get reset by the server).

The advantage is that the character cannot just teleport to the end of the race. Teleporting their own local character isn’t recognized by the server.

1 Like

This is a really bad way to make an anti exploit. It only prevents if the exploiter changes their Humanoid.WalkSpeed values which is really basic. Most exploiters change their HumanoidRootPart.Position. This means Humanoid.Running won’t get fired.

1 Like

Its meant for speed. Not humanoid root part teleportation. Its not meant to be for anti-exploit. I was just giving a suggestion.

I don’t understand why you posted it then though. It’s a much worse way of doing what this module can accomplish already.

Can you read? It was a suggestion. Not meant for teleportation. You dont have to use it.

Am I missing something here? This is what you said (below). I was just saying that your way isn’t really any better as you claim, just because it doesn’t use the client.

This point is invalid. I know how it works and your example is bad. A cheater can still just teleport over and over again to the finish line and even though they get sent back the server will still register the hit. Trying to stop exploiters is fruitless.

The only way to prevent most exploits is to hard code sanity checks in your code. This module does not add any value when it comes to stopping them.

1 Like

I think this module is a good first step towards that, now i’m thinking about it for the racing game you shouldn’t be using the actual character’s position as the position used for internal game systems. The position used for that should only be updated after the server feels like the request is legit. This means if the exploiter changed their character position to the finish line it wouldn’t get replicated to the position used by the server to detect the collision for the finish line until the server verifies this move is possible.

Then you would use a custom collider on the server which is set to the position stored on the server. I would actually. Something like a client side prediction system for the movement.

There literally aren’t any instructions(I was looking at the wrong thing). Also, you should consider putting proof of your anti-cheat working in the post.

2 Likes

Weird. I have the instructions. Clicked the link, scrolled down a little bit, and:


Theres also stuff further below about the API.

Oof, I was looking at the Github source page and not the installation page lol

you can easily bypass this with just changing your walkspeed without any bypass code?

If you change walkspeed server sided, it will of course update the check. This anti-speed check works via checking magnitude, although I do plan on implementing a velocity check soon to be more precise.

If it checks the position of the player from the last frame versus the current frame, then something’s VERY wrong.

I’d disagree, this can be easily bypassed and could result in memory leaks on the server (not significant enough though), the player could use a function hook so they can wait before returning a value and, they could even spoof values returned, I’d recommend using Player:GetNetworkPing() instead, unfortunately, I don’t know how this has been implemented and don’t know how secure it is from being spoofed (it’s almost certainly more secure than using remote events since Roblox could just ping your public ip; you’d actually have to modify your router settings or intercept packets to spoof your ping or they could also ping your ISP instead).

Also, I looked through some of your code and, this loop isn’t being terminated when a player leaves


; it will be run indefinitely and result in memory leaks + lag considering you’re using a while true do loop for each player, I’d highly recommend having a single loop which loops through a list of players rather than having a loop (or several loops) per player.

this is also the case with your speed check sub module

While these checks (below) will stop most inexperienced exploiters (assuming they’re trying to actually make scripts), they can be “bypassed” with ease by using simple metamethod and function hooks
image

Some of your code is actually really good though,
image
I’d recommend using variables though and a single function which can be reused (e.g. PlayerAdded).

4 Likes

Alright, this version supports auto updating so I can easily update it, thanks for the tip!

Velocity checks make vehicles unusable. You have no anti-fly, and most of your features require a client. This isn’t that great of an anti-cheat. You should use humanoid.Running instead of your velocity checks.

1 Like