M
Description
So this script is a kind of a hub there’s teleports combat esp players What the teleport is teleporting to random spots in whichever of them you click on The lock on is a feature that you can you can lock on to players Esp is a feature that you can highlight players and a team espn
GAMEPrison Life
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. 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 BloxScripts 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)Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place