Prison Life Script – God Mode (NO KEY)

PUBLISHEDUPDATED
What changed
  • 2026-10-14 — Added Script #8: Working Script.
  • 2026-10-13 — Added Script #7: Aim Lock & More.
  • 2026-10-12 — Added Script #6: Working Script.
  • 2026-10-12 — Added Script #5: Working Script.
  • 2026-10-12 — Added Script #4: Zolt Hub.
  • 2026-10-12 — Added Script #3: Working Script.
  • 2026-10-12 — Added Script #2: Teleport & More.
1 Available ScriptKeyless

Looking for a Prison Life script for Roblox? You are in the right spot to grab a working code that adds extra options to your session.

In this classic experience, you live life as a prisoner and try to plot an escape, or switch sides to become a guard and defend the prison. Recent updates brought in a sniper pass and gave guards the power to dispose of dropped key cards and guns, adding a bit more chaos to the usual prison routine.

If you want to try out some extra utility while playing, the script below has got you covered. Just copy the code and run it through your favorite executor.

Prison Life Script – God Mode & More

God Mode & MoreFree
God Mode
loadstring(game:HttpGet('https://raw.githubusercontent.com/AverageAftermath/PrisonLifeFunV1/refs/heads/main/Main'))()
Executor compatibility changes over time. Check current reports before testing.

Script #2 Teleport & More

Script #2 · Teleport & MoreFree
TeleportSpeed BoostInfinite Jump
loadstring(game:HttpGet("https://raw.githubusercontent.com/Roxy859/prison-life/main/prisonlife"))()
Executor compatibility changes over time. Check current reports before testing.

Script #3 Working Script

Script #3 · Working ScriptFree
loadstring(game:HttpGet('https://raw.githubusercontent.com/AverageAftermath/PrisonLifeFunV1/refs/heads/main/Main2'))()
Executor compatibility changes over time. Check current reports before testing.

Script #4 Zolt Hub

Script #4 · Zolt HubFree
Teleport
loadstring(game:HttpGet("https://raw.githubusercontent.com/f34p9fh3a4/.xyz/refs/heads/main/loader.lua"))()
Executor compatibility changes over time. Check current reports before testing.

Script #5 Working Script

Script #5 · Working ScriptFree
loadstring(game:HttpGet("https://raw.githubusercontent.com/AbsoluteEternal/nexus/refs/heads/main/nexus"))()
Executor compatibility changes over time. Check current reports before testing.

Script #6 Working Script

Script #6 · Working ScriptFree
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")



-- Change ur settings here
local TeamCheck = true
local AimPart = "Head"
local WallCheck = true
local MaxRange = 300
local FOV = 360



local function IsHostile(Char)
    local ok, Val = pcall(function() return Char:GetAttribute("Hostile") end)

    if ok and Val ~= nil then return Val == true end

    local V = Char:FindFirstChild("Hostile")
    if V and V:IsA("BoolValue") then return V.Value end

    return false
end



local function CanDamage(P)
    local Char = P.Character
    if not Char then return false end


    local Hum = Char:FindFirstChildOfClass("Humanoid")
    if not Hum or Hum.Health <= 0 then return false end


    if Char:FindFirstChild("ForceField") then return false end


    if TeamCheck then
        local MyTeam = LocalPlayer.Team
        local TheirTeam = P.Team

        if MyTeam and TheirTeam and MyTeam == TheirTeam then return false end

        if MyTeam and MyTeam.Name == "Guards" then
            if not IsHostile(Char) then return false end
        end
    end


    return true
end



local function IsVisible(Char, Origin)
    local Params = RaycastParams.new()
    Params.FilterType = Enum.RaycastFilterType.Exclude
    Params.FilterDescendantsInstances = LocalPlayer.Character and { LocalPlayer.Character } or {}


    local CheckParts = {
        Char:FindFirstChild(AimPart),
        Char:FindFirstChild("Head"),
        Char:FindFirstChild("HumanoidRootPart"),
        Char:FindFirstChild("UpperTorso"),
        Char:FindFirstChild("LowerTorso"),
        Char:FindFirstChild("Torso"),
    }


    for _, CP in ipairs(CheckParts) do
        if not CP then continue end

        local Dir = CP.Position - Origin
        local Dist = Dir.Magnitude

        if Dist <= 0 then continue end

        local Result = Workspace:Raycast(Origin, Dir, Params)

        if not Result or Result.Instance:FindFirstAncestorOfClass("Model") == Char then
            return CP
        end
    end


    return nil
end



local function GetTarget(Origin)
    if typeof(Origin) ~= "Vector3" then
        local Cam = Workspace.CurrentCamera
        Origin = Cam and Cam.CFrame.Position or Vector3.new()
    end


    local Cam = Workspace.CurrentCamera
    if not Cam then return nil end


    local BestDist = FOV
    local BestPart = nil


    for _, P in pairs(Players:GetPlayers()) do
        if P == LocalPlayer then continue end

        if not CanDamage(P) then continue end


        local Char = P.Character
        local Part = Char:FindFirstChild(AimPart) or Char:FindFirstChild("Head")
        if not Part then continue end


        if MaxRange and (Origin - Part.Position).Magnitude > MaxRange then continue end


        local Pos, OnScreen = Cam:WorldToViewportPoint(Part.Position)
        if not OnScreen then continue end


        if (Part.Position - Cam.CFrame.Position):Dot(Cam.CFrame.LookVector) <= 0 then continue end


        local SDist = (Vector2.new(Pos.X, Pos.Y) - UserInputService:GetMouseLocation()).Magnitude
        if SDist >= BestDist then continue end


        if WallCheck then
            local VisPart = IsVisible(Char, Origin)

            if not VisPart then continue end
            Part = VisPart

        else
            local Params = RaycastParams.new()
            Params.FilterType = Enum.RaycastFilterType.Exclude
            Params.FilterDescendantsInstances = LocalPlayer.Character and { LocalPlayer.Character } or {}

            local Result = Workspace:Raycast(Origin, Part.Position - Origin, Params)

            if Result then
                local HitChar = Result.Instance:FindFirstAncestorOfClass("Model")
                if HitChar ~= Char then continue end
            end
        end


        BestPart = Part
        BestDist = SDist
    end


    return BestPart
end



local function GetAttr(Tool, Attr)
    if typeof(Tool) == "Instance" then
        local ok, Val = pcall(function() return Tool:GetAttribute(Attr) end)

        if ok then return Val end
    end

    return nil
end



local function NormalCast(p1, p2, p3)
    local Origin, Aim, Tool

    if typeof(p1) == "Vector3" then
        Origin = p1

        if typeof(p2) == "Vector3" then Aim = p2 elseif typeof(p3) == "Vector3" then Aim = p3 end
        if typeof(p2) == "Instance" then Tool = p2 elseif typeof(p3) == "Instance" then Tool = p3 end

    else
        Tool = p1

        if typeof(p2) == "Vector3" then Origin = p2 end
        if typeof(p3) == "Vector3" then Aim = p3 elseif typeof(p2) == "Vector3" then Aim = p2 end
    end


    if not Origin or not Aim then
        return nil, Vector3.new()
    end


    local Dir = Aim - Origin
    if Dir.Magnitude <= 0 then Dir = Vector3.new(0, 0, -1) end


    local Range = GetAttr(Tool, "Range") or 200


    local Params = RaycastParams.new()
    Params.FilterType = Enum.RaycastFilterType.Exclude
    Params.FilterDescendantsInstances = LocalPlayer.Character and { LocalPlayer.Character } or {}
    Params.CollisionGroup = "ClientBullet"


    local Result = Workspace:Raycast(Origin, Dir.Unit * Range, Params)

    if Result then
        return Result.Instance, Result.Position
    end


    return nil, Origin + Dir.Unit * Range
end

-- https://www.rblxscripts.net/users/bread

local function HookCast(p1, p2, p3)
    local Origin

    if typeof(p1) == "Vector3" then
        Origin = p1

    elseif typeof(p2) == "Vector3" then
        Origin = p2

    elseif typeof(p3) == "Vector3" then
        Origin = p3
    end


    if Origin then
        local Char = LocalPlayer.Character
        local Root = Char and Char:FindFirstChild("HumanoidRootPart")

        if Root and (Origin - Root.Position).Magnitude <= 75 then
            local ok, Target = pcall(GetTarget, Origin)

            if ok and Target and Target.Parent then
                return Target, Target.Position
            end
        end
    end


    return NormalCast(p1, p2, p3)
end



if not _G.SilentAimHooked then
    _G.SilentAimHooked = true


    task.spawn(function()
        local Hooked = {}

        for _ = 1, 20 do
            pcall(function()
                for _, Func in next, getgc(true) do
                    if type(Func) == "function" and not Hooked[Func] then
                        local Info = debug.getinfo(Func, "nS")

                        if Info and Info.name == "castRay" then
                            pcall(hookfunction, Func, HookCast)
                            Hooked[Func] = true
                        end
                    end
                end
            end)

            task.wait(3)
        end
    end)
end
Executor compatibility changes over time. Check current reports before testing.

Script #7 Aim Lock & More

Script #7 · Aim Lock & MoreFree
Aim LockESPTeleportsAuto Arrest
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local localPlayer = Players.LocalPlayer

