Home » Scripts » mm2 Script

mm2 Script

Photo of author
Published by

This is Keyless Script work Only mm2 Roblox Game.

we Have Tested Script with xeno executor and its working perfectly. also Its keyless script so you use it without issues.

below is list of features:

  • AimAssist
  • AutoClicker
  • Reach
  • Killaura
  • Vlovement
  • autowalk
  • ClickTp
  • FastFall
  • Fly
  • ForwardTp
  • HighJump
  • LongJump
  • phase
  • Speed
  • SpinBot

Copy The Script👇

--[[
    MM2 - ScriptRB.com
]]

repeat task.wait() until game:IsLoaded()

local startTick = tick()

local UserInputService = game:GetService("UserInputService")
local TextChatService = game:GetService("TextChatService")
local TeleportService = game:GetService("TeleportService")
local httpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character
local HumanoidRootPart = Character.HumanoidRootPart
local Humanoid = Character.Humanoid
local Camera = workspace.CurrentCamera
local RealCamera = workspace.Camera
local Mouse = LocalPlayer:GetMouse()
local PlayerGui = LocalPlayer.PlayerGui
local PlaceId = game.PlaceId
local JobId = game.JobId
local saveasuniversal = false
local loadasuniversal = false
local SliderScaleValue = 1
local Functions = {}
local LocalPlayerEvents = {}
local Mana = {Connections = {}, Friends = {}}

local httprequest = (request and http and http.request or http_request or fluxus and fluxus.request)
local queueteleport = syn and syn.queue_on_teleport or queue_on_teleport or fluxus and fluxus.queue_on_teleport
local function runFunction(func) func() end

local requestfunc = syn and syn.request or http and http.request or http_request or fluxus and fluxus.request or request or function(tab)
    if tab.Method == "GET" then
        return {
            Body = game:HttpGet(tab.Url, true),
            Headers = {},
            StatusCode = 200
        }
    else
        return {
            Body = "bad exploit",
            Headers = {},
            StatusCode = 404
        }
    end
end 

local betterisfile = function(file)
    local suc, res = pcall(function() return readfile(file) end)
    return suc and res ~= nil
end

local function isAlive(Player, headCheck)
    local Player = Player or LocalPlayer
    if Player and Player.Character and ((Player.Character:FindFirstChildOfClass("Humanoid")) and (Player.Character:FindFirstChild("HumanoidRootPart")) and (headCheck and Player.Character:FindFirstChild("Head") or not headCheck)) then
        return true
    else
        return false
    end
end

if shared.Mana then 
    warn("[ManaV2ForRoblox]: Already loaded.")
    Mana.GuiLibrary:playsound("rbxassetid://421058925", 1)
    return
end

do
    function Functions:RunFile(filepath)
        local req = requestfunc({
            Url = "https://raw.githubusercontent.com/Maanaaaa/ManaV2ForRoblox/main/" .. filepath,
            Method = "GET"
        })
        if isfile("NewMana/"..filepath) and shared.ManaDeveloper then
            print("MEEEEEEE " .. filepath)
            return loadstring(readfile("NewMana/" .. filepath))()
        elseif not betterisfile(filepath) and not shared.ManaDeveloper then -- auto update workspace files
            local context = req.Body
            writefile("Mana/"..filepath, context)
            return loadstring(context)()
        else
            if isfile("Mana/" .. filepath) then
                return loadstring(readfile("Mana/" .. filepath))()
            else
                return loadstring(game:HttpGet("https://raw.githubusercontent.com/Maanaaaa/ManaV2ForRoblox/main/" .. filepath))()
            end
        end
    end
end

local RunLoops = {RenderStepTable = {}, StepTable = {}, HeartTable = {}}

