Just wanted to address this point, it’s pretty much impossible. Roblox already does a ton of anti exploit in the client but it’s not as simple as “locking the process”. On Windows, for example, each process can load Windows modules that allow them to read and write to the memory of other processes. These functions are built in to Windows.
2 Likes
I already have a full proof fix of this, this also captures welds that are buried into workspace.
local Players = game:GetService("Players")
function GetPlayerByWeld(WeldObject)
if not WeldObject then return nil end
for i,v in pairs(Players:GetPlayers()) do
if v.Character and WeldObject.Part0 and WeldObject.Part0:IsDescendantOf(v.Character) then
return v
end
end
end
game.Workspace.DescendantAdded:Connect(function(Object)
if Object:IsA("Weld") and Object.Name == "RightGrip" then
local Player = GetPlayerByWeld(Object)
local WeldCount = 0
if Player then
Object.AncestryChanged:Connect(function()
if Object.Parent ~= nil and not Object:IsDescendantOf(Player.Character) then
Player:Kick("Ancestry")
Object:Destroy()
end
end)
for i,v in pairs(Object.Parent:GetChildren()) do
if v:IsA("Weld") and v.Name == "RightGrip" then
local Owner = GetPlayerByWeld(v)
if Owner and Owner == Player then
WeldCount = WeldCount + 1
end
end
end
if WeldCount > 2 then
Player:Kick("Max")
Object:Destroy()
end
end
end
end)
1 Like