local WindUI
local success, err = pcall(function()
    return loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
end)

if success then
    WindUI = err
    print("WindUI loaded successfully!")
else
    warn("Failed to load WindUI: " .. tostring(err))
end

local Window = WindUI:CreateWindow({
    Icon = "rbxassetid://109388351613854",
    IconThemed = true,
    Title = "PrisonLife",
    Author = "by @nlzz",
    Folder = "nlzz",
    Size = UDim2.fromOffset(400, 400),
    MinSize = Vector2.new(560, 350),
    MaxSize = Vector2.new(850, 560),
    Transparent = true,
    Theme = "Dark",
    Resizable = true,
    SideBarWidth = 200,
    BackgroundImageTransparency = 0.42,
    HideSearchBar = false,
    ScrollBarEnabled = false,
    OpenButton = {
        Title = "PrisonLife",
        CornerRadius = UDim.new(1,0),
        StrokeThickness = 1,
        Enabled = true,
        Draggable = true,
        OnlyMobile = false
    }
})

Window:Tag({
    Title = "Prisonlife",
    Color = Color3.fromRGB(255,0,0),
    Radius = 13
})

--------------------------------------------------
-- Main Tab
--------------------------------------------------
local MTab = Window:Tab({
    Title = "General Tab",
    Icon = "sword"
})

MTab:Button({
    Title = "Getting hit by an electric fence won't kill you",
    Desc = "",
    Callback = function()
        local function removeAllDamageParts()
            for _, object in ipairs(workspace.Prison_Fences:GetDescendants()) do
                if object.Name == "damagePart" then
                    object:Destroy()
                end
            end
        end

        removeAllDamageParts()

        workspace.Prison_Fences.DescendantAdded:Connect(function(descendant)
            if descendant.Name == "damagePart" then
                task.wait()
                descendant:Destroy()
            end
        end)
    end
})

-- Auto Arrest
local AutoArrestEnabled = false
local ArrestDistance = 15

task.spawn(function()
    while task.wait(0.25) do
        if not AutoArrestEnabled then continue end
        local char = localPlayer.Character
        if not char or not char:FindFirstChild("HumanoidRootPart") then continue end

        local myRoot = char.HumanoidRootPart

        for _, plr in ipairs(Players:GetPlayers()) do
            if plr == localPlayer or not plr.Character then continue end

            local team = plr.Team
            if team and (team.Name == "Prisoners" or team.Name == "Prisoner" or team.Name == "Inmates") then
                local targetRoot = plr.Character:FindFirstChild("HumanoidRootPart")
                if targetRoot then
                    local dist = (myRoot.Position - targetRoot.Position).Magnitude
                    if dist <= ArrestDistance then
                        pcall(function()
                            ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("ArrestPlayer"):InvokeServer(plr, 1)
                        end)
                    end
                end
            end
        end
    end
end)

MTab:Toggle({
    Title = "Enable Auto Arrest Nearby",
    Desc = "",
    Value = false,
    Callback = function(v)
        AutoArrestEnabled = v
    end
})

MTab:Input({
    Title = "Arrest Distance (Studs)",
    Placeholder = "15",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then
            ArrestDistance = num
        end
    end
})

MTab:Button({
    Title = "Delete The Keycards Doors",
    Callback = function()
        if workspace:FindFirstChild("Doors") then
            workspace.Doors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete The Cell Doors",
    Callback = function()
        if workspace:FindFirstChild("CellDoors") then
            workspace.CellDoors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete All Toilets",
    Callback = function()
        for _, v in pairs(workspace:GetDescendants()) do
            if v.Name == "Toilet" then
                v:Destroy()
            end
        end
    end
})

--------------------------------------------------
-- Local Player Tab
--------------------------------------------------
local LpTab = Window:Tab({
    Title = "Local Player Tab",
    Icon = "user"
})

-- WalkSpeed
local WalkSpeedEnabled = false
local WalkSpeedValue = 50

local function updateWalkSpeed()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.WalkSpeed = WalkSpeedEnabled and WalkSpeedValue or 16
    end
end

LpTab:Toggle({
    Title = "Enable Walk Speed",
    Callback = function(v)
        WalkSpeedEnabled = v
        updateWalkSpeed()
    end
})

LpTab:Input({
    Title = "Walk Speed",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then WalkSpeedValue = num; updateWalkSpeed() end
    end
})

-- JumpPower
local JumpPowerEnabled = false
local JumpPowerValue = 50

local function updateJumpPower()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.UseJumpPower = true
        hum.JumpPower = JumpPowerEnabled and JumpPowerValue or 50
    end
end

LpTab:Toggle({
    Title = "Enable Jump Power",
    Callback = function(v)
        JumpPowerEnabled = v
        updateJumpPower()
    end
})

LpTab:Input({
    Title = "Jump Power",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then JumpPowerValue = num; updateJumpPower() end
    end
})

RunService.Heartbeat:Connect(function()
    updateWalkSpeed()
    updateJumpPower()
end)

localPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    updateWalkSpeed()
    updateJumpPower()
end)

-- Infinite Jump
local InfiniteJump = false

LpTab:Toggle({
    Title = "Enable Infinite Jump",
    Callback = function(v) InfiniteJump = v end
})

