My game just got exploited, what do I do?

Are there any objects that are unanchored? I’ve seen an exploit where people can drag around unanchored objects.

You seem to know nothing about how anti exploit systems work. Exploiters can not affect anything server-sided unless you have a backdoor. If they did, it’s your issue, meaning you have to search for a backdoor in your game.

Changing anything locally but on a different player will not affect their gameplay, their speed will not be changed as it would be overwritten by server; clients can not manage that - even if you attempt to locally “kill” another player, it would only die for your own eyes - that player will still be alive on server.

There is a possible chance that it wasn’t the stands or anything being used to fling the players, but the actual exploiter themselves. I do this for every game I make unless it’s really necessary, but you can do this:

I got this from the Player-Player Collisions developer hub page:

Add a script to ServerScriptService:

And paste the following into it:

local PhysicsService = game:GetService("PhysicsService")
local Players = game:GetService("Players")
 
local playerCollisionGroupName = "Players"
PhysicsService:CreateCollisionGroup(playerCollisionGroupName)
PhysicsService:CollisionGroupSetCollidable(playerCollisionGroupName, playerCollisionGroupName, false)
 
local previousCollisionGroups = {}
 
local function setCollisionGroup(object)
  if object:IsA("BasePart") then
    previousCollisionGroups[object] = object.CollisionGroupId
    PhysicsService:SetPartCollisionGroup(object, playerCollisionGroupName)
  end
end
 
local function setCollisionGroupRecursive(object)
  setCollisionGroup(object)
 
  for _, child in ipairs(object:GetChildren()) do
    setCollisionGroupRecursive(child)
  end
end
 
local function resetCollisionGroup(object)
  local previousCollisionGroupId = previousCollisionGroups[object]
  if not previousCollisionGroupId then return end 
 
  local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId)
  if not previousCollisionGroupName then return end
 
  PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName)
  previousCollisionGroups[object] = nil
end
 
local function onCharacterAdded(character)
  setCollisionGroupRecursive(character)
 
  character.DescendantAdded:Connect(setCollisionGroup)
  character.DescendantRemoving:Connect(resetCollisionGroup)
end
 
local function onPlayerAdded(player)
  player.CharacterAdded:Connect(onCharacterAdded)
end
 
Players.PlayerAdded:Connect(onPlayerAdded)

This will prevent players from colliding, and therefore will stop pretty much every known and unknown fling exploit to mankind. :slight_smile:

3 Likes

@Vyntrick yes I forgot about the collision

also you could make a different way like a border around the map so people dont actually fall off maybe I dunno

I don’t necessarily know “nothing” about anti-exploit. I do understand a thing or two. If I know everything about exploit, I wouldn’t be here asking an exploit-related question.

Like I said, how can I search for any backdoor when I’ve built the game 100% by myself from the ground up? I’ve stated this few times before.

Would you explain to me what does collision have to do with flinging players? Thank you.

I already provided you with the information needed.
Here: Detecting Collisions | Roblox Creator Documentation

As I said earlier: This will prevent players from colliding with other players, the fling script requires the player to collide with another player so they can fling them away by using a character spin script.

Well that would be to much work if your game is successful since there is a lot of servers and like what happened to me once at infect ANY script even if the server is being ran it doesn’t matter.

I would just say be careful of what plugins you download.

Well if their traceless you cant really check for them unless you can script some sort of detection system but I am not really a scripter so I don’t know if you could do that or not. But if you can script that then that might work.

what is this game called? idk what it is called

well, there are some exploits which can edit scripts like in studio, except its in game. Like change a player’s rank in admin to like owner or something and ban someone.

If I may ask, are you allowing player collisions? There is currently an exploit that allows you to easily fling people if the game allows player collisions.

Exploiters can make themselves invisible (yeah that’s kinda crazy, but true) and can spin their HumanoidRootParts to cause their entire body to spin at fast speeds, and if anyone is to come into contact with that super fast spinning, they can get flung, and even off the map. No matter how big it is.

I’m curious how bigger games manage this without turning player collisions off?

If you don’t use BodyVelocitys, Gyros, etc… you can run a check to see if that is added to the humanoidrootpart using :ChildAdded() if that’s still a function.

As to bigger games, I’m unsure what they do exactly.

Example to what I said:

Try putting a script in StarterCharacterScripts, then

local HRP = script.Parent:WaitForChild("HumanoidRootPart") -- I don't think the wait for child is necessary, but better safe than sorry

HRP.ChildAdded:Connect(function(Child)
   if Child:IsA("BodyVelocity") then -- Gyro, or other Body_ can be put in here. Not sure exactly what they used, it would take a some research
       HRP.Parent.Humanoid.Health = 0
    end
end)

I wrote this off the fly, no studio but something like this could probably help if you do not plan on using flying, spinning commands, etc…

You could even get the player from the character but I didn’t do that simply to save time. killing should be efficient enough instead of a kick, but you can go the extra mile if you find killing is not working. :+1:

1 Like