Home All Scripts Trending Forum Upload Script Login with Google
Murder Mystery 2 Script | MM2 Legit Script | Aimbot, ESP, Speed Hack, Keyless 🔓 Keyless

Murder Mystery 2 Script | MM2 Legit Script | Aimbot, ESP, Speed Hack, Keyless

1,495 views  •  6 days ago
M
Murder Mystery 2
1,495 views 6 days ago #MurderMystery2

Step into the tense, high-stakes rounds of Murder Mystery 2 with the ultimate tactical advantage using the MM2 Legit Script. Whether you are hunting down innocents as the Murderer or aiming to take down the threat as the Sheriff, this tool provides you with the precision and speed needed to dominate every round. Best of all, this powerful script is completely keyless, allowing you to bypass annoying linkvertises and jump straight into the action.

Key Features

  • Silent Aimbot & ESP: The advanced Aimbot and player ESP allow you to track opponents through walls and land flawless shots as the Sheriff or target victims effortlessly as the Murderer.
  • Speed Hack & Spinbot: Activate the customizable Speed Hack and Spinbot to quickly escape dangerous situations, confuse your opponents, and easily dodge incoming knife throws.
  • Keyless & Free Access: This utility is 100% free and keyless, granting you instant access to all premium features without the hassle of completing tedious checkpoints.
  • Optimized & Lightweight Code: Our clean codebase is fully optimized for a lag-free experience on mobile executors like Delta, Hydrogen, and Codex, as well as premium PC executors.

How to Use the Script

  1. Launch Roblox and join a lobby in Murder Mystery 2.
  2. Open your preferred Roblox executor client, such as Delta, Codex, or Wave, on your device.
  3. Copy the provided Pastebin loadstring script code block.
  4. Paste the copied script into the executor’s main text area and click the “Execute” button.
  5. Toggle your desired features like Aimbot, ESP, or Speed Hack in the user-friendly GUI menu to begin dominating your matches.
Compatible Executors: Codex, Delta, Hydro, Wave
Script Code
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- Полная очистка старого меню перед запуском
if PlayerGui:FindFirstChild("XenoFinalMenu") then PlayerGui.XenoFinalMenu:Destroy() end

local ScreenGui = Instance.new("ScreenGui", PlayerGui)
ScreenGui.Name = "XenoFinalMenu"
ScreenGui.ResetOnSpawn = false

-- [Функция перетаскивания]
local function makeDraggable(gui)
    local dragging, dragStart, startPos
    gui.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true; dragStart = input.Position; startPos = gui.Position
        end
    end)
    UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            local delta = input.Position - dragStart
            gui.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)
    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end
    end)
end

-- [Функция строгой ЧЕРНОЙ ОБВОДКИ ДЛЯ РАМОК]
local function addBlackBorder(parent)
    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(0, 0, 0)
    stroke.Thickness = 2
    stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
    stroke.Parent = parent
    return stroke
end

-- ==========================================================
-- ОСТРОВОК СВЕРХУ (Кнопка Скрыть/Открыть)
-- ==========================================================
local ToggleBtn = Instance.new("TextButton", ScreenGui)
ToggleBtn.Size = UDim2.new(0, 100, 0, 30)
ToggleBtn.Position = UDim2.new(0.5, -50, 0, 20)
ToggleBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ToggleBtn.Text = "Скрыть"
ToggleBtn.TextColor3 = Color3.fromRGB(0, 0, 0)
ToggleBtn.Font = Enum.Font.GothamBold
ToggleBtn.TextSize = 13
ToggleBtn.ZIndex = 10
Instance.new("UICorner", ToggleBtn).CornerRadius = UDim.new(1, 0)
addBlackBorder(ToggleBtn)
makeDraggable(ToggleBtn)

-- ==========================================================
-- ГЛАВНОЕ ОКНО
-- ==========================================================
local MainPanel = Instance.new("Frame", ScreenGui)
MainPanel.Size = UDim2.new(0, 420, 0, 320)
MainPanel.Position = UDim2.new(0.5, -210, 0.5, -160)
MainPanel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
MainPanel.ZIndex = 5
Instance.new("UICorner", MainPanel).CornerRadius = UDim.new(0, 8)
addBlackBorder(MainPanel)
makeDraggable(MainPanel)

