Part controller
Key RequiredUniversal

Part controller

Universal ScriptThescriptmasterThescriptmaster 1.9K views 307 executesUpdated Dec 17, 2025
0.0/ 5(3 votes)
030% Positive
Lua Script•264 lines (8373 chars)
-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer

-- WAIT FOR PLAYERGUI
local playerGui = player:WaitForChild("PlayerGui")

-- CHARACTER
local char = player.Character or player.CharacterAdded:Wait()
local hrp = char:WaitForChild("HumanoidRootPart")

-- VARIABLES
local activeConnections = {}

-------------------------------
-- FUNCTION: GET WORLD PARTS
-------------------------------
local function getWorldParts()
	local parts = {}
	for _, p in ipairs(workspace:GetDescendants()) do
		if p:IsA("BasePart") and not p.Anchored then
			local inPlayer = false
			for _, plr in ipairs(Players:GetPlayers()) do
				if plr.Character and p:IsDescendantOf(plr.Character) then
					inPlayer = true
					break
				end
			end
			if not inPlayer then
				table.insert(parts, p)
			end
		end
	end
	return parts
end

-------------------------------
-- FUNCTION: CLEAR EFFECTS
-------------------------------
local function clearEffects()
	for _,c in ipairs(activeConnections) do
		c:Disconnect()
	end
	activeConnections = {}
end

-------------------------------
-- MAIN ULTIMATE GUI
-------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "UltimatePartController"
gui.ResetOnSpawn = false
gui.DisplayOrder = 10
gui.Enabled = false -- starts hidden
gui.Parent = playerGui

-- MAIN PANEL
local mainFrame = Instance.new("Frame", gui)
mainFrame.Size = UDim2.fromScale(0.95,0.4)
mainFrame.Position = UDim2.fromScale(0.025,0.55)
mainFrame.BackgroundColor3 = Color3.fromRGB(20,20,20)
mainFrame.BackgroundTransparency = 0.05
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0,20)

-- HEADER
local header = Instance.new("TextLabel", mainFrame)
header.Size = UDim2.fromScale(1,0.15)
header.BackgroundTransparency = 1
header.Text = "Ultimate Part Controller"
header.Font = Enum.Font.GothamBold
header.TextScaled = true
header.TextColor3 = Color3.fromRGB(255,255,255)
header.TextStrokeTransparency = 0.6

-------------------------------
-- CATEGORY FRAME CREATOR
-------------------------------
local function createCategory(title, posScale)
	local frame = Instance.new("Frame", mainFrame)
	frame.Size = UDim2.fromScale(0.32,0.7)
	frame.Position = posScale
	frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
	frame.BackgroundTransparency = 0.05
	Instance.new("UICorner", frame).CornerRadius = UDim.new(0,15)
	
	local label = Instance.new("TextLabel", frame)
	label.Size = UDim2.fromScale(1,0.15)
	label.Position = UDim2.fromScale(0,0)
	label.BackgroundTransparency = 1
	label.Text = title
	label.Font = Enum.Font.GothamBold
	label.TextScaled = true
	label.TextColor3 = Color3.fromRGB(255,255,255)
	
	local buttonContainer = Instance.new("Frame", frame)
	buttonContainer.Size = UDim2.fromScale(1,0.85)
	buttonContainer.Position = UDim2.fromScale(0,0.15)
	buttonContainer.BackgroundTransparency = 1
	
	return buttonContainer
end

local movementCategory = createCategory("Movement", UDim2.fromScale(0.02,0.2))
local chaosCategory    = createCategory("Chaos", UDim2.fromScale(0.34,0.2))
local collisionCategory = createCategory("Collision", UDim2.fromScale(0.66,0.2))

