Home All Scripts Trending Forum Upload Script Login with Google
Murder Mystery 2 Script | Auto farm CoinsπŸ’°MM2 OP Keyless πŸ”“ Keyless

Murder Mystery 2 Script | Auto farm CoinsπŸ’°MM2 OP Keyless

109 views  β€’  3 days ago
M
Murder Mystery 2
109 views 3 days ago #MurderMystery2

Step into the suspenseful world of Murder Mystery 2 and dominate the lobby by unlocking the ultimate coin-gathering advantage with this powerhouse script. Designed to instantly boost your in-game economy, this script automates the tedious grind so you can unbox rare weapon skins and elite cosmetics effortlessly. Best of all, this exploit is completely keyless, giving you instant access to elite features without dealing with annoying bypasses or verification steps.

Key Features

  • Auto Coins: This highly efficient farming feature automatically collects map-spawned coins for you, maximizing your wallet capacity in every round with zero effort.
  • Keyless Access: Enjoy a completely free utility that is 100% keyless, allowing you to run the script immediately without completing annoying ad links.
  • Lag-Free Optimization: The script uses a lightweight, optimized codebase designed to run smoothly on mobile executors like Delta, Codex, and Hydrogen, as well as PC executors without frame drops.
  • Player ESP: Keep track of the Murderer and Sheriff in real-time with built-in visuals that ensure you stay safe while collecting your riches.

How to Use the Script

  1. Launch Murder Mystery 2 on Roblox and enter a public or private server.
  2. Open your trusted mobile or PC executor client, such as Delta, Codex, Hydrogen, or Wave.
  3. Copy the MM2 coin farm loadstring script code block directly from our website.
  4. Paste the script into your executor’s script execution box and click “Execute”.
  5. Configure your preferences on the clean, user-friendly GUI to begin auto-farming coins instantly.

Compatible Executors: Codex, Delta, Hydro, Potassium, Volt, Wave, Xeno
Script Code
local MainGui = {};