do
	function RunLoops:BindToRenderStep(name, func)
		if RunLoops.RenderStepTable[name] == nil then
			RunLoops.RenderStepTable[name] = RunService.RenderStepped:Connect(func)
		end
	end

	function RunLoops:UnbindFromRenderStep(name)
		if RunLoops.RenderStepTable[name] then
			RunLoops.RenderStepTable[name]:Disconnect()
			RunLoops.RenderStepTable[name] = nil
		end
	end

	function RunLoops:BindToStepped(name, func)
		if RunLoops.StepTable[name] == nil then
			RunLoops.StepTable[name] = RunService.Stepped:Connect(func)
		end
	end

	function RunLoops:UnbindFromStepped(name)
		if RunLoops.StepTable[name] then
			RunLoops.StepTable[name]:Disconnect()
			RunLoops.StepTable[name] = nil
		end
	end

	function RunLoops:BindToHeartbeat(name, func) 
		if RunLoops.HeartTable[name] == nil then
			RunLoops.HeartTable[name] = RunService.Heartbeat:Connect(func)
		end
	end

	function RunLoops:UnbindFromHeartbeat(name)
		if RunLoops.HeartTable[name] then
			RunLoops.HeartTable[name]:Disconnect()
			RunLoops.HeartTable[name] = nil
		end
	end
end

shared.Mana = Mana
local GuiLibrary = Functions:RunFile("GuiLibrary.lua")--loadstring(game:HttpGet("https://raw.githubusercontent.com/Maanaaaa/ManaV2ForRoblox/refs/heads/main/GuiLibrary.lua"))()
local playersHandler = Functions:RunFile("Libraries/playersHandler.lua") --loadstring(game:HttpGet("https://raw.githubusercontent.com/7GrandDadPGN/VapeV4ForRoblox/refs/heads/main/libraries/entity.lua"))()
local toolHandler = Functions:RunFile("Libraries/toolHandler.lua")
local espLibrary = Functions:RunFile("Libraries/espLibrary.lua") --loadstring(game:HttpGet("https://raw.githubusercontent.com/Maanaaaa/ManaV2ForRoblox/main/Libraries/espLibrary.lua"))()
--local whitelistHandler = Functions:RunFile("Libraries/whiltelistHandler.lua")
Mana.GuiLibrary = GuiLibrary
Mana.Functions = Functions
Mana.RunLoops = RunLoops
Mana.PlayersHandler = playersHandler
Mana.ToolHandler = toolHandler
Mana.EspLibrary = espLibrary
--Mana.WhitelistHandler = whitelistHandler
Mana.Activated = true
Mana.Whitelisted = false
Mana.Loaded = false

GuiLibrary:CreateWindow()

local Tabs = {
    Combat = GuiLibrary:CreateTab({
        Name = "Combat",
        Color = Color3.fromRGB(252, 60, 68),
        TabIcon = "CombatTabIcon.png"
    }),
    Movement = GuiLibrary:CreateTab({
        Name = "Movement",
        Color = Color3.fromRGB(255, 148, 36),
        TabIcon = "MovementTabIcon.png"
    }),
    Render = GuiLibrary:CreateTab({
        Name = "Render",
        Color = Color3.fromRGB(59, 170, 222),
        TabIcon = "RenderTabIcon.png"
    }),
    Utility = GuiLibrary:CreateTab({
        Name = "Utility",
        Color = Color3.fromRGB(83, 214, 110),
        TabIcon = "MiscTabIcon.png" --"UtilityTabIcon",
    }),
    World = GuiLibrary:CreateTab({
        Name = "World",
        Color = Color3.fromRGB(52 ,28, 228),
        TabIcon = "WorldTabIcon.png"
    }),
    Settings = GuiLibrary:CreateOptionsTab({
        Name = "Settings",
        Color = Color3.fromRGB(240, 157, 62),
        TabIcon = "MiscTabIcon.png"
    }),
    Profiles = GuiLibrary:CreateOptionsTab({
        Name = "Profiles",
        Color = Color3.fromRGB(255, 255, 255),
        TabIcon = "MiscTabIcon.png"
    }),
    Friends = GuiLibrary:CreateOptionsTab({
        Name = "Friends",
        Color = Color3.fromRGB(240, 157, 62),
        TabIcon = "PlayerImage.png"
    }),
    --[[
    FE = GuiLibrary:CreateTab({
        Name = "FE + Trolling",
        Color = Color3.fromRGB(255, 0, 34),
        Visible = true,
        TabIcon = "Utility.png",
        Callback = function() end
    }),
    Plugins = GuiLibrary:CreateTab({
        Name = "Plugins",
        Color = Color3.fromRGB(49, 204, 90),
        Visible = true,
        TabIcon = "MiscTabIcon.png",
        Callback = function() end
    }),
    ]]
    --[[
    SessionInfo = GuiLibrary:CreateCustomTab({
        Name = "Session info",
        Color = Color3.fromRGB(240, 157, 62)
    })
    ]]
}
Mana.Tabs = Tabs

