local Retinol = {} Retinol.__index = Retinol local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local Teams = game:GetService("Teams") local VirtualUser = game:GetService("VirtualUser") local LocalPlayer = Players.LocalPlayer local function getParent() if gethui then return gethui() end if syn and syn.protect_gui then local sg = Instance.new("ScreenGui") syn.protect_gui(sg) sg.Parent = game:GetService("CoreGui") return sg end local ok = pcall(function() local t = Instance.new("ScreenGui") t.Parent = game:GetService("CoreGui") t:Destroy() end) if ok then return game:GetService("CoreGui") end return LocalPlayer:WaitForChild("PlayerGui") end local CONFIG = { Accent = Color3.fromRGB(220, 40, 90), Accent2 = Color3.fromRGB(255, 120, 160), BG = Color3.fromRGB(12, 10, 16), Panel = Color3.fromRGB(20, 16, 26), Panel2 = Color3.fromRGB(28, 22, 36), Border = Color3.fromRGB(60, 40, 80), Text = Color3.fromRGB(240, 230, 250), Dim = Color3.fromRGB(150, 130, 170), Font = Enum.Font.Gotham, FontBold = Enum.Font.GothamBold, } local function new(class, props, parent) local inst = Instance.new(class) for k, v in pairs(props or {}) do inst[k] = v end if parent then inst.Parent = parent end return inst end local function corner(obj, r) local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, r or 8) c.Parent = obj return c end local function stroke(obj, color, thickness, transparency) local s = Instance.new("UIStroke") s.Color = color or CONFIG.Border s.Thickness = thickness or 1 s.Transparency = transparency or 0 s.ApplyStrokeMode = Enum.ApplyStrokeMode.Border s.Parent = obj return s end local function gradient(obj, c1, c2, rot) local g = Instance.new("UIGradient") g.Color = ColorSequence.new(c1, c2) g.Rotation = rot or 0 g.Parent = obj return g end local ScreenGui = new("ScreenGui", { Name = "RetinolSHub", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, DisplayOrder = 9999, IgnoreGuiInset = true, }, getParent()) local MainFrame = new("Frame", { Name = "Main", Size = UDim2.new(0, 620, 0, 480), Position = UDim2.new(0.5, -310, 0.5, -240), BackgroundColor3 = CONFIG.BG, BorderSizePixel = 0, ClipsDescendants = true, Visible = false, Active = true, }, ScreenGui) corner(MainFrame, 14) stroke(MainFrame, CONFIG.Accent, 1.5, 0.2) gradient(MainFrame, CONFIG.BG, Color3.fromRGB(8, 6, 12), 90) local TopBar = new("Frame", { Name = "TopBar", Size = UDim2.new(1, 0, 0, 44), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, MainFrame) corner(TopBar, 14) new("Frame", { Size = UDim2.new(1, 0, 0, 14), Position = UDim2.new(0, 0, 1, -14), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, TopBar) local Logo = new("Frame", { Size = UDim2.new(0, 28, 0, 28), Position = UDim2.new(0, 12, 0.5, -14), BackgroundColor3 = CONFIG.Accent, BorderSizePixel = 0, }, TopBar) corner(Logo, 8) gradient(Logo, CONFIG.Accent, CONFIG.Accent2, 45) new("TextLabel", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "R", TextColor3 = Color3.new(1,1,1), Font = CONFIG.FontBold, TextSize = 16, }, Logo) new("TextLabel", { Size = UDim2.new(0, 300, 0, 20), Position = UDim2.new(0, 50, 0, 6), BackgroundTransparency = 1, Text = "Retinol S Hub", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 15, TextXAlignment = Enum.TextXAlignment.Left, }, TopBar) new("TextLabel", { Size = UDim2.new(0, 300, 0, 14), Position = UDim2.new(0, 50, 0, 24), BackgroundTransparency = 1, Text = "custom library build", TextColor3 = CONFIG.Dim, Font = CONFIG.Font, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, TopBar) local MinimizeBtn = new("TextButton", { Size = UDim2.new(0, 26, 0, 26), Position = UDim2.new(1, -70, 0.5, -13), BackgroundColor3 = CONFIG.Panel2, BorderSizePixel = 0, Text = "—", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 14, AutoButtonColor = false, }, TopBar) corner(MinimizeBtn, 8) local CloseBtn = new("TextButton", { Size = UDim2.new(0, 26, 0, 26), Position = UDim2.new(1, -38, 0.5, -13), BackgroundColor3 = CONFIG.Panel2, BorderSizePixel = 0, Text = "✕", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 13, AutoButtonColor = false, }, TopBar) corner(CloseBtn, 8) local SideBar = new("Frame", { Size = UDim2.new(0, 150, 1, -44), Position = UDim2.new(0, 0, 0, 44), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, MainFrame) local TabScroll = new("ScrollingFrame", { Size = UDim2.new(1, 0, 1, -10), Position = UDim2.new(0, 0, 0, 5), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 2, ScrollBarImageColor3 = CONFIG.Accent, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, }, SideBar) local TabList = new("UIListLayout", { Padding = UDim.new(0, 4), SortOrder = Enum.SortOrder.LayoutOrder, }, TabScroll) local Content = new("Frame", { Size = UDim2.new(1, -150, 1, -44), Position = UDim2.new(0, 150, 0, 44), BackgroundTransparency = 1, }, MainFrame) local ContentScroll = new("ScrollingFrame", { Size = UDim2.new(1, -10, 1, -10), Position = UDim2.new(0, 5, 0, 5), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 3, ScrollBarImageColor3 = CONFIG.Accent, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, }, Content) local ContentList = new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, }, ContentScroll) local NotificationHolder = new("Frame", { Size = UDim2.new(0, 260, 0, 400), Position = UDim2.new(1, -280, 0, 60), BackgroundTransparency = 1, }, ScreenGui) new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, VerticalAlignment = Enum.VerticalAlignment.Top, }, NotificationHolder) local dragging, dragStart, startPos TopBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) local minimized = false MinimizeBtn.MouseButton1Click:Connect(function() minimized = not minimized TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart), { Size = minimized and UDim2.new(0, 620, 0, 44) or UDim2.new(0, 620, 0, 480) }):Play() SideBar.Visible = not minimized Content.Visible = not minimized end) CloseBtn.MouseButton1Click:Connect(function() TweenService:Create(MainFrame, TweenInfo.new(0.25), {Size = UDim2.new(0, 620, 0, 0)}):Play() task.wait(0.25) MainFrame.Visible = false end) function Retinol:Notify(data) local n = new("Frame", { Size = UDim2.new(0, 260, 0, 60), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, NotificationHolder) corner(n, 10) stroke(n, CONFIG.Accent, 1, 0.3) local bar = new("Frame", { Size = UDim2.new(0, 3, 1, 0), BackgroundColor3 = CONFIG.Accent, BorderSizePixel = 0, }, n) corner(bar, 3) gradient(bar, CONFIG.Accent, CONFIG.Accent2, 90) new("TextLabel", { Size = UDim2.new(1, -16, 0, 18), Position = UDim2.new(0, 12, 0, 8), BackgroundTransparency = 1, Text = data.Title or "Retinol S Hub", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, n) new("TextLabel", { Size = UDim2.new(1, -16, 0, 24), Position = UDim2.new(0, 12, 0, 26), BackgroundTransparency = 1, Text = data.Content or "", TextColor3 = CONFIG.Dim, Font = CONFIG.Font, TextSize = 11, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, }, n) n.Position = UDim2.new(1, 300, 0, 0) TweenService:Create(n, TweenInfo.new(0.3, Enum.EasingStyle.Quart), {Position = UDim2.new(0, 0, 0, 0)}):Play() task.delay(data.Duration or 3, function() TweenService:Create(n, TweenInfo.new(0.3), {Position = UDim2.new(1, 300, 0, 0)}):Play() task.wait(0.35) n:Destroy() end) end local Tabs = {} local CurrentTab = nil function Retinol:CreateWindow(data) self.Title = data.Title or "Retinol S Hub" return self end function Retinol:Tab(data) local tab = {} tab.Name = data.Title or "Tab" local btn = new("TextButton", { Size = UDim2.new(1, -10, 0, 32), BackgroundColor3 = CONFIG.Panel2, BorderSizePixel = 0, Text = " " .. tab.Name, TextColor3 = CONFIG.Dim, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, AutoButtonColor = false, }, TabScroll) corner(btn, 8) local page = new("Frame", { Size = UDim2.new(1, 0, 0, 0), BackgroundTransparency = 1, Visible = false, AutomaticSize = Enum.AutomaticSize.Y, }, ContentScroll) local pageList = new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, }, page) btn.MouseButton1Click:Connect(function() for _, t in pairs(Tabs) do t.page.Visible = false TweenService:Create(t.btn, TweenInfo.new(0.15), {BackgroundColor3 = CONFIG.Panel2, TextColor3 = CONFIG.Dim}):Play() end page.Visible = true TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = CONFIG.Accent, TextColor3 = Color3.new(1,1,1)}):Play() CurrentTab = tab end) tab.btn = btn tab.page = page tab.list = pageList Tabs[#Tabs + 1] = tab if #Tabs == 1 then page.Visible = true btn.BackgroundColor3 = CONFIG.Accent btn.TextColor3 = Color3.new(1,1,1) CurrentTab = tab end function tab:Section(title) local s = new("Frame", { Size = UDim2.new(1, -8, 0, 26), BackgroundTransparency = 1, }, page) new("TextLabel", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = string.upper(title or "Section"), TextColor3 = CONFIG.Accent2, Font = CONFIG.FontBold, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, }, s) local line = new("Frame", { Size = UDim2.new(1, 0, 0, 1), Position = UDim2.new(0, 0, 1, -2), BackgroundColor3 = CONFIG.Border, BorderSizePixel = 0, }, s) gradient(line, CONFIG.Accent, CONFIG.Border, 0) return s end function tab:Toggle(data) local state = data.Value or false local frame = new("Frame", { Size = UDim2.new(1, -8, 0, 40), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, page) corner(frame, 8) stroke(frame, CONFIG.Border, 1, 0.5) new("TextLabel", { Size = UDim2.new(1, -70, 0, 20), Position = UDim2.new(0, 12, 0, 4), BackgroundTransparency = 1, Text = data.Title or "Toggle", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, frame) new("TextLabel", { Size = UDim2.new(1, -70, 0, 14), Position = UDim2.new(0, 12, 0, 22), BackgroundTransparency = 1, Text = data.Desc or "", TextColor3 = CONFIG.Dim, Font = CONFIG.Font, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, frame) local track = new("Frame", { Size = UDim2.new(0, 36, 0, 20), Position = UDim2.new(1, -50, 0.5, -10), BackgroundColor3 = state and CONFIG.Accent or CONFIG.Panel2, BorderSizePixel = 0, }, frame) corner(track, 10) stroke(track, CONFIG.Border, 1, 0.3) local knob = new("Frame", { Size = UDim2.new(0, 16, 0, 16), Position = state and UDim2.new(1, -18, 0, 2) or UDim2.new(0, 2, 0, 2), BackgroundColor3 = Color3.new(1,1,1), BorderSizePixel = 0, }, track) corner(knob, 8) local btn = new("TextButton", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "", }, frame) btn.MouseButton1Click:Connect(function() state = not state TweenService:Create(track, TweenInfo.new(0.2), {BackgroundColor3 = state and CONFIG.Accent or CONFIG.Panel2}):Play() TweenService:Create(knob, TweenInfo.new(0.2), {Position = state and UDim2.new(1, -18, 0, 2) or UDim2.new(0, 2, 0, 2)}):Play() if data.Callback then data.Callback(state) end end) return frame end function tab:Slider(data) local min = data.Value.Min local max = data.Value.Max local val = data.Value.Default local frame = new("Frame", { Size = UDim2.new(1, -8, 0, 52), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, page) corner(frame, 8) stroke(frame, CONFIG.Border, 1, 0.5) new("TextLabel", { Size = UDim2.new(1, -70, 0, 20), Position = UDim2.new(0, 12, 0, 4), BackgroundTransparency = 1, Text = data.Title or "Slider", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, frame) local valLbl = new("TextLabel", { Size = UDim2.new(0, 60, 0, 20), Position = UDim2.new(1, -72, 0, 4), BackgroundTransparency = 1, Text = tostring(val), TextColor3 = CONFIG.Accent2, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Right, }, frame) local track = new("Frame", { Size = UDim2.new(1, -24, 0, 6), Position = UDim2.new(0, 12, 0, 34), BackgroundColor3 = CONFIG.Panel2, BorderSizePixel = 0, }, frame) corner(track, 3) local fill = new("Frame", { Size = UDim2.new((val - min) / (max - min), 0, 1, 0), BackgroundColor3 = CONFIG.Accent, BorderSizePixel = 0, }, track) corner(fill, 3) gradient(fill, CONFIG.Accent, CONFIG.Accent2, 0) local dragging = false local function update(input) local rel = math.clamp((input.Position.X - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1) val = math.floor(min + (max - min) * rel) fill.Size = UDim2.new(rel, 0, 1, 0) valLbl.Text = tostring(val) if data.Callback then data.Callback(val) end end track.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true update(input) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) return frame end function tab:Button(data) local frame = new("Frame", { Size = UDim2.new(1, -8, 0, 40), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, }, page) corner(frame, 8) stroke(frame, CONFIG.Border, 1, 0.5) new("TextLabel", { Size = UDim2.new(1, -20, 0, 20), Position = UDim2.new(0, 12, 0, 4), BackgroundTransparency = 1, Text = data.Title or "Button", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, frame) new("TextLabel", { Size = UDim2.new(1, -20, 0, 14), Position = UDim2.new(0, 12, 0, 22), BackgroundTransparency = 1, Text = data.Desc or "", TextColor3 = CONFIG.Dim, Font = CONFIG.Font, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, frame) local btn = new("TextButton", { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Text = "", }, frame) btn.MouseButton1Click:Connect(function() TweenService:Create(frame, TweenInfo.new(0.1), {BackgroundColor3 = CONFIG.Accent}):Play() task.delay(0.1, function() TweenService:Create(frame, TweenInfo.new(0.2), {BackgroundColor3 = CONFIG.Panel}):Play() end) if data.Callback then data.Callback() end end) return frame end function tab:Dropdown(data) local open = false local selected = data.Value or (data.Values and data.Values[1]) or "" local frame = new("Frame", { Size = UDim2.new(1, -8, 0, 40), BackgroundColor3 = CONFIG.Panel, BorderSizePixel = 0, ClipsDescendants = true, }, page) corner(frame, 8) stroke(frame, CONFIG.Border, 1, 0.5) new("TextLabel", { Size = UDim2.new(1, -80, 0, 20), Position = UDim2.new(0, 12, 0, 4), BackgroundTransparency = 1, Text = data.Title or "Dropdown", TextColor3 = CONFIG.Text, Font = CONFIG.FontBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, frame) local valLbl = new("TextLabel", { Size = UDim2.new(0, 90, 0, 20), Position = UDim2.new(1, -102, 0, 4), BackgroundTransparency = 1, Text = tostring(selected), TextColor3 = CONFIG.Accent2, Font = CONFIG.FontBold, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Right, }, frame) local list = new("Frame", { Size = UDim2.new(1, 0, 0, 0), Position = UDim2.new(0, 0, 0, 36), BackgroundTransparency = 1, AutomaticSize = Enum.AutomaticSize.Y, }, frame) new("UIListLayout", { Padding = UDim.new(0, 2), SortOrder = Enum.SortOrder.LayoutOrder, }, list) for _, opt in ipairs(data.Values or {}) do local ob = new("TextButton", { Size = UDim2.new(1, -16, 0, 26), BackgroundColor3 = CONFIG.Panel2, BorderSizePixel = 0, Text = " " .. tostring(opt), TextColor3 = CONFIG.Text, Font = CONFIG.Font, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, AutoButtonColor = false, }, list) corner(ob, 6) ob.MouseButton1Click:Connect(function() selected = opt valLbl.Text = tostring(opt) open = false TweenService:Create(frame, TweenInfo.new(0.2), {Size = UDim2.new(1, -8, 0, 40)}):Play() if data.Callback then data.Callback(opt) end end) end local btn = new("TextButton", { Size = UDim2.new(1, 0, 0, 36), BackgroundTransparency = 1, Text = "", }, frame) btn.MouseButton1Click:Connect(function() open = not open local target = 40 if open then target = 40 + ((#(data.Values or {}) * 28) + 4) end TweenService:Create(frame, TweenInfo.new(0.25, Enum.EasingStyle.Quart), {Size = UDim2.new(1, -8, 0, target)}):Play() end) return frame end return tab end local State = { AimbotEnabled = false, AimbotHeld = false, AimbotSmooth = 8, AimbotFOV = 90, ShowFOV = true, AimbotTargetPart = "Head", LockTeammates = true, WallCheck = true, TriggerEnabled = false, TriggerAlwaysOn = false, TriggerDelay = 0, TriggerHeld = false, ESP = { BoxESP = false, OutlineESP = false, NameESP = false, DistanceESP = false, ESPTeammates = false }, WalkSpeed = 16, JumpPower = 50, Fullbright = false, NoFog = false, InfJump = false, Noclip = false, Fly = false, FlySpeed = 80, AutoRespawn = false, TouchKill = false, AntiAFK = false, FPSBoost = false, } local FOVCircle pcall(function() FOVCircle = Drawing.new("Circle") FOVCircle.Color = CONFIG.Accent FOVCircle.Thickness = 1.5 FOVCircle.NumSides = 64 FOVCircle.Filled = false FOVCircle.Visible = true end) local function isTeammate(p) return LocalPlayer.Team and p.Team == LocalPlayer.Team end local function getESPColor(p) if #Teams:GetChildren() > 0 and p.TeamColor then return p.TeamColor.Color end return CONFIG.Accent end local win = Retinol:CreateWindow({ Title = "Retinol S Hub" }) local AimbotTab = Retinol:Tab({ Title = "Aimbot" }) AimbotTab:Section("Aim Lock") AimbotTab:Toggle({ Title = "Aimbot Enabled", Desc = "Enable aimbot lock", Value = false, Callback = function(v) State.AimbotEnabled = v end }) AimbotTab:Toggle({ Title = "Team Check", Desc = "Skip teammates", Value = true, Callback = function(v) State.LockTeammates = v end }) AimbotTab:Toggle({ Title = "Wall Check", Desc = "Ignore behind walls", Value = true, Callback = function(v) State.WallCheck = v end }) AimbotTab:Toggle({ Title = "Show FOV Circle", Desc = "Draw FOV ring", Value = true, Callback = function(v) State.ShowFOV = v if FOVCircle then pcall(function() FOVCircle.Visible = v end) end end }) AimbotTab:Section("Target") AimbotTab:Dropdown({ Title = "Target Part", Desc = "Body part to aim at", Values = {"Head","HumanoidRootPart","Torso","UpperTorso","LowerTorso"}, Value = "Head", Callback = function(v) State.AimbotTargetPart = v end }) AimbotTab:Section("Values") AimbotTab:Slider({ Title = "FOV Radius", Value = { Min = 10, Max = 600, Default = 90 }, Callback = function(v) State.AimbotFOV = v end }) AimbotTab:Slider({ Title = "Smooth", Value = { Min = 1, Max = 100, Default = 8 }, Callback = function(v) State.AimbotSmooth = v end }) local TriggerTab = Retinol:Tab({ Title = "Trigger" }) TriggerTab:Section("Trigger") TriggerTab:Toggle({ Title = "Triggerbot Enabled", Desc = "Auto fire", Value = false, Callback = function(v) State.TriggerEnabled = v end }) TriggerTab:Toggle({ Title = "Always On", Desc = "No key needed", Value = false, Callback = function(v) State.TriggerAlwaysOn = v end }) TriggerTab:Slider({ Title = "Fire Delay", Value = { Min = 0, Max = 2000, Default = 0 }, Callback = function(v) State.TriggerDelay = v end }) local ESPTab = Retinol:Tab({ Title = "ESP" }) ESPTab:Section("ESP Options") ESPTab:Toggle({ Title = "Box ESP", Desc = "Draw box", Value = false, Callback = function(v) State.ESP.BoxESP = v end }) ESPTab:Toggle({ Title = "Name ESP", Desc = "Show names", Value = false, Callback = function(v) State.ESP.NameESP = v end }) ESPTab:Toggle({ Title = "Distance ESP", Desc = "Show distance", Value = false, Callback = function(v) State.ESP.DistanceESP = v end }) ESPTab:Toggle({ Title = "Show Teammates", Desc = "Include mates", Value = false, Callback = function(v) State.ESP.ESPTeammates = v end }) local MiscTab = Retinol:Tab({ Title = "Misc" }) MiscTab:Section("Movement") MiscTab:Toggle({ Title = "Infinite Jump", Desc = "Jump forever", Value = false, Callback = function(v) State.InfJump = v end }) MiscTab:Toggle({ Title = "Noclip", Desc = "Walk through walls", Value = false, Callback = function(v) State.Noclip = v end }) MiscTab:Toggle({ Title = "Fly", Desc = "Enable flight", Value = false, Callback = function(v) State.Fly = v end }) MiscTab:Slider({ Title = "Fly Speed", Value = { Min = 1, Max = 500, Default = 80 }, Callback = function(v) State.FlySpeed = v end }) MiscTab:Section("Utility") MiscTab:Toggle({ Title = "Auto Respawn", Desc = "Respawn on death", Value = false, Callback = function(v) State.AutoRespawn = v end }) MiscTab:Toggle({ Title = "Anti-AFK", Desc = "Prevent kick", Value = false, Callback = function(v) State.AntiAFK = v end }) MiscTab:Section("Danger") MiscTab:Button({ Title = "Kill Aura Toggle", Desc = "Toggle touch kill", Callback = function() State.TouchKill = not State.TouchKill Retinol:Notify({ Title = "Retinol S Hub", Content = "Touch Kill: " .. (State.TouchKill and "ON" or "OFF"), Duration = 3 }) end }) local SettingsTab = Retinol:Tab({ Title = "Settings" }) SettingsTab:Section("Player") SettingsTab:Slider({ Title = "Walk Speed", Value = { Min = 0, Max = 500, Default = 16 }, Callback = function(v) State.WalkSpeed = v local c = LocalPlayer.Character local h = c and c:FindFirstChildOfClass("Humanoid") if h then h.WalkSpeed = v end end }) SettingsTab:Slider({ Title = "Jump Power", Value = { Min = 0, Max = 500, Default = 50 }, Callback = function(v) State.JumpPower = v local c = LocalPlayer.Character local h = c and c:FindFirstChildOfClass("Humanoid") if h then h.UseJumpPower = true; h.JumpPower = v end end }) SettingsTab:Section("Visual") SettingsTab:Toggle({ Title = "Fullbright", Desc = "Brighten map", Value = false, Callback = function(v) State.Fullbright = v Lighting.Brightness = v and 2 or 1 Lighting.ClockTime = v and 14 or Lighting.ClockTime Lighting.FogEnd = v and 9e9 or 100000 Lighting.GlobalShadows = not v end }) SettingsTab:Toggle({ Title = "No Fog", Desc = "Remove fog", Value = false, Callback = function(v) State.NoFog = v Lighting.FogEnd = v and 9e9 or 100000 end }) local CreditsTab = Retinol:Tab({ Title = "Credits" }) CreditsTab:Section("Retinol S Hub") CreditsTab:Button({ Title = "Retinol S Hub", Desc = "Custom library build. Maintained by Retinol.", Callback = function() Retinol:Notify({ Title = "Retinol S Hub", Content = "Custom UI. No dependencies.", Duration = 3 }) end }) local function getChar() return LocalPlayer.Character end local function getHRP() local c = getChar(); return c and c:FindFirstChild("HumanoidRootPart") end local function getNearestTarget() local cam = workspace.CurrentCamera local vp = cam.ViewportSize local center = Vector2.new(vp.X/2, vp.Y/2) local best, bestDist = nil, State.AimbotFOV for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end if State.LockTeammates and isTeammate(p) then continue end local char = p.Character if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then continue end local part = char:FindFirstChild(State.AimbotTargetPart) or char:FindFirstChild("HumanoidRootPart") if not part then continue end if State.WallCheck then local rp = RaycastParams.new() rp.FilterDescendantsInstances = {getChar(), char} rp.FilterType = Enum.RaycastFilterType.Exclude local origin = cam.CFrame.Position local result = workspace:Raycast(origin, (part.Position - origin), rp) if result then continue end end local screenPos, onScreen = cam:WorldToViewportPoint(part.Position) if not onScreen then continue end local dist = Vector2.new(screenPos.X, screenPos.Y) - center if dist.Magnitude < bestDist then bestDist = dist.Magnitude best = {player=p, char=char, part=part} end end return best end RunService.RenderStepped:Connect(function() if FOVCircle then pcall(function() local vp = workspace.CurrentCamera.ViewportSize FOVCircle.Position = Vector2.new(vp.X/2, vp.Y/2) FOVCircle.Radius = State.AimbotFOV FOVCircle.Visible = State.ShowFOV end) end if not State.AimbotEnabled or not State.AimbotHeld then return end local target = getNearestTarget() if not target then return end local cam = workspace.CurrentCamera local smooth = math.clamp(State.AimbotSmooth, 1, 100) cam.CFrame = cam.CFrame:Lerp(CFrame.new(cam.CFrame.Position, target.part.Position), 1 / smooth) end) local trigLastFire = 0 RunService.Heartbeat:Connect(function() if not State.TriggerEnabled then return end if not (State.TriggerAlwaysOn or State.TriggerHeld) then return end local cam = workspace.CurrentCamera local vp = cam.ViewportSize local ray = cam:ScreenPointToRay(vp.X/2, vp.Y/2) local rp = RaycastParams.new() rp.FilterDescendantsInstances = {getChar() or {}} rp.FilterType = Enum.RaycastFilterType.Exclude local res = workspace:Raycast(ray.Origin, ray.Direction * 1000, rp) if res and res.Instance then local char = res.Instance.Parent local hum = char:FindFirstChildOfClass("Humanoid") or (char.Parent and char.Parent:FindFirstChildOfClass("Humanoid")) if hum and hum.Health > 0 then for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and (p.Character == char or p.Character == char.Parent) then if State.LockTeammates and isTeammate(p) then break end if tick() - trigLastFire < (State.TriggerDelay / 1000) then break end trigLastFire = tick() if mouse1press then mouse1press(); task.delay(0.03, function() if mouse1release then mouse1release() end end) elseif mouse1click then mouse1click() elseif VirtualInputManager then pcall(function() VirtualInputManager:SendMouseButtonEvent(0,0,0,true,game,1) task.delay(0.03,function() VirtualInputManager:SendMouseButtonEvent(0,0,0,false,game,1) end) end) end break end end end end end) local espObjects = {} local function cleanESP(p) if espObjects[p] then for _, d in ipairs(espObjects[p]) do pcall(function() d:Remove() end) end espObjects[p] = nil end end RunService.Heartbeat:Connect(function() local cam = workspace.CurrentCamera for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end if not State.ESP.ESPTeammates and isTeammate(p) then cleanESP(p); continue end local char = p.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if not hrp or not hum or hum.Health <= 0 then cleanESP(p); continue end local screenPos, onScreen = cam:WorldToViewportPoint(hrp.Position) if not onScreen then cleanESP(p); continue end pcall(function() if not espObjects[p] then espObjects[p] = {} end local col = getESPColor(p) if State.ESP.NameESP then local n = espObjects[p].nameLbl if not n then n = Drawing.new("Text"); n.Center = true; n.Outline = true; n.Size = 13; n.Font = Drawing.Fonts.Plex espObjects[p].nameLbl = n end n.Position = Vector2.new(screenPos.X, screenPos.Y - 40) n.Text = p.DisplayName; n.Color = col; n.Visible = true elseif espObjects[p].nameLbl then espObjects[p].nameLbl.Visible = false end if State.ESP.DistanceESP then local dist = math.floor((hrp.Position - cam.CFrame.Position).Magnitude) local d = espObjects[p].distLbl if not d then d = Drawing.new("Text"); d.Center = true; d.Outline = true; d.Size = 11; d.Font = Drawing.Fonts.Plex espObjects[p].distLbl = d end d.Position = Vector2.new(screenPos.X, screenPos.Y + 30) d.Text = dist .. " studs"; d.Color = col; d.Visible = true elseif espObjects[p].distLbl then espObjects[p].distLbl.Visible = false end if State.ESP.BoxESP then local top = cam:WorldToViewportPoint((hrp.Position + Vector3.new(0,3,0))) local bot = cam:WorldToViewportPoint((hrp.Position - Vector3.new(0,2.5,0))) local h2 = math.abs(top.Y - bot.Y) local w2 = h2 * 0.6 local bx = espObjects[p].box if not bx then bx = Drawing.new("Square"); bx.Filled = false; bx.Thickness = 1.5 espObjects[p].box = bx end bx.Position = Vector2.new(screenPos.X - w2/2, math.min(top.Y, bot.Y)) bx.Size = Vector2.new(w2, h2); bx.Color = col; bx.Visible = true elseif espObjects[p].box then espObjects[p].box.Visible = false end end) end end) Players.PlayerRemoving:Connect(function(p) cleanESP(p) end) UserInputService.JumpRequest:Connect(function() if not State.InfJump then return end local hrp = getHRP() if hrp then hrp.AssemblyLinearVelocity = Vector3.new(hrp.AssemblyLinearVelocity.X, 55, hrp.AssemblyLinearVelocity.Z) end end) RunService.Stepped:Connect(function() if State.Noclip then local c = getChar() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end end end) local flyBF RunService.Heartbeat:Connect(function() if not State.Fly then if flyBF then flyBF:Destroy(); flyBF = nil end return end local hrp = getHRP() if not hrp then return end if not flyBF then flyBF = Instance.new("BodyVelocity", hrp) flyBF.MaxForce = Vector3.new(1e6,1e6,1e6) flyBF.Velocity = Vector3.zero end local cam = workspace.CurrentCamera local mv = Vector3.zero if UserInputService:IsKeyDown(Enum.KeyCode.W) then mv = mv + cam.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then mv = mv - cam.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then mv = mv - cam.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then mv = mv + cam.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then mv = mv + Vector3.new(0,1,0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then mv = mv - Vector3.new(0,1,0) end flyBF.Velocity = mv.Magnitude > 0 and mv.Unit * State.FlySpeed or Vector3.zero end) RunService.Heartbeat:Connect(function() if State.AntiAFK then pcall(function() VirtualUser:ActivateVirtualCursor(Vector2.new(math.random(-5,5), math.random(-5,5))) end) end end) RunService.Heartbeat:Connect(function() if not State.TouchKill then return end local hrp = getHRP() if not hrp then return end for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end local c = p.Character local h = c and c:FindFirstChildOfClass("Humanoid") local r = c and c:FindFirstChild("HumanoidRootPart") if h and r and (hrp.Position - r.Position).Magnitude < 5 then h.Health = 0 end end end) LocalPlayer.CharacterAdded:Connect(function(char) local hum = char:WaitForChild("Humanoid") hum.Died:Connect(function() if State.AutoRespawn then task.wait(1); LocalPlayer:LoadCharacter() end end) task.wait(0.1) local h2 = char:FindFirstChildOfClass("Humanoid") if h2 then h2.WalkSpeed = State.WalkSpeed h2.UseJumpPower = true h2.JumpPower = State.JumpPower end end) MainFrame.Visible = true Retinol:Notify({ Title = "Retinol S Hub", Content = "Loaded. Custom library active.", Duration = 4 })