Just do a simple check whenever you try to send requests to the server. You don’t need to worry about them changing it as they can’t (unless you are changing data through RemoteEvents/Functions which is best to avoid).
If you do use RemoteEvents/Functions, you can implement your own anti-cheat (though it depends on how YOU make the SERVER do the job).
local object = — path to object which is holding a value
local remote = — path to remote event
value:GetPropertyChangedSignal(“Value“):Connect(function()
remote:FireServer(object.Value)
end)
Now a remote event is fired. React to it using a Script.
Script
local remote = — path to remote event
local object = — path to same object in LocalScript
remote.OnServerEvent:Connect(plr, val)
if object.Value == val then return end — legitimate change
— reaction to unlegitimate change
plr:Kick(“Usage of illict third party software detected.“)
end)