-- Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") -- White list part name local WHITELIST = { part = true, part2 = true } -- GUI local Gui = Instance.new("ScreenGui") Gui.Name = "Gui" Gui.Parent = gethui() local Main = Instance.new("Frame") Main.Size = UDim2.new(0, 320, 0, 230) Main.Position = UDim2.new(0.5, -160, 0.5, -90) Main.BackgroundColor3 = Color3.fromRGB(30,30,35) Main.Active = true Main.Draggable = true Main.Parent = Gui Instance.new("UICorner", Main).CornerRadius = UDim.new(0,8) local Label = Instance.new("TextLabel") Label.Size = UDim2.new(1,0,0,40) Label.BackgroundColor3 = Color3.fromRGB(40,40,45) Label.Text = "White list BP V3 by GPT" Label.TextSize = 16 Label.TextColor3 = Color3.new(1,1,1) Label.Font = Enum.Font.GothamBold Label.Parent = Main Instance.new("UICorner", Label) local Box = Instance.new("TextBox") Box.Size = UDim2.new(0.85,0,0,40) Box.Position = UDim2.new(0.075,0,0.3,0) Box.PlaceholderText = "Player here" Box.BackgroundColor3 = Color3.fromRGB(45,45,50) Box.TextColor3 = Color3.new(1,1,1) Box.Parent = Main Instance.new("UICorner", Box) local Button = Instance.new("TextButton") Button.Size = UDim2.new(0.85,0,0,45) Button.Position = UDim2.new(0.075,0,0.5,0) Button.Text = "Bring | Off" Button.BackgroundColor3 = Color3.fromRGB(0,120,215) Button.TextColor3 = Color3.new(1,1,1) Button.Parent = Main Instance.new("UICorner", Button) -- Vars local LocalPlayer = Players.LocalPlayer local targetPart local selectedPlayer -- Network Table getgenv().Network = { BaseParts = {}, BasePartsMap = {}, Velocity = Vector3.new(30,30,30) } -- Attachment Center local Folder = Instance.new("Folder", Workspace) local Part = Instance.new("Part", Folder) Part.Anchored = true Part.Transparency = 1 Part.CanCollide = false local Attachment1 = Instance.new("Attachment", Part) -- Cleanup local function CleanupPart(v) if not v then return end if v:FindFirstChild("BH_Align") then v.BH_Align:Destroy() end if v:FindFirstChild("BH_Attachment") then v.BH_Attachment:Destroy() end if v:FindFirstChild("BH_Processed") then v.BH_Processed:Destroy() end pcall(function() v.AssemblyLinearVelocity = Vector3.zero v.AssemblyAngularVelocity = Vector3.zero end) end -- Retain function Network.RetainPart(p) if not p or Network.BasePartsMap[p] then return end Network.BasePartsMap[p] = true table.insert(Network.BaseParts, p) end -- ForcePart local function ForcePart(v) if not v:IsA("BasePart") or v.Anchored then return end if v:FindFirstChild("BH_Align") then return end local tag = Instance.new("BoolValue", v) tag.Name = "BH_Processed" local att = Instance.new("Attachment", v) att.Name = "BH_Attachment" local align = Instance.new("AlignPosition", v) align.Name = "BH_Align" align.Attachment0 = att align.Attachment1 = Attachment1 align.MaxForce = 3000 -- force power align.Responsiveness = 20 v.CanCollide = false Network.RetainPart(v) end -- Heartbeat cleaning every 10sec task.spawn(function() while true do task.wait(10) -- seconds sethiddenproperty(LocalPlayer, "SimulationRadius", 30) -- range to bring parts for i = #Network.BaseParts, 1, -1 do local p = Network.BaseParts[i] -- clean off despawned parts if not p or p.Parent == nil then Network.BasePartsMap[p] = nil table.remove(Network.BaseParts, i) else p.Velocity = Network.Velocity end end end end) local function IsTarget(v) return v:IsA("BasePart") and WHITELIST[v.Name] end -- Enable / Disable local active = false local descConn local renderConn local function Enable() if active or not targetPart then return end active = true Button.Text = "Bring | On" for _, v in ipairs(Workspace:GetDescendants()) do if IsTarget(v) then ForcePart(v) end end descConn = Workspace.DescendantAdded:Connect(function(v) if IsTarget(v) then ForcePart(v) end end) renderConn = RunService.RenderStepped:Connect(function() if targetPart then Attachment1.WorldCFrame = targetPart.CFrame end end) end local function Disable() active = false Button.Text = "Bring | Off" if descConn then descConn:Disconnect() end if renderConn then renderConn:Disconnect() end for i = #Network.BaseParts, 1, -1 do local p = Network.BaseParts[i] CleanupPart(p) Network.BasePartsMap[p] = nil table.remove(Network.BaseParts, i) end end -- Player finder local function getPlayer(name) name = name:lower() for _, p in ipairs(Players:GetPlayers()) do if p.Name:lower():find(name) then return p end end end Box.FocusLost:Connect(function(enter) if enter then selectedPlayer = getPlayer(Box.Text) if selectedPlayer then Box.Text = selectedPlayer.Name end end end) Button.MouseButton1Click:Connect(function() if not selectedPlayer then return end local char = selectedPlayer.Character or selectedPlayer.CharacterAdded:Wait() targetPart = char:FindFirstChild("HumanoidRootPart") if active then Disable() else Enable() end end)