Home » Roblox Scripts » 5 Powerful Scripts for Surviving Natural Disasters in Style

5 Powerful Scripts for Surviving Natural Disasters in Style

Photo of author
Published on

Surviving in the chaos of natural disasters is both thrilling and challenging in games. Scripts can elevate your gameplay, offering tools to strategize and overcome any disaster. Below are the five best scripts for Natural Disaster Survival, complete with their unique features and how to use them effectively.

01. Katers NDS Hub

A robust script designed to provide essential gameplay enhancements.

FeatureDescription
Easy ExecutionRequires a single or double execution for setup.
Bug ReportingJoin their Discord to report bugs or issues.

Script:

loadstring(game:HttpGet("https://katerhub-inc.github.io/scripts/game/KH-NDS.lua"))()  

02. Cloudy Rings

Adds fun and functionality with creative features like dynamic ring mechanics.

FeatureDescription
GUI CustomizationIncludes a user-friendly interface.
Disaster-Specific WarningsAdvises when not to use the script.
Advanced LogicModified GUI and logic for better usability.

Script:

--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
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 TextChatService = game:GetService("TextChatService")

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 = "CloudThemeGUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")

local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 220, 0, 190)
MainFrame.Position = UDim2.new(0.5, -110, 0.5, -95)
MainFrame.BackgroundColor3 = Color3.fromRGB(173, 216, 230) -- Light blue (sky color)
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 = "Cloudy"
Title.TextColor3 = Color3.fromRGB(255, 255, 255) -- White
Title.BackgroundColor3 = Color3.fromRGB(135, 206, 235) -- Light sky blue
Title.Font = Enum.Font.GothamSemibold -- Modern and soft font
Title.TextSize = 24
Title.Parent = MainFrame

-- Round the title
local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 20)
TitleCorner.Parent = Title

local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(0.8, 0, 0, 35)
ToggleButton.Position = UDim2.new(0.1, 0, 0.3, 0)
ToggleButton.Text = "Ring Parts Off"
ToggleButton.BackgroundColor3 = Color3.fromRGB(255, 250, 250) -- Soft off-white
ToggleButton.TextColor3 = Color3.fromRGB(70, 130, 180) -- Steel blue
ToggleButton.Font = Enum.Font.GothamSemibold
ToggleButton.TextSize = 18
ToggleButton.Parent = MainFrame

-- Round the toggle button
local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(0, 10)
ToggleCorner.Parent = ToggleButton

local DecreaseRadius = Instance.new("TextButton")
DecreaseRadius.Size = UDim2.new(0.2, 0, 0, 35)
DecreaseRadius.Position = UDim2.new(0.1, 0, 0.6, 0)
DecreaseRadius.Text = "<"
DecreaseRadius.BackgroundColor3 = Color3.fromRGB(240, 248, 255) -- Alice blue
DecreaseRadius.TextColor3 = Color3.fromRGB(70, 130, 180) -- Steel blue
DecreaseRadius.Font = Enum.Font.GothamSemibold
DecreaseRadius.TextSize = 18
DecreaseRadius.Parent = MainFrame

-- Round the decrease button
local DecreaseCorner = Instance.new("UICorner")
DecreaseCorner.CornerRadius = UDim.new(0, 10)
DecreaseCorner.Parent = DecreaseRadius

local IncreaseRadius = Instance.new("TextButton")
IncreaseRadius.Size = UDim2.new(0.2, 0, 0, 35)
IncreaseRadius.Position = UDim2.new(0.7, 0, 0.6, 0)
IncreaseRadius.Text = ">"
IncreaseRadius.BackgroundColor3 = Color3.fromRGB(240, 248, 255) -- Alice blue
IncreaseRadius.TextColor3 = Color3.fromRGB(70, 130, 180) -- Steel blue
IncreaseRadius.Font = Enum.Font.GothamSemibold
IncreaseRadius.TextSize = 18
IncreaseRadius.Parent = MainFrame

-- Round the increase button
local IncreaseCorner = Instance.new("UICorner")
IncreaseCorner.CornerRadius = UDim.new(0, 10)
IncreaseCorner.Parent = IncreaseRadius