if GuiLibrary.Device == "Mobile" then
    SliderScaleValue = 0.5
end

-- // key strokes
local keyStrokes = GuiLibrary:CreateKeyStrokes()
Mana.KeyStrokes = keyStrokes
keyStrokes:toggle()

--[[ // text list (soon)
local textList = GuiLibrary:CreateTextList()
Mana.TextList = textList
Tabs.TextList = textList.tab
]]

-- // Settings tab
runFunction(function()
    local soundvolume = {Value = 1}
    local uiscale = {Value = 1}
    local uicornersradius = {Value = 4}

    local divider = Tabs.Settings:CreateDivider("UI")

    local notifications = Tabs.Settings:CreateToggle({
        Name = "Notifications",
        Callback = function(callback)
            GuiLibrary.Notifications = callback
        end
    })

    local sounds = Tabs.Settings:CreateToggle({
        Name = "Sounds",
        Callback = function(callback)
            GuiLibrary.Sounds = callback
            if soundvolume.MainObject then
                soundvolume.MainObject.Visible = callback
            end
        end
    })

    soundvolume = Tabs.Settings:CreateSlider({
        Name = "Volume",
        Function = function(v)
            GuiLibrary.SoundVolume = v
        end,
        Min = 0,
        Max = 1,
        Default = 1,
        Round = 2
    })

    uiscale = Tabs.Settings:CreateSlider({
        Name = "UI scale",
        Function = function(v)
            GuiLibrary.UIScale.Scale = v
        end,
        Min = 0.5,
        Max = 2,
        Default = 1,
        Round = 2
    })

    uicornersradius = Tabs.Settings:CreateSlider({
        Name = "UI corners radius",
        Function = function(v)
            GuiLibrary.uiCornersRadius = v
            GuiLibrary:updateUICorners(v)
        end,
        Min = 0,
        Max = 10,
        Default = 4,
        Round = 0
    })
end)

--[[ soon
runFunction(function()
    local textListEnabled = {Value = false}
    local divider = Tabs.Settings:CreateSecondDivider("Text List")
    textListEnabled = Tabs.Settings:CreateToggle({
        Name = "Text List",
        Callback = function(callback)
            Tabs.TextList:Toggle(callback, callback)
        end
    })
end)
]]

runFunction(function()
    local divider = Tabs.Settings:CreateDivider("Slider")

    local sliderdoubleclick = Tabs.Settings:CreateToggle({
        Name = "Double click",
        Callback = function(callback)
            GuiLibrary.SliderDoubleClick = callback
        end
    })

    local slidercanoverride = Tabs.Settings:CreateToggle({
        Name = "Value override",
        Callback = function(callback)
            GuiLibrary.SliderCanOverride = callback
        end
    })
end)

