
Key Required

-- [[ logged by prometheus ]] --
-- // [1] SERVICES //
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local LocalPlayer = Players.LocalPlayer
-- // [2] CONFIGURATION //
local CONFIG = {
-- General GUI settings
GUI_NAME = "UnionShellHub",
LICENSE_TYPE = "FREE", -- displayed in top bar
-- Key Authentication
KeyScriptURL = "https://raw.githubusercontent.com/murtewy-crypto/loader/refs/heads/main/prisonlifefree",
-- Top Bar
TopBar = {
Size = UDim2.new(0,760,0,44),
Position = UDim2.new(0.5,-380,0,-64),
BackgroundColor = Color3.fromRGB(22,22,36),
BackgroundTransparency = 0.18,
CornerRadius = UDim.new(0,11),
StrokeColor = Color3.fromRGB(55,55,85),
StrokeThickness = 1,
TextColor = Color3.fromRGB(130,175,255),
TextSize = 14,
SeparatorColor = Color3.fromRGB(100,140,255),
},
-- Tab System
Tabs = {
{Name = "Combat", Position = UDim2.new(0,909,0,96)},
{Name = "Player", Position = UDim2.new(0,1098,0,96)},
{Name = "Teleports", Position = UDim2.new(0,1287,0,96)},
{Name = "Visuals", Position = UDim2.new(0,1476,0,96)},
},
TabSize = UDim2.new(0,175,0,370),
TabBackgroundColor = Color3.fromRGB(20,20,32),
TabStrokeColor = Color3.fromRGB(55,55,85),
TabCornerRadius = UDim.new(0,10),
TabTitleTextSize = 13,
TabTitleColor = Color3.fromRGB(255,255,255),
-- Theme panel
ThemePanelSize = UDim2.new(0,340,0,42),
ThemePanelPosition = UDim2.new(0.5,-170,0,446),
-- Button settings inside tabs
SectionButtonSize = UDim2.new(1,0,0,32),
SectionTextSize = 13,
SectionTextColor = Color3.fromRGB(150,150,185),
-- General button colors
ToggleOnColor = Color3.fromRGB(40,40,65),
ToggleOffColor = Color3.fromRGB(20,20,32),
-- Teleport locations (example)
TeleportLocations = {
PrisonYard = "Prison Yard",
CriminalBase = "Criminal Base",
PoliceStation = "Police Station",
Cells = "Cells",
},
-- Aimbot settings
Aimbot = {
TargetPolice = true,
TargetInmates = true,
TargetCriminals = true,
WallCheck = false,
},
-- Player modifiers
SpeedMultipliers = {2, 3}, -- x2, x3
}
-- // [3] OBJECT REFERENCES //
local ScreenGui
local TopBar
local SearchBar -- reference to search box
local TabsContainer = {} -- holds the main tab frames { ["Combat"] = frame, ... }
local ThemePanel
local ThemeButtons = {} -- for color themes
-- // [4] UTILITY FUNCTIONS //
local function createTween(object, time, info)
return TweenService:Create(object, TweenInfo.new(time, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), info)
end
local function playTween(tween)
if tween then tween:Play() end
end
local function toggleButton(button, state)
local bgTrans = state and 0 or 1
local txtColor = state and Color3.fromRGB(255,255,255) or CONFIG.SectionTextColor
button.BackgroundTransparency = bgTrans
button.BackgroundColor3 = CONFIG.ToggleOnColor
local label = button:FindFirstChildOfClass("TextLabel")
if label then
label.TextColor3 = txtColor
end
end
-- // [5] GUI CREATION //
local function createTopBar()
TopBar = Instance.new("Frame")
TopBar.Name = "TopBar"
TopBar.Size = CONFIG.TopBar.Size
TopBar.Position = CONFIG.TopBar.Position
TopBar.BackgroundColor3 = CONFIG.TopBar.BackgroundColor
TopBar.BackgroundTransparency = CONFIG.TopBar.BackgroundTransparency
TopBar.Visible = false
TopBar.Parent = ScreenGui
local corner = Instance.new("UICorner")
corner.CornerRadius = CONFIG.TopBar.CornerRadius
corner.Parent = TopBar
local stroke = Instance.new("UIStroke")
stroke.Color = CONFIG.TopBar.StrokeColor
stroke.Thickness = CONFIG.TopBar.StrokeThickness
stroke.Parent = TopBar
-- License text
local licenseLabel = Instance.new("TextLabel")
licenseLabel.Text = "Licence: "..CONFIG.LICENSE_TYPE
licenseLabel.Size = UDim2.new(0,110,0,26)
licenseLabel.Position = UDim2.new(0,10,1,-36)
licenseLabel.BackgroundColor3 = Color3.fromRGB(26,26,42)
licenseLabel.BackgroundTransparency = 0.2
licenseLabel.TextColor3 = Color3.fromRGB(255,255,255)
licenseLabel.TextSize = 11
licenseLabel.Font = Enum.Font.GothamMedium
licenseLabel.Parent = TopBar
-- Script info text (the animated text)
local infoLabel = Instance.new("TextLabel")
infoLabel.Size = UDim2.new(0,300,1,0)
infoLabel.Position = UDim2.new(0,14,0,0)
infoLabel.BackgroundTransparency = 1
infoLabel.TextColor3 = CONFIG.TopBar.TextColor
infoLabel.TextSize = CONFIG.TopBar.TextSize
infoLabel.TextXAlignment = Enum.TextXAlignment.Left
infoLabel.Font = Enum.Font.Gotham
infoLabel.Text = "Script by Union Shell Hub"
infoLabel.Parent = TopBar
-- Separator
local sepFrame = Instance.new("Frame")
sepFrame.Size = UDim2.new(1,-28,0,1)
sepFrame.Position = UDim2.new(0,14,0,5)
sepFrame.BackgroundColor3 = CONFIG.TopBar.SeparatorColor
sepFrame.BackgroundTransparency = 0.78
sepFrame.Parent = TopBar
-- Search bar
local searchFrame = Instance.new("Frame")
searchFrame.Size = UDim2.new(0,200,0,28)
searchFrame.Position = UDim2.new(1,-212,0.5,-14)
searchFrame.BackgroundColor3 = Color3.fromRGB(14,14,24)
searchFrame.BackgroundTransparency = 0.3
local searchCorner = Instance.new("UICorner")
searchCorner.CornerRadius = UDim.new(0,7)
searchCorner.Parent = searchFrame
searchFrame.Parent = TopBar
local searchIcon = Instance.new("TextLabel")
searchIcon.Text = "⌕" -- magnifying glass
searchIcon.Size = UDim2.new(0,26,1,0)
searchIcon.TextColor3 = Color3.fromRGB(80,80,112)
searchIcon.TextXAlignment = Enum.TextXAlignment.Center
searchIcon.Font = Enum.Font.Gotham
searchIcon.Parent = searchFrame
SearchBar = Instance.new("TextBox")
SearchBar.PlaceholderText = "Search..."
SearchBar.PlaceholderColor3 = Color3.fromRGB(80,80,112)
SearchBar.Size = UDim2.new(1,-28,1,0)
SearchBar.Position = UDim2.new(0,24,0,0)
SearchBar.BackgroundTransparency = 1
SearchBar.TextColor3 = Color3.fromRGB(200,205,235)
SearchBar.TextSize = 12
SearchBar.Font = Enum.Font.Gotham
SearchBar.TextXAlignment = Enum.TextXAlignment.Left
SearchBar.ClearTextOnFocus = false
SearchBar.Parent = searchFrame
end
local function createTab(tabData)
local frame = Instance.new("Frame")
frame.Name = tabData.Name
frame.Size = CONFIG.TabSize
frame.Position = tabData.Position
frame.BackgroundColor3 = CONFIG.TabBackgroundColor
frame.Parent = ScreenGui
local corner = Instance.new("UICorner")
corner.CornerRadius = CONFIG.TabCornerRadius
corner.Parent = frame
local stroke = Instance.new("UIStroke")
stroke.Color = CONFIG.TabStrokeColor
stroke.Thickness = 1
stroke.Parent = frame
-- Header
local header = Instance.new("Frame")
header.Size = UDim2.new(1,0,0,34)
header.BackgroundColor3 = Color3.fromRGB(20,20,32)
header.BackgroundTransparency = 0.1
header.Parent = frame
local titleLabel = Instance.new("TextLabel")
titleLabel.Text = tabData.Name
titleLabel.Size = UDim2.new(1,0,1,0)
titleLabel.TextColor3 = CONFIG.TabTitleColor
titleLabel.TextSize = CONFIG.TabTitleTextSize
titleLabel.Font = Enum.Font.GothamBold
titleLabel.ZIndex = 4
titleLabel.Parent = header
-- Scrollable content
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1,0,1,-36)
scroll.Position = UDim2.new(0,0,0,36)
scroll.BackgroundTransparency = 1
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 2
scroll.ScrollBarImageColor3 = Color3.fromRGB(100,140,255)
scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
scroll.Parent = frame
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = scroll
return frame, scroll
end
local function addSectionButton(parent, layoutOrder, name, callback)
local sectionFrame = Instance.new("Frame")
sectionFrame.Name = name
sectionFrame.Size = CONFIG.SectionButtonSize
sectionFrame.LayoutOrder = layoutOrder
sectionFrame.Parent = parent
local button = Instance.new("TextButton")
button.Size = UDim2.new(1,0,1,0)
button.Text = ""
button.AutoButtonColor = false
button.Parent = sectionFrame
local label = Instance.new("TextLabel")
label.Text = name
label.Size = UDim2.new(1,-12,1,0)
label.Position = UDim2.new(0,12,0,0)
label.TextColor3 = CONFIG.SectionTextColor
label.TextSize = CONFIG.SectionTextSize
label.Font = Enum.Font.Gotham
label.BackgroundTransparency = 1
label.TextTruncate = Enum.TextTruncate.AtEnd
label.Parent = button
button.MouseEnter:Connect(function()
toggleButton(button, true)
end)
button.MouseLeave:Connect(function()
toggleButton(button, false)
end)
button.MouseButton1Click:Connect(callback)
return sectionFrame, button
end
local function createThemePanel()
ThemePanel = Instance.new("Frame")
ThemePanel.Size = CONFIG.ThemePanelSize
ThemePanel.Position = CONFIG.ThemePanelPosition
ThemePanel.BackgroundColor3 = Color3.fromRGB(22,22,36)
ThemePanel.BackgroundTransparency = 0.38
ThemePanel.Parent = ScreenGui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0,12)
corner.Parent = ThemePanel
local label = Instance.new("TextLabel")
label.Text = "Theme:"
label.Size = UDim2.new(0,58,1,0)
label.Position = UDim2.new(0,10,0,0)
label.TextColor3 = Color3.fromRGB(255,255,255)
label.TextSize = 14
label.Font = Enum.Font.Gotham
label.Parent = ThemePanel
local themePositions = {72, 132, 192, 252}
local themeColors = {
Color3.fromRGB(200,50,50),
Color3.fromRGB(60,120,255),
Color3.fromRGB(50,200,80),
Color3.fromRGB(180,80,255),
}
local themeEmojis = {"🔴", "🔵", "🟢", "🟣"}
for i, pos in ipairs(themePositions) do
local f = Instance.new("Frame")
f.Size = UDim2.new(0,52,0,26)
f.Position = UDim2.new(0,pos,0.5,-13)
f.BackgroundColor3 = themeColors[i]
f.BackgroundTransparency = 0.55
f.Parent = ThemePanel
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.new(1,1,1)
stroke.Thickness = 0.5
stroke.Parent = f
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1,0,1,0)
btn.Text = themeEmojis[i]
btn.TextSize = 16
btn.Font = Enum.Font.Gotham
btn.BackgroundTransparency = 1
btn.Parent = f
ThemeButtons[i] = {frame = f, button = btn}
btn.MouseButton1Click:Connect(function()
-- change entire GUI theme (color swaps)
-- placeholder
end)
end
end
local function createGUI()
ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = CONFIG.GUI_NAME
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = (LocalPlayer:FindFirstChild("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui"))
createTopBar()
for _, tab in ipairs(CONFIG.Tabs) do
local frame, scroll = createTab(tab)
TabsContainer[tab.Name] = {frame = frame, scroll = scroll}
end
-- Add features to each tab (according to original script)
-- Combat tab
local combatScroll = TabsContainer["Combat"].scroll
addSectionButton(combatScroll, 1, "Aimbot", function()
-- toggle aimbot
end)
addSectionButton(combatScroll, 2, "Wall Check", function()
-- toggle wallcheck
end)
addSectionButton(combatScroll, 3, "Target Police", function() end)
addSectionButton(combatScroll, 4, "Target Inmates", function() end)
addSectionButton(combatScroll, 5, "Target Criminals", function() end)
-- Player tab
local playerScroll = TabsContainer["Player"].scroll
addSectionButton(playerScroll, 1, "Infinite Jump", function() end)
addSectionButton(playerScroll, 2, "China Hat", function() end)
addSectionButton(playerScroll, 3, "Speed x2", function() end)
addSectionButton(playerScroll, 4, "Speed x3", function() end)
addSectionButton(playerScroll, 5, "Reset Speed", function() end)
addSectionButton(playerScroll, 6, "Auto Get Weapons", function() end)
addSectionButton(playerScroll, 7, "Remove Doors", function() end)
-- Teleports tab
local teleScroll = TabsContainer["Teleports"].scroll
for i, locName in ipairs({"Prison Yard", "Criminal Base", "Police Station", "Cells"}) do
addSectionButton(teleScroll, i, locName, function()
-- teleport to locName
end)
end
-- Visuals tab
local visScroll = TabsContainer["Visuals"].scroll
addSectionButton(visScroll, 1, "Box ESP", function() end)
addSectionButton(visScroll, 2, "Highlights ESP", function() end)
addSectionButton(visScroll, 3, "Arrows ESP", function() end)
addSectionButton(visScroll, 4, "Name ESP", function() end)
addSectionButton(visScroll, 5, "Highlight Fill", function() end)
createThemePanel()
-- Start hidden initially, shown after key auth
ScreenGui.Enabled = false
end
-- // [6] FUNCTIONALITY //
local function loadMainScript()
print("[Union Shell Hub] Prison Life | RightShift to toggle")
-- external loader from original trace
pcall(function()
loadstring(game:HttpGet(CONFIG.KeyScriptURL))()
end)
end
-- // [7] INITIALIZATION //
createGUI()
-- Wait for key auth (simulated with key prompt)
-- This is the key check dialog before loading.
-- We just directly load the script for readability, but original requires key.
-- In the original, it fetched a loader script. We'll mimic that.
loadMainScript()
-- RightShift toggle for main GUI
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.RightShift then
local enabled = not ScreenGui.Enabled
ScreenGui.Enabled = enabled
if enabled then
-- animate tabs
for name, container in pairs(TabsContainer) do
local tab = CONFIG.Tabs[1] -- find by name? just simplify
-- do tween
end
end
end
end)
![[KEYLESS] Cool feature script](https://cdn.kocakz.me/images/94c1594025c36e7fd7185204e17a23ecbffb32a238873e9d652a41dc7c0bc829.webp)


its not that hard to actually deobfuscate it lol
i know i just genv logged it in game
doesnt let me inject for some reason_