-------------------------------
-- BUTTON CREATOR
-------------------------------
local function createButton(parent, text, color)
	local b = Instance.new("TextButton", parent)
	b.Size = UDim2.fromScale(0.9,0.25)
	b.Position = UDim2.fromScale(0.05,#parent:GetChildren()/1.5)
	b.Text = text
	b.TextScaled = true
	b.Font = Enum.Font.GothamBold
	b.TextColor3 = Color3.new(1,1,1)
	b.BackgroundColor3 = color or Color3.fromRGB(50,50,50)
	b.BorderSizePixel = 0
	Instance.new("UICorner", b).CornerRadius = UDim.new(0,15)
	
	-- Hover effect
	b.MouseEnter:Connect(function()
		TweenService:Create(b, TweenInfo.new(0.15), {BackgroundTransparency = 0.3}):Play()
	end)
	b.MouseLeave:Connect(function()
		TweenService:Create(b, TweenInfo.new(0.15), {BackgroundTransparency = 0}):Play()
	end)
	return b
end

-------------------------------
-- MOVEMENT BUTTONS
-------------------------------
createButton(movementCategory,"Lift",Color3.fromRGB(70,130,180)).MouseButton1Click:Connect(function()
	clearEffects()
	local con = RunService.RenderStepped:Connect(function()
		for _,p in ipairs(getWorldParts()) do
			p.AssemblyLinearVelocity = Vector3.new(0,12,0)
		end
	end)
	table.insert(activeConnections,con)
end)

createButton(movementCategory,"Orbit",Color3.fromRGB(0,200,150)).MouseButton1Click:Connect(function()
	clearEffects()
	local t = 0
	local con = RunService.RenderStepped:Connect(function(dt)
		t += dt*2
		for _,p in ipairs(getWorldParts()) do
			local offset = Vector3.new(math.cos(t)*6,3,math.sin(t)*6)
			p.AssemblyLinearVelocity = (hrp.Position+offset - p.Position)*6
		end
	end)
	table.insert(activeConnections,con)
end)

createButton(movementCategory,"Throw",Color3.fromRGB(220,100,50)).MouseButton1Click:Connect(function()
	for _,p in ipairs(getWorldParts()) do
		p.AssemblyLinearVelocity = hrp.CFrame.LookVector*150 + Vector3.new(0,40,0)
	end
end)

-------------------------------
-- CHAOS BUTTONS
-------------------------------
createButton(chaosCategory,"Spin",Color3.fromRGB(180,0,180)).MouseButton1Click:Connect(function()
	for _,p in ipairs(getWorldParts()) do
		p.AssemblyAngularVelocity = Vector3.new(25,25,25)
	end
end)

createButton(chaosCategory,"Chaos",Color3.fromRGB(200,0,0)).MouseButton1Click:Connect(function()
	clearEffects()
	local con = RunService.RenderStepped:Connect(function()
		for _,p in ipairs(getWorldParts()) do
			p.AssemblyLinearVelocity = Vector3.new(math.random(-40,40),math.random(10,60),math.random(-40,40))
		end
	end)
	table.insert(activeConnections,con)
end)

createButton(chaosCategory,"Freeze",Color3.fromRGB(0,200,200)).MouseButton1Click:Connect(function()
	for _,p in ipairs(getWorldParts()) do
		p.AssemblyLinearVelocity = Vector3.zero
		p.AssemblyAngularVelocity = Vector3.zero
	end
end)

-------------------------------
-- COLLISION BUTTONS
-------------------------------
createButton(collisionCategory,"No Collide",Color3.fromRGB(255,165,0)).MouseButton1Click:Connect(function()
	for _,p in ipairs(getWorldParts()) do
		p.CanCollide = false
	end
end)

createButton(collisionCategory,"Collide",Color3.fromRGB(0,255,0)).MouseButton1Click:Connect(function()
	for _,p in ipairs(getWorldParts()) do
		p.CanCollide = true
	end
end)

createButton(collisionCategory,"Stop All",Color3.fromRGB(255,50,50)).MouseButton1Click:Connect(function()
	clearEffects()
end)

-------------------------------
-- TOGGLE / SPAWN GUI
-------------------------------
local toggleGui = Instance.new("ScreenGui")
toggleGui.Name = "ToggleRA_GUI"
toggleGui.ResetOnSpawn = false
toggleGui.DisplayOrder = 11
toggleGui.Parent = playerGui

-- FRAME
local toggleFrame = Instance.new("Frame", toggleGui)
toggleFrame.Size = UDim2.fromScale(0.3,0.1)
toggleFrame.Position = UDim2.fromScale(0.35,0.85)
toggleFrame.BackgroundColor3 = Color3.fromRGB(30,30,30)
toggleFrame.BackgroundTransparency = 0.1
toggleFrame.BorderSizePixel = 0
toggleFrame.ClipsDescendants = true
Instance.new("UICorner", toggleFrame).CornerRadius = UDim.new(0,15)

-- BUTTON CREATOR
local function createSmallButton(parent,text,color,pos)
	local b = Instance.new("TextButton", parent)
	b.Size = UDim2.fromScale(0.45,0.8)
	b.Position = pos
	b.Text = text
	b.TextScaled = true
	b.Font = Enum.Font.GothamBold
	b.TextColor3 = Color3.new(1,1,1)
	b.BackgroundColor3 = color or Color3.fromRGB(50,50,50)
	b.BorderSizePixel = 0
	Instance.new("UICorner", b).CornerRadius = UDim.new(0,12)
	return b
end

local toggleBtn = createSmallButton(toggleFrame,"Toggle GUI",Color3.fromRGB(70,130,180),UDim2.fromScale(0.02,0.1))
local spawnBtn  = createSmallButton(toggleFrame,"Spawn RA",Color3.fromRGB(220,100,50),UDim2.fromScale(0.53,0.1))

-- TOGGLE MAIN GUI
toggleBtn.MouseButton1Click:Connect(function()
	gui.Enabled = not gui.Enabled
end)

-- SPAWN RA PART
spawnBtn.MouseButton1Click:Connect(function()
	local raPart = Instance.new("Part")
	raPart.Size = Vector3.new(4,4,4)
	raPart.Anchored = false
	raPart.Position = player.Character and player.Character.HumanoidRootPart.Position + Vector3.new(0,10,0) or Vector3.new(0,10,0)
	raPart.Color = Color3.fromRGB(255,0,0)
	raPart.Name = "RA_Part"
	raPart.Parent = workspace
end)

Features & Information

This script can alter parts locally but still. Can be seen by other players, make sure you have the parts network or it won’t work:/

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts