
Key RequiredUniversal

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 })No comments yet for this script.



