-- [[ 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 ]] -- NDS Replica Hub v3 | Bodyguard + Fly + Status Indicator | Mobile local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local CoreGui = game:GetService("CoreGui") getgenv().NDS = { GodMode = false, Speed = false, Jump = false, SpeedValue = 60, JumpValue = 130, ESP = false, NoFall = false, AutoFarm = false, Bodyguard = false, Fly = false, SpeedConn = nil, OriginalSpeed = 16, OriginalJump = 50, FlyBV = nil, FlyBG = nil, } -- ============================================ -- ANTI-DETECT HOOKS -- ============================================ pcall(function() local mt = getrawmetatable(game) local oldNewIndex = mt.__newindex local oldIndex = mt.__index setreadonly(mt, false) mt.__newindex = newcclosure(function(self, key, value) if type(self) == "Instance" and self:IsA("Humanoid") then if key == "Health" and NDS.GodMode and value < self.MaxHealth then return end if key == "MaxHealth" and NDS.GodMode then return end end return oldNewIndex(self, key, value) end) mt.__index = newcclosure(function(self, key) if type(self) == "Instance" and self:IsA("Humanoid") and NDS.Jump then if key == "JumpPower" then local caller = getcallingscript and getcallingscript() if caller and caller ~= LocalPlayer.Character then return NDS.OriginalJump end end end return oldIndex(self, key) end) setreadonly(mt, true) end) -- ============================================ -- GUI -- ============================================ local gui = Instance.new("ScreenGui") gui.Name = "NDS_Replica_Hub_v3" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = CoreGui local main = Instance.new("Frame") main.Size = UDim2.new(0, 290, 0, 500) main.Position = UDim2.new(0, 15, 0, 70) main.BackgroundColor3 = Color3.fromRGB(18, 18, 22) main.BorderSizePixel = 0 main.Active = true main.Draggable = true main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 40) title.BackgroundColor3 = Color3.fromRGB(30, 30, 38) title.Text = "NDS Replica v3 | Keyless" title.TextColor3 = Color3.fromRGB(200, 200, 255) title.Font = Enum.Font.GothamBold title.TextSize = 15 title.Parent = main Instance.new("UICorner", title).CornerRadius = UDim.new(0, 12) local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(1, -10, 1, -50) scroll.Position = UDim2.new(0, 5, 0, 45) scroll.BackgroundTransparency = 1 scroll.ScrollBarThickness = 4 scroll.CanvasSize = UDim2.new(0, 0, 0, 0) scroll.Parent = main local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0, 6) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Parent = scroll -- ============================================ -- STATUS INDICATOR (Kanan Atas) -- ============================================ local statusFrame = Instance.new("Frame") statusFrame.Size = UDim2.new(0, 180, 0, 30) statusFrame.Position = UDim2.new(1, -195, 0, 10) statusFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) statusFrame.BackgroundTransparency = 0.2 statusFrame.BorderSizePixel = 0 statusFrame.Parent = gui Instance.new("UICorner", statusFrame).CornerRadius = UDim.new(0, 8) local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, -10, 1, 0) statusLabel.Position = UDim2.new(0, 5, 0, 0) statusLabel.BackgroundTransparency = 1 statusLabel.TextColor3 = Color3.fromRGB(120, 255, 120) statusLabel.Font = Enum.Font.GothamBold statusLabel.TextSize = 12 statusLabel.TextXAlignment = Enum.TextXAlignment.Left statusLabel.Text = "⚡ No cheats active" statusLabel.Parent = statusFrame local function refreshStatus() local active = {} if NDS.GodMode then table.insert(active, "God") end if NDS.Speed then table.insert(active, "Speed") end if NDS.Jump then table.insert(active, "Jump") end if NDS.ESP then table.insert(active, "ESP") end if NDS.NoFall then table.insert(active, "NoFall") end if NDS.AutoFarm then table.insert(active, "Farm") end if NDS.Bodyguard then table.insert(active, "Guard") end if NDS.Fly then table.insert(active, "Fly") end if #active == 0 then statusLabel.Text = "⚡ No cheats active" statusLabel.TextColor3 = Color3.fromRGB(150, 150, 150) else statusLabel.Text = "🔥 " .. table.concat(active, " | ") statusLabel.TextColor3 = Color3.fromRGB(120, 255, 120) end end -- ============================================ -- BUTTON HELPER (dengan state color) -- ============================================ local function makeToggle(text, key, callback) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -12, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 50) btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.Text = text .. " (OFF)" btn.Parent = scroll Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) btn.MouseButton1Click:Connect(function() NDS[key] = not NDS[key] if NDS[key] then btn.BackgroundColor3 = Color3.fromRGB(30, 130, 60) btn.Text = text .. " (ON)" else btn.BackgroundColor3 = Color3.fromRGB(40, 40, 50) btn.Text = text .. " (OFF)" end if callback then callback() end refreshStatus() end) return btn end local function makeButton(text, callback) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -12, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 50) btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.Text = text btn.Parent = scroll Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) btn.MouseButton1Click:Connect(callback) return btn end -- ============================================ -- FLOATING TOGGLE -- ============================================ local floatingBtn = Instance.new("TextButton") floatingBtn.Size = UDim2.new(0, 55, 0, 55) floatingBtn.Position = UDim2.new(0, 15, 0, 200) floatingBtn.BackgroundColor3 = Color3.fromRGB(80, 60, 200) floatingBtn.Text = "⚡" floatingBtn.TextColor3 = Color3.new(1, 1, 1) floatingBtn.Font = Enum.Font.GothamBold floatingBtn.TextSize = 24 floatingBtn.Visible = false floatingBtn.Parent = gui Instance.new("UICorner", floatingBtn).CornerRadius = UDim.new(1, 0) local draggingFB, dragStart, startPos floatingBtn.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then draggingFB = true dragStart = input.Position startPos = floatingBtn.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then draggingFB = false end end) end end) UserInputService.InputChanged:Connect(function(input) if draggingFB and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart floatingBtn.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) floatingBtn.MouseButton1Click:Connect(function() if not draggingFB then main.Visible = true floatingBtn.Visible = false end end) local close = Instance.new("TextButton") close.Size = UDim2.new(0, 28, 0, 28) close.Position = UDim2.new(1, -34, 0, 6) close.BackgroundColor3 = Color3.fromRGB(180, 40, 40) close.Text = "X" close.TextColor3 = Color3.new(1, 1, 1) close.Font = Enum.Font.GothamBold close.TextSize = 14 close.Parent = main Instance.new("UICorner", close).CornerRadius = UDim.new(0, 6) close.MouseButton1Click:Connect(function() main.Visible = false floatingBtn.Visible = true end) -- ============================================ -- HELPER -- ============================================ local function getHum() local char = LocalPlayer.Character if char then return char, char:FindFirstChildOfClass("Humanoid"), char:FindFirstChild("HumanoidRootPart") end return nil, nil, nil end -- ============================================ -- 1. GOD MODE -- ============================================ makeToggle("🛡️ God Mode", "GodMode", function() local _, hum = getHum() if NDS.GodMode and hum then hum.MaxHealth = 1000000 hum.Health = 1000000 task.spawn(function() while NDS.GodMode do local _, h = getHum() if h and h.Health < h.MaxHealth then pcall(function() h.Health = h.MaxHealth end) end task.wait(0.1) end end) elseif hum then pcall(function() hum.MaxHealth = 100 hum.Health = 100 end) end end) -- ============================================ -- 2. SPEED (BodyVelocity) -- ============================================ makeToggle("🏃 Speed Boost", "Speed", function() local char, hum, hrp = getHum() if NDS.Speed and hrp then local old = hrp:FindFirstChild("NDS_SpeedBV") if old then old:Destroy() end local bv = Instance.new("BodyVelocity") bv.Name = "NDS_SpeedBV" bv.MaxForce = Vector3.new(math.huge, 0, math.huge) bv.Velocity = Vector3.new(0, 0, 0) bv.Parent = hrp NDS.SpeedConn = RunService.Heartbeat:Connect(function() local _, h, root = getHum() if not root or not h then return end local move = h.MoveDirection if move.Magnitude > 0 then bv.Velocity = move * NDS.SpeedValue else bv.Velocity = Vector3.new(0, 0, 0) end end) else if NDS.SpeedConn then NDS.SpeedConn:Disconnect() NDS.SpeedConn = nil end if hrp then local bv = hrp:FindFirstChild("NDS_SpeedBV") if bv then bv:Destroy() end end end end) -- ============================================ -- 3. JUMP -- ============================================ makeToggle("🦘 Jump Boost", "Jump", function() local _, hum = getHum() if not hum then return end if NDS.Jump then pcall(function() hum.UseJumpPower = true hum.JumpPower = NDS.JumpValue end) task.spawn(function() while NDS.Jump do local _, h = getHum() if h and h.JumpPower ~= NDS.JumpValue then pcall(function() h.JumpPower = NDS.JumpValue end) end task.wait(0.5) end end) else pcall(function() hum.JumpPower = NDS.OriginalJump end) end end) -- ============================================ -- 4. FLY (mobile-friendly) -- ============================================ makeToggle("🕊️ Fly", "Fly", function() local char, hum, hrp = getHum() if not hrp then return end if NDS.Fly then local bv = Instance.new("BodyVelocity") bv.Name = "NDS_FlyBV" bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge) bv.Velocity = Vector3.new(0, 0, 0) bv.Parent = hrp local bg = Instance.new("BodyGyro") bg.Name = "NDS_FlyBG" bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) bg.P = 1000 bg.D = 50 bg.Parent = hrp NDS.FlyBV = bv NDS.FlyBG = bg task.spawn(function() while NDS.Fly do local _, h, root = getHum() if not root then break end local cam = Workspace.CurrentCamera local move = h.MoveDirection local speed = 80 if move.Magnitude > 0 then bv.Velocity = cam.CFrame:VectorToWorldSpace(move) * speed else bv.Velocity = Vector3.new(0, 0, 0) end bg.CFrame = cam.CFrame task.wait(0.03) end end) else if hrp then local bv = hrp:FindFirstChild("NDS_FlyBV") local bg = hrp:FindFirstChild("NDS_FlyBG") if bv then bv:Destroy() end if bg then bg:Destroy() end end NDS.FlyBV = nil NDS.FlyBG = nil end end) -- FLY UP / DOWN BUTTON local flyUpBtn = makeButton("⬆️ Fly Up (hold)", function() local _, _, hrp = getHum() if NDS.FlyBV and hrp then NDS.FlyBV.Velocity = Vector3.new(NDS.FlyBV.Velocity.X, 80, NDS.FlyBV.Velocity.Z) end end) local flyDownBtn = makeButton("⬇️ Fly Down (hold)", function() local _, _, hrp = getHum() if NDS.FlyBV and hrp then NDS.FlyBV.Velocity = Vector3.new(NDS.FlyBV.Velocity.X, -80, NDS.FlyBV.Velocity.Z) end end) -- ============================================ -- 5. BODYGUARD (rotating fling blocks) -- ============================================ getgenv().NDS_BodyguardParts = {} getgenv().NDS_BodyguardFolder = nil makeToggle("🥷 Bodyguard", "Bodyguard", function() local char, hum, hrp = getHum() if not hrp then return end if NDS.Bodyguard then local folder = Instance.new("Folder") folder.Name = "NDS_BodyguardFolder" folder.Parent = Workspace NDS_BodyguardFolder = folder local angles = {0, 90, 180, 270} for i, ang in ipairs(angles) do local part = Instance.new("Part") part.Name = "NDS_Guard_" .. i part.Size = Vector3.new(2, 6, 2) part.Color = Color3.fromRGB(255, 80, 80) part.Material = Enum.Material.Neon part.CanCollide = false part.Anchored = true part.Transparency = 0.3 part.Parent = folder local att = Instance.new("Attachment") att.Name = "Attach_" .. i att.Parent = hrp -- posisi orbit awal local rad = math.rad(ang) att.Position = Vector3.new(math.cos(rad) * 4, 0, math.sin(rad) * 4) local align = Instance.new("AlignPosition") align.Mode = Enum.PositionAlignmentMode.OneAttachment align.Attachment0 = att align.MaxForce = 1e6 align.Responsiveness = 100 align.Parent = part local contact = Instance.new("Part") contact.Name = "Hitbox_" .. i contact.Size = Vector3.new(4, 8, 4) contact.Transparency = 1 contact.CanCollide = false contact.Anchored = true contact.Parent = folder local weld = Instance.new("WeldConstraint") weld.Part0 = part weld.Part1 = contact part.Touched:Connect(function(hit) if not NDS.Bodyguard then return end local model = hit:FindFirstAncestorOfClass("Model") if model and model ~= char and model:FindFirstChildOfClass("Humanoid") then local h = model:FindFirstChildOfClass("Humanoid") local root = model:FindFirstChild("HumanoidRootPart") if h and root and h.Health > 0 then -- fling velocity local dir = (root.Position - part.Position).Unit local bv = Instance.new("BodyVelocity") bv.MaxForce = math.huge bv.Velocity = (dir + Vector3.new(0, 2, 0)) * 500 bv.Parent = root game:GetService("Debris"):AddItem(bv, 0.5) h.Health = 0 end end end) table.insert(NDS_BodyguardParts, part) end -- Spin loop task.spawn(function() local t = 0 while NDS.Bodyguard do t = t + 0.5 local _, _, root = getHum() if not root then break end for i, ang in ipairs(angles) do local rad = math.rad(ang + t * 10) local att = root:FindFirstChild("Attach_" .. i) if att then att.Position = Vector3.new(math.cos(rad) * 4, 0, math.sin(rad) * 4) end end task.wait(0.03) end end) else if NDS_BodyguardFolder then NDS_BodyguardFolder:Destroy() NDS_BodyguardFolder = nil end if hrp then for i = 1, 4 do local att = hrp:FindFirstChild("Attach_" .. i) if att then att:Destroy() end end end NDS_BodyguardParts = {} end end) -- ============================================ -- 6. ESP DISASTER -- ============================================ makeToggle("👁️ ESP Disaster", "ESP", function() if NDS.ESP then task.spawn(function() while NDS.ESP do for _, part in pairs(Workspace:GetDescendants()) do if part:IsA("BasePart") and not part:FindFirstChild("NDS_ESP") then local n = part.Name:lower() if n:find("disaster") or n:find("storm") or n:find("tornado") or n:find("meteor") or n:find("lava") then local hl = Instance.new("Highlight") hl.Name = "NDS_ESP" hl.FillColor = Color3.fromRGB(255, 0, 0) hl.OutlineColor = Color3.fromRGB(255, 255, 0) hl.Parent = part end end end task.wait(2) end end) else for _, part in pairs(Workspace:GetDescendants()) do local hl = part:FindFirstChild("NDS_ESP") if hl then hl:Destroy() end end end end) -- ============================================ -- 7. DISASTER DETECTOR -- ============================================ local detectorLabel = Instance.new("TextLabel") detectorLabel.Size = UDim2.new(0, 220, 0, 30) detectorLabel.Position = UDim2.new(0, 15, 0, 30) detectorLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0) detectorLabel.BackgroundTransparency = 0.4 detectorLabel.TextColor3 = Color3.fromRGB(255, 200, 0) detectorLabel.Font = Enum.Font.GothamBold detectorLabel.TextSize = 13 detectorLabel.Text = "Disaster: -" detectorLabel.Visible = false detectorLabel.Parent = gui Instance.new("UICorner", detectorLabel).CornerRadius = UDim.new(0, 6) makeButton("🔔 Disaster Detector", function() detectorLabel.Visible = not detectorLabel.Visible if detectorLabel.Visible then task.spawn(function() while detectorLabel.Visible do local found = "None" for _, obj in pairs(Workspace:GetDescendants()) do if obj:IsA("BasePart") then local n = obj.Name:lower() if n:find("disaster") or n:find("storm") or n:find("tornado") or n:find("meteor") then found = obj.Name break end end end detectorLabel.Text = "Disaster: " .. found task.wait(1) end end) end end) -- ============================================ -- 8. TELEPORT SPAWN -- ============================================ makeButton("🏠 Teleport Spawn", function() local char = getHum() if char then char:MoveTo(Vector3.new(0, 5, 0)) end end) -- ============================================ -- 9. NO FALL DAMAGE -- ============================================ makeToggle("🪂 No Fall Damage", "NoFall", function() if NDS.NoFall then task.spawn(function() while NDS.NoFall do local _, hum = getHum() if hum and hum.Health < hum.MaxHealth and hum.Health > 0 then pcall(function() hum.Health = hum.MaxHealth end) end task.wait(0.2) end end) end end) -- ============================================ -- 10. AUTO FARM -- ============================================ makeToggle("💰 Auto-Farm Points", "AutoFarm", function() if NDS.AutoFarm then task.spawn(function() while NDS.AutoFarm do local char = getHum() if char then local rp = Workspace:FindFirstChild("Points") or Workspace:FindFirstChild("Coins") if rp and rp:IsA("BasePart") then pcall(function() char:MoveTo(rp.Position) end) end end task.wait(3) end end) end end) -- ============================================ -- 11. AUTO WIN -- ============================================ makeButton("⬆️ Auto-Win (Teleport Safe)", function() local char = getHum() if not char then return end local tower = Workspace:FindFirstChild("Tower") or Workspace:FindFirstChild("SafeZone") if tower and tower:IsA("BasePart") then char:MoveTo(tower.Position + Vector3.new(0, 20, 0)) else char:MoveTo(Vector3.new(0, 200, 0)) end end) -- ============================================ -- CANVAS SIZE UPDATE -- ============================================ layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() scroll.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 20) end) refreshStatus() print("[NDS v3] Loaded. Bodyguard + Fly + Status Indicator active.")