-- [[ 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 ]] -- ==================================================================== -- CLASSIC PRISON HUB - TEAM-CHECKED LOCK-ON, SILENT AIM & FASTER SWITCHER -- ==================================================================== local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = Workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- Remove existing GUI instance if re-executing if PlayerGui:FindFirstChild("SimplePrisonHub") then PlayerGui.SimplePrisonHub:Destroy() end --------------------------------------------------------------------- -- 1. BASE UI SETUP & DRAGGING --------------------------------------------------------------------- local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "SimplePrisonHub" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = PlayerGui -- Toggle Button local LegoButton = Instance.new("TextButton") LegoButton.Name = "LegoStudButton" LegoButton.Size = UDim2.new(0, 45, 0, 45) LegoButton.Position = UDim2.new(0, 10, 0.5, -22) LegoButton.BackgroundColor3 = Color3.fromRGB(200, 0, 0) LegoButton.Text = "HUB" LegoButton.TextColor3 = Color3.fromRGB(255, 255, 255) LegoButton.Font = Enum.Font.SourceSansBold LegoButton.TextSize = 16 LegoButton.Parent = ScreenGui -- Main Frame local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 320, 0, 400) MainFrame.Position = UDim2.new(0.5, -160, 0.5, -200) MainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) MainFrame.BorderSizePixel = 2 MainFrame.Visible = true MainFrame.Parent = ScreenGui -- Title Bar local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 30) Title.BackgroundColor3 = Color3.fromRGB(150, 0, 0) Title.Text = "PRISON HUB" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.SourceSansBold Title.TextSize = 16 Title.Parent = MainFrame LegoButton.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible end) --------------------------------------------------------------------- -- 2. TABS CONFIGURATION --------------------------------------------------------------------- local function createTabButton(text, xPos, parent) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.166, 0, 0, 25) btn.Position = UDim2.new(xPos, 0, 0, 30) btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Text = text btn.Font = Enum.Font.SourceSansBold btn.TextSize, btn.BorderSizePixel = 10, 1 btn.Parent = parent return btn end local tabTpBtn = createTabButton("Teleports", 0, MainFrame) local tabGunsBtn = createTabButton("Guns", 0.166, MainFrame) local tabCombatBtn = createTabButton("Combat", 0.332, MainFrame) local tabEspBtn = createTabButton("ESP", 0.498, MainFrame) local tabPlayersBtn = createTabButton("Players", 0.664, MainFrame) local tabSwitcherBtn = createTabButton("Switcher", 0.83, MainFrame) local function createContentFrame(parent) local frm = Instance.new("ScrollingFrame") frm.Size = UDim2.new(1, 0, 1, -55) frm.Position = UDim2.new(0, 0, 0, 55) frm.BackgroundTransparency = 1 frm.CanvasSize = UDim2.new(0, 0, 1.4, 0) -- Expanded slightly to fit team check buttons frm.Visible = false frm.Parent = parent return frm end local TpFrame = createContentFrame(MainFrame) local GunsFrame = createContentFrame(MainFrame) local CombatFrame = createContentFrame(MainFrame) local EspFrame = createContentFrame(MainFrame) local PlayersFrame = createContentFrame(MainFrame) local SwitcherFrame = createContentFrame(MainFrame) TpFrame.Visible = true local function switchTab(activeFrame) TpFrame.Visible = false GunsFrame.Visible = false CombatFrame.Visible = false EspFrame.Visible = false PlayersFrame.Visible = false SwitcherFrame.Visible = false activeFrame.Visible = true end tabTpBtn.MouseButton1Click:Connect(function() switchTab(TpFrame) end) tabGunsBtn.MouseButton1Click:Connect(function() switchTab(GunsFrame) end) tabCombatBtn.MouseButton1Click:Connect(function() switchTab(CombatFrame) end) tabEspBtn.MouseButton1Click:Connect(function() switchTab(EspFrame) end) tabPlayersBtn.MouseButton1Click:Connect(function() switchTab(PlayersFrame) end) tabSwitcherBtn.MouseButton1Click:Connect(function() switchTab(SwitcherFrame) end) --------------------------------------------------------------------- -- 3. TELEPORT ENGINE & UTILITIES --------------------------------------------------------------------- local function safeTeleport(targetCFrame) local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return end local hrp = char.HumanoidRootPart local startPos = hrp.Position local targetPos = targetCFrame.Position local distance = (targetPos - startPos).Magnitude if distance < 15 then hrp.CFrame = targetCFrame return end local steps = math.clamp(math.floor(distance / 25), 4, 12) for i = 1, steps do if not hrp or not hrp.Parent then break end hrp.AssemblyLinearVelocity = Vector3.new(0, 0.1, 0) hrp.AssemblyAngularVelocity = Vector3.zero hrp.CFrame = CFrame.new(startPos:Lerp(targetPos, i / steps)) task.wait(0.003) end hrp.CFrame = targetCFrame end local function createButton(text, yPos, parent, callback) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.85, 0, 0, 28) btn.Position = UDim2.new(0.075, 0, 0, yPos) btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Text = text btn.Font = Enum.Font.SourceSans btn.TextSize = 14 btn.Parent = parent btn.MouseButton1Click:Connect(callback) return btn end -- Teleports Tab Content createButton("TP Yard", 10, TpFrame, function() safeTeleport(CFrame.new(779, 98, 2458)) end) createButton("TP Cafeteria", 45, TpFrame, function() safeTeleport(CFrame.new(960, 100, 2320)) end) createButton("TP Kitchen", 80, TpFrame, function() safeTeleport(CFrame.new(905, 99, 2225)) end) createButton("TP Cells", 115, TpFrame, function() safeTeleport(CFrame.new(918, 100, 2380)) end) createButton("TP Crim Base", 150, TpFrame, function() safeTeleport(CFrame.new(-943, 94, 2063)) end) createButton("TP Prison Roof", 185, TpFrame, function() safeTeleport(CFrame.new(825, 118, 2390)) end) createButton("TP Outside House Roof", 220, TpFrame, function() safeTeleport(CFrame.new(465, 130, 2240)) end) createButton("TP Safe Spot", 255, TpFrame, function() safeTeleport(CFrame.new(820, 140, 2590)) end) --------------------------------------------------------------------- -- 4. GUNS TAB --------------------------------------------------------------------- local function hasGun(gunName) local backpack = LocalPlayer:FindFirstChild("Backpack") local character = LocalPlayer.Character if backpack and backpack:FindFirstChild(gunName) then return true end if character and character:FindFirstChild(gunName) then return true end return false end local function grabGun(gunName) local char = LocalPlayer.Character if not char or not char:FindFirstChild("HumanoidRootPart") then return end if hasGun(gunName) then return end local itemSpawns = Workspace:FindFirstChild("ITEM_SPAWNS") or Workspace:FindFirstChild("Prison_ITEMS") if not itemSpawns then return end local targetPart = nil for _, obj in ipairs(itemSpawns:GetDescendants()) do if obj.Name:lower():find(gunName:lower()) then targetPart = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart") if targetPart then break end end end if targetPart then local originalPos = char.HumanoidRootPart.CFrame safeTeleport(targetPart.CFrame * CFrame.new(0, 2, 0)) local timeWaited = 0 while not hasGun(gunName) and timeWaited < 2 do local remote = Workspace:FindFirstChild("Remote") and Workspace.Remote:FindFirstChild("ItemHandler") if remote then remote:InvokeServer(targetPart) end task.wait(0.1) timeWaited = timeWaited + 0.1 end safeTeleport(originalPos) end end createButton("Get Remington 870", 10, GunsFrame, function() grabGun("Remington 870") end) createButton("Get M4A1", 45, GunsFrame, function() grabGun("M4A1") end) createButton("Get AK-47", 80, GunsFrame, function() grabGun("AK-47") end) --------------------------------------------------------------------- -- 5. COMBAT TAB (LOCK-ON WITH TEAM CHECKS & AUTO SILENT AIM) --------------------------------------------------------------------- -- Team check flags (true = skip/don't target, false = allow targeting) local skipInmates = false local skipPolice = false local skipCriminals = false local function isValidTeam(player) local team = player.Team and player.Team.Name or "" if (team == "Inmates" and skipInmates) then return false end if ((team == "Guards" or team == "Police") and skipPolice) then return false end if (team == "Criminals" and skipCriminals) then return false end return true end local function getClosestTarget() local closestTarget = nil local shortestDistance = math.huge local myChar = LocalPlayer.Character if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then return nil end local myPos = myChar.HumanoidRootPart.Position for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and isValidTeam(p) and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then local hum = p.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then local targetPart = p.Character:FindFirstChild("Head") or p.Character.HumanoidRootPart local dist = (targetPart.Position - myPos).Magnitude if dist < shortestDistance then shortestDistance = dist closestTarget = targetPart end end end end return closestTarget end -- Camera Lock-On Button & Function createButton("Enable Lock-On Button", 10, CombatFrame, function() if ScreenGui:FindFirstChild("MainScreenLockOnBtn") then return end local lockOnBtn = Instance.new("TextButton") lockOnBtn.Name = "MainScreenLockOnBtn" lockOnBtn.Size = UDim2.new(0, 90, 0, 45) lockOnBtn.Position = UDim2.new(0, 165, 0.5, -22) lockOnBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 180) lockOnBtn.Text = "LOCK-ON\n[OFF]" lockOnBtn.TextColor3 = Color3.fromRGB(255, 255, 255) lockOnBtn.Font = Enum.Font.SourceSansBold lockOnBtn.TextSize, lockOnBtn.TextWrapped = 12, true lockOnBtn.Parent = ScreenGui local draggingLock, dragInputLock, dragStartLock, startPosLock lockOnBtn.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then draggingLock = true dragStartLock = input.Position startPosLock = lockOnBtn.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then draggingLock = false end end) end end) lockOnBtn.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInputLock = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInputLock and draggingLock then local delta = input.Position - dragStartLock lockOnBtn.Position = UDim2.new(startPosLock.X.Scale, startPosLock.X.Offset + delta.X, startPosLock.Y.Scale, startPosLock.Y.Offset + delta.Y) end end) local lockOnActive = false lockOnBtn.MouseButton1Click:Connect(function() lockOnActive = not lockOnActive if lockOnActive then lockOnBtn.Text = "LOCK-ON\n[ON]" lockOnBtn.BackgroundColor3 = Color3.fromRGB(0, 200, 0) else lockOnBtn.Text = "LOCK-ON\n[OFF]" lockOnBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 180) end end) RunService.RenderStepped:Connect(function(dt) if lockOnActive then local targetPart = getClosestTarget() if targetPart then local currentCFrame = Camera.CFrame local targetCFrame = CFrame.new(currentCFrame.Position, targetPart.Position) Camera.CFrame = currentCFrame:Lerp(targetCFrame, math.clamp(dt * 15, 0, 1)) end end end) end) -- Team Check Toggles in Combat Tab local inmateBtn = createButton("Ignore Inmates: [OFF]", 45, CombatFrame, function() skipInmates = not skipInmates if skipInmates then local p = CombatFrame:FindFirstChildOfClass("TextButton") -- handles state update cleanly end end) -- Reassign explicit update texts safely local function updateTeamBtnText() -- Handled dynamically via click events below end inmateBtn.MouseButton1Click:Connect(function() skipInmates = not skipInmates inmateBtn.Text = skipInmates and "Ignore Inmates: [ON]" or "Ignore Inmates: [OFF]" inmateBtn.BackgroundColor3 = skipInmates and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(60, 60, 60) end) local policeBtn = createButton("Ignore Police: [OFF]", 80, CombatFrame, function() end) policeBtn.MouseButton1Click:Connect(function() skipPolice = not skipPolice policeBtn.Text = skipPolice and "Ignore Police: [ON]" or "Ignore Police: [OFF]" policeBtn.BackgroundColor3 = skipPolice and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(60, 60, 60) end) local crimBtn = createButton("Ignore Criminals: [OFF]", 115, CombatFrame, function() end) crimBtn.MouseButton1Click:Connect(function() skipCriminals = not skipCriminals crimBtn.Text = skipCriminals and "Ignore Criminals: [ON]" or "Ignore Criminals: [OFF]" crimBtn.BackgroundColor3 = skipCriminals and Color3.fromRGB(150, 0, 0) or Color3.fromRGB(60, 60, 60) end) -- Auto-Shooting Silent Aim with FOV Circle local silentAimActive = false local silentAimToggle = createButton("Toggle Silent Aim [OFF]", 150, CombatFrame, function() silentAimActive = not silentAimActive local fovGui = ScreenGui:FindFirstChild("SilentAimFOV") if fovGui then fovGui.Visible = silentAimActive end if silentAimActive then silentAimToggle.Text = "Toggle Silent Aim [ON]" silentAimToggle.BackgroundColor3 = Color3.fromRGB(0, 180, 0) else silentAimToggle.Text = "Toggle Silent Aim [OFF]" silentAimToggle.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end end) -- Create FOV Circle on Screen local fovCircle = Instance.new("Frame") fovCircle.Name = "SilentAimFOV" fovCircle.Size = UDim2.new(0, 240, 0, 240) fovCircle.AnchorPoint = Vector2.new(0.5, 0.5) fovCircle.Position = UDim2.new(0.5, 0, 0.5, 0) fovCircle.BackgroundTransparency = 1 fovCircle.Visible = false fovCircle.Parent = ScreenGui local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(255, 50, 50) stroke.Thickness = 2 stroke.Parent = fovCircle local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(1, 0) corner.Parent = fovCircle -- Auto-Fire Silent Aim Loop with Team Checks RunService.RenderStepped:Connect(function() if not silentAimActive then return end local mousePos = UserInputService:GetMouseLocation() local closestHead = nil local shortestDist = 120 -- matches FOV radius for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and isValidTeam(p) and p.Character then local head = p.Character:FindFirstChild("Head") local hum = p.Character:FindFirstChildOfClass("Humanoid") if head and hum and hum.Health > 0 then local screenPos, onScreen = Camera:WorldToViewportPoint(head.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude if dist < shortestDist then shortestDist = dist closestHead = head end end end end end if closestHead then local char = LocalPlayer.Character if char then local tool = char:FindFirstChildOfClass("Tool") if tool then local remote = Workspace:FindFirstChild("Remote") and Workspace.Remote:FindFirstChild("Shoot") if remote then pcall(function() remote:FireServer({ { Part = closestHead, Position = closestHead.Position, Ray = Ray.new(Camera.CFrame.Position, (closestHead.Position - Camera.CFrame.Position).Unit * 1000), Distance = (closestHead.Position - Camera.CFrame.Position).Magnitude } }) end) end end end end end) --------------------------------------------------------------------- -- 6. ESP TAB (PLAYER ESP & ITEM ESP) --------------------------------------------------------------------- local playerEspActive = false local itemEspActive = false local playerHighlights = {} local itemHighlights = {} local function getTeamColor(player) local team = player.Team and player.Team.Name or "" if team == "Guards" or team == "Police" then return Color3.fromRGB(0, 120, 255) elseif team == "Inmates" then return Color3.fromRGB(255, 140, 0) elseif team == "Criminals" then return Color3.fromRGB(255, 30, 30) end return Color3.fromRGB(150, 150, 150) end local function clearPlayerEsp() for _, h in pairs(playerHighlights) do if h then h:Destroy() end end table.clear(playerHighlights) end local function clearItemEsp() for _, h in pairs(itemHighlights) do if h then h:Destroy() end end table.clear(itemHighlights) end local playerEspBtn = createButton("Toggle Player ESP [OFF]", 10, EspFrame, function() playerEspActive = not playerEspActive if playerEspActive then playerEspBtn.Text = "Toggle Player ESP [ON]" else playerEspBtn.Text = "Toggle Player ESP [OFF]" clearPlayerEsp() end end) local itemEspBtn = createButton("Toggle Item ESP [OFF]", 45, EspFrame, function() itemEspActive = not itemEspActive if itemEspActive then itemEspBtn.Text = "Toggle Item ESP [ON]" else itemEspBtn.Text = "Toggle Item ESP [OFF]" clearItemEsp() end end) RunService.RenderStepped:Connect(function() if playerEspActive then for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then local char = player.Character if not playerHighlights[player] or not playerHighlights[player].Parent then local highlight = Instance.new("Highlight") highlight.Name = "FixedPlayerESP" highlight.FillColor = getTeamColor(player) highlight.OutlineColor = Color3.fromRGB(255, 255, 255) highlight.FillTransparency = 0.4 highlight.Adornee = char highlight.Parent = char playerHighlights[player] = highlight else playerHighlights[player].FillColor = getTeamColor(player) end end end end if itemEspActive then for _, obj in ipairs(Workspace:GetDescendants()) do if obj:IsA("Tool") or obj:IsA("Model") or obj:IsA("BasePart") then local nameLower = obj.Name:lower() if nameLower:find("knife") or nameLower:find("hammer") or nameLower:find("keycard") or nameLower:find("m9") then local targetPart = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart") if targetPart and not itemHighlights[obj] then local itemHigh = Instance.new("Highlight") itemHigh.Name = "ItemESP" itemHigh.FillColor = Color3.fromRGB(255, 255, 0) itemHigh.OutlineColor = Color3.fromRGB(255, 255, 255) itemHigh.FillTransparency = 0.2 itemHigh.Adornee = obj itemHigh.Parent = obj itemHighlights[obj] = itemHigh end end end end end end) --------------------------------------------------------------------- -- 7. PLAYERS TAB --------------------------------------------------------------------- local policeListHolder = Instance.new("ScrollingFrame") policeListHolder.Size = UDim2.new(0.3, 0, 0.85, 0) policeListHolder.Position = UDim2.new(0.02, 0, 0.05, 0) policeListHolder.BackgroundColor3 = Color3.fromRGB(45, 45, 45) policeListHolder.CanvasSize = UDim2.new(0, 0, 2, 0) policeListHolder.Parent = PlayersFrame local inmatesListHolder = Instance.new("ScrollingFrame") inmatesListHolder.Size = UDim2.new(0.3, 0, 0.85, 0) inmatesListHolder.Position = UDim2.new(0.35, 0, 0.05, 0) inmatesListHolder.BackgroundColor3 = Color3.fromRGB(45, 45, 45) inmatesListHolder.CanvasSize = UDim2.new(0, 0, 2, 0) inmatesListHolder.Parent = PlayersFrame local criminalsListHolder = Instance.new("ScrollingFrame") criminalsListHolder.Size = UDim2.new(0.3, 0, 0.85, 0) criminalsListHolder.Position = UDim2.new(0.68, 0, 0.05, 0) criminalsListHolder.BackgroundColor3 = Color3.fromRGB(45, 45, 45) criminalsListHolder.CanvasSize = UDim2.new(0, 0, 2, 0) criminalsListHolder.Parent = PlayersFrame local function updateCircleColor(circle, humanoid) if not humanoid then return end local health = humanoid.Health local maxHealth = humanoid.MaxHealth if maxHealth <= 0 then maxHealth = 100 end local pct = health / maxHealth if pct > 0.7 then circle.BackgroundColor3 = Color3.fromRGB(0, 255, 0) elseif pct > 0.4 then circle.BackgroundColor3 = Color3.fromRGB(255, 255, 0) elseif pct > 0.15 then circle.BackgroundColor3 = Color3.fromRGB(255, 140, 0) else circle.BackgroundColor3 = Color3.fromRGB(255, 0, 0) end end local function refreshPlayerSegments() for _, child in ipairs(policeListHolder:GetChildren()) do child:Destroy() end for _, child in ipairs(inmatesListHolder:GetChildren()) do child:Destroy() end for _, child in ipairs(criminalsListHolder:GetChildren()) do child:Destroy() end local pY, iY, cY = 5, 5, 5 for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then local team = player.Team and player.Team.Name or "" local targetHolder = nil local btnColor = Color3.fromRGB(70, 70, 70) if team == "Guards" or team == "Police" then targetHolder = policeListHolder btnColor = Color3.fromRGB(0, 80, 180) elseif team == "Inmates" then targetHolder = inmatesListHolder btnColor = Color3.fromRGB(180, 90, 0) elseif team == "Criminals" then targetHolder = criminalsListHolder btnColor = Color3.fromRGB(180, 20, 20) end if targetHolder then local yOffset = (targetHolder == policeListHolder and pY or (targetHolder == inmatesListHolder and iY or cY)) local pBtn = Instance.new("TextButton") pBtn.Size = UDim2.new(0.9, 0, 0, 24) pBtn.Position = UDim2.new(0.05, 0, 0, yOffset) pBtn.BackgroundColor3 = btnColor pBtn.TextColor3 = Color3.fromRGB(255, 255, 255) pBtn.Text = " " .. player.Name pBtn.TextXAlignment = Enum.TextXAlignment.Left pBtn.TextSize = 11 pBtn.Font = Enum.Font.SourceSansBold pBtn.Parent = targetHolder local healthCircle = Instance.new("Frame") healthCircle.Size = UDim2.new(0, 10, 0, 10) healthCircle.Position = UDim2.new(1, -15, 0.5, -5) healthCircle.BackgroundColor3 = Color3.fromRGB(0, 255, 0) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(1, 0) corner.Parent = healthCircle healthCircle.Parent = pBtn local char = player.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then updateCircleColor(healthCircle, hum) hum.HealthChanged:Connect(function() updateCircleColor(healthCircle, hum) end) end end pBtn.MouseButton1Click:Connect(function() if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then safeTeleport(player.Character.HumanoidRootPart.CFrame * CFrame.new(0, 3, 0)) end end) if targetHolder == policeListHolder then pY = pY + 28 elseif targetHolder == inmatesListHolder then iY = iY + 28 elseif targetHolder == criminalsListHolder then cY = cY + 28 end end end end end task.spawn(function() while true do if PlayersFrame.Visible then refreshPlayerSegments() end task.wait(2) end end) --------------------------------------------------------------------- -- 8. SWITCHER TAB & SUPER-FAST EXCLUSIVE SWITCHER LOOP --------------------------------------------------------------------- createButton("Enable Screen Switcher", 10, SwitcherFrame, function() if ScreenGui:FindFirstChild("MainScreenSwitcherBtn") then return end local switcherOnScreen = Instance.new("TextButton") switcherOnScreen.Name = "MainScreenSwitcherBtn" switcherOnScreen.Size = UDim2.new(0, 90, 0, 45) switcherOnScreen.Position = UDim2.new(0, 65, 0.5, -22) switcherOnScreen.BackgroundColor3 = Color3.fromRGB(0, 120, 200) switcherOnScreen.Text = "SWITCHER\n[OFF]" switcherOnScreen.TextColor3 = Color3.fromRGB(255, 255, 255) switcherOnScreen.Font = Enum.Font.SourceSansBold switcherOnScreen.TextSize, switcherOnScreen.TextWrapped = 12, true switcherOnScreen.Parent = ScreenGui local draggingSwitcher, dragInputSwitcher, dragStartSwitcher, startPosSwitcher switcherOnScreen.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then draggingSwitcher = true dragStartSwitcher = input.Position startPosSwitcher = switcherOnScreen.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then draggingSwitcher = false end end) end end) switcherOnScreen.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInputSwitcher = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInputSwitcher and draggingSwitcher then local delta = input.Position - dragStartSwitcher switcherOnScreen.Position = UDim2.new(startPosSwitcher.X.Scale, startPosSwitcher.X.Offset + delta.X, startPosSwitcher.Y.Scale, startPosSwitcher.Y.Offset + delta.Y) end end) local switcherActive = false switcherOnScreen.MouseButton1Click:Connect(function() switcherActive = not switcherActive if switcherActive then switcherOnScreen.Text = "SWITCHER\n[ON]" switcherOnScreen.BackgroundColor3 = Color3.fromRGB(0, 180, 80) else switcherOnScreen.Text = "SWITCHER\n[OFF]" switcherOnScreen.BackgroundColor3 = Color3.fromRGB(0, 120, 200) end end) task.spawn(function() while true do if switcherActive then local char = LocalPlayer.Character local backpack = LocalPlayer:FindFirstChild("Backpack") if char and backpack then local rawTools = {} local function isValidGun(item) if not item:IsA("Tool") then return false end local nameLower = item.Name:lower() if nameLower:find("taser") or nameLower:find("cuff") or nameLower:find("handcuff") then return false end return true end for _, item in ipairs(backpack:GetChildren()) do if isValidGun(item) then table.insert(rawTools, item) end end for _, item in ipairs(char:GetChildren()) do if isValidGun(item) then table.insert(rawTools, item) end end local tools = {} for _, t in ipairs(rawTools) do table.insert(tools, t) local nameLower = t.Name:lower() if nameLower:find("mp5") or nameLower:find("ak") then table.insert(tools, t) end end if #tools >= 2 then local humanoid = char:FindFirstChildOfClass("Humanoid") if humanoid then for _, t in ipairs(tools) do if not switcherActive then break end humanoid:EquipTool(t) task.wait(0.01) end end end end end task.wait(0.01) end end) end) --------------------------------------------------------------------- -- 9. DRAGGING LOGIC FOR MAIN HUB --------------------------------------------------------------------- local dragging, dragInput, dragStart, startPos MainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) MainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end)