ToggleBtn.MouseButton1Click:Connect(function() 
    MainPanel.Visible = not MainPanel.Visible 
    ToggleBtn.Text = MainPanel.Visible and "Скрыть" or "Открыть"
end)

-- [БОКОВАЯ ПАНЕЛЬ ВКЛАДОК]
local Sidebar = Instance.new("Frame", MainPanel)
Sidebar.Size = UDim2.new(0, 110, 1, 0)
Sidebar.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
Sidebar.ZIndex = 6
Instance.new("UICorner", Sidebar).CornerRadius = UDim.new(0, 8)
addBlackBorder(Sidebar)

local SidebarList = Instance.new("UIListLayout", Sidebar)
SidebarList.Padding = UDim.new(0, 4)

-- [СТРАНИЦЫ КОНТЕНТА СО СКРОЛЛИНГОМ]
local Pages = Instance.new("Frame", MainPanel)
Pages.Size = UDim2.new(1, -120, 1, 0)
Pages.Position = UDim2.new(0, 115, 0, 0)
Pages.BackgroundTransparency = 1
Pages.ZIndex = 6

local function CreatePage()
    local f = Instance.new("ScrollingFrame", Pages)
    f.Size = UDim2.new(1, 0, 1, -10)
    f.Position = UDim2.new(0, 0, 0, 5)
    f.BackgroundTransparency = 1
    f.Visible = false
	f.ScrollBarThickness = 3
    f.CanvasSize = UDim2.new(0, 0, 0, 0)
    local l = Instance.new("UIListLayout", f)
    l.Padding = UDim.new(0, 6)
    l.HorizontalAlignment = Enum.HorizontalAlignment.Center
    l.VerticalAlignment = Enum.VerticalAlignment.Top
    l:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
        f.CanvasSize = UDim2.new(0, 0, 0, l.AbsoluteContentSize.Y + 10)
    end)
    return f
end

local CombatFrame = CreatePage(); CombatFrame.Visible = true
local ESPFrame = CreatePage()
local VisualsFrame = CreatePage()
local TrollingFrame = CreatePage()
local ButtonsFrame = CreatePage()

-- [ФУНКЦИЯ СОЗДАНИЯ ВКЛАДКИ СБОКУ]
local function CreateTab(text, frame)
    local Btn = Instance.new("TextButton", Sidebar)
    Btn.Size = UDim2.new(1, 0, 0, 38)
    Btn.Text = text
    Btn.TextColor3 = Color3.fromRGB(0, 0, 0)
    Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Btn.Font = Enum.Font.GothamSemibold
    Btn.TextSize = 13
    Btn.ZIndex = 7
    addBlackBorder(Btn)
    Btn.MouseButton1Click:Connect(function()
        CombatFrame.Visible = false; ESPFrame.Visible = false; VisualsFrame.Visible = false; TrollingFrame.Visible = false; ButtonsFrame.Visible = false
        frame.Visible = true
    end)
end

CreateTab("Combat", CombatFrame)
CreateTab("ESP", ESPFrame)
CreateTab("Визуалы", VisualsFrame)
CreateTab("Троллинг", TrollingFrame)
CreateTab("Кнопки", ButtonsFrame)

-- [ФУНКЦИЯ СОЗДАНИЯ КНОПОК ФУНКЦИЙ]
local function CreateFuncBtn(text, parent, callback)
    local Btn = Instance.new("TextButton", parent)
    Btn.Size = UDim2.new(0, 260, 0, 32)
    Btn.Text = text
    Btn.TextColor3 = Color3.fromRGB(0, 0, 0)
    Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Btn.Font = Enum.Font.GothamSemibold
    Btn.TextSize = 13
    Btn.ZIndex = 8
    Instance.new("UICorner", Btn).CornerRadius = UDim.new(0, 6)
    addBlackBorder(Btn)
    Btn.MouseButton1Click:Connect(function() callback(Btn) end)
end

-- ==========================================================
-- ЛОГИКА ФУНКЦИЙ ПО КАТЕГОРИЯМ
-- ==========================================================
local ESP_Enabled = false
local Aimbot_Enabled = false
local Prediction_Enabled = false
local Spin_Enabled = false
local GunESP_Enabled = false

