-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- Natural Disaster Survival | ULTIMATE SCRIPT -- Infinite Jump + ESP + Fling + Insane Features -- Execute via Synapse X, KRNL, Fluxus etc. local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local Config = { ESP = { Enabled = true, ShowBoxes = true, ShowNames = true, ShowHealth = true, ShowTracers = true, BoxColor = Color3.fromRGB(80, 180, 255), NameColor = Color3.fromRGB(255, 255, 255), TracerColor = Color3.fromRGB(80, 180, 255), }, Movement = { InfJump = true, JumpPower = 350, -- insane jump height Speed = 50, SpeedOn = false, Noclip = false, Fly = false, FlySpeed = 80, }, Fling = { AutoFling = false, -- auto fling everyone FlingForce = 999999, Teleport = false, -- teleport to random player }, Misc = { AntiDisaster = false, -- try to survive all disasters InfAntiVoid = true, -- prevent falling off map GodMode = false, -- reset health every frame AutoRejoin = false, }, } -- ═══════════════════════════════════════ -- UTILITIES -- ═══════════════════════════════════════ local function GetChar(p) return p.Character end local function GetRoot(p) local c=GetChar(p); return c and c:FindFirstChild("HumanoidRootPart") end local function GetHum(p) local c=GetChar(p); return c and c:FindFirstChildOfClass("Humanoid") end local function GetHead(p) local c=GetChar(p); return c and c:FindFirstChild("Head") end local function IsAlive(p) local h=GetHum(p); return h and h.Health > 0 end local function GetDist(p) local r, lr = GetRoot(p), GetRoot(LocalPlayer) return (r and lr) and (r.Position - lr.Position).Magnitude or math.huge end local function WorldToScreen(pos) local camCF = Camera.CFrame local vp = Camera.ViewportSize local fov = Camera.FieldOfView local aspect = vp.X / vp.Y local rel = camCF:PointToObjectSpace(pos) if rel.Z > 0 then return Vector2.new(0,0), -1, false end local depth = -rel.Z local fovRad = math.rad(fov / 2) local scaleY = vp.Y / (2 * math.tan(fovRad)) local scaleX = scaleY * aspect local sx = (rel.X / depth) * scaleX + vp.X / 2 local sy = (-rel.Y / depth) * scaleY + vp.Y / 2 return Vector2.new(sx, sy), depth, sx>=0 and sx<=vp.X and sy>=0 and sy<=vp.Y end -- ═══════════════════════════════════════ -- ESP -- ═══════════════════════════════════════ local ESPObjects = {} local function CreateESP(player) if ESPObjects[player] then return end local d = {} d.Box = Drawing.new("Square"); d.Box.Filled=false; d.Box.Thickness=1.5 d.Name = Drawing.new("Text"); d.Name.Size=13; d.Name.Center=true; d.Name.Outline=true d.HBG = Drawing.new("Square"); d.HBG.Filled=true; d.HBG.Color=Color3.fromRGB(0,0,0); d.HBG.Transparency=0.5 d.Health = Drawing.new("Square"); d.Health.Filled=true d.Tracer = Drawing.new("Line"); d.Tracer.Thickness=1 for _, o in pairs(d) do o.Visible = false end ESPObjects[player] = d end local function RemoveESP(player) if not ESPObjects[player] then return end for _, o in pairs(ESPObjects[player]) do o:Remove() end ESPObjects[player] = nil end local function UpdateESP() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end if not ESPObjects[player] then CreateESP(player) end local d = ESPObjects[player] if not d then continue end local head = GetHead(player) local root = GetRoot(player) local hum = GetHum(player) if not Config.ESP.Enabled or not IsAlive(player) or not head or not root or not hum then for _, o in pairs(d) do o.Visible = false end continue end local hrpS, depth, onScreen = WorldToScreen(root.Position) local headS, headD, headOn = WorldToScreen(head.Position + Vector3.new(0,0.5,0)) local feetS, feetD, feetOn = WorldToScreen(root.Position - Vector3.new(0,3,0)) if not onScreen or depth <= 0 then for _, o in pairs(d) do o.Visible = false end continue end local bH = math.max(10, math.abs(headS.Y - feetS.Y)) local bW = bH * 0.5 local bX = hrpS.X - bW / 2 local bY = headS.Y d.Box.Position = Vector2.new(bX, bY) d.Box.Size = Vector2.new(bW, bH) d.Box.Color = Config.ESP.BoxColor d.Box.Visible = Config.ESP.ShowBoxes d.Name.Position = Vector2.new(hrpS.X, bY - 16) d.Name.Text = player.DisplayName.." ["..math.floor(GetDist(player)).."m]" d.Name.Color = Config.ESP.NameColor d.Name.Visible = Config.ESP.ShowNames local ratio = math.clamp(hum.Health / hum.MaxHealth, 0, 1) d.HBG.Position = Vector2.new(bX-7, bY) d.HBG.Size = Vector2.new(5, bH) d.HBG.Visible = Config.ESP.ShowHealth d.Health.Position = Vector2.new(bX-7, bY + bH*(1-ratio)) d.Health.Size = Vector2.new(5, bH*ratio) d.Health.Color = Color3.fromRGB(math.floor(255*(1-ratio)), math.floor(255*ratio), 0) d.Health.Visible = Config.ESP.ShowHealth local vp = Camera.ViewportSize d.Tracer.From = Vector2.new(vp.X/2, vp.Y) d.Tracer.To = hrpS d.Tracer.Color = Config.ESP.TracerColor d.Tracer.Visible = Config.ESP.ShowTracers end end Players.PlayerAdded:Connect(CreateESP) Players.PlayerRemoving:Connect(RemoveESP) for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer then CreateESP(p) end end -- ═══════════════════════════════════════ -- INFINITE JUMP -- ═══════════════════════════════════════ UserInputService.JumpRequest:Connect(function() if not Config.Movement.InfJump then return end local char = LocalPlayer.Character; if not char then return end local hum = char:FindFirstChildOfClass("Humanoid"); if not hum then return end hum:ChangeState(Enum.HumanoidStateType.Jumping) end) -- ═══════════════════════════════════════ -- FLY SYSTEM -- ═══════════════════════════════════════ local FlyBV, FlyBG local function EnableFly() local root = GetRoot(LocalPlayer); if not root then return end if not FlyBV then FlyBV = Instance.new("BodyVelocity", root) FlyBV.MaxForce = Vector3.new(1e9,1e9,1e9) FlyBV.Velocity = Vector3.zero end if not FlyBG then FlyBG = Instance.new("BodyGyro", root) FlyBG.MaxTorque = Vector3.new(1e9,1e9,1e9) FlyBG.D = 400 end end local function DisableFly() if FlyBV then FlyBV:Destroy(); FlyBV=nil end if FlyBG then FlyBG:Destroy(); FlyBG=nil end end local function UpdateFly() if not Config.Movement.Fly then DisableFly(); return end EnableFly() local root = GetRoot(LocalPlayer); if not root then return end local cf = Camera.CFrame local dir = Vector3.zero if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + cf.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - cf.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - cf.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + cf.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0,1,0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0,1,0) end FlyBV.Velocity = dir.Magnitude > 0 and dir.Unit * Config.Movement.FlySpeed or Vector3.zero FlyBG.CFrame = cf end -- ═══════════════════════════════════════ -- FLING ALL PLAYERS -- ═══════════════════════════════════════ local function FlingPlayer(player) local root = GetRoot(player) if not root then return end local myRoot = GetRoot(LocalPlayer) if not myRoot then return end -- Teleport into them then blast BodyVelocity local oldPos = myRoot.CFrame myRoot.CFrame = root.CFrame local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e9, 1e9, 1e9) bv.Velocity = Vector3.new( math.random(-1,1) * Config.Fling.FlingForce, Config.Fling.FlingForce, math.random(-1,1) * Config.Fling.FlingForce ) bv.Parent = root game:GetService("Debris"):AddItem(bv, 0.1) task.wait(0.1) myRoot.CFrame = oldPos end local function FlingAll() for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end if not IsAlive(player) then continue end FlingPlayer(player) end end -- ═══════════════════════════════════════ -- TELEPORT TO RANDOM PLAYER -- ═══════════════════════════════════════ local function TeleportRandom() local list = {} for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and IsAlive(p) then list[#list+1] = p end end if #list == 0 then return end local target = list[math.random(1, #list)] local myRoot = GetRoot(LocalPlayer) local tRoot = GetRoot(target) if myRoot and tRoot then myRoot.CFrame = tRoot.CFrame + Vector3.new(0, 3, 0) end end -- ═══════════════════════════════════════ -- ANTI VOID -- ═══════════════════════════════════════ local function AntiVoid() if not Config.Misc.InfAntiVoid then return end local root = GetRoot(LocalPlayer); if not root then return end if root.Position.Y < -100 then root.CFrame = CFrame.new(0, 100, 0) end end -- ═══════════════════════════════════════ -- GOD MODE -- ═══════════════════════════════════════ local function UpdateGod() if not Config.Misc.GodMode then return end local hum = GetHum(LocalPlayer); if not hum then return end hum.Health = hum.MaxHealth end -- ═══════════════════════════════════════ -- MOVEMENT LOOP -- ═══════════════════════════════════════ local function ApplyMovement() local char = LocalPlayer.Character; if not char then return end local hum = char:FindFirstChildOfClass("Humanoid"); if not hum then return end hum.JumpPower = Config.Movement.JumpPower hum.WalkSpeed = Config.Movement.SpeedOn and Config.Movement.Speed or 16 end -- Noclip RunService.Stepped:Connect(function() if not Config.Movement.Noclip then return end local char = LocalPlayer.Character; if not char then return end for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end) -- Auto fling loop task.spawn(function() while task.wait(0.5) do if Config.Fling.AutoFling then FlingAll() end end end) -- Main loop RunService.RenderStepped:Connect(function() UpdateESP() ApplyMovement() UpdateFly() AntiVoid() UpdateGod() end) -- ═══════════════════════════════════════ -- GUI -- ═══════════════════════════════════════ if game.CoreGui:FindFirstChild("NDS_Script") then game.CoreGui:FindFirstChild("NDS_Script"):Destroy() end local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "NDS_Script" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = game.CoreGui -- Pill local Pill = Instance.new("TextButton") Pill.Size = UDim2.new(0, 110, 0, 32) Pill.Position = UDim2.new(0, 12, 0, 12) Pill.BackgroundColor3 = Color3.fromRGB(80, 180, 255) Pill.AutoButtonColor = false Pill.Text = "☰ NDS" Pill.TextColor3 = Color3.new(1,1,1) Pill.Font = Enum.Font.GothamBold Pill.TextSize = 13; Pill.ZIndex = 20 Pill.Parent = ScreenGui Instance.new("UICorner", Pill).CornerRadius = UDim.new(1,0) -- Panel local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0, 215, 0, 0) Frame.AutomaticSize = Enum.AutomaticSize.Y Frame.Position = UDim2.new(0, 12, 0, 52) Frame.BackgroundColor3 = Color3.fromRGB(10, 10, 18) Frame.BorderSizePixel = 0; Frame.Active=true Frame.Draggable = true; Frame.Visible=true Frame.ZIndex = 10; Frame.Parent=ScreenGui Instance.new("UICorner", Frame).CornerRadius = UDim.new(0,10) do local s=Instance.new("UIStroke",Frame); s.Color=Color3.fromRGB(80,180,255); s.Thickness=1.4 end -- Header local Header = Instance.new("Frame", Frame) Header.Size = UDim2.new(1,0,0,38) Header.BackgroundColor3 = Color3.fromRGB(80,180,255) Header.BorderSizePixel = 0; Header.ZIndex=11 Instance.new("UICorner", Header).CornerRadius = UDim.new(0,10) local HFix = Instance.new("Frame", Header) HFix.Size = UDim2.new(1,0,0,10); HFix.Position=UDim2.new(0,0,1,-10) HFix.BackgroundColor3 = Color3.fromRGB(80,180,255); HFix.BorderSizePixel=0; HFix.ZIndex=11 local HLabel = Instance.new("TextLabel", Header) HLabel.Size = UDim2.new(1,-40,1,0); HLabel.Position=UDim2.new(0,12,0,0) HLabel.BackgroundTransparency=1; HLabel.Text="🌪 NATURAL DISASTER" HLabel.TextColor3=Color3.new(1,1,1); HLabel.Font=Enum.Font.GothamBold HLabel.TextSize=12; HLabel.TextXAlignment=Enum.TextXAlignment.Left; HLabel.ZIndex=12 local XBtn = Instance.new("TextButton", Header) XBtn.Size = UDim2.new(0,26,0,26); XBtn.Position=UDim2.new(1,-30,0,6) XBtn.BackgroundColor3 = Color3.fromRGB(40,120,200); XBtn.AutoButtonColor=false XBtn.Text="✕"; XBtn.TextColor3=Color3.new(1,1,1) XBtn.Font=Enum.Font.GothamBold; XBtn.TextSize=13; XBtn.ZIndex=13 Instance.new("UICorner",XBtn).CornerRadius=UDim.new(0,6) -- Scroll local Scroll = Instance.new("ScrollingFrame", Frame) Scroll.Size = UDim2.new(1,0,0,400); Scroll.Position=UDim2.new(0,0,0,40) Scroll.BackgroundTransparency=1; Scroll.ScrollBarThickness=2 Scroll.ScrollBarImageColor3=Color3.fromRGB(80,180,255) Scroll.CanvasSize=UDim2.new(0,0,0,0) Scroll.AutomaticCanvasSize=Enum.AutomaticSize.Y; Scroll.ZIndex=11 local List=Instance.new("UIListLayout",Scroll) List.Padding=UDim.new(0,5) List.HorizontalAlignment=Enum.HorizontalAlignment.Center List.SortOrder=Enum.SortOrder.LayoutOrder local Pad=Instance.new("UIPadding",Scroll) Pad.PaddingTop=UDim.new(0,8); Pad.PaddingLeft=UDim.new(0,8) Pad.PaddingRight=UDim.new(0,8); Pad.PaddingBottom=UDim.new(0,8) local PanelOpen = true local function SetPanel(open) PanelOpen=open; Frame.Visible=open Pill.Text=open and "☰ NDS" or "☰ OPEN" Pill.BackgroundColor3=open and Color3.fromRGB(80,180,255) or Color3.fromRGB(50,50,65) end Pill.MouseButton1Click:Connect(function() SetPanel(not PanelOpen) end) XBtn.MouseButton1Click:Connect(function() SetPanel(false) end) local order=0 local function NO() order=order+1; return order end local ACC = Color3.fromRGB(80,180,255) local function Section(text) local f=Instance.new("Frame",Scroll); f.Size=UDim2.new(1,0,0,20) f.BackgroundTransparency=1; f.LayoutOrder=NO() local l=Instance.new("TextLabel",f); l.Size=UDim2.new(1,0,1,0) l.BackgroundTransparency=1; l.Text=text; l.TextColor3=ACC l.Font=Enum.Font.GothamBold; l.TextSize=11 l.TextXAlignment=Enum.TextXAlignment.Left; l.ZIndex=12 local d=Instance.new("Frame",f); d.Size=UDim2.new(1,0,0,1) d.Position=UDim2.new(0,0,1,-1); d.BackgroundColor3=ACC d.BorderSizePixel=0; d.ZIndex=12 end local function Toggle(label, tbl, key, cb) local btn=Instance.new("TextButton",Scroll); btn.Size=UDim2.new(1,0,0,30) btn.AutoButtonColor=false btn.BackgroundColor3=tbl[key] and ACC or Color3.fromRGB(32,32,46) btn.Text=label..": "..(tbl[key] and "ON" or "OFF") btn.TextColor3=Color3.new(1,1,1); btn.Font=Enum.Font.Gotham; btn.TextSize=13 btn.LayoutOrder=NO(); btn.ZIndex=12 Instance.new("UICorner",btn).CornerRadius=UDim.new(0,7) btn.MouseButton1Click:Connect(function() tbl[key]=not tbl[key] btn.Text=label..": "..(tbl[key] and "ON" or "OFF") btn.BackgroundColor3=tbl[key] and ACC or Color3.fromRGB(32,32,46) if cb then cb(tbl[key]) end end) end -- Action button (single press) local function ActionBtn(label, fn) local btn=Instance.new("TextButton",Scroll); btn.Size=UDim2.new(1,0,0,30) btn.AutoButtonColor=false btn.BackgroundColor3=Color3.fromRGB(40,120,200) btn.Text=label; btn.TextColor3=Color3.new(1,1,1) btn.Font=Enum.Font.GothamBold; btn.TextSize=13 btn.LayoutOrder=NO(); btn.ZIndex=12 Instance.new("UICorner",btn).CornerRadius=UDim.new(0,7) btn.MouseButton1Click:Connect(function() btn.BackgroundColor3=Color3.fromRGB(20,80,160) fn() task.wait(0.2) btn.BackgroundColor3=Color3.fromRGB(40,120,200) end) end Section("ESP") Toggle("ESP", Config.ESP, "Enabled") Toggle("Boxes", Config.ESP, "ShowBoxes") Toggle("Names", Config.ESP, "ShowNames") Toggle("Health", Config.ESP, "ShowHealth") Toggle("Tracers", Config.ESP, "ShowTracers") Section("MOVEMENT") Toggle("Inf Jump", Config.Movement, "InfJump") Toggle("Speed Hack", Config.Movement, "SpeedOn") Toggle("Noclip", Config.Movement, "Noclip") Toggle("Fly [WASD+Space]", Config.Movement, "Fly", function(on) if not on then DisableFly() end end) Section("FLING") Toggle("Auto Fling All", Config.Fling, "AutoFling") ActionBtn("⚡ Fling Everyone Now", FlingAll) ActionBtn("🎯 Teleport to Random", TeleportRandom) Section("MISC") Toggle("God Mode", Config.Misc, "GodMode") Toggle("Anti Void", Config.Misc, "InfAntiVoid") print("[NDS Script] Loaded — Survive nothing, ruin everything")