local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = CoreGui
local frame = Instance.new("Frame")
frame.Parent = screenGui
frame.Size = UDim2.new(0, 175, 0, 180)
frame.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
frame.BackgroundTransparency = 0.35
frame.BorderSizePixel = 0
local corner = Instance.new("UICorner")
corner.Parent = frame
corner.CornerRadius = UDim.new(0.1, 0)
local shadow = Instance.new("ImageLabel")
shadow.Parent = frame
shadow.Size = UDim2.new(1, 20, 1, 20)
shadow.Position = UDim2.new(0, -10, 0, -10)
shadow.BackgroundTransparency = 1
shadow.Image = "rbxassetid://1316045217"
shadow.ImageColor3 = Color3.new(0, 0, 0)
shadow.ImageTransparency = 0.5
shadow.ScaleType = Enum.ScaleType.Slice
shadow.SliceCenter = Rect.new(4, 4, 48, 48)
local screenSize = screenGui.AbsoluteSize
local frameSize = frame.AbsoluteSize
frame.Position = UDim2.new(
0.35, -frameSize.X / 2,
0.65, -frameSize.Y / 2
)
frame.Active = true
frame.Draggable = true
local titleLabel = Instance.new("TextLabel")
titleLabel.Parent = frame
titleLabel.Size = UDim2.new(0.9, 0, 0.12, 0)
titleLabel.Position = UDim2.new(0.05, 0, 0.05, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Shashlik Bring Parts V3"
titleLabel.TextColor3 = Color3.new(1, 1, 1)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.Gotham
titleLabel.TextStrokeTransparency = 0.7
local textBox = Instance.new("TextBox")
textBox.Parent = frame
textBox.Size = UDim2.new(0.9, 0, 0.15, 0)
textBox.Position = UDim2.new(0.05, 0, 0.2, 0)
textBox.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
textBox.BackgroundTransparency = 0.35
textBox.Text = ""
textBox.PlaceholderText = "nickname"
textBox.TextColor3 = Color3.new(1, 1, 1)
textBox.TextScaled = true
textBox.BorderSizePixel = 0
textBox.Font = Enum.Font.Gotham
local textBoxCorner = Instance.new("UICorner")
textBoxCorner.Parent = textBox
textBoxCorner.CornerRadius = UDim.new(0.2, 0)
local attractionStrength = 10000
local strengthBox = Instance.new("TextBox")
strengthBox.Parent = frame
strengthBox.Size = UDim2.new(0.9, 0, 0.15, 0)
strengthBox.Position = UDim2.new(0.05, 0, 0.38, 0)
strengthBox.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
strengthBox.BackgroundTransparency = 0.35
strengthBox.Text = tostring(attractionStrength)
strengthBox.PlaceholderText = "Attraction Strength (default: 10000)"
strengthBox.TextColor3 = Color3.new(1, 1, 1)
strengthBox.TextScaled = true
strengthBox.BorderSizePixel = 0
strengthBox.Font = Enum.Font.Gotham
local strengthBoxCorner = Instance.new("UICorner")
strengthBoxCorner.Parent = strengthBox
strengthBoxCorner.CornerRadius = UDim.new(0.2, 0)
local button = Instance.new("TextButton")
button.Parent = frame
button.Size = UDim2.new(0.9, 0, 0.18, 0)
button.Position = UDim2.new(0.05, 0, 0.58, 0)
button.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
button.BackgroundTransparency = 0.35
button.Text = "Bring Parts | Off"
button.TextColor3 = Color3.new(1, 1, 1)
button.TextScaled = true
button.BorderSizePixel = 0
button.Font = Enum.Font.Gotham
local buttonCorner = Instance.new("UICorner")
buttonCorner.Parent = button
buttonCorner.CornerRadius = UDim.new(0.2, 0)
local footerLabel = Instance.new("TextLabel")
footerLabel.Parent = frame
footerLabel.Size = UDim2.new(0.9, 0, 0.12, 0)
footerLabel.Position = UDim2.new(0.05, 0, 0.8, 0)
footerLabel.BackgroundTransparency = 1
footerLabel.Text = "By PrespeshnikShashlika, \n CapyBurger"
footerLabel.TextColor3 = Color3.new(1, 1, 1)
footerLabel.TextScaled = true
footerLabel.Font = Enum.Font.Gotham
footerLabel.TextStrokeTransparency = 0.7
local blackHoleActive = false
local player = nil
local humanoidRootPart = nil
local connections = {
DescendantAdded = nil,
CharacterAdded = nil,
Heartbeat = nil
}
local parts = {}
local function cleanupConnections()
for name, connection in pairs(connections) do
if connection then
connection:Disconnect()
connections[name] = nil
end
end
end
local function resetParts()
for _, part in pairs(parts) do
if part and part:IsDescendantOf(Workspace) then
part.CanCollide = true
part.Velocity = Vector3.new(0, 0, 0)
end
end
parts = {}
end
local function addPart(part)
if part:IsA("BasePart") and not part.Anchored and part:IsDescendantOf(Workspace) then
if part.Parent:FindFirstChildOfClass("Humanoid") or part.Parent:FindFirstChild("Head") or part.Name == "Handle" then
return
end
part.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
part.CanCollide = false
if not table.find(parts, part) then
table.insert(parts, part)
end
end
end
local function removePart(part)
local index = table.find(parts, part)
if index then
table.remove(parts, index)
end
end
local function attractParts()
if not humanoidRootPart then return end
local targetPosition = humanoidRootPart.Position
for _, part in pairs(parts) do
if part and part.Parent and not part.Anchored then
local direction = (targetPosition - part.Position).Unit
part.Velocity = direction * attractionStrength
end
end
end
local function toggleBlackHole()
blackHoleActive = not blackHoleActive
if blackHoleActive then
button.Text = "Bring Parts | On"
button.BackgroundColor3 = Color3.fromRGB(255, 75, 75)
resetParts()
cleanupConnections()
connections.DescendantAdded = Workspace.DescendantAdded:Connect(addPart)
connections.CharacterAdded = player.CharacterAdded:Connect(function(character)
humanoidRootPart = character:WaitForChild("HumanoidRootPart")
end)
for _, part in pairs(Workspace:GetDescendants()) do
addPart(part)
end
connections.Heartbeat = RunService.Heartbeat:Connect(function()
if blackHoleActive and humanoidRootPart then
attractParts()
end
end)
sethiddenproperty(Players.LocalPlayer, "SimulationRadius", math.huge)
else
button.Text = "Bring Parts | Off"
button.BackgroundColor3 = Color3.fromRGB(0.3, 0.3, 0.3)
cleanupConnections()
resetParts()
end
end
local function getPlayer(name)
local lowerName = name and string.lower(name) or ""
for _, p in pairs(Players:GetPlayers()) do
if string.find(string.lower(p.Name), lowerName) or
(p.DisplayName and string.find(string.lower(p.DisplayName), lowerName)) then
return p
end
end
end
textBox.FocusLost:Connect(function(enterPressed)
if enterPressed then
player = getPlayer(textBox.Text)
if player then
textBox.Text = player.Name
humanoidRootPart = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if connections.CharacterAdded then
connections.CharacterAdded:Disconnect()
end
connections.CharacterAdded = player.CharacterAdded:Connect(function(character)
humanoidRootPart = character:WaitForChild("HumanoidRootPart")
end)
end
end
end)
strengthBox.FocusLost:Connect(function(enterPressed)
if enterPressed then
local newStrength = tonumber(strengthBox.Text)
if newStrength and newStrength > 0 then
attractionStrength = newStrength
strengthBox.Text = tostring(attractionStrength)
else
strengthBox.Text = "Invalid value!"
delay(1, function()
strengthBox.Text = tostring(attractionStrength)
end)
end
end
end)
button.MouseButton1Click:Connect(function()
if player then
toggleBlackHole()
else
textBox.Text = "Enter nickname first!"
end
end)
screenGui.Destroying:Connect(function()
cleanupConnections()
resetParts()
end)