
Murder Mystery 2 Script – Very very good stuff open source
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
Name = "Murder Mystery 2 OP",
LoadingTitle = "Made by freScript on scriptblox",
LoadingSubtitle = "by frescript",
ConfigurationSaving = {
Enabled = true,
FolderName = MurderMysteryFre, -- Create a custom folder for your hub/game
FileName = "FreScriptsScriptblox"
}
})
local Tab = Window:CreateTab("Trading Stuff", 4483362458) -- Title, Image
local Section = Tab:CreateSection("Trade op")
local TextBox = Tab:CreateInput({
Name = "Player Name",
PlaceholderText = "Enter player name...",
RemoveTextAfterFocusLost = false,
Callback = function(Text)
-- The function that takes place when the input is changed
playerNameTextbox = Text
end,
})
local Button = Tab:CreateButton({
Name = "Force Trade",
Callback = function()
if playerNameTextbox and playerNameTextbox ~= "" then
local player = game.Players:FindFirstChild(playerNameTextbox)
if player then
local args = {
[1] = player
}
game:GetService("ReplicatedStorage"):WaitForChild("Trade"):WaitForChild("SendRequest"):InvokeServer(unpack(args))
game:GetService("ReplicatedStorage"):WaitForChild("Trade"):WaitForChild("AcceptRequest"):FireServer()
Rayfield:Notify({
Title = "Trade System",
Content = "Force Traded Player: " .. playerNameTextbox,
Duration = 5,
Image = 4483362458,
Actions = {
Ignore = {
Name = "Okay!",
Callback = function()
end
},
},
})
else
Rayfield:Notify({
Title = "Trade System",
Content = "Player not found.",
Duration = 5,
Image = 4483362458,
Actions = {
Ignore = {
Name = "Okay!",
Callback = function()
end
},
},
})
end
else
Rayfield:Notify({
Title = "Trade System",
Content = "Please enter a valid player name.",
Duration = 5,
Image = 4483362458,
Actions = {
Ignore = {
Name = "Okay!",
Callback = function()
end
},
},
})
end
end,
})
local Section = Tab:CreateSection("role op")
local Button = Tab:CreateButton({
Name = "Chat Expose Roles",
Callback = function()
local allPlayers = game.Players:GetPlayers()
for _, player in pairs(allPlayers) do
local backpack = player:FindFirstChild("Backpack")
if backpack then
if backpack:FindFirstChild("Knife") then
local args = {
[1] = player.Name .. ": Has The Knife",
[2] = "normalchat"
}
game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest"):FireServer(unpack(args))
end
if backpack:FindFirstChild("Gun") then
local args = {
[1] = player.Name .. ": Has The Gun",
[2] = "normalchat"
}
game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest"):FireServer(unpack(args))
end
end
end
end,
})
local Label = Tab:CreateLabel("Gun Not Dropped") -- Use "Label" instead of "GunLabel"
coroutine.wrap(function()
local gunDropped = false
while wait(1) do
local gunExists = Workspace:FindFirstChild("GunDrop")
if gunExists then
Label:Set("Gun Dropped") -- Update to use "Label" instead of "GunLabel"
-- Only send notification if the gun has been dropped since last check
if not gunDropped then
gunDropped = true
Rayfield:Notify({
Title = "Gun Status",
Content = "Gun Dropped",
Duration = 6.5,
Image = 5578470911,
Actions = {
Ignore = {
Name = "Okay!",
Callback = function()
print("The user tapped Okay!")
end
},
},
})
end
else
Label:Set("Gun Not Dropped") -- Update to use "Label" instead of "GunLabel"
gunDropped = false
end
end
end)()
local MurdererLabel = Tab:CreateLabel("Murderer is: Unknown")
local SheriffLabel = Tab:CreateLabel("Sheriff is: Unknown")
-- Function to check and update the roles based on tools in players' backpacks
local function updateRolesInfo()
while true do
local players = game:GetService("Players"):GetPlayers()
local murderer, sheriff = "Unknown", "Unknown"
for _, player in ipairs(players) do
if player.Character then
local backpack = player.Backpack
if backpack then
for _, tool in ipairs(backpack:GetChildren()) do
if tool:IsA("Tool") then
if tool.Name == "Knife" then
murderer = player.Name
elseif tool.Name == "Gun" then
sheriff = player.Name
end
end
end
end
end
end
MurdererLabel:Set("Murderer is: " .. murderer)
SheriffLabel:Set("Sheriff is: " .. sheriff)
wait(1)
end
end
-- Start updating the Murderer and Sheriff information
coroutine.wrap(updateRolesInfo)()
local ESPFolder = Instance.new("Folder")
ESPFolder.Name = "ESP Holder"
ESPFolder.Parent = game.CoreGui
local function AddBillboard(player)
local Billboard = Instance.new("BillboardGui")
Billboard.Name = player.Name .. "Billboard"
Billboard.AlwaysOnTop = true
Billboard.Size = UDim2.new(0, 200, 0, 50)
Billboard.ExtentsOffset = Vector3.new(0, 3, 0)
Billboard.Enabled = false
Billboard.Parent = ESPFolder
local TextLabel = Instance.new("TextLabel")
TextLabel.TextSize = 20
TextLabel.Text = player.Name
TextLabel.Font = Enum.Font.FredokaOne
TextLabel.BackgroundTransparency = 1
TextLabel.Size = UDim2.new(1, 0, 1, 0)
TextLabel.TextStrokeTransparency = 0
TextLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
TextLabel.Parent = Billboard
repeat
wait()
pcall(function()
Billboard.Adornee = player.Character.Head
if player.Character:FindFirstChild("Knife") or player.Backpack:FindFirstChild("Knife") then
TextLabel.TextColor3 = Color3.new(1, 0, 0)
if getgenv().MurderEsp then
Billboard.Enabled = true
end
elseif player.Character:FindFirstChild("Gun") or player.Backpack:FindFirstChild("Gun") then
TextLabel.TextColor3 = Color3.new(0, 0, 1)
if getgenv().SheriffEsp then
Billboard.Enabled = true
end
else
TextLabel.TextColor3 = Color3.new(0, 1, 0)
if getgenv().AllEsp then
Billboard.Enabled = true
end
end
end)
until not player.Parent
end
for _, player in pairs(game.Players:GetPlayers()) do
if player ~= game.Players.LocalPlayer then
coroutine.wrap(AddBillboard)(player)
end
end
game.Players.PlayerAdded:Connect(function(player)
if player ~= game.Players.LocalPlayer then
coroutine.wrap(AddBillboard)(player)
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local billboard = ESPFolder:FindFirstChild(player.Name .. "Billboard")
if billboard then
billboard:Destroy()
end
end)
local ToggleAllESP = Tab:CreateToggle({
Name = "Every Player ESP",
CurrentValue = false,
Flag = "AllESP",
Callback = function(state)
getgenv().AllEsp = state
for _, billboard in ipairs(ESPFolder:GetChildren()) do
if billboard:IsA("BillboardGui") then
local playerName = billboard.Name:sub(1, -10)
local player = game.Players:FindFirstChild(playerName)
if player and player.Character then
local hasKnife = player.Character:FindFirstChild("Knife") or player.Backpack:FindFirstChild("Knife")
local hasGun = player.Character:FindFirstChild("Gun") or player.Backpack:FindFirstChild("Gun")
if not (hasKnife or hasGun) then
billboard.Enabled = state
end
end
end
end
end,
})
local ToggleMurderESP = Tab:CreateToggle({
Name = "Murder ESP",
CurrentValue = false,
Flag = "MurderESP",
Callback = function(state)
getgenv().MurderEsp = state
for _, billboard in ipairs(ESPFolder:GetChildren()) do
if billboard:IsA("BillboardGui") then
local playerName = billboard.Name:sub(1, -10)
local player = game.Players:FindFirstChild(playerName)
if player and (player.Character:FindFirstChild("Knife") or player.Backpack:FindFirstChild("Knife")) then
billboard.Enabled = state
end
end
end
end,
})
local ToggleSheriffESP = Tab:CreateToggle({
Name = "Sherif ESP",
CurrentValue = false,
Flag = "SheriffESP",
Callback = function(state)
getgenv().SheriffEsp = state
for _, billboard in ipairs(ESPFolder:GetChildren()) do
if billboard:IsA("BillboardGui") then
local playerName = billboard.Name:sub(1, -10)
local player = game.Players:FindFirstChild(playerName)
if player and (player.Character:FindFirstChild("Gun") or player.Backpack:FindFirstChild("Gun")) then
billboard.Enabled = state
end
end
end
end,
})
local Tab = Window:CreateTab("Misc", 4483362458)
local Section = Tab:CreateSection("other very op stuff")
local Button = Tab:CreateButton({
Name = "Get Every Emote",
Callback = function()
local PlayerGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")
local Emotes = PlayerGui:WaitForChild("MainGUI"):WaitForChild("Game"):FindFirstChild("Emotes")
if Emotes then
require(game:GetService("ReplicatedStorage").Modules.EmoteModule).GeneratePage({"headless", "zombie", "zen", "ninja", "floss", "dab", "sit"}, Emotes, "Free Emotes")
Rayfield:Notify({
Title = "Emotes",
Content = "Succesfly added emotes!",
Duration = 6.5,
Image = 4483362458,
Actions = { -- Notification Buttons
Ignore = {
Name = "Okay!",
Callback = function()
end
},
},
})
end
end,
})
local Button = Tab:CreateButton({
Name = "Get Every Gun/Knife!",
Callback = function()
local WeaponOwnRange = {
min = 999999999,
max = 999999999
}
local DataBase, PlayerData = getrenv()._G.Database, getrenv()._G.PlayerData
local newOwned = {}
for i, v in next, DataBase.Item do
newOwned[i] = math.random(WeaponOwnRange.min, WeaponOwnRange.max) -- newOwned[Weapon]: ItemCount
end
local PlayerWeapons = PlayerData.Weapons
game:GetService("RunService"):BindToRenderStep("InventoryUpdate", 0, function()
PlayerWeapons.Owned = newOwned
end)
game.Players.LocalPlayer.Character.Humanoid.Health = 0
ReyField:Notify({
Title = "Weapon Update",
Content = "Got every weapon/gun (Client)",
Duration = 3
})
end,
})How to Execute Murder Mystery 2 Script – Very very good stuff open source
Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.
Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.
Step 3: Join Experience: Launch Roblox and join Murder Mystery 2.
Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.
Created By
View Author ProfileFeatures & Information
Script Changelog (1)
Community Comments (1)
Frequently Asked Questions
How do I execute Murder Mystery 2 Script – Very very good stuff open source in Roblox?
To run Murder Mystery 2 Script – Very very good stuff open source, copy the Lua loadstring from the code viewer above, launch Roblox and join Murder Mystery 2, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.
Is Murder Mystery 2 Script – Very very good stuff open source keyless or does it require an access key?
Murder Mystery 2 Script – Very very good stuff open source requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.
Is Murder Mystery 2 Script – Very very good stuff open source currently safe and working?
This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.






https://discord.com/invite/HUBfmJUA2H