So here is the portion of my anti-cheat that has walkspeed
local Player = game:GetService("Players").LocalPlayer -- gets the player
local Char = Player.Character or Player.CharacterAdded:Wait() -- gets their character
local Hum = Char:WaitForChild("Humanoid") -- gets the character's humanoid
Hum:GetPropertyChangedSignal("WalkSpeed"):Connect(function(Speed) -- If the walkspeed changed the function fires
if (Hum.WalkSpeed >= 51) then -- if it's greater than gamepasses can buy it
local ban = game.ServerScriptService.AntiSpeed.Ban -- sound for added effect
ban.Play()
wait(0.584) -- length of the sound
Player.kick(Player.." your speed is too high! As a result, you were kicked.") -- kick script
end
end)
I have also tried putting it in a while true do
while true do
Hum:GetPropertyChangedSignal("WalkSpeed"):Connect(function(Speed)
if (Hum.WalkSpeed >= 51) then
local ban = game.ServerScriptService.AntiSpeed.Ban
ban.Play()
wait(0.584)
Player.kick(Player.." your speed is too high! As a result you were kicked.")
end
end)
end
If anyone could help that would be highly appreciated. This is in a normal script put in ServerScriptStorage. FE is off.

6 comments
Player.kick has to be Player:Kick(Player.." your speed is too high! As a result, you were kicked.")
Thanks! I just realised I did the kick wrong! Post it as an answer and I can get you the reputation!
Player.kick has to be Player:Kick(Player.." your speed is too high! As a result, you were kicked.")
I'll just test it in game and then if it works then I will accept the answer!
Wait, I see the problem. You cant get local player from a server side script.
oh could you fix it then?