--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] --// ========================= --// SERVICES --// ========================= local Players = game:GetService("Players") local RunService = game:GetService("RunService") local SoundService = game:GetService("SoundService") local StarterGui = game:GetService("StarterGui") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") --// ========================= --// CLEAR OLD UI --// ========================= if PlayerGui:FindFirstChild("SuperRingPartsGUI") then PlayerGui.SuperRingPartsGUI:Destroy() end --// ========================= --// NETWORK --// ========================= if not getgenv().Network then getgenv().Network = { BaseParts = {}, Velocity = Vector3.new(14.4626,14.4626,14.4626) } Network.RetainPart = function(p) if p:IsA("BasePart") and p:IsDescendantOf(workspace) then table.insert(Network.BaseParts,p) p.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0) p.CanCollide = false end end RunService.Heartbeat:Connect(function() sethiddenproperty(LocalPlayer,"SimulationRadius",math.huge) for _,p in ipairs(Network.BaseParts) do if p:IsDescendantOf(workspace) then p.Velocity = Network.Velocity end end end) end --// ========================= --// SOUND --// ========================= local function play(id) local s = Instance.new("Sound",SoundService) s.SoundId = "rbxassetid://"..id s:Play() s.Ended:Once(function() s:Destroy() end) end play("2865227271") --// ========================= --// STATE --// ========================= local PlayerState = {} local OrbitRadius = {} local parts = {} --// ========================= --// PART COLLECTION --// ========================= local function valid(p) return p:IsA("BasePart") and not p.Anchored and not p:IsDescendantOf(LocalPlayer.Character) end for _,d in ipairs(workspace:GetDescendants()) do if valid(d) then table.insert(parts,d) end end workspace.DescendantAdded:Connect(function(p) if valid(p) then table.insert(parts,p) end end) --// ========================= --// GUI ROOT --// ========================= local gui = Instance.new("ScreenGui", PlayerGui) gui.Name = "SuperRingPartsGUI" gui.ResetOnSpawn = false local main = Instance.new("Frame", gui) main.Size = UDim2.new(0,260,0,360) main.Position = UDim2.new(0.05,0,0.5,-180) main.BackgroundColor3 = Color3.fromRGB(0,102,51) main.BorderSizePixel = 0 Instance.new("UICorner", main).CornerRadius = UDim.new(0,20) --// ========================= --// TITLE --// ========================= local title = Instance.new("TextLabel", main) title.Size = UDim2.new(1,0,0,40) title.Text = "Super Ring Parts v8.3" title.Font = Enum.Font.Fondamento title.TextSize = 22 title.TextColor3 = Color3.new(1,1,1) title.BackgroundColor3 = Color3.fromRGB(0,153,76) Instance.new("UICorner", title) --// ========================= --// MINIMIZE --// ========================= local minimize = Instance.new("TextButton", title) minimize.Size = UDim2.new(0,30,0,30) minimize.Position = UDim2.new(1,-35,0.5,-15) minimize.Text = "-" minimize.Font = Enum.Font.Fondamento minimize.TextSize = 22 minimize.BackgroundColor3 = Color3.fromRGB(0,120,60) Instance.new("UICorner", minimize) local collapsed = Instance.new("TextButton", gui) collapsed.Size = UDim2.new(0,40,0,40) collapsed.Position = UDim2.new(0,10,1,-50) collapsed.Text = "-" collapsed.Font = Enum.Font.Fondamento collapsed.TextSize = 26 collapsed.BackgroundColor3 = Color3.fromRGB(0,102,51) collapsed.Visible = false Instance.new("UICorner", collapsed) local lastPos = main.Position minimize.MouseButton1Click:Connect(function() lastPos = main.Position main.Visible = false collapsed.Visible = true end) collapsed.MouseButton1Click:Connect(function() main.Position = lastPos main.Visible = true collapsed.Visible = false end) --// ========================= --// DRAG --// ========================= do local dragging, dragStart, startPos title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = main.Position end end) title.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart main.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) end --// ========================= --// SEARCH BAR --// ========================= local search = Instance.new("TextBox", main) search.Size = UDim2.new(0.9,0,0,28) search.Position = UDim2.new(0.05,0,0.13,0) search.PlaceholderText = "Search player..." search.Text = "" search.Font = Enum.Font.Fondamento search.TextSize = 14 search.BackgroundColor3 = Color3.fromRGB(90,90,90) search.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", search) --// ========================= --// PLAYER LIST --// ========================= local list = Instance.new("ScrollingFrame", main) list.Position = UDim2.new(0.05,0,0.22,0) list.Size = UDim2.new(0.9,0,0,170) list.ScrollBarImageTransparency = 0.3 local layout = Instance.new("UIListLayout", list) layout.Padding = UDim.new(0,6) local buttons = {} --// ========================= --// CONFIRM GUI --// ========================= local confirm = Instance.new("Frame", gui) confirm.Size = UDim2.new(0,260,0,140) confirm.Position = UDim2.new(0.5,-130,0.5,-70) confirm.BackgroundColor3 = Color3.fromRGB(40,40,40) confirm.Visible = false Instance.new("UICorner", confirm) local cText = Instance.new("TextLabel", confirm) cText.Size = UDim2.new(1,0,0,70) cText.BackgroundTransparency = 1 cText.TextWrapped = true cText.Font = Enum.Font.Fondamento cText.TextSize = 18 cText.TextColor3 = Color3.new(1,1,1) local yes = Instance.new("TextButton", confirm) yes.Size = UDim2.new(0.4,0,0,30) yes.Position = UDim2.new(0.05,0,0.6,0) yes.Text = "YES" yes.BackgroundColor3 = Color3.fromRGB(0,200,0) Instance.new("UICorner", yes) local no = Instance.new("TextButton", confirm) no.Size = UDim2.new(0.4,0,0,30) no.Position = UDim2.new(0.55,0,0.6,0) no.Text = "NO" no.BackgroundColor3 = Color3.fromRGB(200,0,0) Instance.new("UICorner", no) --// ========================= --// RADIUS UI --// ========================= local currentRadius = 50 local dec = Instance.new("TextButton", main) dec.Size = UDim2.new(0.2,0,0,30) dec.Position = UDim2.new(0.05,0,0.75,0) dec.Text = "<" dec.Font = Enum.Font.Fondamento dec.TextSize = 18 dec.BackgroundColor3 = Color3.fromRGB(255,255,0) Instance.new("UICorner", dec) local inc = Instance.new("TextButton", main) inc.Size = UDim2.new(0.2,0,0,30) inc.Position = UDim2.new(0.75,0,0.75,0) inc.Text = ">" inc.Font = Enum.Font.Fondamento inc.TextSize = 18 inc.BackgroundColor3 = Color3.fromRGB(255,255,0) Instance.new("UICorner", inc) local radiusLabel = Instance.new("TextLabel", main) radiusLabel.Size = UDim2.new(0.4,0,0,30) radiusLabel.Position = UDim2.new(0.3,0,0.75,0) radiusLabel.Text = "Radius: 50" radiusLabel.Font = Enum.Font.Fondamento radiusLabel.TextSize = 15 radiusLabel.BackgroundColor3 = Color3.fromRGB(255,255,0) Instance.new("UICorner", radiusLabel) inc.MouseButton1Click:Connect(function() currentRadius += 5 radiusLabel.Text = "Radius: "..currentRadius end) dec.MouseButton1Click:Connect(function() currentRadius = math.max(5, currentRadius - 5) radiusLabel.Text = "Radius: "..currentRadius end) --// ========================= --// PLAYER LIST LOGIC --// ========================= local function rebuild(filter) for _,b in pairs(buttons) do b:Destroy() end table.clear(buttons) for _,plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer then local name = (plr.DisplayName.." "..plr.Name):lower() if filter and not name:find(filter) then continue end PlayerState[plr] = PlayerState[plr] or "Idle" local btn = Instance.new("TextButton", list) btn.Size = UDim2.new(1,0,0,32) btn.Text = plr.DisplayName.." ("..plr.Name..")" btn.Font = Enum.Font.Fondamento btn.TextSize = 14 Instance.new("UICorner", btn) local function update() btn.BackgroundColor3 = PlayerState[plr] == "Orbiting" and Color3.fromRGB(200,0,0) or Color3.fromRGB(70,70,70) end update() btn.MouseButton1Click:Connect(function() if PlayerState[plr] == "Orbiting" then cText.Text = "Deorbit "..plr.DisplayName.."?" confirm.Visible = true yes.MouseButton1Click:Once(function() PlayerState[plr] = "Idle" confirm.Visible = false update() end) no.MouseButton1Click:Once(function() confirm.Visible = false end) else PlayerState[plr] = "Orbiting" OrbitRadius[plr] = currentRadius update() end end) table.insert(buttons, btn) end end list.CanvasSize = UDim2.new(0,0,0,layout.AbsoluteContentSize.Y + 10) end search:GetPropertyChangedSignal("Text"):Connect(function() rebuild(search.Text:lower()) end) Players.PlayerAdded:Connect(function() rebuild(search.Text:lower()) end) Players.PlayerRemoving:Connect(function(plr) PlayerState[plr] = nil OrbitRadius[plr] = nil rebuild(search.Text:lower()) end) rebuild() --// ========================= --// ORBIT LOOP --// ========================= RunService.Heartbeat:Connect(function() for plr,state in pairs(PlayerState) do if state == "Orbiting" then local hrp = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") if hrp then local center = hrp.Position local radius = OrbitRadius[plr] or currentRadius for _,part in ipairs(parts) do local pos = part.Position local angle = math.atan2(pos.Z-center.Z,pos.X-center.X) + 0.02 local target = Vector3.new( center.X + math.cos(angle)*radius, center.Y, center.Z + math.sin(angle)*radius ) part.Velocity = (target - pos).Unit * 1200 end end end end end) StarterGui:SetCore("SendNotification",{ Title="Super Ring Parts v8.3", Text="Upgrade it too! showcase if you can", Duration=5 })