
Key RequiredUniversal

-- 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)No comments yet for this script.