runFunction(function()
    local divider = Tabs.Settings:CreateDivider("Other")

    local sorttabs = Tabs.Settings:CreateButton({
        Name = "Sort tabs",
        Callback = function()
            local xoffset = 40
            local yoffset = 40
            local rowWidth = 7
            local totalyoffset = 247
            local tabs = {}
            for _, v in pairs(GuiLibrary.ObjectsToSave.Tabs) do
                if v.Type == "Tab" or v.Type == "OptionTab" then
                    table.insert(tabs, v)
                end
            end
            table.sort(tabs, function(a, b) return a.API.Order < b.API.Order end)
            for index, tabTable in ipairs(tabs) do
                local container = tabTable.API.Container
                local row = math.floor((index - 1) / rowWidth)
                local col = (index - 1) % rowWidth
                container.Position = UDim2.new(0, xoffset + (col * totalyoffset), 0, yoffset + (row * 50))
            end
        end
    })
    
    --[[
    local unpinall = Tabs.Settings:CreateButton({
        Name = "Pin/Un pin all tabs",
        Callback = function()
            for i, v in next, GuiLibrary.ObjectsThatCanBeSaved do
                if v.Type == "Tab" then
                    v.Table:Pin(false)
                end
            end
        end
    })
    ]]

    local uninject = Tabs.Settings:CreateButton({
        Name = "Uninject",
        Callback = function()
            GuiLibrary:SaveConfig()
            Mana = nil
            GuiLibrary:Destruct()
        end
    })

    local reinject = Tabs.Settings:CreateButton({
        Name = "Reinject",
        Callback = function()
            GuiLibrary:SaveConfig()
            Mana = nil
            GuiLibrary:Destruct()
            Functions:RunFile("MainScript.lua")
        end
    })

    local copydiscordinvite = Tabs.Settings:CreateButton({
        Name = "Copy Discord invite",
        Callback = function()
            toclipboard("https://discord.gg/gPkD8BdbMA")
        end
    })
end)

-- Profiles tab
runFunction(function()
    local delay = {Value = 15}
    local resetprofile = {}
    local profilesList = {}
    --local profiles = isfile("Mana/ProfilesList.json") and httpService:JSONDecode(readfile("Mana/ProfilesList.json")) or {"Default"}

    local divider = Tabs.Profiles:CreateDivider("Config")

    delay = Tabs.Profiles:CreateSlider({
        Name = "AutoSave Delay",
        Function = function(v)
            GuiLibrary.autoSaveDelay = v
        end,
        Min = 1,
        Max = 60,
        Default = 5,
        Round = 0
    })

    resetprofile = Tabs.Profiles:CreateButton({
        Name = "Reset current profile",
        Callback = function()
            Mana = nil
            GuiLibrary:Destruct()
            --if isfile("Mana/Config/"..game.PlaceId..GuiLibrary.CurrentProfile..".json") then delfile("Mana/Config/"..game.PlaceId..GuiLibrary.CurrentProfile..".json") end
            if isfile("Mana/Config/"..game.PlaceId..".json") then delfile("Mana/Config/"..game.PlaceId..".json"); print('shit deleted') end
            Functions:RunFile("MainScript.lua")
        end
    })

    --[[this shit is broken and unstable and i dont have time to fix this shit
    profilesList = Tabs.Profiles:CreateTextList({
        Name = "Profiles",
        DefaultList = profiles,
        PlaceholderText = "Profile name",
        Choose = true,
        MultiChoose = false,
        Default = "Default",
        Callback = function(v, bool)
            print(profilesList.List or profiles)
            writefile("Mana/ProfilesList.json", httpService:JSONEncode(profilesList.List or profiles))
            if bool then
                GuiLibrary:switchProfile(v)
            end
        end
    })
    ]]
end)

-- Friends tab
runFunction(function()
    local Friends = {List = {}}
    local list = {}
    Mana.Friends = list

    Friends = Tabs.Friends:CreateTextList({
        Name = "Friends",
        List = {},
        PlaceholderText = "Friend Name",
        Callback = function(v)
            if list[v] then
                table.remove(Friends.List, list[v])
                list[v] = nil
            else
                table.insert(Friends.List, v)
            end
        end
    })
end)