local RadiusDisplay = Instance.new("TextLabel")
RadiusDisplay.Size = UDim2.new(0.4, 0, 0, 35)
RadiusDisplay.Position = UDim2.new(0.3, 0, 0.6, 0)
RadiusDisplay.Text = "Radius:50"
RadiusDisplay.BackgroundColor3 = Color3.fromRGB(240, 248, 255) -- Alice blue
RadiusDisplay.TextColor3 = Color3.fromRGB(70, 130, 180) -- Steel blue
RadiusDisplay.Font = Enum.Font.GothamSemibold
RadiusDisplay.TextSize = 18
RadiusDisplay.Parent = MainFrame

-- Round the radius display
local RadiusCorner = Instance.new("UICorner")
RadiusCorner.CornerRadius = UDim.new(0, 10)
RadiusCorner.Parent = RadiusDisplay

local Watermark = Instance.new("TextLabel")
Watermark.Size = UDim2.new(1, 0, 0, 20)
Watermark.Position = UDim2.new(0, 0, 1, -20)
Watermark.Text = "Thanks NeymarJR and ChatGPT"
Watermark.TextColor3 = Color3.fromRGB(70, 130, 180) -- Steel blue
Watermark.BackgroundTransparency = 1
Watermark.Font = Enum.Font.GothamSemibold
Watermark.TextSize = 14
Watermark.Parent = MainFrame

-- 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(135, 206, 235) -- Sky blue
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255) -- White
MinimizeButton.Font = Enum.Font.GothamSemibold
MinimizeButton.TextSize = 18
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, 220, 0, 40), "Out", "Quad", 0.3, true)
MinimizeButton.Text = "+"
ToggleButton.Visible = false
DecreaseRadius.Visible = false
IncreaseRadius.Visible = false
RadiusDisplay.Visible = false
Watermark.Visible = false
else
MainFrame:TweenSize(UDim2.new(0, 220, 0, 190), "Out", "Quad", 0.3, true)
MinimizeButton.Text = "-"
ToggleButton.Visible = true
DecreaseRadius.Visible = true
IncreaseRadius.Visible = true
RadiusDisplay.Visible = true
Watermark.Visible = true
end
playSound("12221967")
end)

-- The rest of your code remains unchanged
-- 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 Logic
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 radius = 100 -- Tornado radius increased
local height = 150 -- Tornado height
local baseAttractionStrength = 5000 -- Increased pulling strength for more intense effect
local rotationSpeed = 40 -- Rotation speed remains fast
local ringPartsEnabled = false

-- Stronger pull for far-away parts
local maxPullDistance = 2000 -- Maximum distance from the center that can still be pulled
local velocityIncrease = 20000 -- Increase velocity for stronger movement

local function RetainPart(Part)
if Part:IsA("BasePart") and not Part.Anchored and Part:IsDescendantOf(workspace) then
if Part.Parent == LocalPlayer.Character or Part:IsDescendantOf(LocalPlayer.Character) 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 humanoidRootPart = LocalPlayer.Character and LocalPlayer.Character: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 = (pos - tornadoCenter).Magnitude

-- Increase the random direction effect to add more randomness
local randomDirection = Vector3.new(
math.random() * 2 - 1, -- Random value between -1 and 1 for X
math.random() * 2 - 1, -- Random value between -1 and 1 for Y
math.random() * 2 - 1 -- Random value between -1 and 1 for Z
).unit -- Normalize the vector to ensure a unit direction

-- Apply stronger attraction to pull parts faster
local randomAttractionStrength = baseAttractionStrength + math.random(-1000, 1000)

-- Calculate the direction towards the tornado center, mixed with randomness
local directionToCenter = (tornadoCenter - part.Position).unit
local finalDirection = directionToCenter + randomDirection * 0.8 -- Stronger mix with random force

-- Normalize the final direction to avoid excessively large velocities
finalDirection = finalDirection.unit

