This may be caused by some unsecure events in your game that exploiters could be firing, possibly some backdoors. Backdoors can be hidden in scripts. There are several ways that backdoors can be loaded into your game with different functions: require, getfenv, setfenv, loadstring, etc. If you see anything suspicious like that in your game scripts, remove it. I recommend looking up how to spot and remove backdoors if this doesn’t help much.
Some exploits use the CoreGui to hide their stuff which would explain why you couldn’t see anything in their GUI.
These exploiters could also possibly be accessing stuff through chat scripts. I’m not sure if you’ve added any scripts to your chat though.
There is not many ways to prevent exploiters from accessing your game, but there are a few options like:
Hiya, while I was reading this I remembered how one of my old games got this, I didnt really know how to sort it out, but the advice I can give to you is, Keep banning them, if needs be you could set a account age limit, so that will stop people from creating new accounts and joining just to hack/exploit.
I did that. But I can’t trace the hackers because as soon as a potential hacker joins, everyone gets kicked. I can’t see the leaderboard after being kicked.
What you could do, is get common words and do something like;
game.Players.PlayerAdded:Connect(function()
player.Chatted:Connect(function(msgenable)
if msgenable == "Commonly used words here" then
-- You could add a ban system Or a kick system
player:Kick("You have been kicked for potentially exploiting")
end
end
end)
end)
hmm… I did some web searching and I found this script
local mess = "whatever message here"
local repsto = game:GetService("ReplicatedStorage")
for i,v in pairs(game.Players:GetPlayers()) do
if v.Name ~= game.Players.LocalPlayer.Name then
repsto.KickPlayer:FireServer(v.Name, mess)
end
end
maybe that will help
so if this script works, it would mean that you must’ve made a mistake when scripting that script which responses to the kickplayer event
edit: I got someone to test it for me, it seems to work… so I would suggest just editing the kickplayer script and that should fix everything
New Recommended Script
local adminIDs = {
game.CreatorId,
}
game:GetService("ReplicatedStorage"):WaitForChild("KickPlayer").OnServerEvent:Connect(function(player, target, msg)
if not table.find(adminIDs, player.UserId) then
return player:Kick("Tampering with Admin restricted commands")
end
target:Kick(msg)
end)
local admins = {
588140429,
3152730034,
2215048957,
1312183411
}
local function kickPlayer(adminPlayer, playerToKick, reason)
if not table.find(admins,adminPlayer.UserId) then
return adminPlayer:Kick("no way jose")
end
game:GetService("Players"):FindFirstChild(playerToKick):Kick(reason)
end
game:GetService("ReplicatedStorage"):WaitForChild("KickPlayer").OnServerEvent:Connect(kickPlayer)
You could try shutting down all of the servers in the Experience and then update the game with a blacklist script and putting in their UserIDs, which should prevent them from rejoining.