local CoreGui = game:GetService("CoreGui")
MainGui["1"] = Instance.new("ScreenGui", CoreGui);
MainGui["1"]["IgnoreGuiInset"] = true;
MainGui["1"]["DisplayOrder"] = 999999999;
MainGui["1"]["ScreenInsets"] = Enum.ScreenInsets.DeviceSafeInsets;
MainGui["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling;
MainGui["1"]["ResetOnSpawn"] = false;

MainGui["2"] = Instance.new("ImageLabel", MainGui["1"]);
MainGui["2"]["BorderSizePixel"] = 0;
MainGui["2"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["2"]["Image"] = [[rbxassetid://130647873334585]];
MainGui["2"]["Size"] = UDim2.new(0, 498, 0, 339);
MainGui["2"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
MainGui["2"]["BackgroundTransparency"] = 1;
MainGui["2"]["Position"] = UDim2.new(0.18619, 0, 0.25468, 0);

MainGui["3"] = Instance.new("TextLabel", MainGui["2"]);
MainGui["3"]["TextWrapped"] = true;
MainGui["3"]["BorderSizePixel"] = 0;
MainGui["3"]["TextSize"] = 25;
MainGui["3"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["3"]["Font"] = Enum.Font.GothamBold;
MainGui["3"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["3"]["BackgroundTransparency"] = 1;
MainGui["3"]["Size"] = UDim2.new(0, 93, 0, 22);
MainGui["3"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
MainGui["3"]["Text"] = [[0]];
MainGui["3"]["Name"] = [[CoinsCollected]];
MainGui["3"]["Position"] = UDim2.new(0.60241, 0, 0.43068, 0);

MainGui["4"] = Instance.new("TextLabel", MainGui["2"]);
MainGui["4"]["TextWrapped"] = true;
MainGui["4"]["BorderSizePixel"] = 0;
MainGui["4"]["TextSize"] = 25;
MainGui["4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["4"]["Font"] = Enum.Font.GothamBold;
MainGui["4"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["4"]["BackgroundTransparency"] = 1;
MainGui["4"]["Size"] = UDim2.new(0, 83, 0, 22);
MainGui["4"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
MainGui["4"]["Text"] = [[0]];
MainGui["4"]["Name"] = [[CoinsPerHour]];
MainGui["4"]["Position"] = UDim2.new(0.61245, 0, 0.60177, 0);

MainGui["5"] = Instance.new("TextLabel", MainGui["2"]);
MainGui["5"]["TextWrapped"] = true;
MainGui["5"]["BorderSizePixel"] = 0;
MainGui["5"]["TextSize"] = 25;
MainGui["5"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["5"]["Font"] = Enum.Font.GothamBold;
MainGui["5"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
MainGui["5"]["BackgroundTransparency"] = 1;
MainGui["5"]["Size"] = UDim2.new(0, 88, 0, 22);
MainGui["5"]["BorderColor3"] = Color3.fromRGB(0, 0, 0);
MainGui["5"]["Text"] = [[00:00]];
MainGui["5"]["Name"] = [[Timer]];
MainGui["5"]["Position"] = UDim2.new(0.61245, 0, 0.77581, 0);

local UserInputService = game:GetService("UserInputService")
local Dragging = false
local DragStart, StartPos

MainGui["2"].InputBegan:Connect(function(Input)
    if Input.UserInputType == Enum.UserInputType.MouseButton1 or Input.UserInputType == Enum.UserInputType.Touch then
        Dragging = true
        DragStart = Input.Position
        StartPos = MainGui["2"].Position
        Input.Changed:Connect(function()
            if Input.UserInputState == Enum.UserInputState.End then
                Dragging = false
            end
        end)
    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
        MainGui["2"].Position = UDim2.new(
            StartPos.X.Scale,
            StartPos.X.Offset + Delta.X,
            StartPos.Y.Scale,
            StartPos.Y.Offset + Delta.Y
        )
    end
end)

local TweenService = game:GetService("TweenService")
local Player = game.Players.LocalPlayer
local IsFarming = false
local FarmingThread = nil
local TimerThread = nil
local CoinsCollected = 0
local StartTime = os.time()

local function GetParts()
    local Char = Player.Character
    if Char then
        local Root = Char:FindFirstChild("HumanoidRootPart")
        local Hum = Char:FindFirstChild("Humanoid")
        if Root and Hum then
            return Root, Hum
        end
    end
    return nil, nil
end

local function GetMap()
    while true do
        for _, Obj in ipairs(workspace:GetChildren()) do
            if Obj:GetAttribute("MapID") and Obj:FindFirstChild("CoinContainer") then
                return Obj
            end
        end
        task.wait()
    end
end

local function GetNearest(Root)
    if not Root then return nil end
    local Map = GetMap()
    local Closest, Dist = nil, math.huge
    for _, Coin in ipairs(Map.CoinContainer:GetChildren()) do
        local Visual = Coin:FindFirstChild("CoinVisual")
        if Visual and not Visual:GetAttribute("Collected") then
            local D = (Root.Position - Coin.Position).Magnitude
            if D < Dist then
                Closest = Coin
                Dist = D
            end
        end
    end
    return Closest
end

local function MoveTo(Root, Hum, Target)
    if not Root or not Hum then return end
    Hum:ChangeState(11)
    local D = (Root.Position - Target.Position).Magnitude
    local Tween = TweenService:Create(Root, TweenInfo.new(D / 25, Enum.EasingStyle.Linear), {CFrame = Target.CFrame})
    Tween:Play()
    Tween.Completed:Wait()
end

local function StartFarming()
    if FarmingThread then return end

    CoinsCollected = 0
    StartTime = os.time()
    MainGui["3"].Text = "0"
    MainGui["4"].Text = "0"
    MainGui["5"].Text = "00:00"

    TimerThread = task.spawn(function()
        while IsFarming do
            local Elapsed = os.time() - StartTime
            local Minutes = string.format("%02d", math.floor(Elapsed / 60))
            local Seconds = string.format("%02d", Elapsed % 60)
            if MainGui["5"] and MainGui["5"].Parent then
                MainGui["5"].Text = Minutes .. ":" .. Seconds
            end
            task.wait(1)
        end
    end)

    FarmingThread = task.spawn(function()
        while IsFarming do
            local Success, Err = pcall(function()
                while IsFarming do
                    local Root, Hum = GetParts()
                    if not Root or not Hum or not Player:GetAttribute("Alive") then
                        task.wait(0.5)
                        continue
                    end

                    local Target = GetNearest(Root)
                    if Target then
                        MoveTo(Root, Hum, Target)

                        local Visual = Target:FindFirstChild("CoinVisual")
                        local CollectedByUs = false

                        if Visual and not Visual:GetAttribute("Collected") then
                            while Visual and not Visual:GetAttribute("Collected") and Visual.Parent and IsFarming do
                                if not Player:GetAttribute("Alive") or not GetParts() then break end
                                local Next = GetNearest(Root)
                                if Next and Next ~= Target then
                                    break
                                end
                                task.wait()
                            end

                            if not Visual or not Visual.Parent or Visual:GetAttribute("Collected") then
                                CollectedByUs = true
                            end
                        end

                        if CollectedByUs then
                            CoinsCollected = CoinsCollected + 1
                            if MainGui["3"] and MainGui["3"].Parent then
                                MainGui["3"].Text = tostring(CoinsCollected)
                            end
                        end

                        local Elapsed = os.time() - StartTime
                        if Elapsed > 0 then
                            local Cph = math.floor((CoinsCollected / Elapsed) * 3600)
                            if MainGui["4"] and MainGui["4"].Parent then
                                MainGui["4"].Text = tostring(Cph)
                            end
                        else
                            if MainGui["4"] and MainGui["4"].Parent then
                                MainGui["4"].Text = "0"
                            end
                        end
                    else
                        task.wait(0.5)
                    end
                end
            end)

            if not IsFarming then break end
            if Err then
                warn("Farming error: " .. tostring(Err))
                task.wait(1)
            end
        end
    end)
end

local function StopFarming()
    IsFarming = false
    if FarmingThread then
        FarmingThread = nil
    end
    if TimerThread then
        TimerThread = nil
    end
end

local function ToggleFarming()
    IsFarming = not IsFarming
    if IsFarming then
        StartFarming()
    else
        StopFarming()
    end
end

ToggleFarming()

return MainGui["1"], require;
πŸ’¬ Comments 0
You

No comments yet. Be the first!