Hello, I am working on my anti-cheat (TAC) and I have completed my main server module, which detects if the player in question is editing their speed or jump power, and if they are it bans them via a datastore.
I finished the client side, discovering that I am only able to kick them, as the datastore stores data from the server and not the client. I want to be able to ban the player without using remotes, that way a remotespy will not be able to detect such a thing.
The banning and kicking function are stored in a module, to simplify life and call on them in one line of code, but the client is only able to call the kick, when I try and ban on client side it just ends up being a kick that SAYS your banned.
Is there even a possible way to go about this?
--[[
Welcome to TAC: Tactical Anti Cheat
First of all, all bans with TAC are perm and cannot be appealed. However, if we replace data stores,
or do a ban wipe, all banned players will have another chance.
At the moment, TAC only covers server sided changes, which means that most speed hacks will
fly under the radar at the moment, this will change very soon.
If there is a folder named: TAC: Local then please move that to starter player scripts.
TAC: Server bans only happen when someone has a backdoor, and edits their character directly.
]]--
local functions = require(script.Parent.functions)
local speedlimit = 30
local normalspeed = 16
game.Players.PlayerAdded:Connect(function(player)
wait(3)
if player.TACBan.Value == true then
functions.Banned(player)
end
print("TAC (Server): Loaded.")
local char = workspace:FindFirstChild(player.Name)
while 1+1==2 do
wait(15)
if char.Humanoid.WalkSpeed <= normalspeed then
print("TAC (Server): Player " .. player.Name .. " has normal speeds.")
elseif char.Humanoid.WalkSpeed >= speedlimit then
functions.BanInduction(player)
print("TAC (Server): Banned player " .. player.Name .. " due to high speeds.")
end
end
end)

2 comments
Show us the module scripts as well.
People can bypass this by simply setting the script's parent to nil