-- [[ 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 ]] --Script for my bestie:P local Players = game:GetService("Players") local RS = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Workspace = workspace local LP = Players.LocalPlayer local Dummies = Workspace:WaitForChild("Dummies") local RagdollEngine = RS:WaitForChild("RagdollEngine") local Host = require(RagdollEngine:WaitForChild("Host")) local Clock = require(RagdollEngine:WaitForChild("Clock")) local Weapons = require(RagdollEngine:WaitForChild("Weapons")) local Config = require(RagdollEngine:WaitForChild("Config")) local SandboxRemote = RS:WaitForChild("Sandbox") local old = _G.MAHI68 if old and old.destroy then pcall(old.destroy) end local S = { flags = { esp = false, aim = false, head = true, freezeTime = false, autoRevive = false, fly = false, freezeDummies = false, }, cfg = { scale = 1, walk = 16, jump = 50, gravity = 35, energy = 18, width = 0.4, aimRate = 0.12, }, weapon = "handgun", conns = {}, frozenParts = setmetatable({}, { __mode = "k" }), esp = {}, lastShot = "idle", destroyed = false, } local function track(conn) table.insert(S.conns, conn) return conn end local function clearConns() for _, c in ipairs(S.conns) do pcall(function() c:Disconnect() end) end table.clear(S.conns) end -- ============================================================ targets local function brainAlive(b) local model = b.model return model and model.Parent and not b.broken and not b.dead end local function brainList(aliveOnly) local list = {} for model, b in pairs(Host.brains) do if model.Parent and not b.broken then if not aliveOnly or brainAlive(b) then table.insert(list, b) end end end return list end local function diceModel(model) return model and model:IsA("Model") and model:IsDescendantOf(Dummies) and model end local function dummyFrom(inst) local m = inst while m and m.Parent ~= Dummies do m = m.Parent end return diceModel(m) end local function nearestBrain(pos, maxDist) local best, bestD = nil, maxDist or math.huge for _, b in ipairs(brainList(true)) do local chest = b.rig and b.rig.chest if chest then local d = (chest.Position - pos).Magnitude if d < bestD then best, bestD = b, d end end end return best end local function spec() local w = Weapons[S.weapon] or {} local energy = (w.energy or 1) * S.cfg.energy return { title = w.title or tostring(S.weapon), energy = energy, width = math.max(S.cfg.width, w.width or 0), bleed = (w.bleed or 1) * 4, knock = w.knock or 6, shock = w.shock or 2, push = w.push or 6, kick = w.kick or 0, yield = w.yield, falloff = w.falloff, loud = false, range = w.range or 2000, } end local function shootPart(b, part) if not (b and part and part.Parent) then return false end local chest = b.rig and b.rig.chest local dir = Vector3.new(0, -1, 0) if chest then dir = chest.Position - part.Position if dir.Magnitude < 0.05 then dir = Vector3.new(0, -1, 0) end end local ok, err = pcall(Host.shoot, spec(), part.Position, dir, part, Vector3.zero) S.lastShot = ok and "ok" or tostring(err) if not ok then warn("MAHI68 shoot: " .. tostring(err)) end return ok end local function shootBrain(b) if not b then S.lastShot = "no brain" return false end if not brainAlive(b) then S.lastShot = "not alive" return false end local parts = b.rig and b.rig.parts if not parts then S.lastShot = "no rig" return false end local part = (S.flags.head and (parts.Head or parts.UpperTorso)) or parts.UpperTorso or parts.Head if not part then S.lastShot = "no part" return false end return shootPart(b, part) end -- ============================================================ camera local function rayFromCamera(dist, filterExtra) local cam = Workspace.CurrentCamera local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude local ignore = { LP.Character, Workspace:FindFirstChild("LocalFX") } if filterExtra then for _, v in ipairs(filterExtra) do table.insert(ignore, v) end end params.FilterDescendantsInstances = ignore return Workspace:Raycast(cam.CFrame.Position, cam.CFrame.LookVector * (dist or 1000), params), cam end local function aimPoint() local res, cam = rayFromCamera(1000) if res then return res.Position end return cam.CFrame.Position + cam.CFrame.LookVector * 40 end -- ============================================================ actions local function killAll() task.spawn(function() for _, model in ipairs(Dummies:GetChildren()) do if model:IsA("Model") and not Host.brains[model] then pcall(Host.wake, model) end end task.wait(0.15) local list = brainList(true) for i, b in ipairs(list) do shootBrain(b) if i % 4 == 0 then task.wait(0.05) end end end) end local function reviveAll() if type(Host.reviveAll) == "function" then local ok = pcall(Host.reviveAll) if ok then return end end for _, b in ipairs(brainList(false)) do if b.dead and type(b.revive) == "function" then pcall(b.revive, b) end end end local function freezeTime(on) S.flags.freezeTime = on and true or false Clock.frozen = S.flags.freezeTime end local function setScale(v) if type(v) ~= "number" or v ~= v or math.abs(v) == math.huge or v <= 0 then return end S.cfg.scale = v if not Clock.frozen then Clock.scale = S.cfg.scale end end local function setGravity(v) if type(v) ~= "number" or v ~= v or math.abs(v) == math.huge then return end S.cfg.gravity = v Workspace.Gravity = S.cfg.gravity pcall(function() LP:SetAttribute("Sandbox_Gravity", S.cfg.gravity) end) end local function setWalk(v) if type(v) ~= "number" or v ~= v or math.abs(v) == math.huge then return end S.cfg.walk = v S.cfg.jump = v * 3 local char = LP.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = S.cfg.walk hum.JumpPower = S.cfg.jump hum.UseJumpPower = true end end local function teleportDummies() local pos = aimPoint() local target = CFrame.new(pos + Vector3.new(0, 2.5, 0)) for _, model in ipairs(Dummies:GetChildren()) do if model:IsA("Model") then local ok = pcall(function() model:PivotTo(target) end) if ok then for _, p in ipairs(model:GetDescendants()) do if p:IsA("BasePart") and not p.Anchored then p.AssemblyLinearVelocity = Vector3.zero p.AssemblyAngularVelocity = Vector3.zero end end end end end end local function setFreezeDummies(on) S.flags.freezeDummies = on and true or false if on then for _, model in ipairs(Dummies:GetChildren()) do if model:IsA("Model") then for _, p in ipairs(model:GetDescendants()) do if p:IsA("BasePart") then if S.frozenParts[p] == nil then S.frozenParts[p] = p.Anchored end p.Anchored = true end end end end else for p, prev in pairs(S.frozenParts) do if p.Parent then p.Anchored = prev end end S.frozenParts = setmetatable({}, { __mode = "k" }) end end local function spawnDummy() local res = rayFromCamera(600) local pos = res and res.Position or aimPoint() SandboxRemote:FireServer("make", pos) end local function removeDummyAtCursor() local res = rayFromCamera(600) local model = res and dummyFrom(res.Instance) if model then SandboxRemote:FireServer("unmake", model) else local b = nearestBrain(Workspace.CurrentCamera.CFrame.Position, 40) if b then SandboxRemote:FireServer("unmake", b.model) end end end local function nukeHere() local pos = aimPoint() local w = Weapons.nuke or {} pcall(Host.nuke, { reach = w.reach or 22, strength = w.strength or 80 }, pos) end local function repulseHere() local pos = aimPoint() local w = Weapons.repulsor or {} pcall(Host.repulse, { reach = w.reach or 26, strength = w.strength or 60 }, pos) end -- ============================================================ fly local flyConn = nil local savedPlatform = false local function setFly(on) S.flags.fly = on and true or false local char = LP.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if not hum then S.flags.fly = false return end if on then savedPlatform = hum.PlatformStand hum.PlatformStand = true if flyConn then flyConn:Disconnect() end flyConn = RunService.RenderStepped:Connect(function(dt) local c = LP.Character local root = c and c:FindFirstChild("HumanoidRootPart") if not root then return end local cam = Workspace.CurrentCamera local dir = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end root.AssemblyLinearVelocity = Vector3.zero if dir.Magnitude > 0.01 then root.CFrame = root.CFrame + dir.Unit * 60 * dt end end) else if flyConn then flyConn:Disconnect() flyConn = nil end if hum and hum.Parent then hum.PlatformStand = savedPlatform end end end -- ============================================================ ESP local function clearEsp() for model, data in pairs(S.esp) do if data.hl then data.hl:Destroy() end if data.bb then data.bb:Destroy() end end S.esp = {} end local function buildEsp() clearEsp() local function addModel(model) if S.esp[model] then return end local head = model:FindFirstChild("Head") local primary = model.PrimaryPart or head or model:FindFirstChildWhichIsA("BasePart") if not primary then return end local hl = Instance.new("Highlight") hl.Name = "MAHI68_ESP" hl.FillColor = Color3.fromRGB(190, 70, 255) hl.FillTransparency = 0.65 hl.OutlineColor = Color3.fromRGB(230, 180, 255) hl.OutlineTransparency = 0 hl.Adornee = model hl.Parent = model local bb = Instance.new("BillboardGui") bb.Name = "MAHI68_Tag" bb.Size = UDim2.fromOffset(180, 34) bb.StudsOffsetWorldSpace = Vector3.new(0, 2.6, 0) bb.AlwaysOnTop = true bb.MaxDistance = 400 bb.Adornee = head or primary bb.Parent = head or primary local txt = Instance.new("TextLabel") txt.BackgroundTransparency = 1 txt.Size = UDim2.fromScale(1, 1) txt.Font = Enum.Font.GothamMedium txt.TextSize = 12 txt.TextColor3 = Color3.fromRGB(235, 210, 255) txt.TextStrokeTransparency = 0.5 txt.Text = model.Name txt.Parent = bb S.esp[model] = { hl = hl, bb = bb, txt = txt } end for model in pairs(Host.brains) do if model:IsA("Model") and model.Parent then addModel(model) end end for _, model in ipairs(Dummies:GetChildren()) do if model:IsA("Model") then addModel(model) end end end local function updateEsp() for model, data in pairs(S.esp) do if not model.Parent then if data.hl then data.hl:Destroy() end if data.bb then data.bb:Destroy() end S.esp[model] = nil else local b = Host.brains[model] local text if b then local blood = math.floor((b.blood or 0) * 100 + 0.5) local state = b.dead and "DEAD" or (b.state or "?") text = string.format("%s · %s · %d%%", model.Name, state, blood) if data.hl then data.hl.FillColor = b.dead and Color3.fromRGB(90, 90, 90) or Color3.fromRGB(190, 70, 255) end else text = model.Name .. " · asleep" end if data.txt then data.txt.Text = text end end end end -- ============================================================ loops local function startLoops() -- aimbot task.spawn(function() while not S.destroyed do if S.flags.aim then local cam = Workspace.CurrentCamera local b = nearestBrain(cam.CFrame.Position, 1000) if b and brainAlive(b) then shootBrain(b) end task.wait(math.max(S.cfg.aimRate, 0.01)) else task.wait(0.1) end end end) -- walk sync task.spawn(function() while not S.destroyed do local char = LP.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum and hum.WalkSpeed ~= S.cfg.walk then hum.WalkSpeed = S.cfg.walk hum.JumpPower = S.cfg.jump hum.UseJumpPower = true end task.wait(0.4) end end) -- dummy auto revives + config task.spawn(function() while not S.destroyed do if S.flags.autoRevive then for _, b in ipairs(brainList(false)) do if b.dead and type(b.revive) == "function" then pcall(b.revive, b) end end end Config.AutoRevive = S.flags.autoRevive Config.RespawnDelay = S.flags.autoRevive and 0 or 40 task.wait(1) end end) -- esp refresh task.spawn(function() while not S.destroyed do if S.flags.esp then updateEsp() end task.wait(0.5) end end) end -- ============================================================ UI local function uiParent() local ok, h = pcall(function() return gethui and gethui() end) if ok and h then return h end return LP:WaitForChild("PlayerGui") end local ACCENT = Color3.fromRGB(178, 102, 255) local BG = Color3.fromRGB(16, 14, 22) local BG2 = Color3.fromRGB(28, 24, 38) local TXT = Color3.fromRGB(238, 232, 248) local DIM = Color3.fromRGB(150, 142, 168) local OKC = Color3.fromRGB(120, 230, 170) local BADC = Color3.fromRGB(255, 105, 120) local gui = Instance.new("ScreenGui") gui.Name = "MAHI68" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.DisplayOrder = 9999 gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = uiParent() local toggle = Instance.new("TextButton") toggle.Name = "Toggle" toggle.Size = UDim2.fromOffset(46, 46) toggle.Position = UDim2.new(1, -66, 1, -66) toggle.BackgroundColor3 = BG2 toggle.AutoButtonColor = false toggle.Text = "68" toggle.TextColor3 = ACCENT toggle.Font = Enum.Font.GothamBlack toggle.TextSize = 18 toggle.BorderSizePixel = 0 toggle.Parent = gui do local c = Instance.new("UICorner") c.CornerRadius = UDim.new(1, 0) c.Parent = toggle local s = Instance.new("UIStroke") s.Color = ACCENT s.Thickness = 1.5 s.Transparency = 0.3 s.Parent = toggle end local panel = Instance.new("Frame") panel.Name = "Panel" panel.Size = UDim2.fromOffset(330, 462) panel.Position = UDim2.new(1, -362, 1, -520) panel.BackgroundColor3 = BG panel.BorderSizePixel = 0 panel.Visible = false panel.Parent = gui do local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 12) c.Parent = panel local s = Instance.new("UIStroke") s.Color = ACCENT s.Thickness = 1 s.Transparency = 0.55 s.Parent = panel end local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 34) header.BackgroundColor3 = BG2 header.BorderSizePixel = 0 header.Parent = panel do local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 12) c.Parent = header local h = Instance.new("TextLabel") h.BackgroundTransparency = 1 h.Position = UDim2.fromOffset(12, 0) h.Size = UDim2.new(1, -80, 1, 0) h.Font = Enum.Font.GothamBold h.TextSize = 13 h.TextXAlignment = Enum.TextXAlignment.Left h.TextColor3 = TXT h.Text = "MAHI68 · RAGDOLL" h.Parent = header local x = Instance.new("TextButton") x.Size = UDim2.fromOffset(26, 22) x.Position = UDim2.new(1, -34, 0, 6) x.BackgroundTransparency = 1 x.Font = Enum.Font.GothamBold x.TextSize = 16 x.TextColor3 = DIM x.Text = "×" x.Parent = header x.Activated:Connect(function() panel.Visible = false toggle.Visible = true end) local pill = Instance.new("TextLabel") pill.Name = "Status" pill.BackgroundTransparency = 1 pill.AnchorPoint = Vector2.new(1, 0.5) pill.Position = UDim2.new(1, -66, 0.5, 0) pill.Size = UDim2.fromOffset(70, 18) pill.Font = Enum.Font.GothamMedium pill.TextSize = 10 pill.TextColor3 = DIM pill.TextXAlignment = Enum.TextXAlignment.Right pill.Text = "" pill.Parent = header S.statusLabel = pill end local scroll = Instance.new("ScrollingFrame") scroll.Position = UDim2.fromOffset(0, 34) scroll.Size = UDim2.new(1, 0, 1, -34) scroll.BackgroundTransparency = 1 scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 4 scroll.ScrollBarImageColor3 = ACCENT scroll.CanvasSize = UDim2.fromOffset(0, 0) scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y scroll.Parent = panel do local pad = Instance.new("UIPadding") pad.PaddingLeft = UDim.new(0, 10) pad.PaddingRight = UDim.new(0, 10) pad.PaddingTop = UDim.new(0, 6) pad.PaddingBottom = UDim.new(0, 10) pad.Parent = scroll local list = Instance.new("UIListLayout") list.Padding = UDim.new(0, 4) list.SortOrder = Enum.SortOrder.LayoutOrder list.Parent = scroll end local order = 0 local function nextOrder() order = order + 1 return order end local function section(text) local f = Instance.new("TextLabel") f.BackgroundTransparency = 1 f.Size = UDim2.new(1, 0, 0, 20) f.Font = Enum.Font.GothamBold f.TextSize = 10 f.TextColor3 = ACCENT f.TextXAlignment = Enum.TextXAlignment.Left f.Text = string.upper(text) f.LayoutOrder = nextOrder() f.Parent = scroll return f end local function rowBase(height) local f = Instance.new("Frame") f.Size = UDim2.new(1, 0, 0, height or 28) f.BackgroundColor3 = BG2 f.BorderSizePixel = 0 f.LayoutOrder = nextOrder() f.Parent = scroll local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 7) c.Parent = f return f end local function rowLabel(parent, text) local l = Instance.new("TextLabel") l.BackgroundTransparency = 1 l.Position = UDim2.fromOffset(10, 0) l.Size = UDim2.new(1, -122, 1, 0) l.Font = Enum.Font.GothamMedium l.TextSize = 12 l.TextXAlignment = Enum.TextXAlignment.Left l.TextColor3 = TXT l.Text = text l.Parent = parent return l end local function paintToggle(btn, on) btn.Text = on and "ON" or "OFF" btn.TextColor3 = on and OKC or DIM btn.BackgroundColor3 = on and Color3.fromRGB(34, 54, 44) or Color3.fromRGB(40, 36, 52) end local function toggleRow(text, get, set) local f = rowBase(28) rowLabel(f, text) local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(52, 20) b.Position = UDim2.new(1, -62, 0.5, -10) b.BackgroundColor3 = Color3.fromRGB(40, 36, 52) b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 11 b.Text = "OFF" b.Parent = f local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 5) c.Parent = b paintToggle(b, get()) b.Activated:Connect(function() set(not get()) paintToggle(b, get()) end) return b end local function numericRow(text, get, set) local f = rowBase(28) rowLabel(f, text) local box = Instance.new("TextBox") box.Size = UDim2.fromOffset(96, 20) box.Position = UDim2.new(1, -106, 0.5, -10) box.BackgroundColor3 = Color3.fromRGB(40, 36, 52) box.BorderSizePixel = 0 box.Font = Enum.Font.GothamMedium box.TextSize = 11 box.TextColor3 = ACCENT box.TextXAlignment = Enum.TextXAlignment.Center box.ClearTextOnFocus = false box.Text = tostring(get()) box.Parent = f local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 5) c.Parent = box local function show() box.Text = tostring(get()) end box.FocusLost:Connect(function() local n = tonumber(box.Text) if n and n == n and math.abs(n) ~= math.huge then set(n) end show() end) return box end local function buttonRow(text, fn, color) local b = Instance.new("TextButton") b.Size = UDim2.new(1, 0, 0, 28) b.BackgroundColor3 = BG2 b.BorderSizePixel = 0 b.Font = Enum.Font.GothamMedium b.TextSize = 12 b.TextColor3 = color or TXT b.Text = text b.LayoutOrder = nextOrder() b.Parent = scroll local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 7) c.Parent = b b.Activated:Connect(function() local ok, err = pcall(fn) if not ok then warn("MAHI68: " .. tostring(err)) end end) return b end -- panel visibility + drag local function showPanel(on) panel.Visible = on toggle.Visible = not on end toggle.Activated:Connect(function() showPanel(true) end) do local dragging, dragStart, startPos = false, nil, nil header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = panel.Position end end) header.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) UIS.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local d = input.Position - dragStart panel.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) end -- ============================================================ features UI section("combat") toggleRow("ESP", function() return S.flags.esp end, function(v) S.flags.esp = v if v then buildEsp() else clearEsp() end end) toggleRow("Aimbot (silent)", function() return S.flags.aim end, function(v) S.flags.aim = v end) toggleRow("Head only", function() return S.flags.head end, function(v) S.flags.head = v end) numericRow("Damage x", function() return S.cfg.energy end, function(v) S.cfg.energy = v end) numericRow("Penetration", function() return S.cfg.width end, function(v) S.cfg.width = v end) numericRow("Aim delay", function() return S.cfg.aimRate end, function(v) S.cfg.aimRate = v end) buttonRow("KILL ALL", killAll, BADC) buttonRow("REVIVE ALL", reviveAll, OKC) section("world") toggleRow("Freeze time", function() return S.flags.freezeTime end, freezeTime) numericRow("Time scale", function() return S.cfg.scale end, setScale) numericRow("Gravity", function() return S.cfg.gravity end, setGravity) toggleRow("Freeze dummies", function() return S.flags.freezeDummies end, setFreezeDummies) toggleRow("Dummies auto-revive", function() return S.flags.autoRevive end, function(v) S.flags.autoRevive = v end) section("movement") toggleRow("Fly (WASD/Space/Shift)", function() return S.flags.fly end, setFly) numericRow("Walk speed", function() return S.cfg.walk end, setWalk) section("tools") buttonRow("Teleport dummies → crosshair", teleportDummies) buttonRow("Spawn dummy", spawnDummy, OKC) buttonRow("Remove dummy at cursor", removeDummyAtCursor, BADC) buttonRow("Nuke here", nukeHere, BADC) buttonRow("Repulse here", repulseHere) section("server") buttonRow("Reset dummies (server)", function() local r = RS:FindFirstChild("ResetDummies") if r then r:FireServer() end end, BADC) local footer = Instance.new("TextLabel") footer.BackgroundTransparency = 1 footer.Size = UDim2.new(1, 0, 0, 22) footer.Font = Enum.Font.GothamMedium footer.TextSize = 10 footer.TextColor3 = DIM footer.Text = "RControl — menu · F — fire at cursor" footer.LayoutOrder = nextOrder() footer.Parent = scroll -- keybinds track(UIS.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.RightControl then if panel.Visible then panel.Visible = false toggle.Visible = true else panel.Visible = true toggle.Visible = false end elseif input.KeyCode == Enum.KeyCode.F then local res = rayFromCamera(600) local model = res and dummyFrom(res.Instance) local b = model and Host.brains[model] if not b then b = nearestBrain(Workspace.CurrentCamera.CFrame.Position, 30) end shootBrain(b) end end)) -- status pill task.spawn(function() while not S.destroyed do local n = 0 for _, b in ipairs(brainList(true)) do n = n + 1 end S.statusLabel.Text = n .. " alive" task.wait(1) end end) -- ============================================================ API local api = {} function api.flag(name, value) if value == nil then return S.flags[name] end S.flags[name] = value if name == "esp" then if value then buildEsp() else clearEsp() end elseif name == "freezeTime" then Clock.frozen = value elseif name == "freezeDummies" then setFreezeDummies(value) elseif name == "fly" then setFly(value) end return value end function api.killAll() killAll() end function api.reviveAll() reviveAll() end function api.shootNearest() local b = nearestBrain(Workspace.CurrentCamera.CFrame.Position, 1000) return shootBrain(b) end function api.shootAtCursor() local res = rayFromCamera(600) local model = res and dummyFrom(res.Instance) local b = model and Host.brains[model] if not b then b = nearestBrain(Workspace.CurrentCamera.CFrame.Position, 30) end return shootBrain(b) end function api.setScale(v) setScale(v) end function api.setGravity(v) setGravity(v) end function api.setWalk(v) setWalk(v) end function api.nuke() nukeHere() end function api.repulse() repulseHere() end function api.teleportDummies() teleportDummies() end function api.resetDummies() local r = RS:FindFirstChild("ResetDummies") if r then r:FireServer() return true end return false end function api.removeAtCursor() removeDummyAtCursor() end function api.fireCursor() local res = rayFromCamera(600) local model = res and dummyFrom(res.Instance) local b = model and Host.brains[model] if not b then b = nearestBrain(Workspace.CurrentCamera.CFrame.Position, 30) end return shootBrain(b) end function api.spawnDummy() spawnDummy() end function api.state() return S end function api.brains() local t = {} for model, b in pairs(Host.brains) do table.insert(t, { name = model.Name, dead = b.dead, state = b.state, blood = b.blood, host = model:GetAttribute("Host"), attrDead = model:GetAttribute("Dead"), }) end return t end function api.dummies() local t = {} for _, m in ipairs(Dummies:GetChildren()) do if m:IsA("Model") then table.insert(t, { name = m.Name, dead = m:GetAttribute("Dead"), state = m:GetAttribute("State"), blood = m:GetAttribute("Blood"), waiting = m:GetAttribute("Waiting"), }) end end return t end function api.shootModel(name) local model = Dummies:FindFirstChild(name) if not model then return false, "no model" end local b = Host.brains[model] if not b then pcall(Host.wake, model) task.wait(0.25) b = Host.brains[model] end if not b then return false, "no brain" end return shootBrain(b), "shot" end function api.modelInfo(name) local model = Dummies:FindFirstChild(name) if not model then return nil end local b = Host.brains[model] return { name = model.Name, dead = model:GetAttribute("Dead"), state = model:GetAttribute("State"), blood = model:GetAttribute("Blood"), cause = model:GetAttribute("Cause"), brainDead = b and b.dead, brainBlood = b and b.blood, brainState = b and b.state, } end function api.esp(on) S.flags.esp = on and true or false if S.flags.esp then buildEsp() else clearEsp() end end function api.status() local alive, dead = 0, 0 for _, b in ipairs(brainList(false)) do if b.dead then dead = dead + 1 else alive = alive + 1 end end return { alive = alive, dead = dead, weapon = S.weapon } end function api.destroy() S.destroyed = true clearConns() if flyConn then flyConn:Disconnect() end clearEsp() if gui then gui:Destroy() end if _G.MAHI68 == api then _G.MAHI68 = nil end end _G.MAHI68 = api startLoops() local weaponCount = 0 for _, v in pairs(Weapons) do if type(v) == "table" and v.title then weaponCount = weaponCount + 1 end end print("[MAHI68] loaded · weapons=" .. weaponCount) return "ok"