--[[ // TextList tab (soon)
runFunction(function()
    local sorting = {Value = "Alphabetical"}
    local backgroundTransparency = {Value = 0.7}
    local texSize = {Value = 15}
    local customTextEnabled = {Value = false}
    local customText = {Value = ""}
    local customTextSize = {Value = 18}
    local autoXAllignment = {Value = true}

    sorting = Tabs.TextList:CreateDropDown({
        Name = "Sorting",
        List = {"Alphabetical", "Length"},
        Default = "Alphabetical",
        Callback = function(v)
            textList:updateSortingMode(v)
        end
    })

    backgroundTransparency = Tabs.TextList:CreateSlider({
        Name = "Transparency",
        Function = function(v)
            textList:updateBackgroundTransparency(v)
        end,
        Min = 0,
        Max = 1,
        Default = 0.7,
        Round = 2
    })

    texSize = Tabs.TextList:CreateSlider({
        Name = "Text size",
        Function = function(v)
            textList:updateTextSize(v)
        end,
        Min = 10,
        Max = 30,
        Default = 15,
        Round = 0
    })

    customTextEnabled = Tabs.TextList:CreateToggle({
        Name = "Custom text",
        Default = true,
        Callback = function(callback)
            if customText.MainObject then customText.MainObject.Visible = callback end
            if customTextSize.MainObject then customTextSize.MainObject.Visible = callback end
            textList:addCustomText()
        end
    })

    customText = Tabs.TextList:CreateTextBox({
        Name = "Custom text",
        PlaceholderText = "Custom text text",
        Default = "Hello world!",
        Callback = function(v)
            textList:updateCustomText(v)
        end
    })
    customText.MainObject.Visible = false

    customTextSize = Tabs.TextList:CreateSlider({
        Name = "Custom text size",
        Function = function(v)
            textList:updateCustomTextSize(v)
        end,
        Min = 10,
        Max = 30,
        Default = 18,
        Round = 0
    })
    customTextSize.MainObject.Visible = false

    autoXAllignment = Tabs.TextList:CreateToggle({
        Name = "Auto text X align.",
        Default = false,
        Callback = function(callback)
            textList:updateAutoTextXAlignment(callback)
        end
    })
end)
]]

-- // cool gui button
local Button = Instance.new("TextButton")
local Corner = Instance.new("UICorner")
Button.Name = "GuiButton"
Button.Position = UDim2.new(0.12, 0, 0, -41)
Button.Text = "Mana"
Button.BackgroundColor3 = Color3.fromRGB(26, 25, 26)
Button.TextColor3 = Color3.new(1, 1, 1)
Button.Size = UDim2.new(0, 32, 0, 32)
Button.BorderSizePixel = 0
Button.BackgroundTransparency = 0.5
Button.Parent = GuiLibrary.ScreenGui
Corner.Parent = Button
Corner.CornerRadius = UDim.new(0, 8)

Button.MouseButton1Click:Connect(function()
    GuiLibrary:Toggle()
end)

UserInputService.InputBegan:Connect(function(Input)
    if Input.KeyCode == Enum.KeyCode.RightShift then
        GuiLibrary:Toggle()
    end
end)

print("[ManaV2ForRoblox/MainScript.lua]: Loaded in " .. tostring(tick() - startTick) .. ".")

Functions:RunFile("Universal.lua")

local suc, res = pcall(function()
    Functions:RunFile("Scripts/" .. PlaceId .. ".lua")
end)

if not suc then
    warn("[ManaV2ForRoblox/MainScript.lua]: an error occured while attempting to load game script: " .. res)
    GuiLibrary.CanLoadConfig = true
end

LocalPlayer.OnTeleport:Connect(function(State)
    if State == Enum.TeleportState.Started then
        local QueueTeleportFunction = [[
            if shared.ManaDeveloper then 
                loadstring(readfile("NewMana/MainScript.lua"))()
            else 
                loadstring(game:HttpGet("https://raw.githubusercontent.com/Maanaaaa/ManaV2ForRoblox/main/MainScript.lua"))()
            end
        ]]
        queueteleport(QueueTeleportFunction)
    end
end)

repeat task.wait() until GuiLibrary.CanLoadConfig -- // so da game module will load before config will load
GuiLibrary.Loaded = true
Mana.Loaded = true
--GuiLibrary:Toggle()
GuiLibrary:LoadConfig()

Latest Posts

Leave a Comment