-- Apply high velocity to parts towards the tornado center with added strength
local velocity = finalDirection * randomAttractionStrength * 0.1 -- Further increase the strength

-- Increase the velocity for pulling parts from a much greater distance
if distance > maxPullDistance then
velocity = velocity + (directionToCenter * (distance / maxPullDistance)) * velocityIncrease
end

-- Add additional vertical randomness for more chaos
local verticalForce = math.random(-height, height) * 0.05
velocity = velocity + Vector3.new(0, verticalForce, 0)

-- Apply a burst of randomness in the horizontal velocity as well
local horizontalRandomness = Vector3.new(
math.random() * 2 - 1, -- Random force in X direction
0, -- No random force in Y direction for stability
math.random() * 2 - 1 -- Random force in Z direction
).unit * math.random(500, 1500) -- Burst of random velocity strength

-- Combine the tornado velocity and the additional randomness
local finalVelocity = velocity + horizontalRandomness

-- Apply the increased rotation speed effect (make parts rotate faster around the tornado center)
local angle = math.atan2(pos.Z - tornadoCenter.Z, pos.X - tornadoCenter.X)
local newAngle = angle + math.rad(rotationSpeed) -- Increased rotation speed

local targetPos = Vector3.new(
tornadoCenter.X + math.cos(newAngle) * math.min(radius, distance),
tornadoCenter.Y + (height * (math.abs(math.sin((pos.Y - tornadoCenter.Y) / height)))),
tornadoCenter.Z + math.sin(newAngle) * math.min(radius, distance)
)

-- Update part velocity and apply the new position
part.Velocity = finalVelocity
end
end
end
end)



-- Button functionality
ToggleButton.MouseButton1Click:Connect(function()
ringPartsEnabled = not ringPartsEnabled
ToggleButton.Text = ringPartsEnabled and "Afloat" or "Hazy"
ToggleButton.BackgroundColor3 = ringPartsEnabled and Color3.fromRGB(255,255,224) or Color3.fromRGB(255,153,153)
playSound("12221967")
end)

DecreaseRadius.MouseButton1Click:Connect(function()
radius = math.max(0, radius - 5)
RadiusDisplay.Text = "Radius: " .. radius
playSound("12221967")
end)

IncreaseRadius.MouseButton1Click:Connect(function()
radius = math.min(1000000, radius + 5)
RadiusDisplay.Text = "Radius: " .. radius
playSound("12221967")
end)

-- Notifications
StarterGui:SetCore("SendNotification", {
Title = "Follow me!",
Text = "thanks chatGpt and NeymarJR",
Duration = 5
})

-- Get player thumbnail
local userId = Players:GetUserIdFromNameAsync("ineedfruitpls915")
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size420x420
local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)

StarterGui:SetCore("SendNotification", {
Title = "enjoy my rings",
Text = "made by ineedfruitpls915 or skybounder",
Icon = content,
Duration = 5
})

-- Chat message (Updated for new chat system)
local function SendChatMessage(message)
if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
local textChannel = TextChatService.TextChannels.RBXGeneral
textChannel:SendAsync(message)
else
game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(message, "All")
end
end

-- Send the chat message
SendChatMessage("Hmm it seems to be a bit cloudy today")

03. Super Ring Modified

Collaboratively developed, this script offers creative spinning effects.

FeatureDescription
Visual EffectsAdds spinning effects to objects.
Simple SetupEasy to load and execute.

Script:

loadstring(game:HttpGet("https://raw.githubusercontent.com/dqtixz/kyuu-is-fire/refs/heads/main/and%20projeto%20lkb%20Super%20Ring"))()  

04. Imperium

A comprehensive script with multiple functionalities for Natural Disaster Survival and other games.

FeatureDescription
Multi-Game SupportWorks with multiple games, not just NDS.
Extra FeaturesIncludes anti-fall damage, water walking.
Educational PurposeDesigned for personal learning and use.

Script:

loadstring(game:HttpGet("https://raw.githubusercontent.com/Imperium-Development/Imperium/main/Imperium.lua"))()  

05. Super Rings Parts V4 By Lukas

