MMM auto player PLS READ THE DESC
Key Required

MMM auto player PLS READ THE DESC

{MECHANICS} Monday Morning Misery [Beta]RaikouRaikou 2.2K views 965 executesUpdated Jan 8, 2026
3.0/ 5(5 votes)
3260% Positive
Lua Script•135 lines (4208 chars)
--[[
    MMMPlxyer - Condensed Logic Only
    - Toggle Key: "none" editable at line 24
    - Reworked By Raikou :D
]]

local lIlIlI = loadstring(game:HttpGet("https://raw.githubusercontent.com/AZYsGithub/DrRay-UI-Library/main/DrRay.lua"))()
local o0Oo0O = lIlIlI:Load("MMMPlxyer V2", "Default")
local iIi1I1 = lIlIlI.newTab("MMMAutoPlayer", "7733960981")
local O0O00 = true


local function sendNotif(state)
    game.StarterGui:SetCore("SendNotification", {
        Title = "MMMPlxyer V2",
        Text = "Autoplayer: " .. (state and "ENABLED" or "DISABLED"),
        Duration = 2
    })
end

local UIS = game:GetService("UserInputService")
UIS.InputBegan:Connect(function(input, processed)
    --replace the nil to any key u want
    if not processed and input.KeyCode == Enum.KeyCode.nil then
        O0O00 = not O0O00
        sendNotif(O0O00)
    end
end)


iIi1I1.newToggle("Toggle Autoplayer", "Toggles the autoplayer", true, function(v)
    O0O00 = v
end)

iIi1I1.newKeybind("Close GUI", "A Keybind to close the gui", function()
    o0Oo0O:Close()
end)

if not game:IsLoaded() then game.Loaded:Wait() end

local VIM = game:GetService("VirtualInputManager")
local RS = game:GetService("RunService")
local Opts = getrenv()._G.PlayerData.Options
local TYP = {"Left", "Right"}
local C0nns = {}

local KeyMap = {
    [9] = {"Left", "Down", "Up", "Right", "Space", "Left2", "Down2", "Up2", "Right2"},
    [8] = {"Left", "Down", "Up", "Right", "Left2", "Down2", "Up2", "Right2"},
    [7] = {"Left", "Up", "Right", "Space", "Left2", "Down", "Right2"},
    [6] = {"Left", "Up", "Right", "Left2", "Down", "Right2"},
    [5] = {"Left", "Down", "Space", "Up", "Right"},
    [4] = {"Left", "Down", "Up", "Right"}
}

local function sorter(p)
    if not p then return {} end
    local c = p:GetChildren()
    table.sort(c, function(a, b)
        return a.AbsolutePosition.X < b.AbsolutePosition.X
    end)
    return c
end

local function getMatch()
    for _, v in ipairs(getgc(true)) do
        if type(v) == "table" and rawget(v, "MatchFolder") then
            return v
        end
    end
end

local function MAIN()
    local m = getMatch()
    if not m then return end
    repeat task.wait() until rawget(m, "Songs")

    local side = TYP[m.PlayerType]
    local G = m.ArrowGui[side]
    local receptors = sorter(G.MainArrowContainer)
    local longHolders = sorter(G.LongNotes)
    local noteHolders = sorter(G.Notes)
    local max = m.MaxArrows
    local keys = KeyMap[max]
    local binds = max < 5 and Opts or Opts.ExtraKeySettings[tostring(max)]

    for i, holder in ipairs(noteHolders) do
        local keycode = binds[keys[i].."Key"]
        local receptor = receptors[i]
        local longContainer = longHolders[i]

        table.insert(C0nns, holder.ChildAdded:Connect(function(note)
            task.spawn(function()
                while note and note.Parent and (receptor.AbsolutePosition - note.AbsolutePosition).Magnitude > 25 do
                    RS.RenderStepped:Wait()
                end
                
                if not O0O00 or not note or not note.Parent then return end
                
                
                VIM:SendKeyEvent(true, keycode, false, nil)
                
                task.wait() 
                local body = longContainer:FindFirstChildWhichIsA("GuiObject")
                
                if body then
                    while body and body.Parent == longContainer and O0O00 do
                        local bodyBottom = body.AbsolutePosition.Y + body.AbsoluteSize.Y
                        local receptorPos = receptor.AbsolutePosition.Y
                        
                        if bodyBottom < receptorPos then 
                            break 
                        end
                        RS.RenderStepped:Wait()
                    end
                end

               
                VIM:SendKeyEvent(false, keycode, false, nil)
            end)
        end))
    end
    return m
end

while true do 
    task.wait(1)
    for _, v in ipairs(C0nns) do v:Disconnect() end
    table.clear(C0nns)
    
    local match = MAIN()
    if match and match.MatchFolder then
        match.MatchFolder.Destroying:Wait()
    end
end

Features & Information

• Keybind editable (line 24) the default keybind is none u can edit it cuz it's open source • Long note hold fixed • Skidders welcome šŸ™‚

Community Comments (6)

TernalTernalJan 8, 2026

I don't see any skidders now lately tbh

Replying to @Ternal
blepblepJan 9, 2026

@BasicExploiter I am

Nice script

IAmSteveIAmSteveJan 8, 2026

Great script, sometimes it can miss but besides that its very good

StewBradarStewBradarJan 15, 2026

okay i found perfect keybind W script

loupym3loupym3Aug 24, 2026

Long note, There's just this one problem again.

More Scripts for {MECHANICS} Monday Morning Misery [Beta]