-- ========================================================= -- Murderers vs Sheriff | AIMLOCK + FIXED ROLE ESP -- Android / Delta Executor SAFE -- FULL SCRIPT | NO SNIPPETS -- ========================================================= local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LP = Players.LocalPlayer -- ======================= SETTINGS ======================= local AIM_ENABLED = false local FOV_VALUE = 50 local SNAP_STRENGTH = 0.75 -- ======================= GUI ============================ local gui = Instance.new("ScreenGui", game.CoreGui) gui.Name = "MVSAimGUI" gui.ResetOnSpawn = false local main = Instance.new("Frame", gui) main.Size = UDim2.fromScale(0.45,0.35) main.Position = UDim2.fromScale(0.275,0.325) main.BackgroundColor3 = Color3.fromRGB(25,25,25) main.BorderSizePixel = 0 main.Active = true main.Draggable = true local title = Instance.new("TextLabel", main) title.Size = UDim2.fromScale(1,0.2) title.BackgroundTransparency = 1 title.Text = "Aimlock + ESP" title.TextColor3 = Color3.new(1,1,1) title.TextScaled = true title.Font = Enum.Font.GothamBold local toggle = Instance.new("TextButton", main) toggle.Position = UDim2.fromScale(0.1,0.25) toggle.Size = UDim2.fromScale(0.8,0.2) toggle.Text = "Aimlock : OFF" toggle.Font = Enum.Font.GothamBold toggle.TextScaled = true toggle.BackgroundColor3 = Color3.fromRGB(60,60,60) toggle.TextColor3 = Color3.new(1,1,1) local sliderBG = Instance.new("Frame", main) sliderBG.Position = UDim2.fromScale(0.1,0.55) sliderBG.Size = UDim2.fromScale(0.8,0.08) sliderBG.BackgroundColor3 = Color3.fromRGB(60,60,60) sliderBG.BorderSizePixel = 0 local sliderFill = Instance.new("Frame", sliderBG) sliderFill.BackgroundColor3 = Color3.fromRGB(100,100,255) sliderFill.BorderSizePixel = 0 local sliderBtn = Instance.new("Frame", sliderBG) sliderBtn.Size = UDim2.fromScale(0.05,1) sliderBtn.BackgroundColor3 = Color3.new(1,1,1) sliderBtn.BorderSizePixel = 0 sliderBtn.Active = true local valueText = Instance.new("TextLabel", main) valueText.Position = UDim2.fromScale(0.1,0.65) valueText.Size = UDim2.fromScale(0.8,0.15) valueText.BackgroundTransparency = 1 valueText.TextColor3 = Color3.new(1,1,1) valueText.TextScaled = true valueText.Font = Enum.Font.Gotham -- ======================= FOV CIRCLE ====================== local circle = Drawing.new("Circle") circle.Visible = true circle.Color = Color3.fromRGB(120,120,255) circle.Thickness = 2 circle.NumSides = 64 circle.Filled = false RunService.RenderStepped:Connect(function() circle.Position = Camera.ViewportSize / 2 circle.Radius = 120 + (FOV_VALUE * 1.5) end) -- ======================= GUI LOGIC ======================= local draggingSlider = false toggle.MouseButton1Click:Connect(function() AIM_ENABLED = not AIM_ENABLED toggle.Text = AIM_ENABLED and "Aimlock : ON" or "Aimlock : OFF" end) sliderBtn.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch then draggingSlider = true end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch then draggingSlider = false end end) UserInputService.InputChanged:Connect(function(i) if draggingSlider and i.UserInputType == Enum.UserInputType.Touch then local x = math.clamp( (i.Position.X - sliderBG.AbsolutePosition.X) / sliderBG.AbsoluteSize.X, 0,1 ) sliderFill.Size = UDim2.fromScale(x,1) sliderBtn.Position = UDim2.fromScale(x - 0.025,0) FOV_VALUE = math.floor(x * 100) valueText.Text = "FOV PRIORITY : "..FOV_VALUE end end) -- ======================= ESP CORE (FIXED) ======================= local espCache = {} local function clearESP(player) if espCache[player] then espCache[player]:Destroy() espCache[player] = nil end end local function updateESP(player) if player == LP then return end if not player.Character then return end local char = player.Character local hum = char:FindFirstChild("Humanoid") if not hum or hum.Health <= 0 then clearESP(player) return end local tool = char:FindFirstChildOfClass("Tool") if not tool then clearESP(player) return end local role local lname = tool.Name:lower() if lname:find("knife") then role = "murderer" elseif lname:find("gun") then role = "sheriff" else clearESP(player) return end if espCache[player] then return end local hl = Instance.new("Highlight") hl.Adornee = char hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillTransparency = 0.35 hl.OutlineTransparency = 0 if role == "murderer" then hl.FillColor = Color3.fromRGB(255,50,50) hl.OutlineColor = Color3.fromRGB(255,0,0) else hl.FillColor = Color3.fromRGB(60,120,255) hl.OutlineColor = Color3.fromRGB(0,80,255) end hl.Parent = char espCache[player] = hl end local function watchPlayer(player) player.CharacterAdded:Connect(function(char) task.wait(0.5) updateESP(player) char.ChildAdded:Connect(function() task.wait() updateESP(player) end) local hum = char:WaitForChild("Humanoid") hum.Died:Connect(function() clearESP(player) end) end) if player.Character then updateESP(player) end end for _,p in pairs(Players:GetPlayers()) do watchPlayer(p) end Players.PlayerAdded:Connect(watchPlayer) Players.PlayerRemoving:Connect(clearESP) -- ======================= AIMLOCK ======================= local function wallCheck(pos, target) local rp = RaycastParams.new() rp.FilterDescendantsInstances = {LP.Character, target} rp.FilterType = Enum.RaycastFilterType.Blacklist return not workspace:Raycast(Camera.CFrame.Position, pos - Camera.CFrame.Position, rp) end RunService.RenderStepped:Connect(function() if not AIM_ENABLED then return end if not LP.Character then return end local best, bestScore for _,p in pairs(Players:GetPlayers()) do if p ~= LP and p.Team ~= LP.Team and p.Character then local hum = p.Character:FindFirstChild("Humanoid") local root = p.Character:FindFirstChild("HumanoidRootPart") if hum and root and hum.Health > 0 then local pos, vis = Camera:WorldToViewportPoint(root.Position) if vis and wallCheck(root.Position, p.Character) then local dist = (Vector2.new(pos.X,pos.Y) - Camera.ViewportSize/2).Magnitude local score = (FOV_VALUE/100) * -dist if not bestScore or score > bestScore then bestScore = score best = root end end end end end if best then local cf = Camera.CFrame Camera.CFrame = cf:Lerp(CFrame.new(cf.Position, best.Position), SNAP_STRENGTH) end end)