-- Функция определения роли в MM2
local function GetPlayerRole(player)
    local char = player.Character
    local backpack = player:FindFirstChild("Backpack")
    if (char and char:FindFirstChild("Knife")) or (backpack and backpack:FindFirstChild("Knife")) then 
        return "Murderer"
    elseif (char and char:FindFirstChild("Gun")) or (backpack and backpack:FindFirstChild("Gun")) then 
        return "Sheriff" 
    end
    return "Innocent"
end

-- 1. COMBAT
CreateFuncBtn("Aimbot: ВЫКЛ", CombatFrame, function(b) 
    Aimbot_Enabled = not Aimbot_Enabled
    b.Text = "Aimbot: "..(Aimbot_Enabled and "ВКЛ" or "ВЫКЛ") 
end)
if true then
CreateFuncBtn("Предикшн движений: ВЫКЛ", CombatFrame, function(b) 
    Prediction_Enabled = not Prediction_Enabled
    b.Text = "Предикшн движений: "..(Prediction_Enabled and "ВКЛ" or "ВЫКЛ") 
end)
end
CreateFuncBtn("Auto Click: В разработке", CombatFrame, function() end)

-- 2. ESP
CreateFuncBtn("ESP игроки: ВЫКЛ", ESPFrame, function(b) 
    ESP_Enabled = not ESP_Enabled
    b.Text = "ESP игроки: "..(ESP_Enabled and "ВКЛ" or "ВЫКЛ") 
end)
CreateFuncBtn("ESP Пистолет: ВЫКЛ", ESPFrame, function(b)
    GunESP_Enabled = not GunESP_Enabled
    b.Text = "ESP Пистолет: "..(GunESP_Enabled and "ВКЛ" or "ВЫКЛ")
end)
CreateFuncBtn("Full Bright (Яркий свет)", ESPFrame, function() 
    Lighting.Brightness = 2
    Lighting.Ambient = Color3.fromRGB(255, 255, 255)
end)

-- 3. ВИЗУАЛЫ
CreateFuncBtn("FOV 120 (Широкий обзор)", VisualsFrame, function() Camera.FieldOfView = 120 end)
CreateFuncBtn("FOV 70 (Обычный обзор)", VisualsFrame, function() Camera.FieldOfView = 70 end)

-- 4. ТРОЛЛИНГ
CreateFuncBtn("SpeedHack (Быстрый бег)", TrollingFrame, function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
        LocalPlayer.Character:FindFirstChildOfClass("Humanoid").WalkSpeed = 50
    end
end)
CreateFuncBtn("JumpPower (Высокий прыжок)", TrollingFrame, function() 
    if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
        local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
        hum.UseJumpPower = true
        hum.JumpPower = 100
    end
end)
CreateFuncBtn("SpinBot: ВЫКЛ", TrollingFrame, function(b) 
    Spin_Enabled = not Spin_Enabled
    b.Text = "SpinBot: "..(Spin_Enabled and "ВКЛ" or "ВЫКЛ")
    task.spawn(function() 
        while Spin_Enabled and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") do 
            LocalPlayer.Character.HumanoidRootPart.CFrame = LocalPlayer.Character.HumanoidRootPart.CFrame * CFrame.Angles(0, math.rad(45), 0)
            task.wait() 
        end 
    end)
end)

-- ==========================================================
-- 5. КНОПКИ & ОТДЕЛЬНАЯ КНОПКА KILL ALL НА ЭКРАНЕ
-- ==========================================================
local ScreenKillButton = Instance.new("TextButton", ScreenGui)
ScreenKillButton.Size = UDim2.new(0, 85, 0, 85)
ScreenKillButton.Position = UDim2.new(0.82, 0, 0.45, 0)
ScreenKillButton.Text = "KILL ALL"
ScreenKillButton.TextColor3 = Color3.fromRGB(240, 0, 0)
ScreenKillButton.Font = Enum.Font.GothamBold
ScreenKillButton.TextSize = 14
ScreenKillButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ScreenKillButton.Visible = false
ScreenKillButton.ZIndex = 15
Instance.new("UICorner", ScreenKillButton).CornerRadius = UDim.new(1, 0)
addBlackBorder(ScreenKillButton)
makeDraggable(ScreenKillButton)

