Description
The Elite Scripts Murder Mystery 2 Script is a keyless, open-source script designed for Murder Mystery 2 on Roblox. It includes combat tools, aiming options, role ESP, coin farming, and movement features. The open-source listing also allows users to view and modify the script to build upon its existing features.
Key Features
Combat & Aiming
- Aimbot: Includes aiming assistance.
- Silent Aim: Provides an alternative aiming feature.
- Knife Aura: Includes a knife-related combat feature.
- FOV: Allows adjustment of the aiming field of view.
- Smoothness: Provides an aiming smoothness setting.
- Always On: Includes an always-on option.
- Target Role: Provides a target-role setting.
ESP & Visuals
- Role ESP: Helps identify player roles.
- Visuals: Includes visual tools for gameplay.
Auto Farming & Collection
- Auto Farm Coins: Automates coin farming.
- TP to Nearest Coin: Teleports toward the nearest coin.
- Auto Grab Dropped Gun: Automatically collects a dropped gun.
Movement & Additional Tools
- Fly: Includes a flying feature.
- Combat, Farm & Player Tools: Provides additional categories for combat, farming, and player-related features.
Script Information
- Script Name: Elite Scripts Murder Mystery 2
- Supported Game: Murder Mystery 2
- Key System: Keyless
- Source Type: Open Source
- Status: Current working status has not been independently confirmed.
Views
5+
Likes
0
Dislikes
0
Posted
6 days ago
Updated
6 days ago
Key System
No
Mobile
Supported
Script Preview
ELITE SCRIPTS · MURDER MYSTERY 2
Fluent UI
Role ESP (Murderer/Sheriff/Innocent) · Coin ESP · Gun Drop ESP
Aimbot / Silent / Knife Aura · Auto Farm · Auto Shoot · Auto Stab
TP to roles · Fly / Noclip / Speed · FullBright · Discord LED
Customize tab — accent + theme colors
Keyless · UNC universal
]]
-- ======================== UNC / EXECUTOR COMPAT ========================
local function safeHttpGet(url)
local ok, res = pcall(function()
if syn and syn.request then
local r = syn.request({Url = url, Method = "GET"})
return r.Body
elseif http and http.request then
local r = http.request({Url = url, Method = "GET"})
return r.Body
elseif request then
local r = request({Url = url, Method = "GET"})
return r.Body
elseif http_request then
local r = http_request({Url = url, Method = "GET"})
return r.Body
elseif fluxus and fluxus.request then
local r = fluxus.request({Url = url, Method = "GET"})
return r.Body
else
return game:HttpGet(url)
end
end)
if ok and res then return res end
return game:HttpGet(url)
end
local Fluent = loadstring(safeHttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local SaveManager = loadstring(safeHttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))()
local InterfaceManager = loadstring(safeHttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))()
if not Drawing then
pcall(function() Drawing = getgenv().Drawing or Drawing end)
end
if not Drawing then
warn("[ELITE SCRIPTS] Drawing missing — ESP disabled on this executor")
end
local function safeDrawing(class)
if not Drawing then return nil end
local ok, obj = pcall(function() return Drawing.new(class) end)
if ok then return obj end
return nil
end
local function safeMousemove(x, y)
if mousemoverel then
pcall(mousemoverel, x, y)
elseif Input and Input.MouseMove then
pcall(Input.MouseMove, x, y)
end
end
local function safeMouse1Click()
if mouse1click then
pcall(mouse1click)
elseif mouse1press and mouse1release then
pcall(mouse1press)
task.wait(0.02)
pcall(mouse1release)
end
end
-- ======================== SERVICES ========================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local Mouse = LocalPlayer:GetMouse()
-- ======================== SETTINGS ========================
local S = {
-- Aim
Aimbot = false,
SilentAim = false,
AlwaysOn = false,
AimKey = Enum.UserInputType.MouseButton2,
FOV = 130,
Smoothness = 0.14,
AimPart = "Head",
Prediction = true,
PredMult = 0.09,
ShowFOV = true,
FOVColor = Color3.fromRGB(188, 78, 255),
FOVRainbow = false,
TargetRole = "Murderer", -- Murderer / Sheriff / Any
-- Combat MM2
KnifeAura = false,
AuraDist = 12,
AutoStab = false,
AutoShoot = false,
AutoThrow = false,
KillAll = false,
-- ESP
ESP = true,
RoleESP = true,
Box = true,
Skeleton = false,
Tracer = true,
Name = true,
Distance = true,
Health = true,
CoinESP = true,
GunESP = true,
MaxDist = 2500,
MurdererColor = Color3.fromRGB(255, 55, 55),
SheriffColor = Color3.fromRGB(55, 140, 255),
InnocentColor = Color3.fromRGB(80, 220, 120),
CoinColor = Color3.fromRGB(255, 215, 60),
GunColor = Color3.fromRGB(100, 180, 255),
-- Farm
AutoFarm = false,
FarmSpeed = 28,
FarmMode = "Nearest", -- Nearest / Random
AutoGrabGun = true,
AutoOpenChest = false,
-- Movement
Fly = false,
FlySpeed = 70,
Noclip = false,
Speed = false,
WalkSpeed = 26,
InfiniteJump = false,
-- World
FullBright = false,
NoFog = false,
-- UI / Brand
DiscordLED = true,
DiscordLEDColor = Color3.fromRGB(188, 78, 255),
DiscordLink = "https://discord.gg/JyHTa3M7h",
AccentColor = Color3.fromRGB(188, 78, 255),
ThemeName = "Darker",
}
-- ======================== STATE ========================
local HoldingAim = false
local espCache = {}
local coinCache = {}
local gunCache = {}
local flyBV, flyBG
local origAmbient, origBrightness, origFog
local lastAura = 0
local lastFarm = 0
local roleCache = {} -- [player] = "Murderer"|"Sheriff"|"Innocent"|"None"
-- Drawing objects
local FOVCircle = safeDrawing("Circle")
if FOVCircle then
FOVCircle.Visible = false
FOVCircle.Thickness = 1.4
FOVCircle.Filled = false
FOVCircle.NumSides = 64
FOVCircle.Transparency = 0.75
FOVCircle.Color = S.FOVColor
FOVCircle.Radius = S.FOV
end
local DiscordLEDGlow = safeDrawing("Text")
local DiscordLEDText = safeDrawing("Text")
local DiscordLEDLine = safeDrawing("Line")
if DiscordLEDGlow then
DiscordLEDGlow.Text = "discord.gg/JyHTa3M7h"
DiscordLEDGlow.Size = 13
DiscordLEDGlow.Center = true
DiscordLEDGlow.Outline = false
DiscordLEDGlow.Color = S.DiscordLEDColor
DiscordLEDGlow.Transparency = 0.72
DiscordLEDGlow.Visible = S.DiscordLED
end
if DiscordLEDText then
DiscordLEDText.Text = "discord.gg/JyHTa3M7h"
DiscordLEDText.Size = 12
DiscordLEDText.Center = true
DiscordLEDText.Outline = true
DiscordLEDText.Color = S.DiscordLEDColor
DiscordLEDText.Transparency = 1
DiscordLEDText.Visible = S.DiscordLED
end
if DiscordLEDLine then
DiscordLEDLine.Thickness = 1
DiscordLEDLine.Color = S.DiscordLEDColor
DiscordLEDLine.Transparency = 0.6
DiscordLEDLine.Visible = S.DiscordLED
end
-- ======================== ROLE DETECTION ========================
local function getRole(plr)
if not plr or plr == LocalPlayer then return "None" end
if roleCache[plr] and tick() - (roleCache[plr]._t or 0) 0
end
local function worldToScreen(pos)
local v, on = Camera:WorldToViewportPoint(pos)
return Vector2.new(v.X, v.Y), on, v.Z
end
local function getClosestInFOV(roleFilter)
local best, bestDist = nil, S.FOV
local mousePos = Vector2.new(Mouse.X, Mouse.Y)
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and isAlive(plr) then
local role = getRole(plr)
if roleFilter == "Any" or role == roleFilter then
local hrp = getHRP(plr)
if hrp then
local part = hrp
if S.AimPart == "Head" then
local head = getChar(plr):FindFirstChild("Head")
if head then part = head end
end
local screen, onScreen = worldToScreen(part.Position)
if onScreen then
local d = (screen - mousePos).Magnitude
if d 0) then
clearESP(plr)
continue
end
local dist = (hrp.Position - myPos).Magnitude
if dist > S.MaxDist then
clearESP(plr)
continue
end
local role = getRole(plr)
local col = getRoleColor(role)
local c = ensureESP(plr)
local head = char:FindFirstChild("Head")
local topPos = head and head.Position or (hrp.Position + Vector3.new(0, 2.2, 0))
local bottomPos = hrp.Position - Vector3.new(0, 3, 0)
local top2d, on1, z1 = worldToScreen(topPos)
local bot2d, on2 = worldToScreen(bottomPos)
local hrp2d = worldToScreen(hrp.Position)
if not (on1 and on2) then
if c.box then c.box.Visible = false end
if c.name then c.name.Visible = false end
if c.dist then c.dist.Visible = false end
if c.health then c.health.Visible = false end
if c.tracer then c.tracer.Visible = false end
for _, ln in pairs(c.skel) do if ln then ln.Visible = false end end
continue
end
local height = math.abs(bot2d.Y - top2d.Y)
local width = height * 0.55
local boxPos = Vector2.new(top2d.X - width / 2, top2d.Y)
if S.Box and c.box then
c.box.Visible = true
c.box.Position = boxPos
c.box.Size = Vector2.new(width, height)
c.box.Color = col
elseif c.box then
c.box.Visible = false
end
if S.Name and c.name then
c.name.Visible = true
c.name.Position = Vector2.new(top2d.X, top2d.Y - 16)
local roleTag = S.RoleESP and (" [" .. role .. "]") or ""
c.name.Text = plr.Name .. roleTag
c.name.Color = col
elseif c.name then
c.name.Visible = false
end
if S.Distance and c.dist then
c.dist.Visible = true
c.dist.Position = Vector2.new(bot2d.X, bot2d.Y + 2)
c.dist.Text = string.format("%.0fm", dist)
c.dist.Color = col
elseif c.dist then
c.dist.Visible = false
end
if S.Health and c.health then
local pct = math.clamp(hum.Health / math.max(hum.MaxHealth, 1), 0, 1)
c.health.Visible = true
c.health.From = Vector2.new(boxPos.X - 4, bot2d.Y)
c.health.To = Vector2.new(boxPos.X - 4, bot2d.Y - height * pct)
c.health.Color = Color3.fromRGB(255 * (1 - pct), 255 * pct, 40)
elseif c.health then
c.health.Visible = false
end
if S.Tracer and c.tracer then
c.tracer.Visible = true
c.tracer.From = bottom
c.tracer.To = hrp2d
c.tracer.Color = col
elseif c.tracer then
c.tracer.Visible = false
end
-- simple skeleton
if S.Skeleton then
local bones = {
{"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"},
}
-- R6 fallback
if not char:FindFirstChild("UpperTorso") then
bones = {
{"Head", "Torso"}, {"Torso", "Left Arm"}, {"Torso", "Right Arm"},
{"Torso", "Left Leg"}, {"Torso", "Right Leg"},
}
end
for i, pair in ipairs(bones) do
local a = char:FindFirstChild(pair[1])
local b = char:FindFirstChild(pair[2])
local ln = c.skel[i]
if a and b and ln then
local p1, o1 = worldToScreen(a.Position)
local p2, o2 = worldToScreen(b.Position)
if o1 and o2 then
ln.Visible = true
ln.From = p1
ln.To = p2
ln.Color = col
else
ln.Visible = false
end
elseif ln then
ln.Visible = false
end
end
else
for _, ln in pairs(c.skel) do if ln then ln.Visible = false end end
end
end
-- cleanup left players
for plr in pairs(espCache) do
if not Players:FindFirstChild(plr.Name) then
clearESP(plr)
end
end
end
-- Coin + Gun ESP (simple)
local function updateWorldESP()
-- Coins
if S.CoinESP then
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("BasePart") and (string.lower(obj.Name):find("coin") or obj.Name == "CoinContainer") then
if not coinCache[obj] then
local t = safeDrawing("Text")
if t then
t.Size = 12
t.Center = true
t.Outline = true
t.Color = S.CoinColor
t.Text = "COIN"
coinCache[obj] = t
end
end
local t = coinCache[obj]
if t then
local p, on = worldToScreen(obj.Position)
t.Visible = on
if on then t.Position = p end
end
end
end
else
for obj, t in pairs(coinCache) do
pcall(function() t:Remove() end)
coinCache[obj] = nil
end
end
-- Dropped gun
if S.GunESP then
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("BasePart") or obj:IsA("Model") then
local n = string.lower(obj.Name)
if n:find("gun") or n:find("revolver") or n == "gundrop" then
local part = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart")
if part and not gunCache[obj] then
local t = safeDrawing("Text")
if t then
t.Size = 13
t.Center = true
t.Outline = true
t.Color = S.GunColor
t.Text = "GUN"
gunCache[obj] = t
end
end
local t = gunCache[obj]
if t and part then
local p, on = worldToScreen(part.Position)
t.Visible = on
if on then t.Position = p end
end
end
end
end
else
for obj, t in pairs(gunCache) do
pcall(function() t:Remove() end)
gunCache[obj] = nil
end
end
end
-- ======================== COMBAT ========================
local function knifeAuraStep()
if not (S.KnifeAura or S.AutoStab or S.KillAll) then return end
if tick() - lastAura < 0.12 then return end
local myChar = LocalPlayer.Character
if not myChar then return end
local myHRP = myChar:FindFirstChild("HumanoidRootPart")
if not myHRP then return end
local tool = myChar:FindFirstChildOfClass("Tool")
local isKnife = tool and string.lower(tool.Name):find("knife")
for _, plr in ipairs(Players:GetPlayers()) do
if plr == LocalPlayer or not isAlive(plr) then continue end
local hrp = getHRP(plr)
if not hrp then continue end
local dist = (hrp.Position - myHRP.Position).Magnitude
if dist <= S.AuraDist then
if S.KillAll or S.KnifeAura or S.AutoStab then
-- try activate tool / click
pcall(function()
if tool and tool:FindFirstChild("Handle") then
tool:Activate()
end
safeMouse1Click()
end)
lastAura = tick()
break
end
end
end
end
local function autoShootStep()
if not S.AutoShoot then return end
local myChar = LocalPlayer.Character
if not myChar then return end
local tool = myChar:FindFirstChildOfClass("Tool")
if not tool then return end
local n = string.lower(tool.Name)
if not (n:find("gun") or n:find("revolver") or n:find("pistol")) then return end
local target = getClosestInFOV("Murderer")
if target then
aimAt(target)
safeMouse1Click()
end
end
-- ======================== FARM ========================
local function farmStep()
if not S.AutoFarm then return end
if tick() - lastFarm < 0.15 then return end
local myChar = LocalPlayer.Character
local myHRP = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not myHRP then return end
local best, bestD = nil, math.huge
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("BasePart") and string.lower(obj.Name):find("coin") then
local d = (obj.Position - myHRP.Position).Magnitude
if d 2 then
myHRP.CFrame = myHRP.CFrame:Lerp(CFrame.new(target), 0.18)
end
else
myHRP.CFrame = CFrame.new(target)
end
lastFarm = tick()
end
if S.AutoGrabGun then
for _, obj in ipairs(Workspace:GetDescendants()) do
local n = string.lower(obj.Name)
if (n:find("gun") or n:find("revolver")) and (obj:IsA("BasePart") or obj:IsA("Model")) then
local part = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart")
if part and (part.Position - myHRP.Position).Magnitude 0 and dir.Unit * S.FlySpeed or Vector3.zero
flyBG.CFrame = cam
hum.PlatformStand = true
else
if flyBV then flyBV:Destroy() flyBV = nil end
if flyBG then flyBG:Destroy() flyBG = nil end
if hum then hum.PlatformStand = false end
end
end
local function noclipStep()
local char = LocalPlayer.Character
if not char then return end
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = not S.Noclip
end
end
end
local function speedStep()
local hum = getHum(LocalPlayer)
if hum and S.Speed then
hum.WalkSpeed = S.WalkSpeed
end
end
-- ======================== WORLD ========================
local function applyWorld()
if S.FullBright then
if not origAmbient then
origAmbient = Lighting.Ambient
origBrightness = Lighting.Brightness
end
Lighting.Ambient = Color3.new(1, 1, 1)
Lighting.Brightness = 2
elseif origAmbient then
Lighting.Ambient = origAmbient
Lighting.Brightness = origBrightness or 1
end
if S.NoFog then
if not origFog then origFog = Lighting.FogEnd end
Lighting.FogEnd = 1e6
elseif origFog then
Lighting.FogEnd = origFog
end
end
-- ======================== INPUT ========================
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.UserInputType == S.AimKey or input.KeyCode == Enum.KeyCode.E then
HoldingAim = true
end
if input.KeyCode == Enum.KeyCode.Space and S.InfiniteJump then
local hum = getHum(LocalPlayer)
if hum then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == S.AimKey or input.KeyCode == Enum.KeyCode.E then
HoldingAim = false
end
end)
-- ======================== FLUENT WINDOW ========================
local Window = Fluent:CreateWindow({
Title = "ELITE SCRIPTS",
SubTitle = "Murder Mystery 2",
TabWidth = 140,
Size = UDim2.fromOffset(500, 400),
Acrylic = true,
Theme = "Darker",
MinimizeKey = Enum.KeyCode.LeftControl
})
local Tabs = {
Home = Window:AddTab({ Title = "Home", Icon = "home" }),
Combat = Window:AddTab({ Title = "Combat", Icon = "crosshair" }),
Visuals = Window:AddTab({ Title = "Visuals", Icon = "eye" }),
Farm = Window:AddTab({ Title = "Farm", Icon = "coins" }),
Player = Window:AddTab({ Title = "Player", Icon = "user" }),
Customize = Window:AddTab({ Title = "Customize", Icon = "palette" }),
Misc = Window:AddTab({ Title = "Misc", Icon = "settings" }),
About = Window:AddTab({ Title = "About", Icon = "info" }),
}
local Options = Fluent.Options
-- ======================== HOME ========================
do
Tabs.Home:AddSection("ELITE · MM2")
Tabs.Home:AddParagraph({
Title = "ELITE SCRIPTS",
Content = "Murder Mystery 2 · Fluent UInKeyless · UNC · discord.gg/JyHTa3M7h"
})
Tabs.Home:AddParagraph({
Title = "Quick Load",
Content = "Core toggles. Full controls in other tabs."
})
Tabs.Home:AddToggle("HomeESP", {
Title = "Role ESP",
Default = true,
Callback = function(v)
S.ESP = v
if Options.ESPEnable then Options.ESPEnable:SetValue(v) end
end
})
Tabs.Home:AddToggle("HomeAim", {
Title = "Aimbot",
Default = false,
Callback = function(v)
S.Aimbot = v
if FOVCircle then FOVCircle.Visible = v and S.ShowFOV end
if Options.AimEnable then Options.AimEnable:SetValue(v) end
end
})
Tabs.Home:AddToggle("HomeAura", {
Title = "Knife Aura",
Default = false,
Callback = function(v)
S.KnifeAura = v
if Options.AuraEnable then Options.AuraEnable:SetValue(v) end
end
})
Tabs.Home:AddToggle("HomeFarm", {
Title = "Auto Farm Coins",
Default = false,
Callback = function(v)
S.AutoFarm = v
if Options.FarmEnable then Options.FarmEnable:SetValue(v) end
end
})
Tabs.Home:AddToggle("HomeFly", {
Title = "Fly",
Default = false,
Callback = function(v)
S.Fly = v
if Options.FlyEnable then Options.FlyEnable:SetValue(v) end
end
})
Tabs.Home:AddButton({
Title = "Join Discord",
Description = "discord.gg/JyHTa3M7h",
Callback = function()
pcall(function()
if setclipboard then setclipboard(S.DiscordLink) end
end)
Fluent:Notify({ Title = "ELITE SCRIPTS", Content = "Discord link copied", Duration = 3 })
end
})
end
-- ======================== COMBAT ========================
do
Tabs.Combat:AddSection("Aim")
Tabs.Combat:AddToggle("AimEnable", {
Title = "Enable Aimbot",
Default = false,
Callback = function(v)
S.Aimbot = v
if FOVCircle then FOVCircle.Visible = v and S.ShowFOV end
if Options.HomeAim then Options.HomeAim:SetValue(v) end
end
})
Tabs.Combat:AddToggle("SilentEnable", {
Title = "Silent Aim",
Default = false,
Callback = function(v) S.SilentAim = v end
})
Tabs.Combat:AddToggle("AlwaysOn", {
Title = "Always On",
Default = false,
Callback = function(v) S.AlwaysOn = v end
})
Tabs.Combat:AddDropdown("TargetRole", {
Title = "Target Role",
Values = {"Murderer", "Sheriff", "Any"},
Default = 1,
Callback = function(v) S.TargetRole = v end
})
Tabs.Combat:AddSlider("FOV", {
Title = "FOV",
Default = 130,
Min = 40,
Max = 400,
Rounding = 0,
Callback = function(v)
S.FOV = v
if FOVCircle then FOVCircle.Radius = v end
end
})
Tabs.Combat:AddSlider("Smooth", {
Title = "Smoothness",
Default = 0.14,
Min = 0.01,
Max = 0.5,
Rounding = 2,
Callback = function(v) S.Smoothness = v end
})
Tabs.Combat:AddDropdown("AimPart", {
Title = "Aim Part",
Values = {"Head", "HumanoidRootPart"},
Default = 1,
Callback = function(v) S.AimPart = v end
})
Tabs.Combat:AddToggle("ShowFOV", {
Title = "Show FOV Circle",
Default = true,
Callback = function(v)
S.ShowFOV = v
if FOVCircle then FOVCircle.Visible = S.Aimbot and v end
end
})
Tabs.Combat:AddToggle("FOVRainbow", {
Title = "FOV Rainbow",
Default = false,
Callback = function(v) S.FOVRainbow = v end
})
Tabs.Combat:AddSection("Knife / Gun")
Tabs.Combat:AddToggle("AuraEnable", {
Title = "Knife Aura",
Default = false,
Callback = function(v)
S.KnifeAura = v
if Options.HomeAura then Options.HomeAura:SetValue(v) end
end
})
Tabs.Combat:AddSlider("AuraDist", {
Title = "Aura Distance",
Default = 12,
Min = 5,
Max = 40,
Rounding = 0,
Callback = function(v) S.AuraDist = v end
})
Tabs.Combat:AddToggle("AutoStab", {
Title = "Auto Stab",
Default = false,
Callback = function(v) S.AutoStab = v end
})
Tabs.Combat:AddToggle("AutoShoot", {
Title = "Auto Shoot Murderer",
Default = false,
Callback = function(v) S.AutoShoot = v end
})
Tabs.Combat:AddToggle("KillAll", {
Title = "Kill All (Aura)",
Default = false,
Callback = function(v) S.KillAll = v end
})
end
-- ======================== VISUALS ========================
do
Tabs.Visuals:AddSection("Player ESP")
Tabs.Visuals:AddToggle("ESPEnable", {
Title = "Enable ESP",
Default = true,
Callback = function(v)
S.ESP = v
if Options.HomeESP then Options.HomeESP:SetValue(v) end
end
})
Tabs.Visuals:AddToggle("RoleESP", {
Title = "Show Role Tag",
Default = true,
Callback = function(v) S.RoleESP = v end
})
Tabs.Visuals:AddToggle("BoxESP", {
Title = "Box",
Default = true,
Callback = function(v) S.Box = v end
})
Tabs.Visuals:AddToggle("SkelESP", {
Title = "Skeleton",
Default = false,
Callback = function(v) S.Skeleton = v end
})
Tabs.Visuals:AddToggle("TracerESP", {
Title = "Tracers",
Default = true,
Callback = function(v) S.Tracer = v end
})
Tabs.Visuals:AddToggle("NameESP", {
Title = "Name",
Default = true,
Callback = function(v) S.Name = v end
})
Tabs.Visuals:AddToggle("DistESP", {
Title = "Distance",
Default = true,
Callback = function(v) S.Distance = v end
})
Tabs.Visuals:AddToggle("HealthESP", {
Title = "Health Bar",
Default = true,
Callback = function(v) S.Health = v end
})
Tabs.Visuals:AddSection("World ESP")
Tabs.Visuals:AddToggle("CoinESP", {
Title = "Coin ESP",
Default = true,
Callback = function(v) S.CoinESP = v end
})
Tabs.Visuals:AddToggle("GunESP", {
Title = "Gun Drop ESP",
Default = true,
Callback = function(v) S.GunESP = v end
})
Tabs.Visuals:AddSection("Colors")
Tabs.Visuals:AddColorpicker("MurdererCol", {
Title = "Murderer",
Default = S.MurdererColor,
Callback = function(v) S.MurdererColor = v end
})
Tabs.Visuals:AddColorpicker("SheriffCol", {
Title = "Sheriff",
Default = S.SheriffColor,
Callback = function(v) S.SheriffColor = v end
})
Tabs.Visuals:AddColorpicker("InnocentCol", {
Title = "Innocent",
Default = S.InnocentColor,
Callback = function(v) S.InnocentColor = v end
})
end
-- ======================== FARM ========================
do
Tabs.Farm:AddSection("Coins")
Tabs.Farm:AddToggle("FarmEnable", {
Title = "Auto Farm Coins",
Default = false,
Callback = function(v)
S.AutoFarm = v
if Options.HomeFarm then Options.HomeFarm:SetValue(v) end
end
})
Tabs.Farm:AddDropdown("FarmMode", {
Title = "Farm Mode",
Values = {"Nearest", "Teleport"},
Default = 1,
Callback = function(v) S.FarmMode = v end
})
Tabs.Farm:AddToggle("AutoGrabGun", {
Title = "Auto Grab Dropped Gun",
Default = true,
Callback = function(v) S.AutoGrabGun = v end
})
Tabs.Farm:AddButton({
Title = "TP to Nearest Coin",
Callback = function()
local myHRP = getHRP(LocalPlayer)
if not myHRP then return end
local best, bestD = nil, math.huge
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("BasePart") and string.lower(obj.Name):find("coin") then
local d = (obj.Position - myHRP.Position).Magnitude
if d < bestD then bestD = d best = obj end
end
end
if best then
myHRP.CFrame = CFrame.new(best.Position + Vector3.new(0, 3, 0))
end
end
})
Tabs.Farm:AddButton({
Title = "TP to Dropped Gun",
Callback = function()
local myHRP = getHRP(LocalPlayer)
if not myHRP then return end
for _, obj in ipairs(Workspace:GetDescendants()) do
local n = string.lower(obj.Name)
if n:find("gun") or n:find("revolver") then
local part = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart")
if part then
myHRP.CFrame = CFrame.new(part.Position + Vector3.new(0, 3, 0))
break
end
end
end
end
})
end
-- ======================== PLAYER ========================
do
Tabs.Player:AddSection("Movement")
Tabs.Player:AddToggle("FlyEnable", {
Title = "Fly",
Default = false,
Callback = function(v)
S.Fly = v
if Options.HomeFly then Options.HomeFly:SetValue(v) end
end
})
Tabs.Player:AddSlider("FlySpeed", {
Title = "Fly Speed",
Default = 70,
Min = 20,
Max = 200,
Rounding = 0,
Callback = function(v) S.FlySpeed = v end
})
Tabs.Player:AddToggle("NoclipEnable", {
Title = "Noclip",
Default = false,
Callback = function(v) S.Noclip = v end
})
Tabs.Player:AddToggle("SpeedEnable", {
Title = "Speed",
Default = false,
Callback = function(v) S.Speed = v end
})
Tabs.Player:AddSlider("WalkSpeed", {
Title = "Walk Speed",
Default = 26,
Min = 16,
Max = 100,
Rounding = 0,
Callback = function(v) S.WalkSpeed = v end
})
Tabs.Player:AddToggle("InfJump", {
Title = "Infinite Jump",
Default = false,
Callback = function(v) S.InfiniteJump = v end
})
Tabs.Player:AddSection("Teleport")
Tabs.Player:AddButton({
Title = "TP to Murderer",
Callback = function()
local myHRP = getHRP(LocalPlayer)
if not myHRP then return end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and getRole(plr) == "Murderer" and isAlive(plr) then
local hrp = getHRP(plr)
if hrp then
myHRP.CFrame = hrp.CFrame * CFrame.new(0, 0, 3)
break
end
end
end
end
})
Tabs.Player:AddButton({
Title = "TP to Sheriff",
Callback = function()
local myHRP = getHRP(LocalPlayer)
if not myHRP then return end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and getRole(plr) == "Sheriff" and isAlive(plr) then
local hrp = getHRP(plr)
if hrp then
myHRP.CFrame = hrp.CFrame * CFrame.new(0, 0, 3)
break
end
end
end
end
})
end
-- ======================== CUSTOMIZE ========================
do
Tabs.Customize:AddSection("Theme")
Tabs.Customize:AddDropdown("ThemeSelect", {
Title = "Theme Preset",
Values = {"Dark", "Darker", "Amethyst", "Aqua", "Rose", "Light"},
Default = 2,
Callback = function(v)
S.ThemeName = v
pcall(function() Fluent:SetTheme(v) end)
end
})
Tabs.Customize:AddColorpicker("AccentPick", {
Title = "Accent Color",
Default = S.AccentColor,
Callback = function(v)
S.AccentColor = v
S.FOVColor = v
S.DiscordLEDColor = v
if FOVCircle then FOVCircle.Color = v end
if DiscordLEDText then DiscordLEDText.Color = v end
if DiscordLEDGlow then DiscordLEDGlow.Color = v end
if DiscordLEDLine then DiscordLEDLine.Color = v end
end
})
Tabs.Customize:AddColorpicker("FOVColorPick", {
Title = "FOV Circle Color",
Default = S.FOVColor,
Callback = function(v)
S.FOVColor = v
if FOVCircle then FOVCircle.Color = v end
end
})
Tabs.Customize:AddToggle("DiscordLEDToggle", {
Title = "Discord LED",
Default = true,
Callback = function(v)
S.DiscordLED = v
if DiscordLEDText then DiscordLEDText.Visible = v end
if DiscordLEDGlow then DiscordLEDGlow.Visible = v end
if DiscordLEDLine then DiscordLEDLine.Visible = v end
end
})
Tabs.Customize:AddColorpicker("LEDColor", {
Title = "LED Color",
Default = S.DiscordLEDColor,
Callback = function(v)
S.DiscordLEDColor = v
if DiscordLEDText then DiscordLEDText.Color = v end
if DiscordLEDGlow then DiscordLEDGlow.Color = v end
if DiscordLEDLine then DiscordLEDLine.Color = v end
end
})
Tabs.Customize:AddParagraph({
Title = "Note",
Content = "Accent updates FOV + LED live. Theme presets reload Fluent colors."
})
end
-- ======================== MISC ========================
do
Tabs.Misc:AddSection("World")
Tabs.Misc:AddToggle("FullBright", {
Title = "Full Bright",
Default = false,
Callback = function(v)
S.FullBright = v
applyWorld()
end
})
Tabs.Misc:AddToggle("NoFog", {
Title = "No Fog",
Default = false,
Callback = function(v)
S.NoFog = v
applyWorld()
end
})
Tabs.Misc:AddSection("Config")
Tabs.Misc:AddButton({
Title = "Copy Discord Link",
Callback = function()
pcall(function() if setclipboard then setclipboard(S.DiscordLink) end end)
Fluent:Notify({ Title = "ELITE", Content = "Copied discord.gg/JyHTa3M7h", Duration = 2 })
end
})
end
-- ======================== ABOUT ========================
do
Tabs.About:AddParagraph({
Title = "ELITE SCRIPTS",
Content = "Murder Mystery 2 buildnFluent UI · compact dense layoutnKeyless · UNC universal"
})
Tabs.About:AddParagraph({
Title = "Features",
Content = "Role ESP · Coin/Gun ESP · Aimbot/SilentnKnife Aura · Auto Farm · Auto ShootnFly/Noclip/Speed · Full Customize"
})
Tabs.About:AddParagraph({
Title = "Discord",
Content = "discord.gg/JyHTa3M7h"
})
Tabs.About:AddButton({
Title = "Join Discord",
Callback = function()
pcall(function() if setclipboard then setclipboard(S.DiscordLink) end end)
Fluent:Notify({ Title = "ELITE SCRIPTS", Content = "Link copied", Duration = 2 })
end
})
end
-- Managers
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
SaveManager:IgnoreThemeSettings()
InterfaceManager:SetFolder("ELITE_MM2")
SaveManager:SetFolder("ELITE_MM2")
InterfaceManager:BuildInterfaceSection(Tabs.Misc)
SaveManager:BuildConfigSection(Tabs.Misc)
Window:SelectTab(1)
Fluent:Notify({
Title = "ELITE SCRIPTS",
Content = "Murder Mystery 2 loaded",
Duration = 4
})
-- ======================== MAIN LOOP ========================
RunService.RenderStepped:Connect(function()
-- FOV
if FOVCircle then
FOVCircle.Position = Vector2.new(Mouse.X, Mouse.Y)
FOVCircle.Radius = S.FOV
if S.FOVRainbow then
local h = (tick() * 0.4) % 1
FOVCircle.Color = Color3.fromHSV(h, 0.85, 1)
else
FOVCircle.Color = S.FOVColor
end
FOVCircle.Visible = S.Aimbot and S.ShowFOV
end
-- Aim
local target = getClosestInFOV(S.TargetRole)
if S.Aimbot and (HoldingAim or S.AlwaysOn) and target then
aimAt(target)
elseif S.SilentAim and target then
aimAt(target)
end
knifeAuraStep()
autoShootStep()
farmStep()
updatePlayerESP()
updateWorldESP()
flyStep()
noclipStep()
speedStep()
-- Discord LED
if S.DiscordLED and DiscordLEDText then
local vs = Camera.ViewportSize
local y, x = vs.Y - 18, vs.X / 2
DiscordLEDText.Position = Vector2.new(x, y)
if DiscordLEDGlow then
DiscordLEDGlow.Position = Vector2.new(x, y)
DiscordLEDGlow.Color = S.DiscordLEDColor
end
DiscordLEDText.Color = S.DiscordLEDColor
if DiscordLEDLine then
DiscordLEDLine.From = Vector2.new(x - 70, y - 10)
DiscordLEDLine.To = Vector2.new(x + 70, y - 10)
DiscordLEDLine.Color = S.DiscordLEDColor
end
end
end)
Players.PlayerRemoving:Connect(function(plr)
clearESP(plr)
roleCache[plr] = nil
end)
pcall(function() SaveManager:LoadAutoloadConfig() end)
print("[ELITE SCRIPTS] Murder Mystery 2 loaded — Home tab active")
How to Use This Script
1
Open Your Executor
Launch a supported executor and attach it to a running Roblox session.
2
Copy the Script
Click the Copy button above. The full loadstring is placed on your clipboard instantly.
3
Paste & Execute
Paste it into the executor and hit Execute. The hub window opens inside the game.
Features
Compatible Executors
Similar Scripts
3
2 days ago
Key System
Murder Mystery 2 Script – Insta Win, Auto Farm, Kill All & ESP
Murder Mystery 2
1
7 days ago
No Key
Murder Mystery 2 Script – Keyless, Auto Farm, Coin Aura & Gun Grab
Murder Mystery 2
19
1 week ago
No Key
RATTEX Script – Murder Mystery 2, Auto Farm, Silent Aim & Kill Aura
Murder Mystery 2
7
2 weeks ago
Key System
ZekeHub Mass Farm Script MM2 Coin Farm, Auto Trade & Battle Pass
Murder Mystery 2
75
2 weeks ago
No Key
Murder Mystery DUELS Script DDARIUSPR Keyless, Silent Aim & ESP
Murder Mystery 2
25
2 weeks ago
No Key
Happy Hub Murder Mystery 2 Script Keyless, Open Source, Aimbot & Coin Farm
Murder Mystery 2
Comments
0Join the discussion about this script.
No comments yet. Be the first to comment!