game:GetService("UserInputService").JumpRequest:Connect(function()
    if InfiniteJump then
        local hum = localPlayer.Character and localPlayer.Character:FindFirstChildOfClass("Humanoid")
        if hum then
            hum:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

-- Clean old events
if _G.OldConnections then
    for _, v in pairs(_G.OldConnections) do
        if v then v:Disconnect() end
    end
    _G.OldConnections = nil
end

repeat task.wait() until game.Players.LocalPlayer
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

local character, humanoid, rootPart
local characterParts = {}
local isInvisible = false

local function setupCharacter()
    character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    humanoid = character:WaitForChild("Humanoid")
    rootPart = character:WaitForChild("HumanoidRootPart")
    characterParts = {}

    for _, part in pairs(character:GetDescendants()) do
        if part:IsA("BasePart") and part.Transparency == 0 then
            table.insert(characterParts, part)
        end
    end
end

local function setInvisibleState(state)
    isInvisible = state
    
    for _, part in pairs(characterParts) do
        if part and part.Parent then
            part.Transparency = isInvisible and 0.5 or 0
        end
    end
end

setupCharacter()
LocalPlayer.CharacterAdded:Connect(function()
    isInvisible = false
    setupCharacter()
end)

local connections = {}
connections[1] = RunService.Heartbeat:Connect(function()
    if isInvisible and rootPart and humanoid then
        local oldCFrame = rootPart.CFrame
        local oldCameraOffset = humanoid.CameraOffset
        
        local targetCFrame = oldCFrame * CFrame.new(0, -75, 0)
        local offset = targetCFrame:ToObjectSpace(CFrame.new(oldCFrame.Position)).Position

        rootPart.CFrame = targetCFrame
        humanoid.CameraOffset = offset

        RunService.RenderStepped:Wait()

        rootPart.CFrame = oldCFrame
        humanoid.CameraOffset = oldCameraOffset
    end
end)

_G.OldConnections = connections

LpTab:Toggle({
    Title = "Enable Invisible",
    Desc = "",
    Value = false,
    Callback = function(Value)
        setInvisibleState(Value)
    end
})

--------------------------------------------------
-- Teleport Tab
--------------------------------------------------
local TpTab = Window:Tab({
    Title = "Teleport Tab",
    Icon = "wind"
})

TpTab:Paragraph({ Title = "Tp", Desc = "Teleport" })

local tps = {
    ["police gun"] = Vector3.new(856.14, 102.62, 2256.75),
    ["Thieves' base"] = Vector3.new(-981.62, 108.12, 2056.98),
    ["outside of prison"] = Vector3.new(485.23, 97.99, 2244.82),
    ["Conjuring up a thief's car"] = Vector3.new(-915.86, 95.13, 2134.13),
    ["Conjuring up a police car"] = Vector3.new(615.49, 98.20, 2488.75),
}

for name, pos in pairs(tps) do
    TpTab:Button({
        Title = "Tp to " .. name,
        Callback = function()
            local hrp = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart")
            if hrp then
                hrp.CFrame = CFrame.new(pos)
            end
        end
    })
end

-- [ Services & Globals ]
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local RunService = game:GetService("RunService")
local workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local CombatTab = Window:Tab({ 
    Title = "Combat", 
    Icon = "sword" 
})

-- [[ VARIABLES & STATE ]]
local aiming = false
local fovEnabled = false
local smoothness = 0.1
local fovRadius = 360
local aimPart = "Head"
local wallCheckEnabled = false

-- RGB & Color Variables
local fovColor = Color3.fromRGB(255, 0, 0)
local rainbowEnabled = false

-- Blacklist for Aim Lock
local AimBlacklist = {
    Players = {},
    Teams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- FOV Circle
local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 0.5
fovCircle.NumSides = 8
fovCircle.Filled = false
fovCircle.Transparency = 1.0
fovCircle.Visible = false

-- [ Functions ]
local function isVisible(targetPart)
    local origin = camera.CFrame.Position
    local direction = (targetPart.Position - origin)
    local params = RaycastParams.new()
    params.FilterType = Enum.RaycastFilterType.Exclude
    params.FilterDescendantsInstances = {player.Character, camera}
    local result = workspace:Raycast(origin, direction, params)
    return not result or result.Instance:IsDescendantOf(targetPart.Parent)
end

local function getTarget()
    if not fovEnabled then return nil end
    local closest, minDist = nil, fovRadius
    local center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
    
    for _, p in pairs(Players:GetPlayers()) do
        if p ~= player and p.Character and p.Character:FindFirstChild(aimPart) and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then
            
            if AimBlacklist.Players[p.Name] then continue end
            if p.Team and AimBlacklist.Teams[p.Team.Name] then continue end
            
            local part = p.Character[aimPart]
            local pos, onScreen = camera:WorldToViewportPoint(part.Position)
            
            if onScreen then
                local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude
                if dist <= fovRadius and dist < minDist then
                    
                    if wallCheckEnabled and not isVisible(part) then
                        continue
                    end
                    
                    minDist = dist
                    closest = part
                end
            end
        end
    end
    return closest
end

task.spawn(function()
    while task.wait() do
        pcall(function()
            if rainbowEnabled then
                local hue = (tick() % 5) / 5
                fovCircle.Color = Color3.fromHSV(hue, 1, 1)
            else
                fovCircle.Color = fovColor
            end

            if fovEnabled then
                fovCircle.Visible = true
                fovCircle.Transparency = 1.0
                fovCircle.Radius = fovRadius
                fovCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
            else
                fovCircle.Visible = false
            end
        end)
    end
end)

-- [ Main Lock Loop ]
RunService.RenderStepped:Connect(function()
    if fovEnabled and aiming then
        local target = getTarget()
        if target then
            camera.CFrame = camera.CFrame:Lerp(CFrame.new(camera.CFrame.Position, target.Position), smoothness)
        end
    end
end)

-- [[ UI ELEMENTS FOR AIM LOCK ]]
CombatTab:Toggle({
    Title = "Enable Aim Lock",
    Value = false,
    Callback = function(Value)
        aiming = Value
    end
})

CombatTab:Toggle({
    Title = "Enable FOV Circle",
    Value = false,
    Callback = function(Value)
        fovEnabled = Value
    end
})

CombatTab:Toggle({
    Title = "Enable Wall Check",
    Value = false,
    Callback = function(Value)
        wallCheckEnabled = Value
    end
})

CombatTab:Input({
    Title = "FOV Size",
    Placeholder = "360",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then fovRadius = num end
    end
})

local PartDropdown = CombatTab:Dropdown({
    Title = "locking parts",
    Multi = false,
    Options = {"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso"},
    Default = "Head",
    Callback = function(Value)
        if type(Value) == "table" then
            aimPart = Value[1] or "Head"
        elseif type(Value) == "string" and Value ~= "" then
            aimPart = Value
        end
    end
})

task.spawn(function()
    task.wait(1)
    if PartDropdown and PartDropdown.Select then PartDropdown:Select("Head") end
end)

CombatTab:Paragraph({
    Title = "Aim Lock Blacklist",
    Desc = ""
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            AimBlacklist.Players = {} 
            AimBlacklist.Players[Text] = true
        end
    end
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Criminals"] = Value
    end
})

-- [[ SERVICES ]]
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer

-- [[ STATE MANAGEMENT ]]
local Settings = {
    Enabled = false,
    UseTeleport = true,
    UseTween = false,
    TweenSpeed = 150,
    DelayPerPlayer = 0.1,
    BlacklistedPlayers = {},
    BlacklistedTeams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- [[ HELPER FUNCTIONS ]]
local function getTeamName(player)
    if player.Team then return player.Team.Name end
    return ""
end

local function moveToTarget(targetPart)
    local localChar = LocalPlayer.Character
    if not localChar then return end
    local localHRP = localChar:FindFirstChild("HumanoidRootPart")
    if not localHRP then return end

    if Settings.UseTeleport then
        localHRP.CFrame = targetPart.CFrame
    elseif Settings.UseTween then
        local distance = (localHRP.Position - targetPart.Position).Magnitude
        local duration = distance / Settings.TweenSpeed
        
        local tween = TweenService:Create(localHRP, TweenInfo.new(duration, Enum.EasingStyle.Linear), {CFrame = targetPart.CFrame})
        tween:Play()
        tween.Completed:Wait()
    end
end

-- [[ UI ELEMENTS ]]

local MainToggle = CombatTab:Toggle({
    Title = "Enable Kill All Loop (risk)",
    Desc = "",
    Value = false,
    Callback = function(Value)
        Settings.Enabled = Value
    end
})

local TPToggle, TweenToggle

TPToggle = CombatTab:Toggle({
    Title = "Enable Teleport mode",
    Value = true,
    Callback = function(Value)
        Settings.UseTeleport = Value
        if Value then
            Settings.UseTween = false
            TweenToggle:SetValue(false)
        end
    end
})

TweenToggle = CombatTab:Toggle({
    Title = "Enable Tween mode",
    Value = false,
    Callback = function(Value)
        Settings.UseTween = Value
        if Value then
            Settings.UseTeleport = false
            TPToggle:SetValue(false)
        end
    end
})

CombatTab:Input({
    Title = "Tween Speed",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.TweenSpeed = num end
    end
})

CombatTab:Input({
    Title = "Delay (s)",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.DelayPerPlayer = num end
    end
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            Settings.BlacklistedPlayers = {} 
            Settings.BlacklistedPlayers[Text] = true
            WindUI:Notify({Title = "Blacklist", Desc = "Exempting player: " .. Text, Type = "success"})
        end
    end
})

CombatTab:Paragraph({
    Title = "Team Blacklist",
    Desc = ""
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Criminals"] = Value
    end
})

-- [[ MAIN CORE LOOP ]]
task.spawn(function()
    while true do
        task.wait(0.1)
        if Settings.Enabled then
            for _, v in next, Players:GetChildren() do
                if not Settings.Enabled then break end
                
                pcall(function()
                    if v == LocalPlayer then return end
                    if Settings.BlacklistedPlayers[v.Name] then return end
                    if Settings.BlacklistedTeams[getTeamName(v)] then return end
                    
                    local targetChar = v.Character
                    if not targetChar then return end
                    
                    local targetHRP = targetChar:FindFirstChild("HumanoidRootPart")
                    local targetHumanoid = targetChar:FindFirstChildOfClass("Humanoid")
                    
                    if targetChar:FindFirstChildOfClass("ForceField") then return end
                    if not targetHumanoid or targetHumanoid.Health <= 0 then return end
                    
                    while Settings.Enabled and targetHumanoid and targetHumanoid.Health > 0 and not targetChar:FindFirstChildOfClass("ForceField") do
                        task.wait()
                        
                        moveToTarget(targetHRP)
                        
                        for _, c in next, Players:GetChildren() do
                            if c ~= LocalPlayer and not Settings.BlacklistedPlayers[c.Name] and not Settings.BlacklistedTeams[getTeamName(c)] then 
                                ReplicatedStorage.meleeEvent:FireServer(c) 
                            end
                        end
                    end
                end)
                
                task.wait(Settings.DelayPerPlayer)
            end
        end
    end
end)

--------------------------------------------------
-- Weapon Tab
--------------------------------------------------
local WTab = Window:Tab({
    Title = "Weapon Tab",
    Icon = "swords"
})

WTab:Button({
    Title = "Tp to Mp5 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(814.1622924804688,102.8799819946289,2229.063232421875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(820.2584838867188,102.8799819946289,2229.033447265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-939.0526123046875,96.30850219726562,2039.330810546875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Ak47 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-931.7821044921875,96.368408203125,2039.4932861328125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M700 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-919.5140991210938, 96.86885070800781, 2036.7769775390625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to FAL [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-902.1759033203125, 96.43677520751953, 2046.9830322265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to C4 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-900.9798583984375, 96.82874298095703, 2041.475830078125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Revolver [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-915.18896484375, 96.82882690429688, 2035.864013671875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Riot Shield [Game Pass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(841.4751586914062, 102.12140655517578, 2230.52880859375)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M4A1 [GamePass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(847.034912109375, 102.88017272949219, 2228.777587890625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

--------------------------------------------------
-- ESP Tab
--------------------------------------------------
local EspTab = Window:Tab({
    Title = "ESP Tab",
    Icon = "eye"
})

local ESPNameEnabled = false
local ESPTeamEnabled = false
local ESPDistanceEnabled = false

local ESPObjects = {}

local function GetTeamColor(player)
    local teamName = player.Team and player.Team.Name or ""

    if teamName == "Guards" or teamName == "Police" then
        return Color3.fromRGB(0,170,255)

    elseif teamName == "Inmates" then
        return Color3.fromRGB(255,170,0)

    elseif teamName == "Criminals" then
        return Color3.fromRGB(255,0,0)

    end

    return Color3.fromRGB(255,255,255)
end

local function CreateESP(player)
    if player == localPlayer then
        return
    end

    local function Setup(character)
        local head = character:WaitForChild("Head",5)

        if not head then
            return
        end

        if head:FindFirstChild("ZeionESP") then
            head.ZeionESP:Destroy()
        end

        local billboard = Instance.new("BillboardGui")
        billboard.Name = "ZeionESP"
        billboard.Size = UDim2.new(0,200,0,80)
        billboard.AlwaysOnTop = true
        billboard.StudsOffset = Vector3.new(0,2.5,0)
        billboard.Parent = head

        local label = Instance.new("TextLabel")
        label.Size = UDim2.fromScale(1,1)
        label.BackgroundTransparency = 1
        label.TextScaled = true
        label.TextSize = 10
        label.Font = Enum.Font.SourceSansBold
        label.TextStrokeTransparency = 0
        label.Parent = billboard

        ESPObjects[player] = billboard

        RunService.RenderStepped:Connect(function()

            if not billboard.Parent then
                return
            end

            local myCharacter = localPlayer.Character
            if not myCharacter then
                return
            end

            local myRoot = myCharacter:FindFirstChild("HumanoidRootPart")
            local targetRoot = character:FindFirstChild("HumanoidRootPart")

            if not myRoot or not targetRoot then
                return
            end

            local distance = math.floor(
                (myRoot.Position - targetRoot.Position).Magnitude
            )

            local teamName = player.Team and player.Team.Name or "Unknown"

            local text = ""

            if ESPNameEnabled then
                text = text .. player.Name
            end

            if ESPTeamEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. teamName .. "]"
            end

            if ESPDistanceEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. distance .. "m]"
            end

            label.Text = text
            label.TextColor3 = GetTeamColor(player)
        end)
    end

    if player.Character then
        Setup(player.Character)
    end

    player.CharacterAdded:Connect(Setup)
end

for _,player in ipairs(Players:GetPlayers()) do
    CreateESP(player)
end

Players.PlayerAdded:Connect(CreateESP)

EspTab:Toggle({
    Title = "Enable ESP Name",
    Value = false,
    Callback = function(v)
        ESPNameEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Team",
    Value = false,
    Callback = function(v)
        ESPTeamEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Distance",
    Value = false,
    Callback = function(v)
        ESPDistanceEnabled = v
    end
})
Executor compatibility changes over time. Check current reports before testing.

Script #8 Working Script

Script #8 · Working ScriptFree
-- Script taken from https://xenoscripts.com website --

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local localPlayer = Players.LocalPlayer

local WindUI
local success, err = pcall(function()
    return loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
end)

if success then
    WindUI = err
    print("WindUI loaded successfully!")
else
    warn("Failed to load WindUI: " .. tostring(err))
end

local Window = WindUI:CreateWindow({
    Icon = "rbxassetid://109388351613854",
    IconThemed = true,
    Title = "PrisonLife",
    Author = "by @nlzz",
    Folder = "nlzz",
    Size = UDim2.fromOffset(400, 400),
    MinSize = Vector2.new(560, 350),
    MaxSize = Vector2.new(850, 560),
    Transparent = true,
    Theme = "Dark",
    Resizable = true,
    SideBarWidth = 200,
    BackgroundImageTransparency = 0.42,
    HideSearchBar = false,
    ScrollBarEnabled = false,
    OpenButton = {
        Title = "PrisonLife",
        CornerRadius = UDim.new(1,0),
        StrokeThickness = 1,
        Enabled = true,
        Draggable = true,
        OnlyMobile = false
    }
})

Window:Tag({
    Title = "Prisonlife",
    Color = Color3.fromRGB(255,0,0),
    Radius = 13
})

--------------------------------------------------
-- Main Tab
--------------------------------------------------
local MTab = Window:Tab({
    Title = "General Tab",
    Icon = "sword"
})

MTab:Button({
    Title = "Getting hit by an electric fence won't kill you",
    Desc = "",
    Callback = function()
        local function removeAllDamageParts()
            for _, object in ipairs(workspace.Prison_Fences:GetDescendants()) do
                if object.Name == "damagePart" then
                    object:Destroy()
                end
            end
        end

        removeAllDamageParts()

        workspace.Prison_Fences.DescendantAdded:Connect(function(descendant)
            if descendant.Name == "damagePart" then
                task.wait()
                descendant:Destroy()
            end
        end)
    end
})

-- Auto Arrest
local AutoArrestEnabled = false
local ArrestDistance = 15

task.spawn(function()
    while task.wait(0.25) do
        if not AutoArrestEnabled then continue end
        local char = localPlayer.Character
        if not char or not char:FindFirstChild("HumanoidRootPart") then continue end

        local myRoot = char.HumanoidRootPart

        for _, plr in ipairs(Players:GetPlayers()) do
            if plr == localPlayer or not plr.Character then continue end

            local team = plr.Team
            if team and (team.Name == "Prisoners" or team.Name == "Prisoner" or team.Name == "Inmates") then
                local targetRoot = plr.Character:FindFirstChild("HumanoidRootPart")
                if targetRoot then
                    local dist = (myRoot.Position - targetRoot.Position).Magnitude
                    if dist <= ArrestDistance then
                        pcall(function()
                            ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("ArrestPlayer"):InvokeServer(plr, 1)
                        end)
                    end
                end
            end
        end
    end
end)

MTab:Toggle({
    Title = "Enable Auto Arrest Nearby",
    Desc = "",
    Value = false,
    Callback = function(v)
        AutoArrestEnabled = v
    end
})

MTab:Input({
    Title = "Arrest Distance (Studs)",
    Placeholder = "15",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then
            ArrestDistance = num
        end
    end
})

MTab:Button({
    Title = "Delete The Keycards Doors",
    Callback = function()
        if workspace:FindFirstChild("Doors") then
            workspace.Doors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete The Cell Doors",
    Callback = function()
        if workspace:FindFirstChild("CellDoors") then
            workspace.CellDoors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete All Toilets",
    Callback = function()
        for _, v in pairs(workspace:GetDescendants()) do
            if v.Name == "Toilet" then
                v:Destroy()
            end
        end
    end
})

--------------------------------------------------
-- Local Player Tab
--------------------------------------------------
local LpTab = Window:Tab({
    Title = "Local Player Tab",
    Icon = "user"
})

-- WalkSpeed
local WalkSpeedEnabled = false
local WalkSpeedValue = 50

local function updateWalkSpeed()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.WalkSpeed = WalkSpeedEnabled and WalkSpeedValue or 16
    end
end

LpTab:Toggle({
    Title = "Enable Walk Speed",
    Callback = function(v)
        WalkSpeedEnabled = v
        updateWalkSpeed()
    end
})

LpTab:Input({
    Title = "Walk Speed",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then WalkSpeedValue = num; updateWalkSpeed() end
    end
})

-- JumpPower
local JumpPowerEnabled = false
local JumpPowerValue = 50

local function updateJumpPower()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.UseJumpPower = true
        hum.JumpPower = JumpPowerEnabled and JumpPowerValue or 50
    end
end

LpTab:Toggle({
    Title = "Enable Jump Power",
    Callback = function(v)
        JumpPowerEnabled = v
        updateJumpPower()
    end
})

LpTab:Input({
    Title = "Jump Power",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then JumpPowerValue = num; updateJumpPower() end
    end
})

RunService.Heartbeat:Connect(function()
    updateWalkSpeed()
    updateJumpPower()
end)

localPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    updateWalkSpeed()
    updateJumpPower()
end)

-- Infinite Jump
local InfiniteJump = false

LpTab:Toggle({
    Title = "Enable Infinite Jump",
    Callback = function(v) InfiniteJump = v end
})

game:GetService("UserInputService").JumpRequest:Connect(function()
    if InfiniteJump then
        local hum = localPlayer.Character and localPlayer.Character:FindFirstChildOfClass("Humanoid")
        if hum then
            hum:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

-- Clean old events
if _G.OldConnections then
    for _, v in pairs(_G.OldConnections) do
        if v then v:Disconnect() end
    end
    _G.OldConnections = nil
end

repeat task.wait() until game.Players.LocalPlayer
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

local character, humanoid, rootPart
local characterParts = {}
local isInvisible = false

local function setupCharacter()
    character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    humanoid = character:WaitForChild("Humanoid")
    rootPart = character:WaitForChild("HumanoidRootPart")
    characterParts = {}

    for _, part in pairs(character:GetDescendants()) do
        if part:IsA("BasePart") and part.Transparency == 0 then
            table.insert(characterParts, part)
        end
    end
end

local function setInvisibleState(state)
    isInvisible = state
    
    for _, part in pairs(characterParts) do
        if part and part.Parent then
            part.Transparency = isInvisible and 0.5 or 0
        end
    end
end

setupCharacter()
LocalPlayer.CharacterAdded:Connect(function()
    isInvisible = false
    setupCharacter()
end)

local connections = {}
connections[1] = RunService.Heartbeat:Connect(function()
    if isInvisible and rootPart and humanoid then
        local oldCFrame = rootPart.CFrame
        local oldCameraOffset = humanoid.CameraOffset
        
        local targetCFrame = oldCFrame * CFrame.new(0, -75, 0)
        local offset = targetCFrame:ToObjectSpace(CFrame.new(oldCFrame.Position)).Position

        rootPart.CFrame = targetCFrame
        humanoid.CameraOffset = offset

        RunService.RenderStepped:Wait()

        rootPart.CFrame = oldCFrame
        humanoid.CameraOffset = oldCameraOffset
    end
end)

_G.OldConnections = connections

LpTab:Toggle({
    Title = "Enable Invisible",
    Desc = "",
    Value = false,
    Callback = function(Value)
        setInvisibleState(Value)
    end
})

--------------------------------------------------
-- Teleport Tab
--------------------------------------------------
local TpTab = Window:Tab({
    Title = "Teleport Tab",
    Icon = "wind"
})

TpTab:Paragraph({ Title = "Tp", Desc = "Teleport" })

local tps = {
    ["police gun"] = Vector3.new(856.14, 102.62, 2256.75),
    ["Thieves' base"] = Vector3.new(-981.62, 108.12, 2056.98),
    ["outside of prison"] = Vector3.new(485.23, 97.99, 2244.82),
    ["Conjuring up a thief's car"] = Vector3.new(-915.86, 95.13, 2134.13),
    ["Conjuring up a police car"] = Vector3.new(615.49, 98.20, 2488.75),
}

for name, pos in pairs(tps) do
    TpTab:Button({
        Title = "Tp to " .. name,
        Callback = function()
            local hrp = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart")
            if hrp then
                hrp.CFrame = CFrame.new(pos)
            end
        end
    })
end

-- [ Services & Globals ]
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local RunService = game:GetService("RunService")
local workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local CombatTab = Window:Tab({ 
    Title = "Combat", 
    Icon = "sword" 
})

-- [[ VARIABLES & STATE ]]
local aiming = false
local fovEnabled = false
local smoothness = 0.1
local fovRadius = 360
local aimPart = "Head"
local wallCheckEnabled = false

-- RGB & Color Variables
local fovColor = Color3.fromRGB(255, 0, 0)
local rainbowEnabled = false

-- Blacklist for Aim Lock
local AimBlacklist = {
    Players = {},
    Teams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- FOV Circle
local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 0.5
fovCircle.NumSides = 8
fovCircle.Filled = false
fovCircle.Transparency = 1.0
fovCircle.Visible = false

-- [ Functions ]
local function isVisible(targetPart)
    local origin = camera.CFrame.Position
    local direction = (targetPart.Position - origin)
    local params = RaycastParams.new()
    params.FilterType = Enum.RaycastFilterType.Exclude
    params.FilterDescendantsInstances = {player.Character, camera}
    local result = workspace:Raycast(origin, direction, params)
    return not result or result.Instance:IsDescendantOf(targetPart.Parent)
end

local function getTarget()
    if not fovEnabled then return nil end
    local closest, minDist = nil, fovRadius
    local center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
    
    for _, p in pairs(Players:GetPlayers()) do
        if p ~= player and p.Character and p.Character:FindFirstChild(aimPart) and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then
            
            if AimBlacklist.Players[p.Name] then continue end
            if p.Team and AimBlacklist.Teams[p.Team.Name] then continue end
            
            local part = p.Character[aimPart]
            local pos, onScreen = camera:WorldToViewportPoint(part.Position)
            
            if onScreen then
                local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude
                if dist <= fovRadius and dist < minDist then
                    
                    if wallCheckEnabled and not isVisible(part) then
                        continue
                    end
                    
                    minDist = dist
                    closest = part
                end
            end
        end
    end
    return closest
end

task.spawn(function()
    while task.wait() do
        pcall(function()
            if rainbowEnabled then
                local hue = (tick() % 5) / 5
                fovCircle.Color = Color3.fromHSV(hue, 1, 1)
            else
                fovCircle.Color = fovColor
            end

            if fovEnabled then
                fovCircle.Visible = true
                fovCircle.Transparency = 1.0
                fovCircle.Radius = fovRadius
                fovCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
            else
                fovCircle.Visible = false
            end
        end)
    end
end)

-- [ Main Lock Loop ]
RunService.RenderStepped:Connect(function()
    if fovEnabled and aiming then
        local target = getTarget()
        if target then
            camera.CFrame = camera.CFrame:Lerp(CFrame.new(camera.CFrame.Position, target.Position), smoothness)
        end
    end
end)

-- [[ UI ELEMENTS FOR AIM LOCK ]]
CombatTab:Toggle({
    Title = "Enable Aim Lock",
    Value = false,
    Callback = function(Value)
        aiming = Value
    end
})

CombatTab:Toggle({
    Title = "Enable FOV Circle",
    Value = false,
    Callback = function(Value)
        fovEnabled = Value
    end
})

CombatTab:Toggle({
    Title = "Enable Wall Check",
    Value = false,
    Callback = function(Value)
        wallCheckEnabled = Value
    end
})

CombatTab:Input({
    Title = "FOV Size",
    Placeholder = "360",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then fovRadius = num end
    end
})

local PartDropdown = CombatTab:Dropdown({
    Title = "locking parts",
    Multi = false,
    Options = {"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso"},
    Default = "Head",
    Callback = function(Value)
        if type(Value) == "table" then
            aimPart = Value[1] or "Head"
        elseif type(Value) == "string" and Value ~= "" then
            aimPart = Value
        end
    end
})

task.spawn(function()
    task.wait(1)
    if PartDropdown and PartDropdown.Select then PartDropdown:Select("Head") end
end)

CombatTab:Paragraph({
    Title = "Aim Lock Blacklist",
    Desc = ""
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            AimBlacklist.Players = {} 
            AimBlacklist.Players[Text] = true
        end
    end
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Criminals"] = Value
    end
})

-- [[ SERVICES ]]
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer

-- [[ STATE MANAGEMENT ]]
local Settings = {
    Enabled = false,
    UseTeleport = true,
    UseTween = false,
    TweenSpeed = 150,
    DelayPerPlayer = 0.1,
    BlacklistedPlayers = {},
    BlacklistedTeams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- [[ HELPER FUNCTIONS ]]
local function getTeamName(player)
    if player.Team then return player.Team.Name end
    return ""
end

local function moveToTarget(targetPart)
    local localChar = LocalPlayer.Character
    if not localChar then return end
    local localHRP = localChar:FindFirstChild("HumanoidRootPart")
    if not localHRP then return end

    if Settings.UseTeleport then
        localHRP.CFrame = targetPart.CFrame
    elseif Settings.UseTween then
        local distance = (localHRP.Position - targetPart.Position).Magnitude
        local duration = distance / Settings.TweenSpeed
        
        local tween = TweenService:Create(localHRP, TweenInfo.new(duration, Enum.EasingStyle.Linear), {CFrame = targetPart.CFrame})
        tween:Play()
        tween.Completed:Wait()
    end
end

-- [[ UI ELEMENTS ]]

local MainToggle = CombatTab:Toggle({
    Title = "Enable Kill All Loop (risk)",
    Desc = "",
    Value = false,
    Callback = function(Value)
        Settings.Enabled = Value
    end
})

local TPToggle, TweenToggle

TPToggle = CombatTab:Toggle({
    Title = "Enable Teleport mode",
    Value = true,
    Callback = function(Value)
        Settings.UseTeleport = Value
        if Value then
            Settings.UseTween = false
            TweenToggle:SetValue(false)
        end
    end
})

TweenToggle = CombatTab:Toggle({
    Title = "Enable Tween mode",
    Value = false,
    Callback = function(Value)
        Settings.UseTween = Value
        if Value then
            Settings.UseTeleport = false
            TPToggle:SetValue(false)
        end
    end
})

CombatTab:Input({
    Title = "Tween Speed",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.TweenSpeed = num end
    end
})

CombatTab:Input({
    Title = "Delay (s)",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.DelayPerPlayer = num end
    end
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            Settings.BlacklistedPlayers = {} 
            Settings.BlacklistedPlayers[Text] = true
            WindUI:Notify({Title = "Blacklist", Desc = "Exempting player: " .. Text, Type = "success"})
        end
    end
})

CombatTab:Paragraph({
    Title = "Team Blacklist",
    Desc = ""
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Criminals"] = Value
    end
})

-- [[ MAIN CORE LOOP ]]
task.spawn(function()
    while true do
        task.wait(0.1)
        if Settings.Enabled then
            for _, v in next, Players:GetChildren() do
                if not Settings.Enabled then break end
                
                pcall(function()
                    if v == LocalPlayer then return end
                    if Settings.BlacklistedPlayers[v.Name] then return end
                    if Settings.BlacklistedTeams[getTeamName(v)] then return end
                    
                    local targetChar = v.Character
                    if not targetChar then return end
                    
                    local targetHRP = targetChar:FindFirstChild("HumanoidRootPart")
                    local targetHumanoid = targetChar:FindFirstChildOfClass("Humanoid")
                    
                    if targetChar:FindFirstChildOfClass("ForceField") then return end
                    if not targetHumanoid or targetHumanoid.Health <= 0 then return end
                    
                    while Settings.Enabled and targetHumanoid and targetHumanoid.Health > 0 and not targetChar:FindFirstChildOfClass("ForceField") do
                        task.wait()
                        
                        moveToTarget(targetHRP)
                        
                        for _, c in next, Players:GetChildren() do
                            if c ~= LocalPlayer and not Settings.BlacklistedPlayers[c.Name] and not Settings.BlacklistedTeams[getTeamName(c)] then 
                                ReplicatedStorage.meleeEvent:FireServer(c) 
                            end
                        end
                    end
                end)
                
                task.wait(Settings.DelayPerPlayer)
            end
        end
    end
end)

--------------------------------------------------
-- Weapon Tab
--------------------------------------------------
local WTab = Window:Tab({
    Title = "Weapon Tab",
    Icon = "swords"
})

WTab:Button({
    Title = "Tp to Mp5 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(814.1622924804688,102.8799819946289,2229.063232421875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(820.2584838867188,102.8799819946289,2229.033447265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-939.0526123046875,96.30850219726562,2039.330810546875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Ak47 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-931.7821044921875,96.368408203125,2039.4932861328125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M700 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-919.5140991210938, 96.86885070800781, 2036.7769775390625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to FAL [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-902.1759033203125, 96.43677520751953, 2046.9830322265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to C4 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-900.9798583984375, 96.82874298095703, 2041.475830078125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Revolver [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-915.18896484375, 96.82882690429688, 2035.864013671875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Riot Shield [Game Pass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(841.4751586914062, 102.12140655517578, 2230.52880859375)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M4A1 [GamePass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(847.034912109375, 102.88017272949219, 2228.777587890625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

--------------------------------------------------
-- ESP Tab
--------------------------------------------------
local EspTab = Window:Tab({
    Title = "ESP Tab",
    Icon = "eye"
})

local ESPNameEnabled = false
local ESPTeamEnabled = false
local ESPDistanceEnabled = false

local ESPObjects = {}

local function GetTeamColor(player)
    local teamName = player.Team and player.Team.Name or ""

    if teamName == "Guards" or teamName == "Police" then
        return Color3.fromRGB(0,170,255)

    elseif teamName == "Inmates" then
        return Color3.fromRGB(255,170,0)

    elseif teamName == "Criminals" then
        return Color3.fromRGB(255,0,0)

    end

    return Color3.fromRGB(255,255,255)
end

local function CreateESP(player)
    if player == localPlayer then
        return
    end

    local function Setup(character)
        local head = character:WaitForChild("Head",5)

        if not head then
            return
        end

        if head:FindFirstChild("ZeionESP") then
            head.ZeionESP:Destroy()
        end

        local billboard = Instance.new("BillboardGui")
        billboard.Name = "ZeionESP"
        billboard.Size = UDim2.new(0,200,0,80)
        billboard.AlwaysOnTop = true
        billboard.StudsOffset = Vector3.new(0,2.5,0)
        billboard.Parent = head

        local label = Instance.new("TextLabel")
        label.Size = UDim2.fromScale(1,1)
        label.BackgroundTransparency = 1
        label.TextScaled = true
        label.TextSize = 10
        label.Font = Enum.Font.SourceSansBold
        label.TextStrokeTransparency = 0
        label.Parent = billboard

        ESPObjects[player] = billboard

        RunService.RenderStepped:Connect(function()

            if not billboard.Parent then
                return
            end

            local myCharacter = localPlayer.Character
            if not myCharacter then
                return
            end

            local myRoot = myCharacter:FindFirstChild("HumanoidRootPart")
            local targetRoot = character:FindFirstChild("HumanoidRootPart")

            if not myRoot or not targetRoot then
                return
            end

            local distance = math.floor(
                (myRoot.Position - targetRoot.Position).Magnitude
            )

            local teamName = player.Team and player.Team.Name or "Unknown"

            local text = ""

            if ESPNameEnabled then
                text = text .. player.Name
            end

            if ESPTeamEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. teamName .. "]"
            end

            if ESPDistanceEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. distance .. "m]"
            end

            label.Text = text
            label.TextColor3 = GetTeamColor(player)
        end)
    end

    if player.Character then
        Setup(player.Character)
    end

    player.CharacterAdded:Connect(Setup)
end

for _,player in ipairs(Players:GetPlayers()) do
    CreateESP(player)
end

Players.PlayerAdded:Connect(CreateESP)

EspTab:Toggle({
    Title = "Enable ESP Name",
    Value = false,
    Callback = function(v)
        ESPNameEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Team",
    Value = false,
    Callback = function(v)
        ESPTeamEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Distance",
    Value = false,
    Callback = function(v)
        ESPDistanceEnabled = v
    end
})-- Script taken from https://xenoscripts.com website --

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local localPlayer = Players.LocalPlayer

local WindUI
local success, err = pcall(function()
    return loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
end)

if success then
    WindUI = err
    print("WindUI loaded successfully!")
else
    warn("Failed to load WindUI: " .. tostring(err))
end

local Window = WindUI:CreateWindow({
    Icon = "rbxassetid://109388351613854",
    IconThemed = true,
    Title = "PrisonLife",
    Author = "by @nlzz",
    Folder = "nlzz",
    Size = UDim2.fromOffset(400, 400),
    MinSize = Vector2.new(560, 350),
    MaxSize = Vector2.new(850, 560),
    Transparent = true,
    Theme = "Dark",
    Resizable = true,
    SideBarWidth = 200,
    BackgroundImageTransparency = 0.42,
    HideSearchBar = false,
    ScrollBarEnabled = false,
    OpenButton = {
        Title = "PrisonLife",
        CornerRadius = UDim.new(1,0),
        StrokeThickness = 1,
        Enabled = true,
        Draggable = true,
        OnlyMobile = false
    }
})

Window:Tag({
    Title = "Prisonlife",
    Color = Color3.fromRGB(255,0,0),
    Radius = 13
})

--------------------------------------------------
-- Main Tab
--------------------------------------------------
local MTab = Window:Tab({
    Title = "General Tab",
    Icon = "sword"
})

MTab:Button({
    Title = "Getting hit by an electric fence won't kill you",
    Desc = "",
    Callback = function()
        local function removeAllDamageParts()
            for _, object in ipairs(workspace.Prison_Fences:GetDescendants()) do
                if object.Name == "damagePart" then
                    object:Destroy()
                end
            end
        end

        removeAllDamageParts()

        workspace.Prison_Fences.DescendantAdded:Connect(function(descendant)
            if descendant.Name == "damagePart" then
                task.wait()
                descendant:Destroy()
            end
        end)
    end
})

-- Auto Arrest
local AutoArrestEnabled = false
local ArrestDistance = 15

task.spawn(function()
    while task.wait(0.25) do
        if not AutoArrestEnabled then continue end
        local char = localPlayer.Character
        if not char or not char:FindFirstChild("HumanoidRootPart") then continue end

        local myRoot = char.HumanoidRootPart

        for _, plr in ipairs(Players:GetPlayers()) do
            if plr == localPlayer or not plr.Character then continue end

            local team = plr.Team
            if team and (team.Name == "Prisoners" or team.Name == "Prisoner" or team.Name == "Inmates") then
                local targetRoot = plr.Character:FindFirstChild("HumanoidRootPart")
                if targetRoot then
                    local dist = (myRoot.Position - targetRoot.Position).Magnitude
                    if dist <= ArrestDistance then
                        pcall(function()
                            ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("ArrestPlayer"):InvokeServer(plr, 1)
                        end)
                    end
                end
            end
        end
    end
end)

MTab:Toggle({
    Title = "Enable Auto Arrest Nearby",
    Desc = "",
    Value = false,
    Callback = function(v)
        AutoArrestEnabled = v
    end
})

MTab:Input({
    Title = "Arrest Distance (Studs)",
    Placeholder = "15",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then
            ArrestDistance = num
        end
    end
})

MTab:Button({
    Title = "Delete The Keycards Doors",
    Callback = function()
        if workspace:FindFirstChild("Doors") then
            workspace.Doors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete The Cell Doors",
    Callback = function()
        if workspace:FindFirstChild("CellDoors") then
            workspace.CellDoors:Destroy()
        end
    end
})

MTab:Button({
    Title = "Delete All Toilets",
    Callback = function()
        for _, v in pairs(workspace:GetDescendants()) do
            if v.Name == "Toilet" then
                v:Destroy()
            end
        end
    end
})

--------------------------------------------------
-- Local Player Tab
--------------------------------------------------
local LpTab = Window:Tab({
    Title = "Local Player Tab",
    Icon = "user"
})

-- WalkSpeed
local WalkSpeedEnabled = false
local WalkSpeedValue = 50

local function updateWalkSpeed()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.WalkSpeed = WalkSpeedEnabled and WalkSpeedValue or 16
    end
end

LpTab:Toggle({
    Title = "Enable Walk Speed",
    Callback = function(v)
        WalkSpeedEnabled = v
        updateWalkSpeed()
    end
})

LpTab:Input({
    Title = "Walk Speed",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then WalkSpeedValue = num; updateWalkSpeed() end
    end
})

-- JumpPower
local JumpPowerEnabled = false
local JumpPowerValue = 50

local function updateJumpPower()
    local char = localPlayer.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        hum.UseJumpPower = true
        hum.JumpPower = JumpPowerEnabled and JumpPowerValue or 50
    end
end

LpTab:Toggle({
    Title = "Enable Jump Power",
    Callback = function(v)
        JumpPowerEnabled = v
        updateJumpPower()
    end
})

LpTab:Input({
    Title = "Jump Power",
    Placeholder = "50",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then JumpPowerValue = num; updateJumpPower() end
    end
})

RunService.Heartbeat:Connect(function()
    updateWalkSpeed()
    updateJumpPower()
end)

localPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    updateWalkSpeed()
    updateJumpPower()
end)

-- Infinite Jump
local InfiniteJump = false

LpTab:Toggle({
    Title = "Enable Infinite Jump",
    Callback = function(v) InfiniteJump = v end
})

game:GetService("UserInputService").JumpRequest:Connect(function()
    if InfiniteJump then
        local hum = localPlayer.Character and localPlayer.Character:FindFirstChildOfClass("Humanoid")
        if hum then
            hum:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

-- Clean old events
if _G.OldConnections then
    for _, v in pairs(_G.OldConnections) do
        if v then v:Disconnect() end
    end
    _G.OldConnections = nil
end

repeat task.wait() until game.Players.LocalPlayer
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

local character, humanoid, rootPart
local characterParts = {}
local isInvisible = false

local function setupCharacter()
    character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    humanoid = character:WaitForChild("Humanoid")
    rootPart = character:WaitForChild("HumanoidRootPart")
    characterParts = {}

    for _, part in pairs(character:GetDescendants()) do
        if part:IsA("BasePart") and part.Transparency == 0 then
            table.insert(characterParts, part)
        end
    end
end

local function setInvisibleState(state)
    isInvisible = state
    
    for _, part in pairs(characterParts) do
        if part and part.Parent then
            part.Transparency = isInvisible and 0.5 or 0
        end
    end
end

setupCharacter()
LocalPlayer.CharacterAdded:Connect(function()
    isInvisible = false
    setupCharacter()
end)

local connections = {}
connections[1] = RunService.Heartbeat:Connect(function()
    if isInvisible and rootPart and humanoid then
        local oldCFrame = rootPart.CFrame
        local oldCameraOffset = humanoid.CameraOffset
        
        local targetCFrame = oldCFrame * CFrame.new(0, -75, 0)
        local offset = targetCFrame:ToObjectSpace(CFrame.new(oldCFrame.Position)).Position

        rootPart.CFrame = targetCFrame
        humanoid.CameraOffset = offset

        RunService.RenderStepped:Wait()

        rootPart.CFrame = oldCFrame
        humanoid.CameraOffset = oldCameraOffset
    end
end)

_G.OldConnections = connections

LpTab:Toggle({
    Title = "Enable Invisible",
    Desc = "",
    Value = false,
    Callback = function(Value)
        setInvisibleState(Value)
    end
})

--------------------------------------------------
-- Teleport Tab
--------------------------------------------------
local TpTab = Window:Tab({
    Title = "Teleport Tab",
    Icon = "wind"
})

TpTab:Paragraph({ Title = "Tp", Desc = "Teleport" })

local tps = {
    ["police gun"] = Vector3.new(856.14, 102.62, 2256.75),
    ["Thieves' base"] = Vector3.new(-981.62, 108.12, 2056.98),
    ["outside of prison"] = Vector3.new(485.23, 97.99, 2244.82),
    ["Conjuring up a thief's car"] = Vector3.new(-915.86, 95.13, 2134.13),
    ["Conjuring up a police car"] = Vector3.new(615.49, 98.20, 2488.75),
}

for name, pos in pairs(tps) do
    TpTab:Button({
        Title = "Tp to " .. name,
        Callback = function()
            local hrp = localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart")
            if hrp then
                hrp.CFrame = CFrame.new(pos)
            end
        end
    })
end

-- [ Services & Globals ]
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local RunService = game:GetService("RunService")
local workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local CombatTab = Window:Tab({ 
    Title = "Combat", 
    Icon = "sword" 
})

-- [[ VARIABLES & STATE ]]
local aiming = false
local fovEnabled = false
local smoothness = 0.1
local fovRadius = 360
local aimPart = "Head"
local wallCheckEnabled = false

-- RGB & Color Variables
local fovColor = Color3.fromRGB(255, 0, 0)
local rainbowEnabled = false

-- Blacklist for Aim Lock
local AimBlacklist = {
    Players = {},
    Teams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- FOV Circle
local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 0.5
fovCircle.NumSides = 8
fovCircle.Filled = false
fovCircle.Transparency = 1.0
fovCircle.Visible = false

-- [ Functions ]
local function isVisible(targetPart)
    local origin = camera.CFrame.Position
    local direction = (targetPart.Position - origin)
    local params = RaycastParams.new()
    params.FilterType = Enum.RaycastFilterType.Exclude
    params.FilterDescendantsInstances = {player.Character, camera}
    local result = workspace:Raycast(origin, direction, params)
    return not result or result.Instance:IsDescendantOf(targetPart.Parent)
end

local function getTarget()
    if not fovEnabled then return nil end
    local closest, minDist = nil, fovRadius
    local center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
    
    for _, p in pairs(Players:GetPlayers()) do
        if p ~= player and p.Character and p.Character:FindFirstChild(aimPart) and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then
            
            if AimBlacklist.Players[p.Name] then continue end
            if p.Team and AimBlacklist.Teams[p.Team.Name] then continue end
            
            local part = p.Character[aimPart]
            local pos, onScreen = camera:WorldToViewportPoint(part.Position)
            
            if onScreen then
                local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude
                if dist <= fovRadius and dist < minDist then
                    
                    if wallCheckEnabled and not isVisible(part) then
                        continue
                    end
                    
                    minDist = dist
                    closest = part
                end
            end
        end
    end
    return closest
end

task.spawn(function()
    while task.wait() do
        pcall(function()
            if rainbowEnabled then
                local hue = (tick() % 5) / 5
                fovCircle.Color = Color3.fromHSV(hue, 1, 1)
            else
                fovCircle.Color = fovColor
            end

            if fovEnabled then
                fovCircle.Visible = true
                fovCircle.Transparency = 1.0
                fovCircle.Radius = fovRadius
                fovCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
            else
                fovCircle.Visible = false
            end
        end)
    end
end)

-- [ Main Lock Loop ]
RunService.RenderStepped:Connect(function()
    if fovEnabled and aiming then
        local target = getTarget()
        if target then
            camera.CFrame = camera.CFrame:Lerp(CFrame.new(camera.CFrame.Position, target.Position), smoothness)
        end
    end
end)

-- [[ UI ELEMENTS FOR AIM LOCK ]]
CombatTab:Toggle({
    Title = "Enable Aim Lock",
    Value = false,
    Callback = function(Value)
        aiming = Value
    end
})

CombatTab:Toggle({
    Title = "Enable FOV Circle",
    Value = false,
    Callback = function(Value)
        fovEnabled = Value
    end
})

CombatTab:Toggle({
    Title = "Enable Wall Check",
    Value = false,
    Callback = function(Value)
        wallCheckEnabled = Value
    end
})

CombatTab:Input({
    Title = "FOV Size",
    Placeholder = "360",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then fovRadius = num end
    end
})

local PartDropdown = CombatTab:Dropdown({
    Title = "locking parts",
    Multi = false,
    Options = {"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso"},
    Default = "Head",
    Callback = function(Value)
        if type(Value) == "table" then
            aimPart = Value[1] or "Head"
        elseif type(Value) == "string" and Value ~= "" then
            aimPart = Value
        end
    end
})

task.spawn(function()
    task.wait(1)
    if PartDropdown and PartDropdown.Select then PartDropdown:Select("Head") end
end)

CombatTab:Paragraph({
    Title = "Aim Lock Blacklist",
    Desc = ""
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            AimBlacklist.Players = {} 
            AimBlacklist.Players[Text] = true
        end
    end
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        AimBlacklist.Teams["Criminals"] = Value
    end
})

-- [[ SERVICES ]]
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer

-- [[ STATE MANAGEMENT ]]
local Settings = {
    Enabled = false,
    UseTeleport = true,
    UseTween = false,
    TweenSpeed = 150,
    DelayPerPlayer = 0.1,
    BlacklistedPlayers = {},
    BlacklistedTeams = {
        ["Guards"] = false,
        ["Prisoners"] = false,
        ["Criminals"] = false
    }
}

-- [[ HELPER FUNCTIONS ]]
local function getTeamName(player)
    if player.Team then return player.Team.Name end
    return ""
end

local function moveToTarget(targetPart)
    local localChar = LocalPlayer.Character
    if not localChar then return end
    local localHRP = localChar:FindFirstChild("HumanoidRootPart")
    if not localHRP then return end

    if Settings.UseTeleport then
        localHRP.CFrame = targetPart.CFrame
    elseif Settings.UseTween then
        local distance = (localHRP.Position - targetPart.Position).Magnitude
        local duration = distance / Settings.TweenSpeed
        
        local tween = TweenService:Create(localHRP, TweenInfo.new(duration, Enum.EasingStyle.Linear), {CFrame = targetPart.CFrame})
        tween:Play()
        tween.Completed:Wait()
    end
end

-- [[ UI ELEMENTS ]]

local MainToggle = CombatTab:Toggle({
    Title = "Enable Kill All Loop (risk)",
    Desc = "",
    Value = false,
    Callback = function(Value)
        Settings.Enabled = Value
    end
})

local TPToggle, TweenToggle

TPToggle = CombatTab:Toggle({
    Title = "Enable Teleport mode",
    Value = true,
    Callback = function(Value)
        Settings.UseTeleport = Value
        if Value then
            Settings.UseTween = false
            TweenToggle:SetValue(false)
        end
    end
})

TweenToggle = CombatTab:Toggle({
    Title = "Enable Tween mode",
    Value = false,
    Callback = function(Value)
        Settings.UseTween = Value
        if Value then
            Settings.UseTeleport = false
            TPToggle:SetValue(false)
        end
    end
})

CombatTab:Input({
    Title = "Tween Speed",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.TweenSpeed = num end
    end
})

CombatTab:Input({
    Title = "Delay (s)",
    Placeholder = "...",
    Callback = function(Text)
        local num = tonumber(Text)
        if num then Settings.DelayPerPlayer = num end
    end
})

CombatTab:Input({
    Title = "Username Blacklist)",
    Placeholder = "...",
    Callback = function(Text)
        if Text and Text ~= "" then
            Settings.BlacklistedPlayers = {} 
            Settings.BlacklistedPlayers[Text] = true
            WindUI:Notify({Title = "Blacklist", Desc = "Exempting player: " .. Text, Type = "success"})
        end
    end
})

CombatTab:Paragraph({
    Title = "Team Blacklist",
    Desc = ""
})

CombatTab:Toggle({
    Title = "Blacklist Guards Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Guards"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Prisoners Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Prisoners"] = Value
    end
})

CombatTab:Toggle({
    Title = "Blacklist Criminals Team",
    Value = false,
    Callback = function(Value)
        Settings.BlacklistedTeams["Criminals"] = Value
    end
})

-- [[ MAIN CORE LOOP ]]
task.spawn(function()
    while true do
        task.wait(0.1)
        if Settings.Enabled then
            for _, v in next, Players:GetChildren() do
                if not Settings.Enabled then break end
                
                pcall(function()
                    if v == LocalPlayer then return end
                    if Settings.BlacklistedPlayers[v.Name] then return end
                    if Settings.BlacklistedTeams[getTeamName(v)] then return end
                    
                    local targetChar = v.Character
                    if not targetChar then return end
                    
                    local targetHRP = targetChar:FindFirstChild("HumanoidRootPart")
                    local targetHumanoid = targetChar:FindFirstChildOfClass("Humanoid")
                    
                    if targetChar:FindFirstChildOfClass("ForceField") then return end
                    if not targetHumanoid or targetHumanoid.Health <= 0 then return end
                    
                    while Settings.Enabled and targetHumanoid and targetHumanoid.Health > 0 and not targetChar:FindFirstChildOfClass("ForceField") do
                        task.wait()
                        
                        moveToTarget(targetHRP)
                        
                        for _, c in next, Players:GetChildren() do
                            if c ~= LocalPlayer and not Settings.BlacklistedPlayers[c.Name] and not Settings.BlacklistedTeams[getTeamName(c)] then 
                                ReplicatedStorage.meleeEvent:FireServer(c) 
                            end
                        end
                    end
                end)
                
                task.wait(Settings.DelayPerPlayer)
            end
        end
    end
end)

--------------------------------------------------
-- Weapon Tab
--------------------------------------------------
local WTab = Window:Tab({
    Title = "Weapon Tab",
    Icon = "swords"
})

WTab:Button({
    Title = "Tp to Mp5 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(814.1622924804688,102.8799819946289,2229.063232421875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(820.2584838867188,102.8799819946289,2229.033447265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp To Remington 870 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-939.0526123046875,96.30850219726562,2039.330810546875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Ak47 (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-931.7821044921875,96.368408203125,2039.4932861328125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M700 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-919.5140991210938, 96.86885070800781, 2036.7769775390625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to FAL [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-902.1759033203125, 96.43677520751953, 2046.9830322265625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to C4 [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-900.9798583984375, 96.82874298095703, 2041.475830078125)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Revolver [GamePass] (Criminals)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(-915.18896484375, 96.82882690429688, 2035.864013671875)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to Riot Shield [Game Pass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(841.4751586914062, 102.12140655517578, 2230.52880859375)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

WTab:Button({
    Title = "Tp to M4A1 [GamePass] (Guards Room)",
    Desc = "",
    Callback = function()
        local plr = game.Players.LocalPlayer
        local char = plr.Character or plr.CharacterAdded:Wait()
        local hrp = char:WaitForChild("HumanoidRootPart")
        local oldPos = hrp.CFrame
        hrp.CFrame = CFrame.new(847.034912109375, 102.88017272949219, 2228.777587890625)
        task.wait(2)
        hrp.CFrame = oldPos
    end
})

--------------------------------------------------
-- ESP Tab
--------------------------------------------------
local EspTab = Window:Tab({
    Title = "ESP Tab",
    Icon = "eye"
})

local ESPNameEnabled = false
local ESPTeamEnabled = false
local ESPDistanceEnabled = false

local ESPObjects = {}

local function GetTeamColor(player)
    local teamName = player.Team and player.Team.Name or ""

    if teamName == "Guards" or teamName == "Police" then
        return Color3.fromRGB(0,170,255)

    elseif teamName == "Inmates" then
        return Color3.fromRGB(255,170,0)

    elseif teamName == "Criminals" then
        return Color3.fromRGB(255,0,0)

    end

    return Color3.fromRGB(255,255,255)
end

local function CreateESP(player)
    if player == localPlayer then
        return
    end

    local function Setup(character)
        local head = character:WaitForChild("Head",5)

        if not head then
            return
        end

        if head:FindFirstChild("ZeionESP") then
            head.ZeionESP:Destroy()
        end

        local billboard = Instance.new("BillboardGui")
        billboard.Name = "ZeionESP"
        billboard.Size = UDim2.new(0,200,0,80)
        billboard.AlwaysOnTop = true
        billboard.StudsOffset = Vector3.new(0,2.5,0)
        billboard.Parent = head

        local label = Instance.new("TextLabel")
        label.Size = UDim2.fromScale(1,1)
        label.BackgroundTransparency = 1
        label.TextScaled = true
        label.TextSize = 10
        label.Font = Enum.Font.SourceSansBold
        label.TextStrokeTransparency = 0
        label.Parent = billboard

        ESPObjects[player] = billboard

        RunService.RenderStepped:Connect(function()

            if not billboard.Parent then
                return
            end

            local myCharacter = localPlayer.Character
            if not myCharacter then
                return
            end

            local myRoot = myCharacter:FindFirstChild("HumanoidRootPart")
            local targetRoot = character:FindFirstChild("HumanoidRootPart")

            if not myRoot or not targetRoot then
                return
            end

            local distance = math.floor(
                (myRoot.Position - targetRoot.Position).Magnitude
            )

            local teamName = player.Team and player.Team.Name or "Unknown"

            local text = ""

            if ESPNameEnabled then
                text = text .. player.Name
            end

            if ESPTeamEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. teamName .. "]"
            end

            if ESPDistanceEnabled then
                if text ~= "" then
                    text = text .. "\n"
                end

                text = text .. "[" .. distance .. "m]"
            end

            label.Text = text
            label.TextColor3 = GetTeamColor(player)
        end)
    end

    if player.Character then
        Setup(player.Character)
    end

    player.CharacterAdded:Connect(Setup)
end

for _,player in ipairs(Players:GetPlayers()) do
    CreateESP(player)
end

Players.PlayerAdded:Connect(CreateESP)

EspTab:Toggle({
    Title = "Enable ESP Name",
    Value = false,
    Callback = function(v)
        ESPNameEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Team",
    Value = false,
    Callback = function(v)
        ESPTeamEnabled = v
    end
})

EspTab:Toggle({
    Title = "Enable ESP Distance",
    Value = false,
    Callback = function(v)
        ESPDistanceEnabled = v
    end
})
Executor compatibility changes over time. Check current reports before testing.

Copy the code above into a compatible Roblox script executor if you choose to test it.

Prison Life Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

What Is a Prison Life Script?

A Prison Life script is Lua code intended to run alongside the Roblox game through a third-party script executor.

Different scripts can contain different code and features. This version includes the following features:

✓ God Mode

How to Use the Prison Life Script

If you decide to test a third-party Roblox script, the general process involves a compatible executor and the Lua code provided above.

01
Choose a Roblox Script Executor
Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex. Compatibility changes over time, so a name here doesn’t guarantee current support.
02
Open Roblox and Join the Game
Launch Roblox, join the game, and keep it open while you prepare the executor.
03
Copy the Lua Script
Copy the complete code from the script card above without changing any part of it.
04
Run Your Executor
Open your executor and paste the code into its editor.
05
Execute the Script
Click Run or Execute. If the script still supports the current game version, it should load.

Can a Prison Life Script Get Your Roblox Account Banned?

⚠️ Yes, it can. Third-party scripts can violate Roblox rules and may put an account at risk.
  • Only use code from a source you trust.
  • Never enter your Roblox password into a script or executor.
  • Test on an alternate account first.

Prison Life Script for Mobile

If you’re searching for a Prison Life script for mobile, check whether both the executor and the script support your device and current Roblox version. Mobile executor support does not guarantee that every script will work.

Frequently Asked Questions

What is a Prison Life script?

A Prison Life script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this Prison Life script include?

Different scripts contain different code. This version includes: ESP, Silent Aim, Teleport, Speed Boost, God Mode, Infinite Jump.

How do you use the Prison Life script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a Prison Life script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the Prison Life script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.