ScreenKillButton.MouseButton1Click:Connect(function()
    if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
        local myRoot = LocalPlayer.Character.HumanoidRootPart
        for _, p in pairs(Players:GetPlayers()) do
            if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
                local humanoid = p.Character:FindFirstChildOfClass("Humanoid")
                if humanoid and humanoid.Health > 0 then
                    myRoot.CFrame = p.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, 1.4)
                    task.wait(0.22)
                end
            end
        end
    end
end)

CreateFuncBtn("Показать Kill All на экране", ButtonsFrame, function(b) 
    ScreenKillButton.Visible = not ScreenKillButton.Visible
    b.Text = ScreenKillButton.Visible and "Скрыть Kill All с экрана" or "Показать Kill All на экране"
end)

CreateFuncBtn("Сбросить ESP", ButtonsFrame, function() 
    for _, p in pairs(Players:GetPlayers()) do 
        if p.Character and p.Character:FindFirstChild("ESP_Highlight") then p.Character.ESP_Highlight:Destroy() end 
    end 
    local drop = workspace:FindFirstChild("GunDrop") or workspace:FindFirstChild("DroppedGun")
    if drop and drop:FindFirstChild("Gun_ESP") then drop.Gun_ESP:Destroy() end
end)

CreateFuncBtn("Ресет персонажа", ButtonsFrame, function() 
    if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then
        LocalPlayer.Character:FindFirstChildOfClass("Humanoid").Health = 0
    end
end)

-- [ПОСТОЯННЫЙ ЦИКЛ ОБНОВЛЕНИЯ ДЛЯ ESP, GUN ESP И AIMBOT]
RunService.RenderStepped:Connect(function()
    -- ESP Игроков
    if ESP_Enabled then
        for _, p in pairs(Players:GetPlayers()) do
            if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
                if not p.Character:FindFirstChild("ESP_Highlight") then
                    local h = Instance.new("Highlight", p.Character)
                    h.Name = "ESP_Highlight"
                    h.OutlineTransparency = 0.2
                    h.FillTransparency = 0.5
                end
				local h = p.Character:FindFirstChild("ESP_Highlight")
                if h then
                    local role = GetPlayerRole(p)
                    if role == "Murderer" then
                        h.FillColor = Color3.fromRGB(255, 0, 0)
                    elseif role == "Sheriff" then
                        h.FillColor = Color3.fromRGB(0, 0, 255)
                    else
                        h.FillColor = Color3.fromRGB(0, 255, 0)
                    end
                end
            end
        end
    else
        for _, p in pairs(Players:GetPlayers()) do 
            if p.Character and p.Character:FindFirstChild("ESP_Highlight") then p.Character.ESP_Highlight:Destroy() end 
        end
    end
    
    -- ESP Пистолета
    local gunDrop = workspace:FindFirstChild("GunDrop") or workspace:FindFirstChild("DroppedGun")
    if GunESP_Enabled and gunDrop then
        if not gunDrop:FindFirstChild("Gun_ESP") then
            local h = Instance.new("Highlight", gunDrop)
            h.Name = "Gun_ESP"
            h.FillColor = Color3.fromRGB(255, 255, 0)
            h.OutlineColor = Color3.fromRGB(255, 255, 255)
            h.FillTransparency = 0.4
        end
    else
        if gunDrop and gunDrop:FindFirstChild("Gun_ESP") then gunDrop.Gun_ESP:Destroy() end
    end
    
    -- Аимбот с Предикшном
    if Aimbot_Enabled and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Gun") then
        for _, p in pairs(Players:GetPlayers()) do
            if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Head") and p.Character:FindFirstChild("HumanoidRootPart") and GetPlayerRole(p) == "Murderer" then
                local targetPosition = p.Character.Head.Position
                
                if Prediction_Enabled then
                    local velocity = p.Character.HumanoidRootPart.Velocity
                    targetPosition = targetPosition + (velocity * 0.165)
                end
                
                Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, targetPosition)
            end
        end
    end
end)
💬 Comments 0
You

No comments yet. Be the first!