Ideal for creating interactive and dynamic game elements.

FeatureDescription
Dynamic Ring LogicAdds realistic and customizable ring parts.
Adjustable RadiusControl the size of the ring effect.

Script:

--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Workspace = game:GetService("Workspace")

local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")

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 = 9999999999999999
AlignPosition.MaxVelocity = math.huge
AlignPosition.Responsiveness = 200
AlignPosition.Attachment0 = Attachment2
AlignPosition.Attachment1 = Attachment1
end
end



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 TextChatService = game:GetService("TextChatService")

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, 220, 0, 190)
MainFrame.Position = UDim2.new(0.5, -110, 0.5, -95)
MainFrame.BackgroundColor3 = Color3.fromRGB(204, 0, 0) -- Light brown
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 v4"
Title.TextColor3 = Color3.fromRGB(153, 0, 0) -- Dark brown
Title.BackgroundColor3 = Color3.fromRGB(255, 51, 51) -- Lighter brown
Title.Font = Enum.Font.Fondamento -- More elegant font
Title.TextSize = 22
Title.Parent = MainFrame

-- Round the title
local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 20)
TitleCorner.Parent = Title

local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(0.8, 0, 0, 35)
ToggleButton.Position = UDim2.new(0.1, 0, 0.3, 0)
ToggleButton.Text = "Ring Parts Off"
ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 0, 255) -- Sienna
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) -- Cornsilk
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

local DecreaseRadius = Instance.new("TextButton")
DecreaseRadius.Size = UDim2.new(0.2, 0, 0, 35)
DecreaseRadius.Position = UDim2.new(0.1, 0, 0.6, 0)
DecreaseRadius.Text = "<"
DecreaseRadius.BackgroundColor3 = Color3.fromRGB(255, 153, 153) -- Saddle brown
DecreaseRadius.TextColor3 = Color3.fromRGB(255, 255, 255) -- Cornsilk
DecreaseRadius.Font = Enum.Font.Fondamento
DecreaseRadius.TextSize = 18
DecreaseRadius.Parent = MainFrame

-- Round the decrease button
local DecreaseCorner = Instance.new("UICorner")
DecreaseCorner.CornerRadius = UDim.new(0, 10)
DecreaseCorner.Parent = DecreaseRadius

local IncreaseRadius = Instance.new("TextButton")
IncreaseRadius.Size = UDim2.new(0.2, 0, 0, 35)
IncreaseRadius.Position = UDim2.new(0.7, 0, 0.6, 0)
IncreaseRadius.Text = ">"
IncreaseRadius.BackgroundColor3 = Color3.fromRGB(255, 153, 153) -- Saddle brown
IncreaseRadius.TextColor3 = Color3.fromRGB(255, 255, 255) -- Cornsilk
IncreaseRadius.Font = Enum.Font.Fondamento
IncreaseRadius.TextSize = 18
IncreaseRadius.Parent = MainFrame

-- Round the increase button
local IncreaseCorner = Instance.new("UICorner")
IncreaseCorner.CornerRadius = UDim.new(0, 10)
IncreaseCorner.Parent = IncreaseRadius

local RadiusDisplay = Instance.new("TextLabel")
RadiusDisplay.Size = UDim2.new(0.4, 0, 0, 35)
RadiusDisplay.Position = UDim2.new(0.3, 0, 0.6, 0)
RadiusDisplay.Text = "Radius: 50"
RadiusDisplay.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Tan
RadiusDisplay.TextColor3 = Color3.fromRGB(255, 255, 255) -- Dark brown
RadiusDisplay.Font = Enum.Font.Fondamento
RadiusDisplay.TextSize = 18
RadiusDisplay.Parent = MainFrame

-- Round the radius display
local RadiusCorner = Instance.new("UICorner")
RadiusCorner.CornerRadius = UDim.new(0, 10)
RadiusCorner.Parent = RadiusDisplay

