-- [[ 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)