-- [[ Rscripts Risk Notice ]]
-- This script is not verified by rscripts.net. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End Rscripts Risk Notice ]]
--========================================================--
-- VECTOR HUB: MURDER MYSTERY 2 (FIXED) --
--========================================================--
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Camera = Workspace.CurrentCamera
------------------------------------------------------------
-- CONFIGURATION & STATES
------------------------------------------------------------
local Config = {
-- Murderer Tab
KillAura = false,
KillAuraRange = 15,
TeleportKillAll = false,
-- Sheriff Tab
AutoShootMurderer = false,
AimAssist = false,
AimSmoothness = 0.2,
AutoGrabGun = false,
-- ESP Tab
PlayerESP = false,
RoleESP = false,
GunESP = false,
-- Movement Tab
SpeedBoost = false,
WalkSpeedValue = 24,
NoClip = false,
-- Misc
AntiAFK = true
}
local ESP_Tags = {}
local Highlights = {}
local Connections = {}
local LastShotTime = 0
-- Color Palette
local Theme = {
Background = Color3.fromRGB(11, 12, 16),
CardBg = Color3.fromRGB(18, 20, 26),
TopBarBg = Color3.fromRGB(15, 17, 23),
SidebarBg = Color3.fromRGB(14, 15, 20),
Accent = Color3.fromRGB(0, 229, 255),
AccentGlow = Color3.fromRGB(0, 180, 216),
TextBright = Color3.fromRGB(240, 245, 255),
TextMuted = Color3.fromRGB(120, 130, 150),
Border = Color3.fromRGB(28, 32, 45),
ToggleOff = Color3.fromRGB(30, 34, 45)
}
------------------------------------------------------------
-- MM2 UTILITY FUNCTIONS
------------------------------------------------------------
local function GetPlayerRole(player)
if not player or not player.Character then return "Innocent" end
local char = player.Character
local backpack = player:FindFirstChild("Backpack")
if char:FindFirstChild("Knife") or (backpack and backpack:FindFirstChild("Knife")) then
return "Murderer"
elseif char:FindFirstChild("Gun") or (backpack and backpack:FindFirstChild("Gun")) then
return "Sheriff"
end
return "Innocent"
end
local function GetRoleColor(role)
if role == "Murderer" then
return Color3.fromRGB(255, 65, 84)
elseif role == "Sheriff" then
return Color3.fromRGB(0, 150, 255)
else
return Color3.fromRGB(46, 204, 113)
end
end
local function GetMurderer()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and GetPlayerRole(player) == "Murderer" then
return player
end
end
return nil
end
local function GetDroppedGun()
for _, obj in ipairs(Workspace:GetChildren()) do
if obj.Name == "GunDrop" or (obj:IsA("Tool") and obj.Name == "Gun") then
return obj:IsA("BasePart") and obj or obj:FindFirstChild("Handle")
end
end
return nil
end
local function GetClosestTargetForAim()
local closestPlayer = nil
local shortestDistance = math.huge
local myRole = GetPlayerRole(LocalPlayer)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local targetRole = GetPlayerRole(player)
local shouldTarget = false
if myRole == "Sheriff" then
shouldTarget = (targetRole == "Murderer")
else
shouldTarget = (targetRole ~= "Innocent")
end
if shouldTarget then
local pos, onScreen = Camera:WorldToViewportPoint(player.Character.HumanoidRootPart.Position)
if onScreen then
local mouseDist = (Vector2.new(pos.X, pos.Y) - Vector2.new(Mouse.X, Mouse.Y)).Magnitude
if mouseDist < shortestDistance then
shortestDistance = mouseDist
closestPlayer = player
end
end
end
end
end
return closestPlayer
end
------------------------------------------------------------
-- AUTOMATION & COMBAT ENGINE
------------------------------------------------------------
table.insert(Connections, RunService.Stepped:Connect(function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
if char and root and humanoid then
-- Speed Boost
if Config.SpeedBoost then
humanoid.WalkSpeed = Config.WalkSpeedValue
end
-- Noclip
if Config.NoClip or Config.TeleportKillAll then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
-- Auto Grab Gun
if Config.AutoGrabGun then
local droppedGun = GetDroppedGun()
if droppedGun then
root.CFrame = droppedGun.CFrame
end
end
-- Teleport Kill All (Murderer)
if Config.TeleportKillAll and GetPlayerRole(LocalPlayer) == "Murderer" then
local knife = char:FindFirstChild("Knife") or (LocalPlayer.Backpack and LocalPlayer.Backpack:FindFirstChild("Knife"))
if knife then
if knife.Parent ~= char then knife.Parent = char end
for _, target in ipairs(Players:GetPlayers()) do
if target ~= LocalPlayer and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local tHum = target.Character:FindFirstChildOfClass("Humanoid")
local tRoot = target.Character.HumanoidRootPart
if tHum and tHum.Health > 0 then
root.CFrame = tRoot.CFrame * CFrame.new(0, 0, 1.5)
knife:Activate()
firetouchinterest(knife.Handle, tRoot, 0)
firetouchinterest(knife.Handle, tRoot, 1)
task.wait(0.08)
end
end
end
end
end
-- Knife Kill Aura (Murderer)
if Config.KillAura and GetPlayerRole(LocalPlayer) == "Murderer" and not Config.TeleportKillAll then
local knife = char:FindFirstChild("Knife") or (LocalPlayer.Backpack and LocalPlayer.Backpack:FindFirstChild("Knife"))
if knife then
if knife.Parent ~= char then knife.Parent = char end
for _, target in ipairs(Players:GetPlayers()) do
if target ~= LocalPlayer and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local tRoot = target.Character.HumanoidRootPart
local dist = (root.Position - tRoot.Position).Magnitude
if dist <= Config.KillAuraRange then
knife:Activate()
firetouchinterest(knife.Handle, tRoot, 0)
firetouchinterest(knife.Handle, tRoot, 1)
end
end
end
end
end
-- Direct Auto Shoot Murderer (Sheriff)
if Config.AutoShootMurderer and GetPlayerRole(LocalPlayer) == "Sheriff" then
local murderer = GetMurderer()
if murderer and murderer.Character and murderer.Character:FindFirstChild("HumanoidRootPart") then
local mHum = murderer.Character:FindFirstChildOfClass("Humanoid")
local mRoot = murderer.Character.HumanoidRootPart
if mHum and mHum.Health > 0 then
local gun = char:FindFirstChild("Gun") or (LocalPlayer.Backpack and LocalPlayer.Backpack:FindFirstChild("Gun")) or char:FindFirstChildOfClass("Tool")
if gun and (gun.Name == "Gun" or gun:FindFirstChild("GunScript")) then
if gun.Parent ~= char then
gun.Parent = char
end
Camera.CFrame = CFrame.new(Camera.CFrame.Position, mRoot.Position)
if tick() - LastShotTime >= 0.3 then
gun:Activate()
LastShotTime = tick()
end
end
end
end
end
end
end))
-- Aim Assist Logic
table.insert(Connections, RunService.RenderStepped:Connect(function()
if Config.AimAssist and UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then
local target = GetClosestTargetForAim()
if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
local targetPos = target.Character.HumanoidRootPart.Position
local currentCFrame = Camera.CFrame
local targetCFrame = CFrame.new(currentCFrame.Position, targetPos)
Camera.CFrame = currentCFrame:Lerp(targetCFrame, Config.AimSmoothness)
end
end
end))
-- Anti-AFK
table.insert(Connections, LocalPlayer.Idled:Connect(function()
if Config.AntiAFK then
local VirtualUser = game:GetService("VirtualUser")
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end
end))
------------------------------------------------------------
-- ESP RENDER ENGINE
------------------------------------------------------------
table.insert(Connections, RunService.RenderStepped:Connect(function()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local char = player.Character
local role = GetPlayerRole(player)
local color = GetRoleColor(role)
if Config.PlayerESP or Config.RoleESP then
if not Highlights[player] or Highlights[player].Parent ~= char then
if Highlights[player] then pcall(function() Highlights[player]:Destroy() end) end
local hl = Instance.new("Highlight")
hl.Name = "VectorHub_MM2_ESP"
hl.FillTransparency = 0.6
hl.OutlineTransparency = 0.1
hl.Parent = char
Highlights[player] = hl
end
Highlights[player].FillColor = color
Highlights[player].OutlineColor = color
else
if Highlights[player] then
pcall(function() Highlights[player]:Destroy() end)
Highlights[player] = nil
end
end
end
end
local droppedGun = GetDroppedGun()
if droppedGun and Config.GunESP then
if not ESP_Tags["DroppedGun"] then
local bb = Instance.new("BillboardGui")
bb.Name = "VectorGunESP"
bb.Size = UDim2.fromOffset(120, 30)
bb.StudsOffset = Vector3.new(0, 3, 0)
bb.AlwaysOnTop = true
local txt = Instance.new("TextLabel")
txt.Size = UDim2.fromScale(1, 1)
txt.BackgroundTransparency = 1
txt.TextColor3 = Color3.fromRGB(255, 215, 0)
txt.Font = Enum.Font.GothamBold
txt.TextSize = 12
txt.Text = "🔫 DROPPED GUN"
txt.Parent = bb
bb.Parent = droppedGun
ESP_Tags["DroppedGun"] = bb
end
else
if ESP_Tags["DroppedGun"] then
pcall(function() ESP_Tags["DroppedGun"]:Destroy() end)
ESP_Tags["DroppedGun"] = nil
end
end
end))
------------------------------------------------------------
-- ULTRA CLEAN UI FRAMEWORK
------------------------------------------------------------
local GUI = Instance.new("ScreenGui")
GUI.Name = "VectorHubMM2_Clean"
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.Parent = LocalPlayer:WaitForChild("PlayerGui")
local Main = Instance.new("Frame")
Main.Name = "Main"
Main.Size = UDim2.fromOffset(520, 360)
Main.Position = UDim2.new(0.5, -260, 0.5, -180)
Main.BackgroundColor3 = Theme.Background
Main.BorderSizePixel = 0
Main.ClipsDescendants = true
Main.Parent = GUI
Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 12)
local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Theme.Border
MainStroke.Thickness = 1.2
MainStroke.Parent = Main
-- TopBar
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 48)
TopBar.BackgroundColor3 = Theme.TopBarBg
TopBar.BorderSizePixel = 0
TopBar.Parent = Main
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(0, 250, 1, 0)
Title.Position = UDim2.fromOffset(18, 0)
Title.BackgroundTransparency = 1
Title.Text = "VECTOR HUB | MM2"
Title.RichText = true
Title.TextColor3 = Theme.TextBright
Title.TextSize = 15
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TopBar
-- Header Controls
local TopControlContainer = Instance.new("Frame")
TopControlContainer.Size = UDim2.new(0, 70, 1, 0)
TopControlContainer.Position = UDim2.new(1, -78, 0, 0)
TopControlContainer.BackgroundTransparency = 1
TopControlContainer.Parent = TopBar
local TopControlLayout = Instance.new("UIListLayout")
TopControlLayout.FillDirection = Enum.FillDirection.Horizontal
TopControlLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
TopControlLayout.VerticalAlignment = Enum.VerticalAlignment.Center
TopControlLayout.Padding = UDim.new(0, 6)
TopControlLayout.Parent = TopControlContainer
local CollapseBtn = Instance.new("TextButton")
CollapseBtn.Size = UDim2.fromOffset(26, 26)
CollapseBtn.BackgroundColor3 = Theme.CardBg
CollapseBtn.Text = "-"
CollapseBtn.TextColor3 = Theme.TextBright
CollapseBtn.Font = Enum.Font.GothamBold
CollapseBtn.TextSize = 14
CollapseBtn.Parent = TopControlContainer
Instance.new("UICorner", CollapseBtn).CornerRadius = UDim.new(0, 6)
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.fromOffset(26, 26)
CloseBtn.BackgroundColor3 = Color3.fromRGB(255, 65, 84)
CloseBtn.Text = "✕"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 11
CloseBtn.Parent = TopControlContainer
Instance.new("UICorner", CloseBtn).CornerRadius = UDim.new(0, 6)
-- Sidebar
local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 130, 1, -48)
Sidebar.Position = UDim2.fromOffset(0, 48)
Sidebar.BackgroundColor3 = Theme.SidebarBg
Sidebar.BorderSizePixel = 0
Sidebar.Parent = Main
local SidebarList = Instance.new("UIListLayout")
SidebarList.Padding = UDim.new(0, 6)
SidebarList.HorizontalAlignment = Enum.HorizontalAlignment.Center
SidebarList.Parent = Sidebar
local SidebarPadding = Instance.new("UIPadding")
SidebarPadding.PaddingTop = UDim.new(0, 12)
SidebarPadding.Parent = Sidebar
-- Tab Container
local TabContainer = Instance.new("Frame")
TabContainer.Size = UDim2.new(1, -142, 1, -60)
TabContainer.Position = UDim2.fromOffset(136, 54)
TabContainer.BackgroundTransparency = 1
TabContainer.Parent = Main
------------------------------------------------------------
-- COLLAPSE & CLOSE
------------------------------------------------------------
local IsCollapsed = false
CollapseBtn.MouseButton1Click:Connect(function()
IsCollapsed = not IsCollapsed
if IsCollapsed then
TweenService:Create(Main, TweenInfo.new(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out), {
Size = UDim2.fromOffset(520, 48)
}):Play()
Sidebar.Visible = false
TabContainer.Visible = false
CollapseBtn.Text = "+"
else
TweenService:Create(Main, TweenInfo.new(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out), {
Size = UDim2.fromOffset(520, 360)
}):Play()
task.delay(0.15, function()
Sidebar.Visible = true
TabContainer.Visible = true
end)
CollapseBtn.Text = "-"
end
end)
CloseBtn.MouseButton1Click:Connect(function()
for _, hl in pairs(Highlights) do pcall(function() hl:Destroy() end) end
for _, esp in pairs(ESP_Tags) do pcall(function() esp:Destroy() end) end
for _, conn in ipairs(Connections) do conn:Disconnect() end
GUI:Destroy()
end)
------------------------------------------------------------
-- TAB ENGINE
------------------------------------------------------------
local Tabs = {}
local TabButtons = {}
local function CreateTab(Name)
local TabFrame = Instance.new("ScrollingFrame")
TabFrame.Size = UDim2.new(1, 0, 1, 0)
TabFrame.BackgroundTransparency = 1
TabFrame.BorderSizePixel = 0
TabFrame.ScrollBarThickness = 2
TabFrame.ScrollBarImageColor3 = Theme.Accent
TabFrame.Visible = false
TabFrame.Parent = TabContainer
local Layout = Instance.new("UIListLayout")
Layout.Padding = UDim.new(0, 8)
Layout.Parent = TabFrame
local TabBtn = Instance.new("TextButton")
TabBtn.Size = UDim2.new(1, -16, 0, 32)
TabBtn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
TabBtn.BackgroundTransparency = 1
TabBtn.Text = Name
TabBtn.TextColor3 = Theme.TextMuted
TabBtn.Font = Enum.Font.GothamMedium
TabBtn.TextSize = 12
TabBtn.Parent = Sidebar
Instance.new("UICorner", TabBtn).CornerRadius = UDim.new(0, 6)
TabBtn.MouseButton1Click:Connect(function()
for _, t in pairs(Tabs) do t.Visible = false end
for _, b in pairs(TabButtons) do
TweenService:Create(b, TweenInfo.new(0.2), {BackgroundTransparency = 1, TextColor3 = Theme.TextMuted}):Play()
end
TabFrame.Visible = true
TweenService:Create(TabBtn, TweenInfo.new(0.2), {BackgroundTransparency = 0.8, TextColor3 = Theme.Accent}):Play()
end)
table.insert(Tabs, TabFrame)
table.insert(TabButtons, TabBtn)
return TabFrame
end
local MurdererTab = CreateTab("Murderer")
local SheriffTab = CreateTab("Sheriff")
local ESPTab = CreateTab("Visuals / ESP")
local MovementTab = CreateTab("Movement")
Tabs[1].Visible = true
TabButtons[1].BackgroundTransparency = 0.8
TabButtons[1].TextColor3 = Theme.Accent
------------------------------------------------------------
-- MODERN CONTROL BUILDERS
------------------------------------------------------------
local function AddToggle(Parent, Name, Default, Callback)
local Row = Instance.new("Frame")
Row.Size = UDim2.new(1, -6, 0, 40)
Row.BackgroundColor3 = Theme.CardBg
Row.Parent = Parent
Instance.new("UICorner", Row).CornerRadius = UDim.new(0, 8)
local Stroke = Instance.new("UIStroke")
Stroke.Color = Theme.Border
Stroke.Thickness = 1
Stroke.Parent = Row
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, -60, 1, 0)
Label.Position = UDim2.fromOffset(12, 0)
Label.BackgroundTransparency = 1
Label.Text = Name
Label.TextColor3 = Theme.TextBright
Label.TextSize = 12
Label.Font = Enum.Font.GothamMedium
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = Row
local ToggleBg = Instance.new("Frame")
ToggleBg.Size = UDim2.fromOffset(36, 18)
ToggleBg.Position = UDim2.new(1, -48, 0.5, -9)
ToggleBg.BackgroundColor3 = Default and Theme.Accent or Theme.ToggleOff
ToggleBg.Parent = Row
Instance.new("UICorner", ToggleBg).CornerRadius = UDim.new(1, 0)
local Indicator = Instance.new("Frame")
Indicator.Size = UDim2.fromOffset(14, 14)
Indicator.Position = Default and UDim2.fromOffset(19, 2) or UDim2.fromOffset(3, 2)
Indicator.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Indicator.Parent = ToggleBg
Instance.new("UICorner", Indicator).CornerRadius = UDim.new(1, 0)
local ClickArea = Instance.new("TextButton")
ClickArea.Size = UDim2.fromScale(1, 1)
ClickArea.BackgroundTransparency = 1
ClickArea.Text = ""
ClickArea.Parent = Row
local State = Default
ClickArea.MouseButton1Click:Connect(function()
State = not State
TweenService:Create(ToggleBg, TweenInfo.new(0.2), {BackgroundColor3 = State and Theme.Accent or Theme.ToggleOff}):Play()
TweenService:Create(Indicator, TweenInfo.new(0.2), {Position = State and UDim2.fromOffset(19, 2) or UDim2.fromOffset(3, 2)}):Play()
Callback(State)
end)
end
local function AddSlider(Parent, Name, Min, Max, Default, Callback)
local Row = Instance.new("Frame")
Row.Size = UDim2.new(1, -6, 0, 52)
Row.BackgroundColor3 = Theme.CardBg
Row.Parent = Parent
Instance.new("UICorner", Row).CornerRadius = UDim.new(0, 8)
local Stroke = Instance.new("UIStroke")
Stroke.Color = Theme.Border
Stroke.Thickness = 1
Stroke.Parent = Row
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, -70, 0, 24)
Label.Position = UDim2.fromOffset(12, 4)
Label.BackgroundTransparency = 1
Label.Text = Name
Label.TextColor3 = Theme.TextBright
Label.TextSize = 12
Label.Font = Enum.Font.GothamMedium
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.Parent = Row
local ValueLabel = Instance.new("TextLabel")
ValueLabel.Size = UDim2.new(0, 50, 0, 24)
ValueLabel.Position = UDim2.new(1, -62, 0, 4)
ValueLabel.BackgroundTransparency = 1
ValueLabel.Text = tostring(Default)
ValueLabel.TextColor3 = Theme.Accent
ValueLabel.TextSize = 12
ValueLabel.Font = Enum.Font.GothamBold
ValueLabel.TextXAlignment = Enum.TextXAlignment.Right
ValueLabel.Parent = Row
local Track = Instance.new("Frame")
Track.Size = UDim2.new(1, -24, 0, 4)
Track.Position = UDim2.fromOffset(12, 34)
Track.BackgroundColor3 = Theme.ToggleOff
Track.Parent = Row
Instance.new("UICorner", Track).CornerRadius = UDim.new(1, 0)
local Fill = Instance.new("Frame")
local startScale = (Default - Min) / (Max - Min)
Fill.Size = UDim2.new(startScale, 0, 1, 0)
Fill.BackgroundColor3 = Theme.Accent
Fill.Parent = Track
Instance.new("UICorner", Fill).CornerRadius = UDim.new(1, 0)
local Sliding = false
local function UpdateInput(input)
local scale = math.clamp((input.Position.X - Track.AbsolutePosition.X) / Track.AbsoluteSize.X, 0, 1)
local val = math.floor(Min + (Max - Min) * scale)
Fill.Size = UDim2.new(scale, 0, 1, 0)
ValueLabel.Text = tostring(val)
Callback(val)
end
Track.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then Sliding = true; UpdateInput(input) end
end)
UserInputService.InputChanged:Connect(function(input)
if Sliding and input.UserInputType == Enum.UserInputType.MouseMovement then UpdateInput(input) end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then Sliding = false end
end)
end
------------------------------------------------------------
-- POPULATE CONTROLS
------------------------------------------------------------
-- Murderer Tab
AddToggle(MurdererTab, "Teleport Kill All", Config.TeleportKillAll, function(v) Config.TeleportKillAll = v end)
AddToggle(MurdererTab, "Knife Kill Aura", Config.KillAura, function(v) Config.KillAura = v end)
AddSlider(MurdererTab, "Kill Aura Range", 5, 30, Config.KillAuraRange, function(v) Config.KillAuraRange = v end)
-- Sheriff Tab
AddToggle(SheriffTab, "Auto Shoot Murderer", Config.AutoShootMurderer, function(v) Config.AutoShootMurderer = v end)
AddToggle(SheriffTab, "Gun Aim Assist (Hold RMB)", Config.AimAssist, function(v) Config.AimAssist = v end)
AddToggle(SheriffTab, "Auto Grab Dropped Gun", Config.AutoGrabGun, function(v) Config.AutoGrabGun = v end)
-- Visuals / ESP Tab
AddToggle(ESPTab, "Role ESP (Murderer/Sheriff)", Config.RoleESP, function(v) Config.RoleESP = v end)
AddToggle(ESPTab, "Player ESP", Config.PlayerESP, function(v) Config.PlayerESP = v end)
AddToggle(ESPTab, "Dropped Gun ESP", Config.GunESP, function(v) Config.GunESP = v end)
-- Movement Tab
AddToggle(MovementTab, "Speed Boost", Config.SpeedBoost, function(v) Config.SpeedBoost = v end)
AddSlider(MovementTab, "Walk Speed", 16, 60, Config.WalkSpeedValue, function(v) Config.WalkSpeedValue = v end)
AddToggle(MovementTab, "Noclip", Config.NoClip, function(v) Config.NoClip = v end)
------------------------------------------------------------
-- SMOOTH DRAGGING & KEYBIND
------------------------------------------------------------
local Dragging, DragStart, StartPos
TopBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
Dragging = true
DragStart = input.Position
StartPos = Main.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if Dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - DragStart
Main.Position = UDim2.new(StartPos.X.Scale, StartPos.X.Offset + delta.X, StartPos.Y.Scale, StartPos.Y.Offset + delta.Y)
end
end)
TopBar.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then Dragging = false end
end)
table.insert(Connections, UserInputService.InputBegan:Connect(function(input, processed)
if not processed and input.KeyCode == Enum.KeyCode.RightShift then
Main.Visible = not Main.Visible
end
end))