local Watermark = Instance.new("TextLabel")
Watermark.Size = UDim2.new(1, 0, 0, 20)
Watermark.Position = UDim2.new(0, 0, 1, -20)
Watermark.Text = "Super Ring [V4] by lukas"
Watermark.TextColor3 = Color3.fromRGB(255, 255, 255) -- Dark brown
Watermark.BackgroundTransparency = 1
Watermark.Font = Enum.Font.Fondamento
Watermark.TextSize = 14
Watermark.Parent = MainFrame

-- 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(0, 0, 255) -- Saddle brown
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255) -- Cornsilk
MinimizeButton.Font = Enum.Font.Fondamento
MinimizeButton.TextSize = 18
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, 220, 0, 40), "Out", "Quad", 0.3, true)
MinimizeButton.Text = "+"
ToggleButton.Visible = false
DecreaseRadius.Visible = false
IncreaseRadius.Visible = false
RadiusDisplay.Visible = false
Watermark.Visible = false
else
MainFrame:TweenSize(UDim2.new(0, 220, 0, 190), "Out", "Quad", 0.3, true)
MinimizeButton.Text = "-"
ToggleButton.Visible = true
DecreaseRadius.Visible = true
IncreaseRadius.Visible = true
RadiusDisplay.Visible = true
Watermark.Visible = true
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 Logic
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 radius = 50
local height = 100
local rotationSpeed = 1
local attractionStrength = 1000
local ringPartsEnabled = false

local function RetainPart(Part)
if Part:IsA("BasePart") and not Part.Anchored and Part:IsDescendantOf(workspace) then
if Part.Parent == LocalPlayer.Character or Part:IsDescendantOf(LocalPlayer.Character) 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 humanoidRootPart = LocalPlayer.Character and LocalPlayer.Character: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(rotationSpeed)
local targetPos = Vector3.new(
tornadoCenter.X + math.cos(newAngle) * math.min(radius, distance),
tornadoCenter.Y + (height * (math.abs(math.sin((pos.Y - tornadoCenter.Y) / height)))),
tornadoCenter.Z + math.sin(newAngle) * math.min(radius, distance)
)
local directionToTarget = (targetPos - part.Position).unit
part.Velocity = directionToTarget * attractionStrength
end
end
end
end)

-- Button functionality
ToggleButton.MouseButton1Click:Connect(function()
ringPartsEnabled = not ringPartsEnabled
ToggleButton.Text = ringPartsEnabled and "Ring Parts On" or "Ring Parts Off"
ToggleButton.BackgroundColor3 = ringPartsEnabled and Color3.fromRGB(50, 205, 50) or Color3.fromRGB(160, 82, 45)
playSound("12221967")
end)

DecreaseRadius.MouseButton1Click:Connect(function()
radius = math.max(1, radius - 2)
RadiusDisplay.Text = "Radius: " .. radius
playSound("12221967")
end)

IncreaseRadius.MouseButton1Click:Connect(function()
radius = math.min(1000, radius + 2)
RadiusDisplay.Text = "Radius: " .. radius
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 = "Super ring parts V4",
Text = "enjoy",
Icon = content,
Duration = 5
})

-- Chat message (Updated for new chat system)
local function SendChatMessage(message)
if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
local textChannel = TextChatService.TextChannels.RBXGeneral
textChannel:SendAsync(message)
else
game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(message, "All")
end
end

-- Send the chat message
SendChatMessage("Super Ring Parts V4 By lukas")

How to Use the Scripts

  1. Copy the script from the provided code snippet.
  2. Paste the script into your preferred Lua executor (like Synapse X or KRNL).
  3. Execute the script during the game to activate its features.
  4. Follow on-screen instructions or GUI options to customize your experience.

Benefits of Using These Scripts

Using these scripts enhances your gameplay by:

  1. Providing Customization: Tailor the game to your preferences, from visual effects to gameplay mechanics.
  2. Improving Survival Odds: Tools like no-fall damage or disaster tracking give you an edge.
  3. Adding Fun Elements: Creative features like spinning rings or dynamic GUIs make the game more enjoyable.
  4. Educational Insight: Some scripts, like Imperium, are designed for learning and understanding Lua programming.

Leave a Comment