local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local SoundService = game:GetService("SoundService") local StarterGui = game:GetService("StarterGui") local HttpService = game:GetService("HttpService") local LocalPlayer = Players.LocalPlayer -- Sound Effects local function playSound(soundId) local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://" .. soundId sound.Parent = SoundService sound:Play() sound.Ended:Connect(function() sound:Destroy() end) end -- Play initial sound playSound("2865227271") -- GUI Creation local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "SuperRingPartsGUI" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 300, 0, 600) -- Increased height for new features MainFrame.Position = UDim2.new(0.5, -150, 0.5, -300) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui -- Make the GUI round local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(0, 20) UICorner.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 40) Title.Position = UDim2.new(0, 0, 0, 0) Title.Text = "Super Ring Parts V6 by lukas" Title.TextColor3 = Color3.fromRGB(0, 0, 0) Title.BackgroundColor3 = Color3.fromRGB(0, 204, 204) Title.Font = Enum.Font.Fondamento Title.TextSize = 22 Title.Parent = MainFrame -- Round the title local TitleCorner = Instance.new("UICorner") TitleCorner.CornerRadius = UDim.new(0, 20) TitleCorner.Parent = Title -- NEW: TARGET SELECTION DROPDOWN local TargetDropdown = Instance.new("TextButton") TargetDropdown.Size = UDim2.new(0.8, 0, 0, 40) TargetDropdown.Position = UDim2.new(0.1, 0, 0.1, 0) TargetDropdown.Text = "Select Target: Self" TargetDropdown.BackgroundColor3 = Color3.fromRGB(255, 165, 0) TargetDropdown.TextColor3 = Color3.fromRGB(0, 0, 0) TargetDropdown.Font = Enum.Font.Fondamento TargetDropdown.TextSize = 16 TargetDropdown.Parent = MainFrame local TargetCorner = Instance.new("UICorner") TargetCorner.CornerRadius = UDim.new(0, 10) TargetCorner.Parent = TargetDropdown -- NEW: EPILEPSY-FREE MODE TOGGLE local EpilepsyToggle = Instance.new("TextButton") EpilepsyToggle.Size = UDim2.new(0.8, 0, 0, 40) EpilepsyToggle.Position = UDim2.new(0.1, 0, 0.2, 0) EpilepsyToggle.Text = "Epilepsy Mode: OFF" EpilepsyToggle.BackgroundColor3 = Color3.fromRGB(255, 0, 0) EpilepsyToggle.TextColor3 = Color3.fromRGB(0, 0, 0) EpilepsyToggle.Font = Enum.Font.Fondamento EpilepsyToggle.TextSize = 16 EpilepsyToggle.Parent = MainFrame local EpilepsyCorner = Instance.new("UICorner") EpilepsyCorner.CornerRadius = UDim.new(0, 10) EpilepsyCorner.Parent = EpilepsyToggle local ToggleButton = Instance.new("TextButton") ToggleButton.Size = UDim2.new(0.8, 0, 0, 40) ToggleButton.Position = UDim2.new(0.1, 0, 0.3, 0) ToggleButton.Text = "Ring Off" ToggleButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0) ToggleButton.TextColor3 = Color3.fromRGB(0, 0, 0) ToggleButton.Font = Enum.Font.Fondamento ToggleButton.TextSize = 18 ToggleButton.Parent = MainFrame -- Round the toggle button local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(0, 10) ToggleCorner.Parent = ToggleButton -- Configuration table local config = { radius = 50, height = 100, rotationSpeed = 10, attractionStrength = 1000, targetPlayer = "Self", -- NEW: Target player setting epilepsyMode = false -- NEW: Epilepsy-free mode } -- NEW: TARGET PLAYER VARIABLES local currentTarget = LocalPlayer local targetPlayers = {"Self"} -- POPULATE TARGET LIST for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer then table.insert(targetPlayers, player.Name) end end -- UPDATE TARGET LIST WHEN PLAYERS JOIN/LEAVE Players.PlayerAdded:Connect(function(player) table.insert(targetPlayers, player.Name) end) Players.PlayerRemoving:Connect(function(player) local index = table.find(targetPlayers, player.Name) if index then table.remove(targetPlayers, index) end end) -- Save and load functions local function saveConfig() local configStr = HttpService:JSONEncode(config) writefile("SuperRingPartsConfig.txt", configStr) end local function loadConfig() if isfile("SuperRingPartsConfig.txt") then local configStr = readfile("SuperRingPartsConfig.txt") config = HttpService:JSONDecode(configStr) end end loadConfig() -- Function to create control buttons and textboxes local function createControl(name, positionY, color, labelText, defaultValue, callback) local DecreaseButton = Instance.new("TextButton") DecreaseButton.Size = UDim2.new(0.2, 0, 0, 40) DecreaseButton.Position = UDim2.new(0.1, 0, positionY, 0) DecreaseButton.Text = "-" DecreaseButton.BackgroundColor3 = color DecreaseButton.TextColor3 = Color3.fromRGB(0, 0, 0) DecreaseButton.Font = Enum.Font.Fondamento DecreaseButton.TextSize = 18 DecreaseButton.Parent = MainFrame local IncreaseButton = Instance.new("TextButton") IncreaseButton.Size = UDim2.new(0.2, 0, 0, 40) IncreaseButton.Position = UDim2.new(0.7, 0, positionY, 0) IncreaseButton.Text = "+" IncreaseButton.BackgroundColor3 = color IncreaseButton.TextColor3 = Color3.fromRGB(0, 0, 0) IncreaseButton.Font = Enum.Font.Fondamento IncreaseButton.TextSize = 18 IncreaseButton.Parent = MainFrame local Display = Instance.new("TextLabel") Display.Size = UDim2.new(0.4, 0, 0, 40) Display.Position = UDim2.new(0.3, 0, positionY, 0) Display.Text = labelText .. ": " .. defaultValue Display.BackgroundColor3 = Color3.fromRGB(255, 153, 51) Display.TextColor3 = Color3.fromRGB(0, 0, 0) Display.Font = Enum.Font.Fondamento Display.TextSize = 18 Display.Parent = MainFrame -- Add TextBox for input local TextBox = Instance.new("TextBox") TextBox.Size = UDim2.new(0.8, 0, 0, 35) TextBox.Position = UDim2.new(0.1, 0, positionY + 0.1, 0) TextBox.PlaceholderText = "Enter " .. labelText TextBox.BackgroundColor3 = Color3.fromRGB(0, 0, 255) TextBox.TextColor3 = Color3.fromRGB(0, 0, 0) TextBox.Font = Enum.Font.Fondamento TextBox.TextSize = 18 TextBox.Parent = MainFrame local TextBoxCorner = Instance.new("UICorner") TextBoxCorner.CornerRadius = UDim.new(0, 10) TextBoxCorner.Parent = TextBox DecreaseButton.MouseButton1Click:Connect(function() local value = tonumber(Display.Text:match("%d+")) value = math.max(0, value - 10) Display.Text = labelText .. ": " .. value callback(value) playSound("12221967") saveConfig() end) IncreaseButton.MouseButton1Click:Connect(function() local value = tonumber(Display.Text:match("%d+")) value = math.min(10000, value + 10) Display.Text = labelText .. ": " .. value callback(value) playSound("12221967") saveConfig() end) TextBox.FocusLost:Connect(function(enterPressed) if enterPressed then local newValue = tonumber(TextBox.Text) if newValue then newValue = math.clamp(newValue, 0, 10000) Display.Text = labelText .. ": " .. newValue TextBox.Text = "" callback(newValue) playSound("12221967") saveConfig() else TextBox.Text = "" end end end) end createControl("Radius", 0.4, Color3.fromRGB(153, 153, 0), "Radius", config.radius, function(value) config.radius = value saveConfig() end) createControl("Height", 0.6, Color3.fromRGB(153, 0, 153), "Height", config.height, function(value) config.height = value saveConfig() end) createControl("RotationSpeed", 0.8, Color3.fromRGB(0, 153, 153), "Rotation Speed", config.rotationSpeed, function(value) config.rotationSpeed = value saveConfig() end) createControl("AttractionStrength", 1.0, Color3.fromRGB(153, 0, 0), "Attraction Strength", config.attractionStrength, function(value) config.attractionStrength = value saveConfig() end) -- Add minimize button local MinimizeButton = Instance.new("TextButton") MinimizeButton.Size = UDim2.new(0, 30, 0, 30) MinimizeButton.Position = UDim2.new(1, -35, 0, 5) MinimizeButton.Text = "-" MinimizeButton.BackgroundColor3 = Color3.fromRGB(255, 255, 0) MinimizeButton.TextColor3 = Color3.fromRGB(0, 0, 0) MinimizeButton.Font = Enum.Font.Fondamento MinimizeButton.TextSize = 15 MinimizeButton.Parent = MainFrame -- Round the minimize button local MinimizeCorner = Instance.new("UICorner") MinimizeCorner.CornerRadius = UDim.new(0, 15) MinimizeCorner.Parent = MinimizeButton -- Minimize functionality local minimized = false MinimizeButton.MouseButton1Click:Connect(function() minimized = not minimized if minimized then MainFrame:TweenSize(UDim2.new(0, 300, 0, 40), "Out", "Quad", 0.3, true) MinimizeButton.Text = "+" for _, child in pairs(MainFrame:GetChildren()) do if child:IsA("GuiObject") and child ~= Title and child ~= MinimizeButton then child.Visible = false end end else MainFrame:TweenSize(UDim2.new(0, 300, 0, 600), "Out", "Quad", 0.3, true) MinimizeButton.Text = "-" for _, child in pairs(MainFrame:GetChildren()) do if child:IsA("GuiObject") then child.Visible = true end end end playSound("12221967") end) -- Make GUI draggable local dragging local dragInput local dragStart local startPos local function update(input) local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end MainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) MainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) -- Ring Parts System local Workspace = game:GetService("Workspace") -- NEW: GET TARGET CHARACTER FUNCTION local function getTargetCharacter() if config.targetPlayer == "Self" then return LocalPlayer.Character else local targetPlayer = Players:FindFirstChild(config.targetPlayer) if targetPlayer and targetPlayer.Character then return targetPlayer.Character end end return nil end local Folder = Instance.new("Folder", Workspace) local Part = Instance.new("Part", Folder) local Attachment1 = Instance.new("Attachment", Part) Part.Anchored = true Part.CanCollide = false Part.Transparency = 1 if not getgenv().Network then getgenv().Network = { BaseParts = {}, Velocity = Vector3.new(14.46262424, 14.46262424, 14.46262424) } Network.RetainPart = function(Part) if typeof(Part) == "Instance" and Part:IsA("BasePart") and Part:IsDescendantOf(Workspace) then table.insert(Network.BaseParts, Part) Part.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0) Part.CanCollide = false end end local function EnablePartControl() LocalPlayer.ReplicationFocus = Workspace RunService.Heartbeat:Connect(function() sethiddenproperty(LocalPlayer, "SimulationRadius", math.huge) for _, Part in pairs(Network.BaseParts) do if Part:IsDescendantOf(Workspace) then Part.Velocity = Network.Velocity end end end) end EnablePartControl() end local function ForcePart(v) if v:IsA("Part") and not v.Anchored and not v.Parent:FindFirstChild("Humanoid") and not v.Parent:FindFirstChild("Head") and v.Name ~= "Handle" then for _, x in next, v:GetChildren() do if x:IsA("BodyAngularVelocity") or x:IsA("BodyForce") or x:IsA("BodyGyro") or x:IsA("BodyPosition") or x:IsA("BodyThrust") or x:IsA("BodyVelocity") or x:IsA("RocketPropulsion") then x:Destroy() end end if v:FindFirstChild("Attachment") then v:FindFirstChild("Attachment"):Destroy() end if v:FindFirstChild("AlignPosition") then v:FindFirstChild("AlignPosition"):Destroy() end if v:FindFirstChild("Torque") then v:FindFirstChild("Torque"):Destroy() end v.CanCollide = false local Torque = Instance.new("Torque", v) Torque.Torque = Vector3.new(100000, 100000, 100000) local AlignPosition = Instance.new("AlignPosition", v) local Attachment2 = Instance.new("Attachment", v) Torque.Attachment0 = Attachment2 AlignPosition.MaxForce = 9999999999999999999999999999999 AlignPosition.MaxVelocity = math.huge AlignPosition.Responsiveness = 200 AlignPosition.Attachment0 = Attachment2 AlignPosition.Attachment1 = Attachment1 end end -- Edits local ringPartsEnabled = false local function RetainPart(Part) if Part:IsA("BasePart") and not Part.Anchored and Part:IsDescendantOf(workspace) then -- NEW: Don't affect target player's character parts local targetChar = getTargetCharacter() if targetChar and Part:IsDescendantOf(targetChar) then return false end Part.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0) Part.CanCollide = false return true end return false end local parts = {} local function addPart(part) if RetainPart(part) then 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 for _, part in pairs(workspace:GetDescendants()) do addPart(part) end workspace.DescendantAdded:Connect(addPart) workspace.DescendantRemoving:Connect(removePart) RunService.Heartbeat:Connect(function() if not ringPartsEnabled then return end local targetChar = getTargetCharacter() if not targetChar then return end local humanoidRootPart = targetChar:FindFirstChild("HumanoidRootPart") if humanoidRootPart then local tornadoCenter = humanoidRootPart.Position for _, part in pairs(parts) do if part.Parent and not part.Anchored then local pos = part.Position local distance = (Vector3.new(pos.X, tornadoCenter.Y, pos.Z) - tornadoCenter).Magnitude local angle = math.atan2(pos.Z - tornadoCenter.Z, pos.X - tornadoCenter.X) local newAngle = angle + math.rad(config.rotationSpeed) local targetPos = Vector3.new( tornadoCenter.X + math.cos(newAngle) * math.min(config.radius, distance), tornadoCenter.Y + (config.height * (math.abs(math.sin((pos.Y - tornadoCenter.Y) / config.height)))), tornadoCenter.Z + math.sin(newAngle) * math.min(config.radius, distance) ) local directionToTarget = (targetPos - part.Position).unit part.Velocity = directionToTarget * config.attractionStrength end end end end) -- NEW: TARGET SELECTION FUNCTIONALITY local targetIndex = 1 TargetDropdown.MouseButton1Click:Connect(function() targetIndex = (targetIndex % #targetPlayers) + 1 config.targetPlayer = targetPlayers[targetIndex] TargetDropdown.Text = "Select Target: " .. config.targetPlayer playSound("12221967") saveConfig() end) -- NEW: EPILEPSY MODE FUNCTIONALITY EpilepsyToggle.MouseButton1Click:Connect(function() config.epilepsyMode = not config.epilepsyMode EpilepsyToggle.Text = "Epilepsy Mode: " .. (config.epilepsyMode and "ON" or "OFF") EpilepsyToggle.BackgroundColor3 = config.epilepsyMode and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0) playSound("12221967") saveConfig() end) -- Button functionality ToggleButton.MouseButton1Click:Connect(function() ringPartsEnabled = not ringPartsEnabled ToggleButton.Text = ringPartsEnabled and "Tornado On" or "Tornado Off" ToggleButton.BackgroundColor3 = ringPartsEnabled and Color3.fromRGB(50, 205, 50) or Color3.fromRGB(160, 82, 45) playSound("12221967") end) -- Get player thumbnail local userId = Players:GetUserIdFromNameAsync("Robloxlukasgames") local thumbType = Enum.ThumbnailType.HeadShot local thumbSize = Enum.ThumbnailSize.Size420x420 local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize) StarterGui:SetCore("SendNotification", { Title = "Hey", Text = "Enjoy the Script!", Icon = content, Duration = 5 }) StarterGui:SetCore("SendNotification", { Title = "NEW FEATURES", Text = "Target other players + Epilepsy-free mode!", Icon = content, Duration = 5 }) -- MODIFIED: EPILEPSY-FREE BACKGROUND EFFECT local hue = 0 RunService.Heartbeat:Connect(function() if config.epilepsyMode then -- Epilepsy-free: Slow, smooth color transitions hue = (hue + 0.001) % 1 MainFrame.BackgroundColor3 = Color3.fromHSV(hue, 0.7, 0.8) -- Muted colors else -- Original fast rainbow effect hue = (hue + 0.01) % 1 MainFrame.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) end end) -- MODIFIED: EPILEPSY-FREE TEXT EFFECT local textHue = 0 RunService.Heartbeat:Connect(function() if config.epilepsyMode then -- Epilepsy-free: Static or very slow color change textHue = (textHue + 0.0005) % 1 Title.TextColor3 = Color3.fromHSV(textHue, 0.8, 0.9) else -- Original fast rainbow text textHue = (textHue + 0.01) % 1 Title.TextColor3 = Color3.fromHSV(textHue, 1, 1) end end) -- [REST OF YOUR BUTTONS REMAIN UNCHANGED - Fly Gui, No Fall Damage, etc.] -- Add your existing buttons here (Fly Gui, No Fall Damage, Noclip, etc.) -- They remain exactly as you had them... print("🎯 MODIFIED RING SCRIPT LOADED!") print("💫 NEW FEATURES:") print(" - Target other players with the ring") print(" - Epilepsy-free mode for smoother visuals") print(" - Safe for extended use")