local Library = loadstring(game:HttpGet("https://[Log in to view URL]"))()
local NotifyLib = loadstring(game:HttpGet("https://[Log in to view URL]"))()
NotifyLib.prompt('تم تفعيل السكربت', 'Loading..', 5)
NotifyLib.prompt('speed-wave', 'شكرا', 5)
local library = loadstring(game:HttpGet("https://[Log in to view URL]"))()

library.rank = "يوسف"
local Wm = library:Watermark(" speed-wave| v" .. library.version ..  " | " .. library:GetUsername() .. " | MM2: " .. library.rank)
local FpsWm = Wm:AddWatermark("fps: " .. library.fps)
coroutine.wrap(function()
    while wait(.75) do
        FpsWm:Text("fps: " .. library.fps)
    end
end)()


local Notif = library:InitNotifications()

for i = 20,0,-1 do 
    task.wait(0.05)
    local LoadingXSX = Notif:Notify("speed-wave Murder Mystery 2", 3, "") -- notification, alert, error, success, information
end 
loadstring(game:HttpGet(("https://[Log in to view URL]")))()
MakeWindow({
  Hub = {
    Title = "speed-wave V1.3 | الجديد 2024 تحديث | Murder Mystery 2",
    Animation = "Hack Evil 🇵🇸"
  },
  Key = {
    KeySystem = false,
    Title = "Key System",
    Description = "",
    KeyLink = "",
    Keys = {"1234"},
    Notifi = {
      Notifications = true,
      CorrectKey = "Running the Script...",
      Incorrectkey = "The key is incorrect",
      CopyKeyLink = "Copied to Clipboard"
    }
  }
})
MinimizeButton({
  Image = "rbxassetid://18393252027",
  Size = {50, 50},
  Color = Color3.fromRGB(10, 10, 10),
  Corner = true,
  Stroke = false,
  StrokeColor = Color3.fromRGB(255, 0, 0)
})
local Main = MakeTab({Name = "Home"})
local Image = AddImageLabel(Main, {
  Name = "speed-wave",
  Image = "rbxassetid://18393252027"
})
local Paragraph = AddParagraph(Main, {"إذا عندك مشكله في السكربت", "bom dia meus manos"})
local Paragraph = AddParagraph(Main, {"تعال على تيليجرام", "bom dia meus manos"})
local section = AddSection(Main, {"•---------»[الكشف]«---------•"})
AddButton(Main, {
  Name = "نسخ رابط قناه",
  Callback = function()
    setclipboard('https://[Log in to view URL]')
  end
})
local Main = MakeTab({Name = "الماب"})
AddButton(Main, {
  Name = "كشف الاعبين",
  Callback = function()
    loadstring(game:HttpGet("https://[Log in to view URL]"))(' Watermelon ?')
  end
})
AddButton(Main, {
  Name = "كشف القاتل والشرف",
  Callback = function()
      -- // Constants \\ --

-- [ Services ] --
local Services = setmetatable({}, {__index = function(Self, Index)
local NewService = game.GetService(game, Index)
if NewService then
Self[Index] = NewService
end
return NewService
end})

-- [ Modules ] --
--[[
local OrnamentalMouse = loadstring(game:HttpGet("https://[Log in to view URL]", true))().new()
OrnamentalMouse.Sensitivity = 0.9
OrnamentalMouse.AutoUpdate = false
]]

-- [ LocalPlayer ] --
local LocalPlayer = Services.Players.LocalPlayer
local Camera = workspace.CurrentCamera

-- [ Weapon Names ] --
local WeaponNames = {
   Knife = {
Index = "Murderer";
Color = Color3.fromRGB(255, 0, 0)
};
Gun = {
Index = "Sheriff";
Color = Color3.fromRGB(0, 0, 255)
};
}

local AttackAnimations = {
   "rbxassetid://2467567750";
   "rbxassetid://1957618848";
   "rbxassetid://2470501967";
   "rbxassetid://2467577524";
}

-- // Variables \\ --
-- [ Roles ] --
local Roles = {
   Murderer = nil;
   Sheriff = nil;
   Closest = nil;
}

local ESPInstances = {}
local ESPToggle = true

local SilentAIMEnabled = true

-- [ Character ] --
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
LocalPlayer.CharacterAdded:Connect(function(Character)
Character = Character
Humanoid = Character:WaitForChild("Humanoid")
end)

-- [ Raycast Parameters ] --
local RaycastParameters = RaycastParams.new()
RaycastParameters.IgnoreWater = true
RaycastParameters.FilterType = Enum.RaycastFilterType.Blacklist
RaycastParameters.FilterDescendantsInstances = {LocalPlayer.Character}

-- // Functions \\ --
-- [ Main ] --
local Functions = {}

-- ESP --
function Functions.ESP(Part, Color)
   if Part:FindFirstChildOfClass('BoxHandleAdornment') then
       return Part:FindFirstChildOfClass('BoxHandleAdornment')
   end

   local Box = Instance.new("BoxHandleAdornment")
   Box.Size = Part.Size + Vector3.new(0.1, 0.1, 0.1)
   Box.Name = "Mesh"
   Box.Visible = ESPToggle
   Box.Adornee = Part
   Box.Color3 = Color
   Box.AlwaysOnTop = true
   Box.ZIndex = 5
   Box.Transparency = 0.5
   Box.Parent = Part

   table.insert(ESPInstances, Box)

   return Box
end

-- Notify Roles --
function Functions.NotifyRoles()
   if Roles.Murderer then
       -- Murderer --
       local Image, Ready = Services.Players:GetUserThumbnailAsync(Roles.Murderer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
       Services.StarterGui:SetCore("SendNotification", {
           Title = 'Murderer';
           Text = Roles.Murderer.Name;
           Icon = Image;
           Duration = 5;
       })
   end

   if Roles.Sheriff then
       -- Sheriff --
       local Image, Ready = Services.Players:GetUserThumbnailAsync(Roles.Sheriff.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
       Services.StarterGui:SetCore("SendNotification", {
           Title = 'Sheriff';
           Text = Roles.Sheriff.Name;
           Icon = Image;
           Duration = 5;
       })
   end
end

-- GetClosestPlayer --
function Functions.GetClosestPlayer(MaxDistance)
   local ClosestPlayer = nil
   local FarthestDistance = MaxDistance or math.huge

   for i, v in ipairs(Services.Players.GetPlayers(Services.Players)) do
       if v ~= LocalPlayer then
           pcall(function()
               local DistanceFromPlayer = (LocalPlayer.Character.PrimaryPart.Position - v.Character.PrimaryPart.Position).Magnitude
               if DistanceFromPlayer < FarthestDistance then
                   FarthestDistance = DistanceFromPlayer
                   ClosestPlayer = v
               end
           end)
       end
   end

   return ClosestPlayer
end

-- [ Event ] --
local EventFunctions = {}

function EventFunctions.Initialize(Player)
   local function CharacterAdded(Character)
       Player:WaitForChild("Backpack").ChildAdded:Connect(function(Child)
           local Role = WeaponNames[Child.Name]
           if Role then
Roles[Role.Index] = Player

               local Cham = Functions.ESP(Player.Character.HumanoidRootPart, Role.Color)

               local Animator = Player.Character:FindFirstChildWhichIsA("Humanoid"):WaitForChild("Animator")
               Animator.AnimationPlayed:Connect(function(AnimationTrack)
                   if (AnimationTrack and AnimationTrack.Animation) == nil then
                       return
                   end

                   if table.find(AttackAnimations, AnimationTrack.Animation.AnimationId) then
                       Cham.Color3 = Color3.fromRGB(255, 0, 255)

                       while true do
                           Services.RunService.Heartbeat:Wait(0.01)
                           local PlayingAnimations = Animator:GetPlayingAnimationTracks()
                           local StillAttacking = false
                           for i,v in ipairs(PlayingAnimations) do
                               if table.find(AttackAnimations, v.Animation.AnimationId) then
                                   StillAttacking = true
                               end
                           end
                           if StillAttacking == false then
                               break
                           end
                       end

                       Cham.Color3 = Role.Color
                   end
               end)
           end
       end)
   end

   CharacterAdded(Player.Character or Player.CharacterAdded:Wait())
   Player.CharacterAdded:Connect(CharacterAdded)
end

function EventFunctions.GunAdded(Child)
   if Child.Name == "GunDrop" then
       Functions.ESP(Child, Color3.fromRGB(255, 255, 255))
   end
end

function EventFunctions.ContextActionService_C(actionName, InputState, inputObject)
if InputState == Enum.UserInputState.End then
return
   end
   
   Functions.NotifyRoles()
end

function EventFunctions.ContextActionService_V(actionName, InputState, inputObject)
if InputState == Enum.UserInputState.End then
return
   end

   if Humanoid.WalkSpeed == 16.5 or Humanoid.WalkSpeed == 16 then
Humanoid.WalkSpeed = 20
else
Humanoid.WalkSpeed = 16.5
   end

   Services.StarterGui:SetCore("SendNotification", {
Title = 'Speed Change';
Text = tostring(Humanoid.WalkSpeed);
Duration = 3;
})
end

function EventFunctions.ContextActionService_B(actionName, InputState, inputObject)
if InputState == Enum.UserInputState.End then
return
   end

   ESPToggle = not ESPToggle
   for i,v in ipairs(ESPInstances) do
       v.Visible = ESPToggle
       if v.Parent == nil then
           table.remove(ESPInstances, i)
       end
   end
end

function EventFunctions.ContextActionService_G(actionName, InputState, inputObject)
   if InputState == Enum.UserInputState.End then
return
   end
   SilentAIMEnabled = not SilentAIMEnabled
   Services.StarterGui:SetCore("SendNotification", {
Title = 'Silent Aim';
Text = "Enabled: " .. tostring(SilentAIMEnabled);
Duration = 3;
})
end

-- // Metatable \\ --
local RawMetatable = getrawmetatable(game)
local OldNameCall = RawMetatable.__namecall
setreadonly(RawMetatable, false)

RawMetatable.__namecall = newcclosure(function(Object, ...)
   local NamecallMethod = getnamecallmethod()
   local Arguments = {...}

   if SilentAIMEnabled == true then
       RaycastParameters.FilterDescendantsInstances = {LocalPlayer.Character}
       if NamecallMethod == "FireServer" and tostring(Object) == "Throw" then
           local Success, Error = pcall(function()
               local Closest = Functions.GetClosestPlayer()
               local PrimaryPart = Closest.Character.PrimaryPart
               local Velocity = PrimaryPart.AssemblyLinearVelocity * Vector3.new(1, 0, 1)
               local Magnitude = (PrimaryPart.Position - LocalPlayer.Character.PrimaryPart.Position).Magnitude
               local Prediction = Velocity * 0.5 * Magnitude / 100
               local Result = workspace.Raycast(workspace, LocalPlayer.Character.PrimaryPart.Position, (PrimaryPart.Position - (LocalPlayer.Character.PrimaryPart.Position + Prediction)).Unit * 200, RaycastParameters)
               Arguments[2] = Result.Position
           end)
           if not Success then
               warn(Error)
           end
       elseif NamecallMethod == "InvokeServer" and tostring(Object) == "ShootGun" and Roles.Murderer then
           local Success, Error = pcall(function()
               local PrimaryPart = Roles.Murderer.Character.PrimaryPart
               local Prediction = PrimaryPart.AssemblyLinearVelocity / 40
               if math.abs(PrimaryPart.AssemblyLinearVelocity.Y) < 10 then
                   Arguments[2] = PrimaryPart.Position + Prediction
               else
                   return "Nullify Remote"
               end
           end)
           if not Success then
               warn(Error)
           elseif Success == "Nullify Remote" then
               warn("Null")
               return
           end
       end
   end

   return OldNameCall(Object, unpack(Arguments))
end)

setreadonly(RawMetatable, true)

-- // Event Listeners \\ --
for i,v in ipairs(Services.Players:GetPlayers()) do
EventFunctions.Initialize(v)
end
Services.Players.PlayerAdded:Connect(EventFunctions.Initialize)

workspace.ChildAdded:Connect(EventFunctions.GunAdded)

-- [ Binds ] --
Services.ContextActionService:BindAction('SprintBind', EventFunctions.ContextActionService_V, false, Enum.KeyCode.V)
Services.ContextActionService:BindAction('NotifyBind', EventFunctions.ContextActionService_C, false, Enum.KeyCode.C)
Services.ContextActionService:BindAction('ESPBind', EventFunctions.ContextActionService_B, false, Enum.KeyCode.B)
Services.ContextActionService:BindAction('AIMBind', EventFunctions.ContextActionService_G, false, Enum.KeyCode.G)

-- // Actions \\ --
  end
})
local section = AddSection(Main, {"•---------»[القتل]«---------•"})
AddButton(Main, {
  Name = "تطير الكل ",
  Callback = function()
    loadstring(game:HttpGet("https://[Log in to view URL]"))()
  end
})

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: