
KeylessUniversal

if not isfolder then getgenv().isfolder = function() return true end end
if not makefolder then getgenv().makefolder = function() end end
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/ImInsane-1337/neverlose-ui/refs/heads/main/source/library.lua"))()
-- [СЕРВРРЎР«]
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Lighting = game:GetService("Lighting")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local Camera = workspace.CurrentCamera
local Player = Players.LocalPlayer
-- [Р’РЎР• НАСТРОЙКР]
local QueueSave
local IsLoading = false
local SettingsData = {
-- Aimbot
Enabled = false, FOV = 150, HitPart = "Head", ShotDelay = 0.03,
WallCheck = false, TeamCheck = false, Smoothing = false, SmoothFactor = 5,
Prediction = false, PredictionAmount = 0.13, SilentAim = true,
SilentExtraLead = 0.025,
SilentForceShot = false,
UseNamecallHook = false,
AutoFire = false, TriggerBot = false, TriggerDelay = 0.05,
-- Hitbox
HitboxSink = false, HitboxSinkDepth = 15, HitboxDesync = false, HitboxDesyncOffset = 10,
-- Target visuals
TargetESP = false, TargetTracer = false, TargetPanel = true, TargetColor = Color3.fromRGB(255, 0, 0),
ShowFOV = true, FOVColor = Color3.fromRGB(255, 255, 255),
RaycastVisuals = false, RaycastMaxLines = 4, RaycastShowCount = true, RaycastColor = Color3.fromRGB(255, 120, 70),
-- Player Visuals
ChamsEnabled = false, GlowEnabled = false, RainbowGlow = false,
ChamPulse = true, ChamDistanceFade = true, ChamHealthTint = false,
ChamTargetAccent = true, ChamTeamColor = false, ChamMaxDistance = 900,
ChamColor = Color3.fromRGB(255, 0, 235), GlowColor = Color3.fromRGB(255, 255, 255),
ChamTransparency = 0.35, ChamOutlineTransparency = 0.05,
ChamType = "Fill", ChamWireStyle = "Triangulated", ChamWireGlow = true,
ChamWireThickness = 1.2, ChamWireLines = 360,
-- ESP Drawing
Boxes = false, BoxColor = Color3.fromRGB(255, 255, 255),
CornerBoxes = false, CornerLength = 10,
BoxFill = false, BoxFillColor = Color3.fromRGB(20, 20, 20), BoxFillTransparency = 0.7,
Names = false, NameColor = Color3.fromRGB(255, 255, 255),
Distance = false, DistanceColor = Color3.fromRGB(200, 200, 200),
Tracers = false, TracerColor = Color3.fromRGB(255, 255, 255),
HealthBar = false, ESPPreview = false,
-- Crosshair
CrosshairEnabled = false, CrosshairColor = Color3.fromRGB(0, 255, 0),
CrosshairSize = 10, CrosshairThickness = 1, CrosshairGap = 4,
DotEnabled = false,
-- World
Fullbright = false, NoFog = false, CustomTime = false, TimeValue = 14,
AmbientColor = Color3.fromRGB(178, 178, 178),
-- Post FX
BloomEnabled = false, BloomIntensity = 0.6, BloomSize = 24, BloomThreshold = 1,
ColorCorrectionEnabled = false, ColorCorrectionContrast = 0.1, ColorCorrectionSaturation = 0.1,
ColorCorrectionTint = Color3.fromRGB(255, 255, 255),
-- FX
RainbowParticles = false,
TrailEnabled = false, TrailColor = Color3.fromRGB(0, 200, 255), TrailLifetime = 0.5,
AuraEnabled = false, AuraColor = Color3.fromRGB(85, 170, 255),
-- Movement
SpeedEnabled = false, SpeedValue = 32,
FlyEnabled = false, FlySpeed = 50,
NoclipEnabled = false, InfJumpEnabled = false,
JumpPower = false, JumpValue = 50,
-- HUD
HUDEnabled = true, HUDWatermark = true,
HUDHealth = true, HUDSpeed = true, HUDCoords = true,
HUDTarget = true, HUDPlayers = true, HUDFPS = true,
HUDArraylist = true, HUDKeybinds = true,
HUDStyle = "Glass", HUDCompact = false,
UITheme = "Blue",
HUDColor = Color3.fromRGB(70, 150, 255),
HUDRainbowBars = true,
HUDPulseAccent = true,
-- Misc
AntiAFK = true, ClickTP = false, Notifications = true,
}
local Settings = setmetatable({}, {
__index = SettingsData,
__newindex = function(_, key, value)
SettingsData[key] = value
if not IsLoading and QueueSave then
QueueSave()
end
end
})
-- [СОХРАНЕНРР• РћР РР“РНАЛЬНЫХ ЗНАЧЕНРР™]
local OriginalLighting = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart,
GlobalShadows = Lighting.GlobalShadows,
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient,
}
local function CopySettings(src)
local dst = {}
for k, v in pairs(src) do
dst[k] = v
end
return dst
end
local DefaultSettings = CopySettings(SettingsData)
local Config = {
Profile = "default",
AutoSave = true,
AutoLoad = true,
}
local CONFIG_DIR = "FlickSpeed"
local CONFIG_VERSION = 1
local pendingSave = false
local ConfigLoaded = false
local function SanitizeProfile(name)
name = tostring(name or "")
name = name:gsub("[^%w%-%_ ]", "")
name = name:gsub("%s+", "_")
return name
end
local function GetConfigPath()
local profile = SanitizeProfile(Config.Profile)
if profile == "" then
profile = "default"
end
return CONFIG_DIR .. "/" .. profile .. ".json"
end
local function EncodeValue(v)
if typeof(v) == "Color3" then
return { __type = "Color3", r = v.R, g = v.G, b = v.B }
end
return v
end
local function DecodeValue(v)
if type(v) == "table" and v.__type == "Color3" then
return Color3.new(v.r or 0, v.g or 0, v.b or 0)
end
return v
end
local function TableHasValue(list, value)
for _, v in ipairs(list) do
if v == value then
return true
end
end
return false
end
local function SaveConfig()
if not writefile then return false, "writefile unavailable" end
if makefolder and not isfolder(CONFIG_DIR) then
makefolder(CONFIG_DIR)
end
local data = { __version = CONFIG_VERSION }
for k, v in pairs(SettingsData) do
data[k] = EncodeValue(v)
end
local ok, json = pcall(function()
return HttpService:JSONEncode(data)
end)
if not ok then return false, "encode failed" end
local ok2, err = pcall(function()
writefile(GetConfigPath(), json)
end)
if not ok2 then return false, err end
return true
end
local function LoadConfig()
if not readfile or not isfile then return false, "readfile unavailable" end
local path = GetConfigPath()
if not isfile(path) then return false, "missing" end
local ok, data = pcall(function()
return HttpService:JSONDecode(readfile(path))
end)
if not ok or type(data) ~= "table" then return false, "decode failed" end
IsLoading = true
for k, v in pairs(data) do
if k ~= "__version" and k ~= "UseNamecallHook" and SettingsData[k] ~= nil then
SettingsData[k] = DecodeValue(v)
end
end
SettingsData.UseNamecallHook = false
if not TableHasValue({"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso"}, SettingsData.HitPart) then
SettingsData.HitPart = "Head"
end
if not TableHasValue({"Fill", "Outline", "Flat", "Wireframe", "Fill+Wireframe", "TriFill", "TriMesh"}, SettingsData.ChamType) then
SettingsData.ChamType = "Fill"
end
if not TableHasValue({"Triangulated", "Grid", "Edges"}, SettingsData.ChamWireStyle) then
SettingsData.ChamWireStyle = "Triangulated"
end
if not TableHasValue({"Blue", "White", "Green"}, SettingsData.UITheme) then
SettingsData.UITheme = "Blue"
end
if not TableHasValue({"Glass", "Minimal", "Contrast"}, SettingsData.HUDStyle) then
SettingsData.HUDStyle = "Glass"
end
SettingsData.ChamWireLines = math.clamp(tonumber(SettingsData.ChamWireLines) or 360, 24, 600)
SettingsData.ChamWireThickness = math.clamp(tonumber(SettingsData.ChamWireThickness) or 1.2, 0.5, 5)
SettingsData.ChamTransparency = math.clamp(tonumber(SettingsData.ChamTransparency) or 0.35, 0, 1)
SettingsData.ChamOutlineTransparency = math.clamp(tonumber(SettingsData.ChamOutlineTransparency) or 0.05, 0, 1)
SettingsData.ChamMaxDistance = math.clamp(tonumber(SettingsData.ChamMaxDistance) or 900, 0, 2500)
IsLoading = false
ConfigLoaded = true
return true
end
local ThemePresets = {
Blue = {
accent = Color3.fromRGB(70, 150, 255),
bg = Color3.fromRGB(10, 16, 28),
card = Color3.fromRGB(14, 24, 42),
text = Color3.fromRGB(236, 245, 255),
subtext = Color3.fromRGB(180, 205, 232),
},
White = {
accent = Color3.fromRGB(110, 120, 145),
bg = Color3.fromRGB(232, 236, 242),
card = Color3.fromRGB(244, 247, 252),
text = Color3.fromRGB(27, 35, 48),
subtext = Color3.fromRGB(78, 90, 108),
},
Green = {
accent = Color3.fromRGB(70, 215, 140),
bg = Color3.fromRGB(12, 26, 18),
card = Color3.fromRGB(17, 35, 25),
text = Color3.fromRGB(226, 250, 234),
subtext = Color3.fromRGB(164, 205, 176),
}
}
local function GetTheme()
return ThemePresets[SettingsData.UITheme] or ThemePresets.Blue
end
local function ApplyTheme(themeName)
if ThemePresets[themeName] then
Settings.UITheme = themeName
Settings.HUDColor = ThemePresets[themeName].accent
end
end
local function ResetSettings()
IsLoading = true
for k, v in pairs(DefaultSettings) do
SettingsData[k] = v
end
IsLoading = false
end
QueueSave = function()
if IsLoading or not Config.AutoSave then return end
if pendingSave then return end
pendingSave = true
task.delay(0.6, function()
pendingSave = false
if not IsLoading and Config.AutoSave then
SaveConfig()
end
end)
end
local UIControls = {}
local function RegisterControl(key, control)
if key and control then
UIControls[key] = control
end
return control
end
local function SafeSet(control, value)
if not control then return end
local ok = pcall(function() control:Set(value) end)
if ok then return end
ok = pcall(function() control:SetValue(value) end)
if ok then return end
pcall(function() control:SetColor(value) end)
end
local function SyncUI()
IsLoading = true
for key, control in pairs(UIControls) do
if SettingsData[key] ~= nil then
SafeSet(control, SettingsData[key])
end
end
IsLoading = false
end
if Config.AutoLoad then
pcall(function()
LoadConfig()
end)
end
local BloomEffect = Lighting:FindFirstChild("FlickBloom")
local ColorCorrectionEffect = Lighting:FindFirstChild("FlickColorCorrection")
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- UI WINDOW
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local Window = Library:Window({
Name = "FlickSpeed",
SubName = "Private | v3.0",
Logo = "120959262762131"
})
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- PAGE 1: COMBAT
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local CombatPage = Window:Page({Name = "Combat"})
-- Silent Aim
local AimSec = CombatPage:Section({Name = "Silent Aim"})
RegisterControl("Enabled", AimSec:Toggle({Name = "Enable", Default = Settings.Enabled, Callback = function(v) Settings.Enabled = v end}))
RegisterControl("SilentAim", AimSec:Toggle({Name = "Silent Aim Mode", Default = Settings.SilentAim, Callback = function(v) Settings.SilentAim = v end}))
AimSec:Label("Namecall hook disabled (anti-detect)")
RegisterControl("WallCheck", AimSec:Toggle({Name = "Wall Check", Default = Settings.WallCheck, Callback = function(v) Settings.WallCheck = v end}))
RegisterControl("TeamCheck", AimSec:Toggle({Name = "Team Check", Default = Settings.TeamCheck, Callback = function(v) Settings.TeamCheck = v end}))
RegisterControl("FOV", AimSec:Slider({Name = "FOV Radius", Min = 30, Max = 1000, Default = Settings.FOV, Callback = function(v) Settings.FOV = v end}))
RegisterControl("HitPart", AimSec:Dropdown({Name = "Hit Part", Default = Settings.HitPart, Items = {"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso"}, Callback = function(v) Settings.HitPart = v end}))
RegisterControl("ShotDelay", AimSec:Slider({Name = "Shot Delay", Min = 0, Max = 0.2, Default = Settings.ShotDelay, Decimals = 0.01, Callback = function(v) Settings.ShotDelay = v end}))
RegisterControl("SilentExtraLead", AimSec:Slider({Name = "Silent Extra Lead", Min = 0, Max = 0.2, Default = Settings.SilentExtraLead, Decimals = 0.005, Callback = function(v) Settings.SilentExtraLead = v end}))
RegisterControl("SilentForceShot", AimSec:Toggle({Name = "Silent Force Shot", Default = Settings.SilentForceShot, Callback = function(v) Settings.SilentForceShot = v end}))
-- Hitbox Manipulation
local HitboxSec = CombatPage:Section({Name = "Hitbox Sink (Anti-Aim)"})
RegisterControl("HitboxSink", HitboxSec:Toggle({Name = "Hitbox Sink", Default = Settings.HitboxSink, Callback = function(v) Settings.HitboxSink = v
if not v then
pcall(function()
local char = Player.Character
if char then
for _, part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
part.LocalTransparencyModifier = 0
end
end
end
end)
end
end}))
RegisterControl("HitboxSinkDepth", HitboxSec:Slider({Name = "Sink Depth (studs)", Min = 5, Max = 50, Default = Settings.HitboxSinkDepth, Callback = function(v) Settings.HitboxSinkDepth = v end}))
RegisterControl("HitboxDesync", HitboxSec:Toggle({Name = "Hitbox Desync (Jitter)", Default = Settings.HitboxDesync, Callback = function(v) Settings.HitboxDesync = v end}))
RegisterControl("HitboxDesyncOffset", HitboxSec:Slider({Name = "Desync Offset", Min = 3, Max = 30, Default = Settings.HitboxDesyncOffset, Callback = function(v) Settings.HitboxDesyncOffset = v end}))
-- Smoothing
local SmoothSec = CombatPage:Section({Name = "Aim Assist (Legit)"})
RegisterControl("Smoothing", SmoothSec:Toggle({Name = "Smoothing", Default = Settings.Smoothing, Callback = function(v) Settings.Smoothing = v end}))
RegisterControl("SmoothFactor", SmoothSec:Slider({Name = "Smooth Factor", Min = 1, Max = 20, Default = Settings.SmoothFactor, Callback = function(v) Settings.SmoothFactor = v end}))
RegisterControl("Prediction", SmoothSec:Toggle({Name = "Prediction", Default = Settings.Prediction, Callback = function(v) Settings.Prediction = v end}))
RegisterControl("PredictionAmount", SmoothSec:Slider({Name = "Prediction Amount", Min = 0.05, Max = 0.5, Default = Settings.PredictionAmount, Decimals = 0.01, Callback = function(v) Settings.PredictionAmount = v end}))
-- Triggerbot
local TriggerSec = CombatPage:Section({Name = "Triggerbot"})
RegisterControl("AutoFire", TriggerSec:Toggle({Name = "Auto Fire", Default = Settings.AutoFire, Callback = function(v) Settings.AutoFire = v end}))
RegisterControl("TriggerBot", TriggerSec:Toggle({Name = "Triggerbot", Default = Settings.TriggerBot, Callback = function(v) Settings.TriggerBot = v end}))
RegisterControl("TriggerDelay", TriggerSec:Slider({Name = "Trigger Delay", Min = 0, Max = 0.3, Default = Settings.TriggerDelay, Decimals = 0.01, Callback = function(v) Settings.TriggerDelay = v end}))
-- Target Visuals
local TargetVisSec = CombatPage:Section({Name = "Target Visuals"})
RegisterControl("ShowFOV", TargetVisSec:Toggle({Name = "Show FOV Circle", Default = Settings.ShowFOV, Callback = function(v) Settings.ShowFOV = v end}))
RegisterControl("FOVColor", TargetVisSec:Label("FOV Color"):Colorpicker({Default = Settings.FOVColor, Callback = function(v) Settings.FOVColor = v end}))
RegisterControl("TargetESP", TargetVisSec:Toggle({Name = "Target ESP (Circle)", Default = Settings.TargetESP, Callback = function(v) Settings.TargetESP = v end}))
RegisterControl("TargetTracer", TargetVisSec:Toggle({Name = "Target Tracer", Default = Settings.TargetTracer, Callback = function(v) Settings.TargetTracer = v end}))
RegisterControl("TargetPanel", TargetVisSec:Toggle({Name = "Target Panel", Default = Settings.TargetPanel, Callback = function(v) Settings.TargetPanel = v end}))
RegisterControl("TargetColor", TargetVisSec:Label("Target Color"):Colorpicker({Default = Settings.TargetColor, Callback = function(v) Settings.TargetColor = v end}))
RegisterControl("RaycastVisuals", TargetVisSec:Toggle({Name = "Raycast Visuals", Default = Settings.RaycastVisuals, Callback = function(v) Settings.RaycastVisuals = v end}))
RegisterControl("RaycastMaxLines", TargetVisSec:Slider({Name = "Raycast Max Lines", Min = 1, Max = 12, Default = Settings.RaycastMaxLines, Callback = function(v) Settings.RaycastMaxLines = v end}))
RegisterControl("RaycastShowCount", TargetVisSec:Toggle({Name = "Show Raycast Count", Default = Settings.RaycastShowCount, Callback = function(v) Settings.RaycastShowCount = v end}))
RegisterControl("RaycastColor", TargetVisSec:Label("Raycast Color"):Colorpicker({Default = Settings.RaycastColor, Callback = function(v) Settings.RaycastColor = v end}))
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- PAGE 2: VISUALS
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local VisualPage = Window:Page({Name = "Visuals"})
local PlayerSec = VisualPage:Section({Name = "Player Chams"})
RegisterControl("ChamsEnabled", PlayerSec:Toggle({Name = "Chams", Default = Settings.ChamsEnabled, Callback = function(v) Settings.ChamsEnabled = v end}))
RegisterControl("ChamType", PlayerSec:Dropdown({Name = "Chams Type", Default = Settings.ChamType, Items = {"Fill", "Outline", "Flat", "Wireframe", "Fill+Wireframe", "TriFill", "TriMesh"}, Callback = function(v) Settings.ChamType = v end}))
RegisterControl("ChamTransparency", PlayerSec:Slider({Name = "Fill Transparency", Min = 0, Max = 1, Default = Settings.ChamTransparency, Decimals = 0.1, Callback = function(v) Settings.ChamTransparency = v end}))
RegisterControl("ChamOutlineTransparency", PlayerSec:Slider({Name = "Outline Transparency", Min = 0, Max = 1, Default = Settings.ChamOutlineTransparency, Decimals = 0.1, Callback = function(v) Settings.ChamOutlineTransparency = v end}))
RegisterControl("ChamWireStyle", PlayerSec:Dropdown({Name = "Wire Style", Default = Settings.ChamWireStyle, Items = {"Triangulated", "Grid", "Edges"}, Callback = function(v) Settings.ChamWireStyle = v end}))
RegisterControl("ChamWireThickness", PlayerSec:Slider({Name = "Wire Thickness", Min = 0.5, Max = 5, Default = Settings.ChamWireThickness, Decimals = 0.1, Callback = function(v) Settings.ChamWireThickness = v end}))
RegisterControl("ChamWireLines", PlayerSec:Slider({Name = "Wireframe Lines", Min = 24, Max = 600, Default = Settings.ChamWireLines, Decimals = 12, Callback = function(v) Settings.ChamWireLines = v end}))
RegisterControl("ChamWireGlow", PlayerSec:Toggle({Name = "Wire Glow", Default = Settings.ChamWireGlow, Callback = function(v) Settings.ChamWireGlow = v end}))
RegisterControl("ChamPulse", PlayerSec:Toggle({Name = "Soft Pulse", Default = Settings.ChamPulse, Callback = function(v) Settings.ChamPulse = v end}))
RegisterControl("ChamDistanceFade", PlayerSec:Toggle({Name = "Distance Fade", Default = Settings.ChamDistanceFade, Callback = function(v) Settings.ChamDistanceFade = v end}))
RegisterControl("ChamHealthTint", PlayerSec:Toggle({Name = "Health Tint", Default = Settings.ChamHealthTint, Callback = function(v) Settings.ChamHealthTint = v end}))
RegisterControl("ChamTargetAccent", PlayerSec:Toggle({Name = "Target Accent", Default = Settings.ChamTargetAccent, Callback = function(v) Settings.ChamTargetAccent = v end}))
RegisterControl("ChamTeamColor", PlayerSec:Toggle({Name = "Team Color", Default = Settings.ChamTeamColor, Callback = function(v) Settings.ChamTeamColor = v end}))
RegisterControl("ChamMaxDistance", PlayerSec:Slider({Name = "Max Distance", Min = 0, Max = 2500, Default = Settings.ChamMaxDistance, Callback = function(v) Settings.ChamMaxDistance = v end}))
RegisterControl("ChamColor", PlayerSec:Label("Chams Color"):Colorpicker({Default = Settings.ChamColor, Callback = function(v) Settings.ChamColor = v end}))
RegisterControl("GlowEnabled", PlayerSec:Toggle({Name = "Glow (Outline)", Default = Settings.GlowEnabled, Callback = function(v) Settings.GlowEnabled = v end}))
RegisterControl("RainbowGlow", PlayerSec:Toggle({Name = "Rainbow Glow", Default = Settings.RainbowGlow, Callback = function(v) Settings.RainbowGlow = v end}))
RegisterControl("GlowColor", PlayerSec:Label("Glow Color"):Colorpicker({Default = Settings.GlowColor, Callback = function(v) Settings.GlowColor = v end}))
PlayerSec:Button({Name = "Photo Wire Preset", Callback = function()
Settings.ChamsEnabled = true
Settings.ChamType = "Wireframe"
Settings.ChamWireStyle = "Triangulated"
Settings.ChamWireGlow = true
Settings.ChamWireLines = 520
Settings.ChamWireThickness = 1
Settings.ChamTransparency = 0.4
Settings.ChamOutlineTransparency = 0
Settings.ChamHealthTint = false
Settings.ChamTargetAccent = false
Settings.ChamTeamColor = false
Settings.ChamColor = Color3.fromRGB(255, 0, 235)
Settings.GlowEnabled = false
Settings.RainbowGlow = false
Settings.GlowColor = Color3.fromRGB(255, 255, 255)
SyncUI()
end})
local ESPSec = VisualPage:Section({Name = "ESP (Drawing)"})
RegisterControl("Boxes", ESPSec:Toggle({Name = "Boxes", Default = Settings.Boxes, Callback = function(v) Settings.Boxes = v end}))
RegisterControl("CornerBoxes", ESPSec:Toggle({Name = "Corner Boxes", Default = Settings.CornerBoxes, Callback = function(v) Settings.CornerBoxes = v end}))
RegisterControl("CornerLength", ESPSec:Slider({Name = "Corner Length", Min = 4, Max = 30, Default = Settings.CornerLength, Callback = function(v) Settings.CornerLength = v end}))
RegisterControl("BoxColor", ESPSec:Label("Box Color"):Colorpicker({Default = Settings.BoxColor, Callback = function(v) Settings.BoxColor = v end}))
RegisterControl("BoxFill", ESPSec:Toggle({Name = "Box Fill", Default = Settings.BoxFill, Callback = function(v) Settings.BoxFill = v end}))
RegisterControl("BoxFillTransparency", ESPSec:Slider({Name = "Fill Transparency", Min = 0, Max = 1, Default = Settings.BoxFillTransparency, Decimals = 0.05, Callback = function(v) Settings.BoxFillTransparency = v end}))
RegisterControl("BoxFillColor", ESPSec:Label("Fill Color"):Colorpicker({Default = Settings.BoxFillColor, Callback = function(v) Settings.BoxFillColor = v end}))
RegisterControl("Names", ESPSec:Toggle({Name = "Names", Default = Settings.Names, Callback = function(v) Settings.Names = v end}))
RegisterControl("NameColor", ESPSec:Label("Name Color"):Colorpicker({Default = Settings.NameColor, Callback = function(v) Settings.NameColor = v end}))
RegisterControl("Distance", ESPSec:Toggle({Name = "Distance", Default = Settings.Distance, Callback = function(v) Settings.Distance = v end}))
RegisterControl("DistanceColor", ESPSec:Label("Distance Color"):Colorpicker({Default = Settings.DistanceColor, Callback = function(v) Settings.DistanceColor = v end}))
RegisterControl("Tracers", ESPSec:Toggle({Name = "Tracers", Default = Settings.Tracers, Callback = function(v) Settings.Tracers = v end}))
RegisterControl("TracerColor", ESPSec:Label("Tracer Color"):Colorpicker({Default = Settings.TracerColor, Callback = function(v) Settings.TracerColor = v end}))
RegisterControl("HealthBar", ESPSec:Toggle({Name = "Health Bar", Default = Settings.HealthBar, Callback = function(v) Settings.HealthBar = v end}))
RegisterControl("ESPPreview", ESPSec:Toggle({Name = "ESP Preview", Default = Settings.ESPPreview, Callback = function(v) Settings.ESPPreview = v end}))
-- Crosshair
local CrossSec = VisualPage:Section({Name = "Crosshair"})
RegisterControl("CrosshairEnabled", CrossSec:Toggle({Name = "Custom Crosshair", Default = Settings.CrosshairEnabled, Callback = function(v) Settings.CrosshairEnabled = v end}))
RegisterControl("DotEnabled", CrossSec:Toggle({Name = "Center Dot", Default = Settings.DotEnabled, Callback = function(v) Settings.DotEnabled = v end}))
RegisterControl("CrosshairColor", CrossSec:Label("Crosshair Color"):Colorpicker({Default = Settings.CrosshairColor, Callback = function(v) Settings.CrosshairColor = v end}))
RegisterControl("CrosshairSize", CrossSec:Slider({Name = "Size", Min = 4, Max = 30, Default = Settings.CrosshairSize, Callback = function(v) Settings.CrosshairSize = v end}))
RegisterControl("CrosshairGap", CrossSec:Slider({Name = "Gap", Min = 0, Max = 15, Default = Settings.CrosshairGap, Callback = function(v) Settings.CrosshairGap = v end}))
RegisterControl("CrosshairThickness", CrossSec:Slider({Name = "Thickness", Min = 1, Max = 4, Default = Settings.CrosshairThickness, Callback = function(v) Settings.CrosshairThickness = v end}))
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- PAGE 3: WORLD
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local WorldPage = Window:Page({Name = "World"})
local LightSec = WorldPage:Section({Name = "Lighting"})
RegisterControl("Fullbright", LightSec:Toggle({Name = "Fullbright", Default = Settings.Fullbright, Callback = function(v)
Settings.Fullbright = v
if not v then
Lighting.Brightness = OriginalLighting.Brightness
Lighting.ClockTime = OriginalLighting.ClockTime
Lighting.GlobalShadows = OriginalLighting.GlobalShadows
Lighting.Ambient = OriginalLighting.Ambient
end
end}))
RegisterControl("NoFog", LightSec:Toggle({Name = "No Fog", Default = Settings.NoFog, Callback = function(v)
Settings.NoFog = v
if not v then
Lighting.FogEnd = OriginalLighting.FogEnd
Lighting.FogStart = OriginalLighting.FogStart
end
end}))
RegisterControl("CustomTime", LightSec:Toggle({Name = "Custom Time", Default = Settings.CustomTime, Callback = function(v) Settings.CustomTime = v if not v then Lighting.ClockTime = OriginalLighting.ClockTime end end}))
RegisterControl("TimeValue", LightSec:Slider({Name = "Time of Day", Min = 0, Max = 24, Default = Settings.TimeValue, Decimals = 0.5, Callback = function(v) Settings.TimeValue = v end}))
RegisterControl("AmbientColor", LightSec:Label("Ambient Color"):Colorpicker({Default = Settings.AmbientColor, Callback = function(v) Settings.AmbientColor = v end}))
local FXSec = WorldPage:Section({Name = "Post Processing"})
RegisterControl("BloomEnabled", FXSec:Toggle({Name = "Bloom", Default = Settings.BloomEnabled, Callback = function(v) Settings.BloomEnabled = v end}))
RegisterControl("BloomIntensity", FXSec:Slider({Name = "Bloom Intensity", Min = 0, Max = 3, Default = Settings.BloomIntensity, Decimals = 0.1, Callback = function(v) Settings.BloomIntensity = v end}))
RegisterControl("BloomSize", FXSec:Slider({Name = "Bloom Size", Min = 0, Max = 56, Default = Settings.BloomSize, Callback = function(v) Settings.BloomSize = v end}))
RegisterControl("BloomThreshold", FXSec:Slider({Name = "Bloom Threshold", Min = 0, Max = 2, Default = Settings.BloomThreshold, Decimals = 0.05, Callback = function(v) Settings.BloomThreshold = v end}))
RegisterControl("ColorCorrectionEnabled", FXSec:Toggle({Name = "Color Correction", Default = Settings.ColorCorrectionEnabled, Callback = function(v) Settings.ColorCorrectionEnabled = v end}))
RegisterControl("ColorCorrectionContrast", FXSec:Slider({Name = "Contrast", Min = -1, Max = 1, Default = Settings.ColorCorrectionContrast, Decimals = 0.05, Callback = function(v) Settings.ColorCorrectionContrast = v end}))
RegisterControl("ColorCorrectionSaturation", FXSec:Slider({Name = "Saturation", Min = -1, Max = 1, Default = Settings.ColorCorrectionSaturation, Decimals = 0.05, Callback = function(v) Settings.ColorCorrectionSaturation = v end}))
RegisterControl("ColorCorrectionTint", FXSec:Label("Tint Color"):Colorpicker({Default = Settings.ColorCorrectionTint, Callback = function(v) Settings.ColorCorrectionTint = v end}))
-- в”Ђв”Ђ CHARACTER FX в”Ђв”Ђ
local FXCharSec = WorldPage:Section({Name = "Character FX"})
RegisterControl("RainbowParticles", FXCharSec:Toggle({Name = "Rainbow FX", Default = Settings.RainbowParticles, Callback = function(v) Settings.RainbowParticles = v end}))
RegisterControl("TrailEnabled", FXCharSec:Toggle({Name = "Character Trail", Default = Settings.TrailEnabled, Callback = function(v) Settings.TrailEnabled = v
if not v then pcall(function() for _,obj in pairs(Player.Character:GetDescendants()) do if obj.Name == "FlickTrail" or obj.Name == "FlickTrailA" or obj.Name == "FlickTrailB" then obj:Destroy() end end end) end
end}))
RegisterControl("TrailLifetime", FXCharSec:Slider({Name = "Trail Lifetime", Min = 0.1, Max = 3, Default = Settings.TrailLifetime, Decimals = 0.1, Callback = function(v) Settings.TrailLifetime = v end}))
RegisterControl("TrailColor", FXCharSec:Label("Trail Color"):Colorpicker({Default = Settings.TrailColor, Callback = function(v) Settings.TrailColor = v end}))
RegisterControl("AuraEnabled", FXCharSec:Toggle({Name = "Aura Effect", Default = Settings.AuraEnabled, Callback = function(v) Settings.AuraEnabled = v
if not v then pcall(function() for _,obj in pairs(Player.Character:GetDescendants()) do if obj.Name == "FlickAura" then obj:Destroy() end end end) end
end}))
RegisterControl("AuraColor", FXCharSec:Label("Aura Color"):Colorpicker({Default = Settings.AuraColor, Callback = function(v) Settings.AuraColor = v end}))
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- PAGE 4: MOVEMENT
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local MovePage = Window:Page({Name = "Movement"})
local SpeedSec = MovePage:Section({Name = "Speed"})
RegisterControl("SpeedEnabled", SpeedSec:Toggle({Name = "Speed Hack", Default = Settings.SpeedEnabled, Callback = function(v) Settings.SpeedEnabled = v
if not v then pcall(function() local h = Player.Character and Player.Character:FindFirstChildOfClass("Humanoid") if h then h.WalkSpeed = 16 end end) end
end}))
RegisterControl("SpeedValue", SpeedSec:Slider({Name = "Walk Speed", Min = 16, Max = 200, Default = Settings.SpeedValue, Callback = function(v) Settings.SpeedValue = v end}))
local JumpSec = MovePage:Section({Name = "Jump"})
RegisterControl("JumpPower", JumpSec:Toggle({Name = "Custom Jump Power", Default = Settings.JumpPower, Callback = function(v) Settings.JumpPower = v
if not v then pcall(function() local h = Player.Character and Player.Character:FindFirstChildOfClass("Humanoid") if h then h.JumpPower = 50 end end) end
end}))
RegisterControl("JumpValue", JumpSec:Slider({Name = "Jump Power", Min = 50, Max = 300, Default = Settings.JumpValue, Callback = function(v) Settings.JumpValue = v end}))
RegisterControl("InfJumpEnabled", JumpSec:Toggle({Name = "Infinite Jump", Default = Settings.InfJumpEnabled, Callback = function(v) Settings.InfJumpEnabled = v end}))
local FlySec = MovePage:Section({Name = "Fly & Noclip"})
RegisterControl("FlyEnabled", FlySec:Toggle({Name = "Fly (Space + WASD)", Default = Settings.FlyEnabled, Callback = function(v) Settings.FlyEnabled = v
if not v then pcall(function() local hrp = Player.Character:FindFirstChild("HumanoidRootPart")
for _, obj in pairs(hrp:GetChildren()) do if obj.Name == "FlickBP" or obj.Name == "FlickBG" then obj:Destroy() end end
end) end
end}))
RegisterControl("FlySpeed", FlySec:Slider({Name = "Fly Speed", Min = 10, Max = 200, Default = Settings.FlySpeed, Callback = function(v) Settings.FlySpeed = v end}))
RegisterControl("NoclipEnabled", FlySec:Toggle({Name = "Noclip", Default = Settings.NoclipEnabled, Callback = function(v)
Settings.NoclipEnabled = v
if not v then
pcall(function()
local char = Player.Character
if char then
for _, p in pairs(char:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = true end
end
end
end)
end
end}))
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- PAGE 5: MISC
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local MiscPage = Window:Page({Name = "Misc"})
local UtilSec = MiscPage:Section({Name = "Utility"})
RegisterControl("AntiAFK", UtilSec:Toggle({Name = "Anti-AFK", Default = Settings.AntiAFK, Callback = function(v) Settings.AntiAFK = v end}))
RegisterControl("ClickTP", UtilSec:Toggle({Name = "Click TP (Ctrl+Click)", Default = Settings.ClickTP, Callback = function(v) Settings.ClickTP = v end}))
UtilSec:Button({Name = "Rejoin Server", Callback = function() pcall(function() TeleportService:Teleport(game.PlaceId, Player) end) end})
UtilSec:Button({Name = "Server Hop", Callback = function()
pcall(function()
local HttpService = game:GetService("HttpService")
local data = HttpService:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100"))
for _, s in pairs(data.data) do
if s.id ~= game.JobId then TeleportService:TeleportToPlaceInstance(game.PlaceId, s.id, Player) break end
end
end)
end})
UtilSec:Button({Name = "Copy Place ID", Callback = function() pcall(function() setclipboard(tostring(game.PlaceId)) end) end})
UtilSec:Button({Name = "Reset Character", Callback = function() pcall(function() Player.Character:FindFirstChildOfClass("Humanoid").Health = 0 end) end})
-- в”Ђв”Ђ HUD в”Ђв”Ђ
local HUDSec = MiscPage:Section({Name = "HUD (On-Screen)"})
RegisterControl("HUDEnabled", HUDSec:Toggle({Name = "Enable HUD", Default = Settings.HUDEnabled, Callback = function(v) Settings.HUDEnabled = v end}))
RegisterControl("HUDWatermark", HUDSec:Toggle({Name = "Watermark", Default = Settings.HUDWatermark, Callback = function(v) Settings.HUDWatermark = v end}))
RegisterControl("HUDFPS", HUDSec:Toggle({Name = "FPS Counter", Default = Settings.HUDFPS, Callback = function(v) Settings.HUDFPS = v end}))
RegisterControl("HUDHealth", HUDSec:Toggle({Name = "Health Bar", Default = Settings.HUDHealth, Callback = function(v) Settings.HUDHealth = v end}))
RegisterControl("HUDSpeed", HUDSec:Toggle({Name = "Speed Display", Default = Settings.HUDSpeed, Callback = function(v) Settings.HUDSpeed = v end}))
RegisterControl("HUDCoords", HUDSec:Toggle({Name = "Coordinates", Default = Settings.HUDCoords, Callback = function(v) Settings.HUDCoords = v end}))
RegisterControl("HUDTarget", HUDSec:Toggle({Name = "Target Info", Default = Settings.HUDTarget, Callback = function(v) Settings.HUDTarget = v end}))
RegisterControl("HUDPlayers", HUDSec:Toggle({Name = "Player Count", Default = Settings.HUDPlayers, Callback = function(v) Settings.HUDPlayers = v end}))
RegisterControl("HUDArraylist", HUDSec:Toggle({Name = "Modules List", Default = Settings.HUDArraylist, Callback = function(v) Settings.HUDArraylist = v end}))
RegisterControl("HUDKeybinds", HUDSec:Toggle({Name = "Keybinds Panel", Default = Settings.HUDKeybinds, Callback = function(v) Settings.HUDKeybinds = v end}))
RegisterControl("HUDStyle", HUDSec:Dropdown({Name = "HUD Style", Default = Settings.HUDStyle, Items = {"Glass", "Minimal", "Contrast"}, Callback = function(v) Settings.HUDStyle = v end}))
RegisterControl("HUDCompact", HUDSec:Toggle({Name = "Compact HUD", Default = Settings.HUDCompact, Callback = function(v) Settings.HUDCompact = v end}))
RegisterControl("UITheme", HUDSec:Dropdown({Name = "Theme", Default = Settings.UITheme, Items = {"Blue", "White", "Green"}, Callback = function(v) ApplyTheme(v) end}))
RegisterControl("HUDColor", HUDSec:Label("HUD Accent Color"):Colorpicker({Default = Settings.HUDColor, Callback = function(v) Settings.HUDColor = v end}))
RegisterControl("HUDRainbowBars", HUDSec:Toggle({Name = "Rainbow Module Bars", Default = Settings.HUDRainbowBars, Callback = function(v) Settings.HUDRainbowBars = v end}))
RegisterControl("HUDPulseAccent", HUDSec:Toggle({Name = "Pulse Accent", Default = Settings.HUDPulseAccent, Callback = function(v) Settings.HUDPulseAccent = v end}))
local InfoSec = MiscPage:Section({Name = "Info"})
InfoSec:Label("Player: " .. Player.DisplayName .. " (@" .. Player.Name .. ")")
InfoSec:Label("UserID: " .. Player.UserId)
InfoSec:Label("PlaceID: " .. game.PlaceId)
InfoSec:Label("Executor: Velocity 0.8.0")
InfoSec:Label("Script: FlickSpeed v3.5")
local ConfigPage = Window:Page({Name = "Config"})
local ConfigSec = ConfigPage:Section({Name = "Profiles"})
ConfigSec:Textbox({Name = "Profile Name", Default = Config.Profile, Placeholder = "default", Finished = true, Callback = function(v)
Config.Profile = SanitizeProfile(v)
end})
ConfigSec:Toggle({Name = "Auto Load", Default = Config.AutoLoad, Callback = function(v) Config.AutoLoad = v end})
ConfigSec:Toggle({Name = "Auto Save", Default = Config.AutoSave, Callback = function(v) Config.AutoSave = v end})
ConfigSec:Button({Name = "Load", Callback = function()
if LoadConfig() then
SyncUI()
end
end})
ConfigSec:Button({Name = "Save", Callback = function() SaveConfig() end})
ConfigSec:Button({Name = "Reset Defaults", Callback = function()
ResetSettings()
SyncUI()
end})
ConfigSec:Label("Config folder: " .. CONFIG_DIR)
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- DRAWING OBJECTS
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
local FOVCircle = Drawing.new("Circle")
FOVCircle.Thickness = 1; FOVCircle.Filled = false; FOVCircle.NumSides = 64
local TargetLine = Drawing.new("Line")
TargetLine.Thickness = 1.5
local TargetCircle = Drawing.new("Circle")
TargetCircle.Thickness = 1.5; TargetCircle.Filled = false; TargetCircle.Radius = 15
-- Target panel (like combat HUD)
local TargetPanelBG = Drawing.new("Square"); TargetPanelBG.Filled = true; TargetPanelBG.Color = Color3.fromRGB(14, 14, 18); TargetPanelBG.Transparency = 0.25
local TargetPanelAccent = Drawing.new("Square"); TargetPanelAccent.Filled = true; TargetPanelAccent.Transparency = 0
local TargetPanelHealthBG = Drawing.new("Square"); TargetPanelHealthBG.Filled = true; TargetPanelHealthBG.Color = Color3.fromRGB(15, 15, 18); TargetPanelHealthBG.Transparency = 0.25
local TargetPanelHealth = Drawing.new("Square"); TargetPanelHealth.Filled = true; TargetPanelHealth.Transparency = 0
local TargetPanelName = Drawing.new("Text"); TargetPanelName.Size = 13; TargetPanelName.Font = Drawing.Fonts.Plex; TargetPanelName.Outline = true
local TargetPanelInfo1 = Drawing.new("Text"); TargetPanelInfo1.Size = 12; TargetPanelInfo1.Font = Drawing.Fonts.Plex; TargetPanelInfo1.Outline = true
local TargetPanelInfo2 = Drawing.new("Text"); TargetPanelInfo2.Size = 12; TargetPanelInfo2.Font = Drawing.Fonts.Plex; TargetPanelInfo2.Outline = true
local RaycastCountText = Drawing.new("Text"); RaycastCountText.Size = 13; RaycastCountText.Font = Drawing.Fonts.Plex; RaycastCountText.Outline = true; RaycastCountText.Center = false
local RaycastLines = {}
for i = 1, 12 do
RaycastLines[i] = Drawing.new("Line")
RaycastLines[i].Thickness = 1
RaycastLines[i].Transparency = 0.2
RaycastLines[i].Visible = false
end
-- Crosshair lines
local CrossLines = {}
for i = 1, 4 do
CrossLines[i] = Drawing.new("Line")
CrossLines[i].Thickness = 1; CrossLines[i].Visible = false
end
local CrossDot = Drawing.new("Circle")
CrossDot.Filled = true; CrossDot.Radius = 2; CrossDot.Visible = false
-- ESP Cache
local ESPCache = {}
local CurrentTarget = nil
local Connections = {}
local LastTriggerShot = 0
local SilentHookReady = false
local SilentHookAttempted = false
local RaycastsThisFrame = 0
local LastRaycastCount = 0
local function GetSilentTargetPosition()
if not CurrentTarget then return nil end
local targetPos = CurrentTarget.Position
local lead = Settings.SilentExtraLead or 0
if Settings.Prediction then
lead = lead + (Settings.PredictionAmount or 0)
end
if lead > 0 then
local vel = CurrentTarget.AssemblyLinearVelocity or CurrentTarget.Velocity or Vector3.new()
targetPos = targetPos + vel * lead
end
return targetPos
end
function SetupSilentHook()
-- Hard-disabled to avoid namecall detector trips.
SilentHookAttempted = true
SilentHookReady = false
end
SetupSilentHook()
local function GetESP(plr)
if not ESPCache[plr] then
local e = {
Box = Drawing.new("Square"),
BoxOutline = Drawing.new("Square"),
BoxFill = Drawing.new("Square"),
Name = Drawing.new("Text"),
Distance = Drawing.new("Text"),
Tracer = Drawing.new("Line"),
HealthBarBG = Drawing.new("Square"),
HealthBar = Drawing.new("Square"),
Corners = {},
WireMesh = {},
WireGlow = {},
WireTriangles = {},
WireParts = {},
WirePartsChar = nil,
WirePartsRefresh = 0,
}
e.Box.Thickness = 1; e.Box.Filled = false
e.BoxOutline.Thickness = 2; e.BoxOutline.Filled = false; e.BoxOutline.Color = Color3.new(0, 0, 0)
e.BoxFill.Filled = true; e.BoxFill.Transparency = 0.7
e.Name.Center = true; e.Name.Size = 14; e.Name.Outline = true
e.Distance.Center = true; e.Distance.Size = 13; e.Distance.Outline = true
e.Tracer.Thickness = 1
e.HealthBarBG.Filled = true; e.HealthBarBG.Color = Color3.new(0, 0, 0)
e.HealthBar.Filled = true
for i = 1, 8 do e.Corners[i] = Drawing.new("Line"); e.Corners[i].Thickness = 1.5 end
for i = 1, 720 do
local glow = Drawing.new("Line")
glow.Thickness = 3.8
glow.Transparency = 0.55
glow.Visible = false
e.WireGlow[i] = glow
local ln = Drawing.new("Line")
ln.Thickness = 1.2
ln.Transparency = 0
ln.Visible = false
e.WireMesh[i] = ln
end
for i = 1, 720 do
local ok, tri = pcall(function()
return Drawing.new("Triangle")
end)
if not ok or not tri then
break
end
tri.Visible = false
tri.Filled = true
tri.Thickness = 1
tri.Transparency = 0.35
e.WireTriangles[i] = tri
end
ESPCache[plr] = e
end
return ESPCache[plr]
end
-- Cleanup ESP on player leave
Players.PlayerRemoving:Connect(function(plr)
if ESPCache[plr] then
for key, v in pairs(ESPCache[plr]) do
if key == "WireParts" or key == "WirePartsChar" or key == "WirePartsRefresh" then
-- cached Roblox instances are not drawing objects
elseif type(v) == "table" then
for _, line in pairs(v) do pcall(function() line:Remove() end) end
else pcall(function() v:Remove() end) end
end
ESPCache[plr] = nil
end
end)
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- CORE FUNCTIONS
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- Wall check (Raycast)
local function IsVisible(targetPart)
if not Settings.WallCheck then return true end
RaycastsThisFrame = RaycastsThisFrame + 1
local params = RaycastParams.new()
params.FilterDescendantsInstances = {Camera, Player.Character}
params.FilterType = Enum.RaycastFilterType.Exclude
params.IgnoreWater = true
local cast = workspace:Raycast(Camera.CFrame.Position, targetPart.Position - Camera.CFrame.Position, params)
if cast and cast.Instance then return cast.Instance:IsDescendantOf(targetPart.Parent) end
return true
end
-- Team check
local function IsEnemy(plr)
if not Settings.TeamCheck then return true end
if plr.Team ~= nil and Player.Team ~= nil then
return plr.Team ~= Player.Team
end
if plr.TeamColor ~= nil and Player.TeamColor ~= nil then
return plr.TeamColor ~= Player.TeamColor
end
return true
end
local function FireMouseClick()
local fired = false
pcall(function()
if mouse1click then
mouse1click()
fired = true
end
end)
if not fired then
pcall(function()
if mouse1press and mouse1release then
mouse1press()
task.wait()
mouse1release()
fired = true
end
end)
end
if not fired then
pcall(function()
local vim = game:GetService("VirtualInputManager")
local m = UIS:GetMouseLocation()
vim:SendMouseButtonEvent(m.X, m.Y, 0, true, game, 0)
vim:SendMouseButtonEvent(m.X, m.Y, 0, false, game, 0)
fired = true
end)
end
if not fired then
pcall(function()
local vu = game:GetService("VirtualUser")
vu:Button1Down(Vector2.new(0, 0), Camera.CFrame)
task.wait()
vu:Button1Up(Vector2.new(0, 0), Camera.CFrame)
fired = true
end)
end
pcall(function()
local char = Player.Character
if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
local tool = char:FindFirstChildOfClass("Tool")
if not tool then
local backpack = Player:FindFirstChildOfClass("Backpack")
if backpack then
tool = backpack:FindFirstChildOfClass("Tool")
if tool and hum then
hum:EquipTool(tool)
end
end
end
if tool then
tool:Activate()
end
end)
end
local function GetCharacterTargetPart(char)
if not char then return nil end
local preferred = char:FindFirstChild(Settings.HitPart)
if preferred and preferred:IsA("BasePart") then
return preferred
end
local fallbacks = {"Head", "HumanoidRootPart", "UpperTorso", "LowerTorso", "Torso"}
for _, name in ipairs(fallbacks) do
local part = char:FindFirstChild(name)
if part and part:IsA("BasePart") then
return part
end
end
return char:FindFirstChildWhichIsA("BasePart")
end
local WIRE_PART_PRIORITY = {
Head = 1, UpperTorso = 2, LowerTorso = 3, Torso = 3, HumanoidRootPart = 4,
LeftUpperArm = 5, RightUpperArm = 5, LeftLowerArm = 6, RightLowerArm = 6,
LeftHand = 7, RightHand = 7, LeftUpperLeg = 8, RightUpperLeg = 8,
LeftLowerLeg = 9, RightLowerLeg = 9, LeftFoot = 10, RightFoot = 10,
}
local function HideWireMesh(esp)
if not esp then return end
if esp.WireMesh then
for i = 1, #esp.WireMesh do
esp.WireMesh[i].Visible = false
end
end
if esp.WireGlow then
for i = 1, #esp.WireGlow do
esp.WireGlow[i].Visible = false
end
end
if esp.WireTriangles then
for i = 1, #esp.WireTriangles do
esp.WireTriangles[i].Visible = false
end
end
end
local function UpdateWireframe(char)
-- Legacy cleanup from old SelectionBox implementation.
if not char then return end
if char:FindFirstChild("FlickWireCleaned") then return end
local tag = Instance.new("BoolValue")
tag.Name = "FlickWireCleaned"
tag.Parent = char
for _, part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") then
local wire = part:FindFirstChild("FlickWireBox")
if wire then
wire.Visible = false
end
end
end
end
local function BlendColor(a, b, t)
t = math.clamp(t or 0, 0, 1)
return Color3.new(
a.R + (b.R - a.R) * t,
a.G + (b.G - a.G) * t,
a.B + (b.B - a.B) * t
)
end
local function GetCharacterDistance(char)
local myChar = Player.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
local root = char and char:FindFirstChild("HumanoidRootPart")
if not myRoot or not root then return 0 end
return (myRoot.Position - root.Position).Magnitude
end
local function GetHealthColor(hum)
local hp = hum and hum.MaxHealth > 0 and math.clamp(hum.Health / hum.MaxHealth, 0, 1) or 1
local red = Color3.fromRGB(255, 70, 70)
local yellow = Color3.fromRGB(255, 210, 70)
local green = Color3.fromRGB(70, 255, 150)
if hp >= 0.5 then
return BlendColor(yellow, green, (hp - 0.5) * 2)
end
return BlendColor(red, yellow, hp * 2)
end
local function GetChamStyle(plr, char, hum, isTarget, rainbowColor, distance)
local base = Settings.ChamColor or Color3.fromRGB(0, 185, 255)
distance = distance or GetCharacterDistance(char)
if Settings.ChamTeamColor and plr and plr.TeamColor then
base = plr.TeamColor.Color
end
if Settings.ChamHealthTint then
base = BlendColor(base, GetHealthColor(hum), 0.45)
end
if Settings.ChamTargetAccent and isTarget then
base = BlendColor(base, Settings.TargetColor or Color3.fromRGB(255, 0, 0), 0.65)
end
local glow = Settings.RainbowGlow and rainbowColor or (Settings.GlowColor or Color3.new(1, 1, 1))
local fade = Settings.ChamDistanceFade and math.clamp((distance - 70) / 260, 0, 0.35) or 0
local pulseSpeed = isTarget and 5 or 3.2
local pulse = Settings.ChamPulse and ((math.sin(tick() * pulseSpeed) + 1) * 0.5) or 0.5
local pulseLift = Settings.ChamPulse and ((isTarget and 0.13 or 0.08) * pulse) or 0
local color = BlendColor(base, Color3.new(1, 1, 1), Settings.ChamPulse and (0.08 + pulse * (isTarget and 0.18 or 0.12)) or 0)
local targetBoost = isTarget and 0.08 or 0
local fillTransparency = math.clamp((Settings.ChamTransparency or 0.35) + fade - pulseLift - targetBoost, 0.03, 0.95)
local outlineTransparency = math.clamp((Settings.ChamOutlineTransparency or 0.05) + fade * 0.55 - targetBoost, 0, 0.95)
return color, glow, fillTransparency, outlineTransparency
end
local function GetWireParts(esp, char)
local now = tick()
if esp.WirePartsChar == char and esp.WireParts and now < (esp.WirePartsRefresh or 0) then
return esp.WireParts
end
local parts = {}
for _, part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.Transparency < 1 and part.Size.Magnitude > 0.1 then
table.insert(parts, part)
end
end
table.sort(parts, function(a, b)
local pa = WIRE_PART_PRIORITY[a.Name] or 99
local pb = WIRE_PART_PRIORITY[b.Name] or 99
if pa == pb then
return a.Size.Magnitude > b.Size.Magnitude
end
return pa < pb
end)
esp.WireParts = parts
esp.WirePartsChar = char
esp.WirePartsRefresh = now + 0.35
return parts
end
local WIRE_FACE_BUILDERS = {
function(sx, sy, sz, u, v) return Vector3.new( sx, -sy + 2 * sy * u, -sz + 2 * sz * v) end,
function(sx, sy, sz, u, v) return Vector3.new(-sx, -sy + 2 * sy * u, -sz + 2 * sz * v) end,
function(sx, sy, sz, u, v) return Vector3.new(-sx + 2 * sx * u, sy, -sz + 2 * sz * v) end,
function(sx, sy, sz, u, v) return Vector3.new(-sx + 2 * sx * u, -sy, -sz + 2 * sz * v) end,
function(sx, sy, sz, u, v) return Vector3.new(-sx + 2 * sx * u, -sy + 2 * sy * v, sz) end,
function(sx, sy, sz, u, v) return Vector3.new(-sx + 2 * sx * u, -sy + 2 * sy * v, -sz) end,
}
local function RenderWireMeshForCharacter(esp, char, color, thickness, linesBudget, drawEdges, drawFaces, lineTransparency, faceTransparency)
if not esp or not char then return end
local hasLines = drawEdges and esp.WireMesh and #esp.WireMesh > 0
local hasTris = drawFaces and esp.WireTriangles and #esp.WireTriangles > 0
if not hasLines and not hasTris then return end
local maxBudget = math.clamp(math.floor(tonumber(linesBudget) or 240), 24, 600)
local maxLines = hasLines and math.min(maxBudget, #esp.WireMesh) or 0
local maxTris = hasTris and math.min(maxBudget, #esp.WireTriangles) or 0
local wireThickness = math.clamp(tonumber(thickness) or 1.2, 0.5, 5)
local wireTransparency = math.clamp(lineTransparency or 0, 0, 1)
local triTransparency = math.clamp(faceTransparency or (Settings.ChamTransparency or 0.35), 0.05, 0.95)
local wireStyle = Settings.ChamWireStyle or "Triangulated"
local useGlow = Settings.ChamWireGlow and esp.WireGlow and #esp.WireGlow > 0
local lineCursor = 1
local triCursor = 1
local parts = GetWireParts(esp, char)
local partCount = math.max(1, #parts)
local budgetPerPart = math.max(12, math.floor(maxBudget / partCount))
local subdivisions = 1
for d = 1, 10 do
local perFace = 0
if hasLines then
perFace = perFace + (3 * d * d + 2 * d)
end
if hasTris then
perFace = perFace + (2 * d * d)
end
local estimate = 6 * perFace
if estimate <= budgetPerPart then
subdivisions = d
else
break
end
end
local function DrawLine(a, b)
if not hasLines or lineCursor > maxLines or not a or not b then return end
local ln = esp.WireMesh[lineCursor]
ln.Visible = true
ln.From = a
ln.To = b
ln.Color = color
ln.Transparency = wireTransparency
ln.Thickness = wireThickness
if useGlow then
local glow = esp.WireGlow[lineCursor]
if glow then
glow.Visible = true
glow.From = a
glow.To = b
glow.Color = BlendColor(color, Color3.new(1, 1, 1), 0.18)
glow.Transparency = math.clamp(wireTransparency + 0.42, 0, 0.95)
glow.Thickness = wireThickness + 2.6
end
end
lineCursor = lineCursor + 1
end
local function DrawTriangle(a, b, c)
if not hasTris or triCursor > maxTris or not a or not b or not c then return end
local tri = esp.WireTriangles[triCursor]
tri.Visible = true
tri.PointA = a
tri.PointB = b
tri.PointC = c
tri.Color = color
tri.Transparency = triTransparency
triCursor = triCursor + 1
end
for _, part in ipairs(parts) do
if (not hasLines or lineCursor > maxLines) and (not hasTris or triCursor > maxTris) then break end
local cf = part.CFrame
local sx, sy, sz = part.Size.X * 0.5, part.Size.Y * 0.5, part.Size.Z * 0.5
for _, BuildFacePoint in ipairs(WIRE_FACE_BUILDERS) do
if (not hasLines or lineCursor > maxLines) and (not hasTris or triCursor > maxTris) then break end
local grid = {}
for i = 1, subdivisions + 1 do
grid[i] = {}
local u = (i - 1) / subdivisions
for j = 1, subdivisions + 1 do
local v = (j - 1) / subdivisions
local localPoint = BuildFacePoint(sx, sy, sz, u, v)
local worldPoint = cf:PointToWorldSpace(localPoint)
local screenPoint, vis = Camera:WorldToViewportPoint(worldPoint)
if vis and screenPoint.Z > 0 then
grid[i][j] = Vector2.new(screenPoint.X, screenPoint.Y)
end
end
end
if hasLines and wireStyle == "Grid" then
-- Horizontal grid lines.
for i = 1, subdivisions + 1 do
for j = 1, subdivisions do
DrawLine(grid[i][j], grid[i][j + 1])
if lineCursor > maxLines then break end
end
if lineCursor > maxLines then break end
end
if lineCursor > maxLines then break end
-- Vertical grid lines.
for j = 1, subdivisions + 1 do
for i = 1, subdivisions do
DrawLine(grid[i][j], grid[i + 1][j])
if lineCursor > maxLines then break end
end
if lineCursor > maxLines then break end
end
if lineCursor > maxLines then break end
elseif hasLines and wireStyle == "Edges" then
local last = subdivisions + 1
DrawLine(grid[1][1], grid[last][1])
DrawLine(grid[last][1], grid[last][last])
DrawLine(grid[last][last], grid[1][last])
DrawLine(grid[1][last], grid[1][1])
end
if wireStyle ~= "Edges" or hasTris then
for i = 1, subdivisions do
for j = 1, subdivisions do
local p00 = grid[i][j]
local p01 = grid[i][j + 1]
local p10 = grid[i + 1][j]
local p11 = grid[i + 1][j + 1]
if hasLines and wireStyle == "Triangulated" then
DrawLine(p00, p10)
DrawLine(p00, p01)
if i == subdivisions then DrawLine(p10, p11) end
if j == subdivisions then DrawLine(p01, p11) end
end
if (i + j) % 2 == 0 then
if hasLines then DrawLine(p00, p11) end
if hasTris then
DrawTriangle(p00, p10, p11)
DrawTriangle(p00, p11, p01)
end
else
if hasLines then DrawLine(p10, p01) end
if hasTris then
DrawTriangle(p00, p10, p01)
DrawTriangle(p10, p11, p01)
end
end
if (not hasLines or lineCursor > maxLines) and (not hasTris or triCursor > maxTris) then break end
end
if (not hasLines or lineCursor > maxLines) and (not hasTris or triCursor > maxTris) then break end
end
end
end
end
if esp.WireMesh then
for i = lineCursor, #esp.WireMesh do
esp.WireMesh[i].Visible = false
end
end
if esp.WireGlow then
for i = lineCursor, #esp.WireGlow do
esp.WireGlow[i].Visible = false
end
end
if esp.WireTriangles then
for i = triCursor, #esp.WireTriangles do
esp.WireTriangles[i].Visible = false
end
end
end
-- Get closest target
local function UpdateTarget()
local target, dist = nil, math.max(Settings.FOV, 1)
local mouse = UIS:GetMouseLocation()
for _, p in pairs(Players:GetPlayers()) do
if p ~= Player and p.Character and IsEnemy(p) then
local part = GetCharacterTargetPart(p.Character)
local hum = p.Character:FindFirstChildOfClass("Humanoid")
if part and hum and hum.Health > 0 then
local pos, vis = Camera:WorldToViewportPoint(part.Position)
if vis then
local mDist = (Vector2.new(pos.X, pos.Y) - mouse).Magnitude
if mDist < dist and IsVisible(part) then
dist = mDist; target = part
end
end
end
end
end
return target
end
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- AIMBOT INPUT
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
UIS.InputBegan:Connect(function(input, proc)
if not Settings.Enabled then return end
if proc and input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
-- Silent aim on click
if input.UserInputType == Enum.UserInputType.MouseButton1 and Settings.SilentAim then
local clickTarget = CurrentTarget or UpdateTarget()
if clickTarget then
CurrentTarget = clickTarget
end
-- If hook is unavailable in executor, fallback to camera flick.
if CurrentTarget and not SilentHookReady then
local targetPos = GetSilentTargetPosition()
if targetPos then
local oldCF = Camera.CFrame
Camera.CFrame = CFrame.new(Camera.CFrame.Position, targetPos)
if Settings.SilentForceShot then
FireMouseClick()
end
task.wait(math.max(Settings.ShotDelay or 0, 0))
Camera.CFrame = oldCF
end
end
end
-- Click TP
if Settings.ClickTP and input.UserInputType == Enum.UserInputType.MouseButton1 and UIS:IsKeyDown(Enum.KeyCode.LeftControl) then
pcall(function()
local mouse = Player:GetMouse()
if mouse.Target then
Player.Character.HumanoidRootPart.CFrame = CFrame.new(mouse.Hit.Position + Vector3.new(0, 3, 0))
end
end)
end
end)
-- Infinite jump
UIS.JumpRequest:Connect(function()
if Settings.InfJumpEnabled then
pcall(function() Player.Character:FindFirstChildOfClass("Humanoid"):ChangeState(Enum.HumanoidStateType.Jumping) end)
end
end)
-- Anti-AFK
Player.Idled:Connect(function()
if Settings.AntiAFK then
pcall(function()
local VU = game:GetService("VirtualUser")
VU:Button2Down(Vector2.new(), workspace.CurrentCamera.CFrame)
task.wait(1)
VU:Button2Up(Vector2.new(), workspace.CurrentCamera.CFrame)
end)
end
end)
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- MAIN RENDER LOOP
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
RunService.RenderStepped:Connect(function()
Camera = workspace.CurrentCamera
RaycastsThisFrame = 0
CurrentTarget = UpdateTarget()
LastRaycastCount = RaycastsThisFrame
local RGB = Color3.fromHSV(tick() % 5 / 5, 1, 1)
local VP = Camera.ViewportSize
local center = Vector2.new(VP.X / 2, VP.Y / 2)
local mousePos = UIS:GetMouseLocation()
-- FOV Circle
FOVCircle.Visible = Settings.Enabled and Settings.ShowFOV
FOVCircle.Radius = Settings.FOV
FOVCircle.Position = mousePos
FOVCircle.Color = Settings.FOVColor
-- Raycast visuals (screen lines to nearest targets)
for i = 1, #RaycastLines do
RaycastLines[i].Visible = false
end
if Settings.Enabled and Settings.RaycastVisuals then
local pool = {}
for _, p in pairs(Players:GetPlayers()) do
if p ~= Player and p.Character and IsEnemy(p) then
local part = p.Character:FindFirstChild(Settings.HitPart)
local hum = p.Character:FindFirstChildOfClass("Humanoid")
if part and hum and hum.Health > 0 then
local pos, vis = Camera:WorldToViewportPoint(part.Position)
if vis then
local scr = Vector2.new(pos.X, pos.Y)
local d = (scr - mousePos).Magnitude
if d <= Settings.FOV then
table.insert(pool, {ScreenPos = scr, Dist = d})
end
end
end
end
end
table.sort(pool, function(a, b) return a.Dist < b.Dist end)
local maxLines = math.min(Settings.RaycastMaxLines, #RaycastLines, #pool)
for i = 1, maxLines do
local line = RaycastLines[i]
line.From = mousePos
line.To = pool[i].ScreenPos
line.Color = Settings.RaycastColor
line.Visible = true
end
end
RaycastCountText.Visible = Settings.Enabled and Settings.RaycastShowCount
if RaycastCountText.Visible then
RaycastCountText.Text = "Raycasts: " .. tostring(LastRaycastCount)
RaycastCountText.Position = Vector2.new(mousePos.X + 16, mousePos.Y + 16)
RaycastCountText.Color = Settings.RaycastColor
end
-- Target visuals
if CurrentTarget and Settings.Enabled then
local pos, vis = Camera:WorldToViewportPoint(CurrentTarget.Position)
if vis then
local tPos = Vector2.new(pos.X, pos.Y)
TargetLine.Visible = Settings.TargetTracer
TargetLine.From = center
TargetLine.To = tPos
TargetLine.Color = Settings.TargetColor
TargetCircle.Visible = Settings.TargetESP
TargetCircle.Position = tPos
TargetCircle.Color = Settings.TargetColor
TargetCircle.Radius = 13 + math.sin(tick() * 6) * 2
local showPanel = Settings.TargetPanel
if showPanel then
local targetChar = CurrentTarget.Parent
local targetHum = targetChar and targetChar:FindFirstChildOfClass("Humanoid")
local nameText = targetChar and targetChar.Name or "Target"
local hpText = targetHum and (math.floor(targetHum.Health) .. " / " .. math.floor(targetHum.MaxHealth) .. " HP") or "HP: ?"
local hpPct = targetHum and targetHum.MaxHealth > 0 and math.clamp(targetHum.Health / targetHum.MaxHealth, 0, 1) or 0
local distText = "DST: ?"
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
local d = (Player.Character.HumanoidRootPart.Position - CurrentTarget.Position).Magnitude
distText = "DST: " .. math.floor(d)
end
local panelW, panelH = 158, 60
local px, py = tPos.X + 18, tPos.Y + 10
if px + panelW > VP.X - 6 then px = tPos.X - panelW - 18 end
if py + panelH > VP.Y - 6 then py = tPos.Y - panelH - 10 end
TargetPanelBG.Visible = true
TargetPanelBG.Position = Vector2.new(px, py)
TargetPanelBG.Size = Vector2.new(panelW, panelH)
TargetPanelAccent.Visible = true
TargetPanelAccent.Position = Vector2.new(px, py)
TargetPanelAccent.Size = Vector2.new(panelW, 2)
TargetPanelAccent.Color = Settings.TargetColor
local tTheme = GetTheme()
TargetPanelBG.Color = tTheme.card
TargetPanelName.Visible = true
TargetPanelName.Position = Vector2.new(px + 6, py + 4)
TargetPanelName.Text = nameText
TargetPanelName.Color = tTheme.text
TargetPanelInfo1.Visible = true
TargetPanelInfo1.Position = Vector2.new(px + 6, py + 22)
TargetPanelInfo1.Text = hpText
TargetPanelInfo1.Color = tTheme.subtext
local hpBarPos = Vector2.new(px + 6, py + 38)
TargetPanelHealthBG.Visible = true
TargetPanelHealthBG.Position = hpBarPos
TargetPanelHealthBG.Size = Vector2.new(panelW - 12, 4)
TargetPanelHealth.Visible = true
TargetPanelHealth.Position = hpBarPos
TargetPanelHealth.Size = Vector2.new((panelW - 12) * hpPct, 4)
TargetPanelHealth.Color = GetHealthColor(targetHum)
TargetPanelInfo2.Visible = true
TargetPanelInfo2.Position = Vector2.new(px + 6, py + 45)
TargetPanelInfo2.Text = distText
TargetPanelInfo2.Color = tTheme.subtext
else
TargetPanelBG.Visible = false; TargetPanelAccent.Visible = false; TargetPanelHealthBG.Visible = false; TargetPanelHealth.Visible = false
TargetPanelName.Visible = false; TargetPanelInfo1.Visible = false; TargetPanelInfo2.Visible = false
end
else
TargetLine.Visible = false; TargetCircle.Visible = false
TargetPanelBG.Visible = false; TargetPanelAccent.Visible = false; TargetPanelHealthBG.Visible = false; TargetPanelHealth.Visible = false
TargetPanelName.Visible = false; TargetPanelInfo1.Visible = false; TargetPanelInfo2.Visible = false
end
else
TargetLine.Visible = false; TargetCircle.Visible = false
TargetPanelBG.Visible = false; TargetPanelAccent.Visible = false; TargetPanelHealthBG.Visible = false; TargetPanelHealth.Visible = false
TargetPanelName.Visible = false; TargetPanelInfo1.Visible = false; TargetPanelInfo2.Visible = false
end
-- Continuous aimbot lock (SilentAim off = visible lock)
if Settings.Enabled and CurrentTarget and not Settings.SilentAim then
local targetPos = CurrentTarget.Position
if Settings.Prediction then
local vel = CurrentTarget.AssemblyLinearVelocity or CurrentTarget.Velocity or Vector3.new()
targetPos = targetPos + vel * Settings.PredictionAmount
end
local targetCF = CFrame.new(Camera.CFrame.Position, targetPos)
if Settings.Smoothing then
Camera.CFrame = Camera.CFrame:Lerp(targetCF, 1 / math.max(Settings.SmoothFactor, 1))
else
Camera.CFrame = targetCF
end
end
-- Auto fire / Triggerbot (uses aimbot FOV, not crosshair)
if (Settings.AutoFire or Settings.TriggerBot) and Settings.Enabled and CurrentTarget then
pcall(function()
local pos, vis = Camera:WorldToViewportPoint(CurrentTarget.Position)
if vis then
local dist = (Vector2.new(pos.X, pos.Y) - mousePos).Magnitude
if dist <= Settings.FOV and (tick() - LastTriggerShot) >= Settings.TriggerDelay then
LastTriggerShot = tick()
FireMouseClick()
end
end
end)
end
-- в•ђв•ђ HITBOX SINK в•ђв•ђ
-- HipHeight метод: физика держит персонажа на земле, но HRP уходит ниже
pcall(function()
local char = Player.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not hrp or not hum then return end
if Settings.HitboxSink then
local depth = Settings.HitboxSinkDepth
-- Сохраняем оригинальные значения при первом включении
if not hrp:FindFirstChild("FlickSinkAnchor") then
local marker = Instance.new("NumberValue")
marker.Name = "FlickSinkAnchor"
marker.Value = hum.HipHeight -- запоминаем оригинальный HipHeight
marker.Parent = hrp
-- Запоминаем оригинальные Motor6D offsets
for _, motor in pairs(char:GetDescendants()) do
if motor:IsA("Motor6D") and motor.Part0 == hrp then
motor:SetAttribute("OrigC0Y", motor.C0.Position.Y)
end
end
end
-- HipHeight = отрицательный → HRP опускается под землю
-- Физика НЕ ломается, персонаж ходит по земле нормально
hum.HipHeight = -depth
-- Motor6D компенсация: визуально поднимаем тело обратно наверх
for _, motor in pairs(char:GetDescendants()) do
if motor:IsA("Motor6D") and motor.Part0 == hrp then
local origY = motor:GetAttribute("OrigC0Y") or 0
local pos3 = motor.C0.Position
motor.C0 = CFrame.new(pos3.X, origY + depth, pos3.Z) * (motor.C0 - motor.C0.Position)
end
end
elseif hrp:FindFirstChild("FlickSinkAnchor") then
-- Восстанавливаем всё при выключении
local origHH = hrp:FindFirstChild("FlickSinkAnchor").Value
hum.HipHeight = origHH
for _, motor in pairs(char:GetDescendants()) do
if motor:IsA("Motor6D") and motor.Part0 == hrp then
local origY = motor:GetAttribute("OrigC0Y")
if origY then
local pos3 = motor.C0.Position
motor.C0 = CFrame.new(pos3.X, origY, pos3.Z) * (motor.C0 - motor.C0.Position)
end
end
end
hrp:FindFirstChild("FlickSinkAnchor"):Destroy()
end
-- Hitbox Desync (Jitter) — использует HipHeight для дёрганья
if Settings.HitboxDesync and not Settings.HitboxSink then
local offset = Settings.HitboxDesyncOffset
local jitter = math.abs(math.sin(tick() * 15)) * offset
hum.HipHeight = -jitter
elseif not Settings.HitboxSink and not Settings.HitboxDesync then
-- Восстанавливаем HipHeight если оба выключены
if hrp:GetAttribute("OrigHipHeight") then
hum.HipHeight = hrp:GetAttribute("OrigHipHeight")
end
end
end)
-- Crosshair
if Settings.CrosshairEnabled then
local sz, gap, clr, thk = Settings.CrosshairSize, Settings.CrosshairGap, Settings.CrosshairColor, Settings.CrosshairThickness
-- Top
CrossLines[1].Visible = true; CrossLines[1].From = center - Vector2.new(0, gap); CrossLines[1].To = center - Vector2.new(0, gap + sz); CrossLines[1].Color = clr; CrossLines[1].Thickness = thk
-- Bottom
CrossLines[2].Visible = true; CrossLines[2].From = center + Vector2.new(0, gap); CrossLines[2].To = center + Vector2.new(0, gap + sz); CrossLines[2].Color = clr; CrossLines[2].Thickness = thk
-- Left
CrossLines[3].Visible = true; CrossLines[3].From = center - Vector2.new(gap, 0); CrossLines[3].To = center - Vector2.new(gap + sz, 0); CrossLines[3].Color = clr; CrossLines[3].Thickness = thk
-- Right
CrossLines[4].Visible = true; CrossLines[4].From = center + Vector2.new(gap, 0); CrossLines[4].To = center + Vector2.new(gap + sz, 0); CrossLines[4].Color = clr; CrossLines[4].Thickness = thk
CrossDot.Visible = Settings.DotEnabled; CrossDot.Position = center; CrossDot.Color = clr
else
for i = 1, 4 do CrossLines[i].Visible = false end; CrossDot.Visible = false
end
-- Lighting
if Settings.Fullbright then Lighting.Brightness = 2; Lighting.ClockTime = 14; Lighting.GlobalShadows = false; Lighting.Ambient = Settings.AmbientColor end
if Settings.NoFog then Lighting.FogEnd = 999999; Lighting.FogStart = 999999 end
if Settings.CustomTime then Lighting.ClockTime = Settings.TimeValue end
-- Post processing
if Settings.BloomEnabled then
if not BloomEffect then
BloomEffect = Instance.new("BloomEffect")
BloomEffect.Name = "FlickBloom"
BloomEffect.Parent = Lighting
end
BloomEffect.Enabled = true
BloomEffect.Intensity = Settings.BloomIntensity
BloomEffect.Size = Settings.BloomSize
BloomEffect.Threshold = Settings.BloomThreshold
elseif BloomEffect then
BloomEffect.Enabled = false
end
if Settings.ColorCorrectionEnabled then
if not ColorCorrectionEffect then
ColorCorrectionEffect = Instance.new("ColorCorrectionEffect")
ColorCorrectionEffect.Name = "FlickColorCorrection"
ColorCorrectionEffect.Parent = Lighting
end
ColorCorrectionEffect.Enabled = true
ColorCorrectionEffect.Contrast = Settings.ColorCorrectionContrast
ColorCorrectionEffect.Saturation = Settings.ColorCorrectionSaturation
ColorCorrectionEffect.TintColor = Settings.ColorCorrectionTint
elseif ColorCorrectionEffect then
ColorCorrectionEffect.Enabled = false
end
-- Movement
pcall(function()
local char = Player.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hum then
if Settings.SpeedEnabled then hum.WalkSpeed = Settings.SpeedValue end
if Settings.JumpPower then hum.JumpPower = Settings.JumpValue end
end
-- Noclip
if Settings.NoclipEnabled and char then
for _, p in pairs(char:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = false end
end
end
-- Fly
if Settings.FlyEnabled and hrp then
local bp = hrp:FindFirstChild("FlickBP")
local bg = hrp:FindFirstChild("FlickBG")
if not bp then bp = Instance.new("BodyPosition") bp.Name = "FlickBP" bp.MaxForce = Vector3.new() bp.Parent = hrp end
if not bg then bg = Instance.new("BodyGyro") bg.Name = "FlickBG" bg.MaxTorque = Vector3.new() bg.Parent = hrp end
if UIS:IsKeyDown(Enum.KeyCode.Space) then
bp.MaxForce = Vector3.new(9e4, 9e4, 9e4)
bg.MaxTorque = Vector3.new(9e4, 9e4, 9e4)
bg.CFrame = Camera.CFrame
local md = Vector3.new()
if UIS:IsKeyDown(Enum.KeyCode.W) then md = md + Camera.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.S) then md = md - Camera.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.A) then md = md - Camera.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then md = md + Camera.CFrame.RightVector end
bp.Position = md.Magnitude > 0 and hrp.Position + md.Unit * (Settings.FlySpeed / 25) or hrp.Position + Vector3.new(0, 0.2, 0)
else bp.MaxForce = Vector3.new(); bg.MaxTorque = Vector3.new() end
end
end)
-- Render players ESP + Chams
for _, p in pairs(Players:GetPlayers()) do
if p ~= Player then
local esp = GetESP(p)
local char = p.Character
if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 then
-- Highlight (Chams/Glow)
local hl = char:FindFirstChild("FlickHL")
if not hl then hl = Instance.new("Highlight") hl.Name = "FlickHL" hl.Parent = char end
local chamType = Settings.ChamType or "Fill"
local distance = GetCharacterDistance(char)
local maxChamDistance = tonumber(Settings.ChamMaxDistance) or 900
local inChamRange = maxChamDistance <= 0 or distance <= maxChamDistance
local isCurrentTarget = CurrentTarget and CurrentTarget:IsDescendantOf(char)
local chamsEnabled = Settings.ChamsEnabled and inChamRange
local showWire = chamsEnabled and (chamType == "Wireframe" or chamType == "Fill+Wireframe" or chamType == "TriMesh")
local showTriFill = chamsEnabled and (chamType == "TriFill" or chamType == "TriMesh")
local showFill = chamsEnabled and (chamType == "Fill" or chamType == "Flat" or chamType == "Fill+Wireframe")
local showChamOutline = chamsEnabled and (chamType == "Outline" or chamType == "Fill+Wireframe")
local showWireWallOutline = showWire or showTriFill
local showOutline = (Settings.GlowEnabled and inChamRange) or showChamOutline or showWireWallOutline
local chamColor, outlineColor, fillTransparency, outlineTransparency = GetChamStyle(p, char, hum, isCurrentTarget, RGB, distance)
hl.Adornee = char
hl.Enabled = showFill or showOutline
hl.FillColor = chamColor
hl.OutlineColor = showWireWallOutline and chamColor or outlineColor
hl.FillTransparency = showFill and fillTransparency or 1
hl.OutlineTransparency = showOutline and outlineTransparency or 1
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
UpdateWireframe(char)
if showWire or showTriFill then
RenderWireMeshForCharacter(esp, char, chamColor, Settings.ChamWireThickness, Settings.ChamWireLines, showWire, showTriFill, outlineTransparency, fillTransparency)
else
HideWireMesh(esp)
end
local hrp = char.HumanoidRootPart
local head = char.Head
local pos, vis = Camera:WorldToViewportPoint(hrp.Position)
local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.5, 0))
local legPos = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0))
if vis then
local height = math.abs(headPos.Y - legPos.Y)
local width = height / 2
local topLeft = Vector2.new(pos.X - width / 2, headPos.Y)
-- Box visuals
local showCorners = Settings.CornerBoxes
local showBox = Settings.Boxes and not showCorners
local showFill = Settings.BoxFill and (showBox or showCorners)
esp.BoxOutline.Visible = showBox
esp.Box.Visible = showBox
if showBox then
esp.BoxOutline.Size = Vector2.new(width, height)
esp.BoxOutline.Position = topLeft
esp.Box.Size = Vector2.new(width, height)
esp.Box.Position = topLeft
esp.Box.Color = Settings.BoxColor
end
esp.BoxFill.Visible = showFill
if showFill then
esp.BoxFill.Size = Vector2.new(width, height)
esp.BoxFill.Position = topLeft
esp.BoxFill.Color = Settings.BoxFillColor
esp.BoxFill.Transparency = Settings.BoxFillTransparency
end
for i = 1, 8 do esp.Corners[i].Visible = false end
if showCorners then
local cornerMax = math.max(3, math.floor(math.min(width, height) / 2))
local cornerLen = math.clamp(Settings.CornerLength, 3, cornerMax)
local x, y = topLeft.X, topLeft.Y
local w, h = width, height
local c = Settings.BoxColor
local corners = esp.Corners
corners[1].Visible = true; corners[1].From = Vector2.new(x, y); corners[1].To = Vector2.new(x + cornerLen, y); corners[1].Color = c
corners[2].Visible = true; corners[2].From = Vector2.new(x, y); corners[2].To = Vector2.new(x, y + cornerLen); corners[2].Color = c
corners[3].Visible = true; corners[3].From = Vector2.new(x + w - cornerLen, y); corners[3].To = Vector2.new(x + w, y); corners[3].Color = c
corners[4].Visible = true; corners[4].From = Vector2.new(x + w, y); corners[4].To = Vector2.new(x + w, y + cornerLen); corners[4].Color = c
corners[5].Visible = true; corners[5].From = Vector2.new(x, y + h - cornerLen); corners[5].To = Vector2.new(x, y + h); corners[5].Color = c
corners[6].Visible = true; corners[6].From = Vector2.new(x, y + h); corners[6].To = Vector2.new(x + cornerLen, y + h); corners[6].Color = c
corners[7].Visible = true; corners[7].From = Vector2.new(x + w - cornerLen, y + h); corners[7].To = Vector2.new(x + w, y + h); corners[7].Color = c
corners[8].Visible = true; corners[8].From = Vector2.new(x + w, y + h - cornerLen); corners[8].To = Vector2.new(x + w, y + h); corners[8].Color = c
end
-- Name
esp.Name.Visible = Settings.Names
esp.Name.Text = p.DisplayName
esp.Name.Position = Vector2.new(pos.X, headPos.Y - 18)
esp.Name.Color = Settings.NameColor
-- Distance
esp.Distance.Visible = Settings.Distance
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
esp.Distance.Text = math.floor((Player.Character.HumanoidRootPart.Position - hrp.Position).Magnitude) .. "m"
end
esp.Distance.Position = Vector2.new(pos.X, legPos.Y + 4)
esp.Distance.Color = Settings.DistanceColor
-- Tracer
esp.Tracer.Visible = Settings.Tracers
esp.Tracer.From = Vector2.new(VP.X / 2, VP.Y)
esp.Tracer.To = Vector2.new(pos.X, legPos.Y)
esp.Tracer.Color = Settings.TracerColor
-- Health Bar
if Settings.HealthBar then
local barW = 3
local barH = height
local barX = topLeft.X - barW - 3
local barY = headPos.Y
local healthPct = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
esp.HealthBarBG.Visible = true
esp.HealthBarBG.Position = Vector2.new(barX, barY)
esp.HealthBarBG.Size = Vector2.new(barW, barH)
esp.HealthBar.Visible = true
esp.HealthBar.Position = Vector2.new(barX, barY + barH * (1 - healthPct))
esp.HealthBar.Size = Vector2.new(barW, barH * healthPct)
esp.HealthBar.Color = Color3.fromRGB(255 * (1 - healthPct), 255 * healthPct, 0)
else esp.HealthBarBG.Visible = false; esp.HealthBar.Visible = false end
else
esp.Box.Visible = false; esp.BoxOutline.Visible = false; esp.Name.Visible = false
esp.BoxFill.Visible = false
for i = 1, 8 do esp.Corners[i].Visible = false end
esp.Distance.Visible = false; esp.Tracer.Visible = false
esp.HealthBar.Visible = false; esp.HealthBarBG.Visible = false
HideWireMesh(esp)
end
else
-- Dead player - clean visuals
esp.Box.Visible = false; esp.BoxOutline.Visible = false; esp.Name.Visible = false
esp.BoxFill.Visible = false
for i = 1, 8 do esp.Corners[i].Visible = false end
esp.Distance.Visible = false; esp.Tracer.Visible = false
esp.HealthBar.Visible = false; esp.HealthBarBG.Visible = false
if char:FindFirstChild("FlickHL") then char.FlickHL.Enabled = false end
UpdateWireframe(char)
HideWireMesh(esp)
end
else
esp.Box.Visible = false; esp.BoxOutline.Visible = false; esp.Name.Visible = false
esp.BoxFill.Visible = false
for i = 1, 8 do esp.Corners[i].Visible = false end
esp.Distance.Visible = false; esp.Tracer.Visible = false
esp.HealthBar.Visible = false; esp.HealthBarBG.Visible = false
HideWireMesh(esp)
if char then
if char:FindFirstChild("FlickHL") then char.FlickHL.Enabled = false end
UpdateWireframe(char)
end
end
end
end
-- в•ђв•ђ PARTICLES в•ђв•ђ
pcall(function()
local char = Player.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local RGB = Color3.fromHSV(tick() % 5 / 5, 1, 1)
if not char:FindFirstChild("FlickFXClean") then
local tag = Instance.new("BoolValue")
tag.Name = "FlickFXClean"
tag.Parent = char
for _, obj in pairs(char:GetDescendants()) do
if obj.Name == "FlickSparkle" or obj.Name == "FlickFire" or obj.Name == "FlickSmoke" or obj.Name == "FlickParticle" then
obj:Destroy()
end
end
end
-- Trail
if Settings.TrailEnabled then
local head = char:FindFirstChild("Head")
if hrp and head and not hrp:FindFirstChild("FlickTrail") then
local a0 = Instance.new("Attachment") a0.Name = "FlickTrailA" a0.Position = Vector3.new(0, 1, 0) a0.Parent = hrp
local a1 = Instance.new("Attachment") a1.Name = "FlickTrailB" a1.Position = Vector3.new(0, -2, 0) a1.Parent = hrp
local tr = Instance.new("Trail") tr.Name = "FlickTrail"
tr.Attachment0 = a0; tr.Attachment1 = a1
tr.Lifetime = Settings.TrailLifetime; tr.LightEmission = 1
tr.MinLength = 0; tr.FaceCamera = true
tr.Parent = hrp
end
local tr = hrp:FindFirstChild("FlickTrail")
if tr then
tr.Lifetime = Settings.TrailLifetime
local tCol = Settings.RainbowParticles and RGB or Settings.TrailColor
tr.Color = ColorSequence.new(tCol)
tr.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1)})
tr.Enabled = true
end
end
-- Aura
if Settings.AuraEnabled then
if not hrp:FindFirstChild("FlickAura") then
local pe = Instance.new("ParticleEmitter") pe.Name = "FlickAura"
pe.Texture = "rbxassetid://243098098"
pe.Rate = 50; pe.Speed = NumberRange.new(0.5, 2)
pe.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 1.5), NumberSequenceKeypoint.new(1, 0)})
pe.Lifetime = NumberRange.new(0.5, 1); pe.LightEmission = 1; pe.LightInfluence = 0
pe.SpreadAngle = Vector2.new(180, 180)
pe.Parent = hrp
end
local aura = hrp:FindFirstChild("FlickAura")
if aura then aura.Color = ColorSequence.new(Settings.RainbowParticles and RGB or Settings.AuraColor); aura.Enabled = true end
end
end)
end)
-- в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ
-- HUD + Notifications + ArrayList (Drawing API) - MODERN CLEAN HUD
-- =============================================================
local VisualUI = {}
local function Lerp(a, b, t)
return a + (b - a) * t
end
local function LerpV2(a, b, t)
return Vector2.new(Lerp(a.X, b.X, t), Lerp(a.Y, b.Y, t))
end
local function Snap(n)
return math.floor(n + 0.5)
end
local function SnapV2(v)
return Vector2.new(Snap(v.X), Snap(v.Y))
end
local function HSVGradient(speed)
local h = (tick() * speed) % 1
return Color3.fromHSV(h, 0.85, 1)
end
local function HUDAlpha(kind)
local style = Settings.HUDStyle or "Glass"
if style == "Minimal" then
return kind == "shadow" and 1 or 0.45
elseif style == "Contrast" then
return kind == "shadow" and 0.35 or 0.04
end
return kind == "shadow" and 0.58 or 0.16
end
local function SetDrawVisible(list, visible)
for _, obj in ipairs(list) do
if obj then obj.Visible = visible end
end
end
local function FormatVec3(v)
return string.format("%d, %d, %d", math.floor(v.X), math.floor(v.Y), math.floor(v.Z))
end
local function NewText()
local t = Drawing.new("Text")
t.Font = Drawing.Fonts.Plex
t.Size = 14
t.Outline = true
t.Color = Color3.fromRGB(235, 235, 240)
t.Visible = true
return t
end
local function NewSquare()
local s = Drawing.new("Square")
s.Filled = true
s.Visible = true
return s
end
-- Style
local UI_BG = Color3.fromRGB(14, 14, 18)
local UI_TEXT = Color3.fromRGB(235, 235, 240)
local UI_SUBTEXT = Color3.fromRGB(205, 210, 220)
local HUDLayout = {
margin = 16,
gap = 8,
wmPadX = 10,
wmPadY = 6,
healthWidth = 238,
healthHeight = 12,
statsWidth = 238,
keybindWidth = 238,
rowHeight = 20,
notifWidth = 316,
notifHeight = 42
}
local function ClampHUDPos(pos, size, vp)
local maxX = math.max(0, vp.X - size.X)
local maxY = math.max(0, vp.Y - size.Y)
return Vector2.new(math.clamp(pos.X, 0, maxX), math.clamp(pos.Y, 0, maxY))
end
local function ResolveHUDPos(key, defaultPos, size, vp)
return ClampHUDPos(defaultPos, size, vp)
end
-- =========================
-- Notifications
-- =========================
VisualUI.Notifs = {
items = {},
queue = {},
maxVisible = 5,
width = HUDLayout.notifWidth,
height = HUDLayout.notifHeight,
padding = 8,
life = 3
}
local notifColors = {
info = Color3.fromRGB(120, 190, 255),
success = Color3.fromRGB(120, 255, 170),
warning = Color3.fromRGB(255, 200, 80)
}
function VisualUI:Notify(text, nType)
nType = nType or "info"
table.insert(self.Notifs.queue, {
text = text,
type = nType,
time = tick()
})
end
local function CreateNotif(data)
local theme = GetTheme()
local bg = NewSquare()
bg.Color = theme.card
bg.Transparency = 0.15
bg.Size = Vector2.new(VisualUI.Notifs.width, VisualUI.Notifs.height)
local shadow = NewSquare()
shadow.Color = theme.bg
shadow.Transparency = 0.55
shadow.Size = Vector2.new(VisualUI.Notifs.width + 4, VisualUI.Notifs.height + 4)
local bar = NewSquare()
bar.Color = notifColors[data.type] or Settings.HUDColor
bar.Transparency = 0
bar.Size = Vector2.new(4, VisualUI.Notifs.height)
local lifeBar = NewSquare()
lifeBar.Color = notifColors[data.type] or Settings.HUDColor
lifeBar.Transparency = 0
lifeBar.Size = Vector2.new(VisualUI.Notifs.width, 2)
local icon = NewSquare()
icon.Size = Vector2.new(8, 8)
icon.Color = notifColors[data.type] or Settings.HUDColor
icon.Transparency = 0
local txt = NewText()
txt.Text = data.text
txt.Size = 14
txt.Color = theme.text
return {
shadow = shadow,
bg = bg,
bar = bar,
lifeBar = lifeBar,
icon = icon,
txt = txt,
start = tick(),
alpha = 0,
pos = Vector2.new(0, 0),
data = data
}
end
-- =========================
-- ArrayList
-- =========================
VisualUI.Array = {
byName = {},
ordered = {},
width = 210,
rowHeight = 22,
padding = 4,
slideOffset = 26
}
local function BuildArray(modList)
table.sort(modList, function(a, b) return #a > #b end)
local active = {}
for _, name in ipairs(modList) do
active[name] = true
local item = VisualUI.Array.byName[name]
if not item then
local bg = NewSquare()
bg.Color = GetTheme().card
bg.Transparency = 0.2
bg.Size = Vector2.new(VisualUI.Array.width, VisualUI.Array.rowHeight)
local shadow = NewSquare()
shadow.Color = GetTheme().bg
shadow.Transparency = 0.62
shadow.Size = Vector2.new(VisualUI.Array.width + 4, VisualUI.Array.rowHeight + 4)
local txt = NewText()
txt.Text = name
txt.Size = 14
txt.Color = GetTheme().text
local bar = NewSquare()
bar.Color = Settings.HUDColor
bar.Size = Vector2.new(3, VisualUI.Array.rowHeight)
local glow = NewSquare()
glow.Color = Settings.HUDColor
glow.Transparency = 0.72
glow.Size = Vector2.new(1, VisualUI.Array.rowHeight)
item = {
name = name,
shadow = shadow,
bg = bg,
txt = txt,
bar = bar,
glow = glow,
alpha = 0,
targetAlpha = 1,
x = 0
}
VisualUI.Array.byName[name] = item
else
item.targetAlpha = 1
item.txt.Text = name
end
end
for name, item in pairs(VisualUI.Array.byName) do
if not active[name] then
item.targetAlpha = 0
end
end
VisualUI.Array.ordered = modList
end
-- =========================
-- HUD
-- =========================
VisualUI.HUD = {
wm = {},
health = { value = 1 },
stats = {},
keys = {},
}
VisualUI.ESPPreview = {}
local function BuildHUD()
local theme = GetTheme()
-- Watermark (fake blur via stacked layers)
VisualUI.HUD.wm.blur3 = NewSquare()
VisualUI.HUD.wm.blur3.Color = theme.bg
VisualUI.HUD.wm.blur3.Transparency = 0.6
VisualUI.HUD.wm.blur2 = NewSquare()
VisualUI.HUD.wm.blur2.Color = theme.bg
VisualUI.HUD.wm.blur2.Transparency = 0.48
VisualUI.HUD.wm.blur = NewSquare()
VisualUI.HUD.wm.blur.Color = theme.card
VisualUI.HUD.wm.blur.Transparency = 0.36
VisualUI.HUD.wm.bg = NewSquare()
VisualUI.HUD.wm.bg.Color = theme.card
VisualUI.HUD.wm.bg.Transparency = 0.15
VisualUI.HUD.wm.accent = NewSquare()
VisualUI.HUD.wm.accent.Color = Settings.HUDColor
VisualUI.HUD.wm.accent.Transparency = 0
VisualUI.HUD.wm.text = NewText()
VisualUI.HUD.wm.text.Size = 13
VisualUI.HUD.wm.text.Color = theme.text
-- Health Bar
VisualUI.HUD.health.shadow = NewSquare()
VisualUI.HUD.health.shadow.Color = theme.bg
VisualUI.HUD.health.shadow.Transparency = 0.62
VisualUI.HUD.health.bg = NewSquare()
VisualUI.HUD.health.bg.Color = theme.card
VisualUI.HUD.health.bg.Transparency = 0.2
VisualUI.HUD.health.bg.Size = Vector2.new(HUDLayout.healthWidth, HUDLayout.healthHeight)
VisualUI.HUD.health.damage = NewSquare()
VisualUI.HUD.health.damage.Color = Color3.fromRGB(255, 70, 70)
VisualUI.HUD.health.damage.Transparency = 0.45
VisualUI.HUD.health.fill = NewSquare()
VisualUI.HUD.health.fill.Color = Settings.HUDColor
VisualUI.HUD.health.fill.Transparency = 0
VisualUI.HUD.health.accent = NewSquare()
VisualUI.HUD.health.accent.Color = Settings.HUDColor
VisualUI.HUD.health.accent.Transparency = 0
VisualUI.HUD.health.text = NewText()
VisualUI.HUD.health.text.Size = 12
VisualUI.HUD.health.text.Center = true
VisualUI.HUD.health.text.Color = theme.text
-- Stats Panel
VisualUI.HUD.stats.shadow = NewSquare()
VisualUI.HUD.stats.shadow.Color = theme.bg
VisualUI.HUD.stats.shadow.Transparency = 0.62
VisualUI.HUD.stats.bg = NewSquare()
VisualUI.HUD.stats.bg.Color = theme.card
VisualUI.HUD.stats.bg.Transparency = 0.2
VisualUI.HUD.stats.bg.Size = Vector2.new(HUDLayout.statsWidth, 52)
VisualUI.HUD.stats.accent = NewSquare()
VisualUI.HUD.stats.accent.Color = Settings.HUDColor
VisualUI.HUD.stats.accent.Transparency = 0
VisualUI.HUD.stats.accent.Size = Vector2.new(HUDLayout.statsWidth, 2)
VisualUI.HUD.stats.title = NewText()
VisualUI.HUD.stats.title.Size = 12
VisualUI.HUD.stats.title.Color = theme.subtext
VisualUI.HUD.stats.title.Text = "STATUS"
VisualUI.HUD.stats.text = NewText()
VisualUI.HUD.stats.text.Size = 13
VisualUI.HUD.stats.text.Color = theme.text
-- Keybinds Panel
VisualUI.HUD.keys.shadow = NewSquare()
VisualUI.HUD.keys.shadow.Color = theme.bg
VisualUI.HUD.keys.shadow.Transparency = 0.62
VisualUI.HUD.keys.bg = NewSquare()
VisualUI.HUD.keys.bg.Color = theme.card
VisualUI.HUD.keys.bg.Transparency = 0.2
VisualUI.HUD.keys.accent = NewSquare()
VisualUI.HUD.keys.accent.Color = Settings.HUDColor
VisualUI.HUD.keys.accent.Transparency = 0
VisualUI.HUD.keys.title = NewText()
VisualUI.HUD.keys.title.Size = 12
VisualUI.HUD.keys.title.Color = theme.subtext
VisualUI.HUD.keys.title.Text = "KEYBINDS"
VisualUI.HUD.keys.text = NewText()
VisualUI.HUD.keys.text.Size = 13
VisualUI.HUD.keys.text.Color = theme.text
-- ESP Preview Panel (right side with Roblox character model)
local ep = VisualUI.ESPPreview
ep.panelShadow = NewSquare()
ep.panelShadow.Color = Color3.fromRGB(0, 0, 0)
ep.panelShadow.Transparency = 0.5
ep.panelBG = NewSquare()
ep.panelBG.Color = theme.card
ep.panelBG.Transparency = 0.12
ep.panelAccent = NewSquare()
ep.panelAccent.Color = Settings.HUDColor
ep.panelAccent.Transparency = 0
ep.title = NewText()
ep.title.Center = true
ep.title.Size = 13
ep.subtitle = NewText()
ep.subtitle.Center = true
ep.subtitle.Size = 11
ep.subtitle.Color = theme.subtext
-- Roblox blocky character body parts (filled squares with outlines)
ep.bodyParts = {}
local partNames = {"head", "torso", "leftArm", "rightArm", "leftLeg", "rightLeg"}
for _, pName in ipairs(partNames) do
local fill = NewSquare()
fill.Visible = false
local outline = Drawing.new("Square")
outline.Filled = false
outline.Thickness = 1.5
outline.Visible = false
ep.bodyParts[pName] = { fill = fill, outline = outline }
end
ep.box = Drawing.new("Square")
ep.box.Filled = false
ep.box.Thickness = 1
ep.box.Visible = false
ep.boxOutline = Drawing.new("Square")
ep.boxOutline.Filled = false
ep.boxOutline.Thickness = 2
ep.boxOutline.Color = Color3.new(0, 0, 0)
ep.boxOutline.Visible = false
ep.fill = NewSquare()
ep.corners = {}
for i = 1, 8 do
local ln = Drawing.new("Line")
ln.Thickness = 1.5
ln.Visible = false
ep.corners[i] = ln
end
ep.name = NewText()
ep.name.Center = true
ep.dist = NewText()
ep.dist.Center = true
ep.tracer = Drawing.new("Line")
ep.tracer.Thickness = 1
ep.tracer.Visible = false
ep.healthBG = NewSquare()
ep.health = NewSquare()
-- Hide all preview objects by default
local allPreview = {ep.panelShadow, ep.panelBG, ep.panelAccent, ep.title, ep.subtitle, ep.box, ep.boxOutline, ep.fill, ep.name, ep.dist, ep.tracer, ep.healthBG, ep.health}
for _, c in ipairs(ep.corners) do table.insert(allPreview, c) end
for _, bp in pairs(ep.bodyParts) do table.insert(allPreview, bp.fill) table.insert(allPreview, bp.outline) end
SetDrawVisible(allPreview, false)
end
BuildHUD()
-- =========================
-- Main Loop
-- =========================
local fpsValues = {}
local lastFPS = 60
local lastArrayKey = ""
RunService.RenderStepped:Connect(function(dt)
-- FPS calc
table.insert(fpsValues, 1 / dt)
if #fpsValues > 30 then table.remove(fpsValues, 1) end
local sum = 0
for _, v in pairs(fpsValues) do sum = sum + v end
lastFPS = math.floor(sum / #fpsValues)
local VP = workspace.CurrentCamera.ViewportSize
local theme = GetTheme()
local accent = Settings.HUDColor
if Settings.HUDPulseAccent then
local pulse = 0.88 + math.sin(tick() * 2.2) * 0.12
accent = Color3.new(
math.clamp(accent.R * pulse, 0, 1),
math.clamp(accent.G * pulse, 0, 1),
math.clamp(accent.B * pulse, 0, 1)
)
end
UI_BG = theme.bg
UI_TEXT = theme.text
UI_SUBTEXT = theme.subtext
TargetPanelBG.Color = theme.card
local char = Player.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
local statsLines = {}
if Settings.HUDSpeed then
local velocity = root and root.AssemblyLinearVelocity.Magnitude or 0
table.insert(statsLines, string.format("SPD %d walk | %d vel", math.floor(hum and hum.WalkSpeed or 0), math.floor(velocity)))
end
if Settings.HUDCoords then
local coords = root and root.Position or Vector3.new()
table.insert(statsLines, "XYZ " .. FormatVec3(coords))
end
if Settings.HUDPlayers then
table.insert(statsLines, string.format("PLR %d online", #Players:GetPlayers()))
end
if Settings.HUDTarget and CurrentTarget and CurrentTarget.Parent then
table.insert(statsLines, "TGT " .. CurrentTarget.Parent.Name)
end
local compact = Settings.HUDCompact
local rowStep = compact and 13 or 15
local statsHeight = math.max(compact and 34 or 40, (#statsLines * rowStep) + (compact and 22 or 28))
local healthHeight = compact and 8 or HUDLayout.healthHeight
local healthSize = Vector2.new(HUDLayout.healthWidth, healthHeight)
local healthDefault = Vector2.new(HUDLayout.margin, VP.Y - HUDLayout.margin - healthHeight)
local healthPos = ResolveHUDPos("health", healthDefault, healthSize, VP)
local statsPos
if Settings.HUDHealth then
statsPos = ResolveHUDPos("stats", Vector2.new(HUDLayout.margin, healthPos.Y - HUDLayout.gap - statsHeight), Vector2.new(HUDLayout.statsWidth, statsHeight), VP)
else
statsPos = ResolveHUDPos("stats", Vector2.new(HUDLayout.margin, VP.Y - HUDLayout.margin - statsHeight), Vector2.new(HUDLayout.statsWidth, statsHeight), VP)
end
-- Notifications
if Settings.Notifications then
while #VisualUI.Notifs.queue > 0 and #VisualUI.Notifs.items < VisualUI.Notifs.maxVisible do
local data = table.remove(VisualUI.Notifs.queue, 1)
table.insert(VisualUI.Notifs.items, CreateNotif(data))
end
local notifSize = Vector2.new(VisualUI.Notifs.width, VisualUI.Notifs.height)
local notifDefault = Vector2.new(VP.X - VisualUI.Notifs.width - HUDLayout.margin, VP.Y - HUDLayout.margin - VisualUI.Notifs.height)
local notifPos = ResolveHUDPos("notifs", notifDefault, notifSize, VP)
local baseX = notifPos.X
local baseY = notifPos.Y
for i = #VisualUI.Notifs.items, 1, -1 do
local n = VisualUI.Notifs.items[i]
local t = tick() - n.start
local alive = t < VisualUI.Notifs.life
local targetY = baseY - (i - 1) * (VisualUI.Notifs.height + VisualUI.Notifs.padding)
if alive then
n.alpha = Lerp(n.alpha, 1, dt * 8)
else
n.alpha = Lerp(n.alpha, 0, dt * 8)
if n.alpha < 0.05 then
n.shadow:Remove(); n.bg:Remove(); n.bar:Remove(); n.lifeBar:Remove(); n.icon:Remove(); n.txt:Remove()
table.remove(VisualUI.Notifs.items, i)
continue
end
end
local slideX = baseX - 30 + (30 * n.alpha)
local pos = SnapV2(LerpV2(n.pos, Vector2.new(slideX, targetY), dt * 8))
n.pos = pos
n.shadow.Position = pos + Vector2.new(2, 2)
n.bg.Position = pos
n.bar.Position = pos
n.lifeBar.Position = pos + Vector2.new(0, VisualUI.Notifs.height - 2)
n.icon.Position = pos + Vector2.new(11, 15)
n.txt.Position = pos + Vector2.new(26, 10)
n.shadow.Color = theme.bg
n.bg.Color = theme.card
n.txt.Color = theme.text
n.icon.Color = notifColors[n.data.type] or accent
n.bar.Color = notifColors[n.data.type] or accent
n.lifeBar.Color = notifColors[n.data.type] or accent
local lifeAlpha = math.clamp(1 - (t / VisualUI.Notifs.life), 0, 1)
n.lifeBar.Size = Vector2.new(VisualUI.Notifs.width * lifeAlpha, 2)
n.shadow.Transparency = 0.62 + (1 - n.alpha) * 0.3
n.bg.Transparency = 0.15 + (1 - n.alpha) * 0.6
n.bar.Transparency = 1 - n.alpha
n.lifeBar.Transparency = 1 - n.alpha
n.icon.Transparency = 1 - n.alpha
n.txt.Transparency = 1 - n.alpha
end
else
for i = #VisualUI.Notifs.items, 1, -1 do
local n = VisualUI.Notifs.items[i]
n.shadow:Remove(); n.bg:Remove(); n.bar:Remove(); n.lifeBar:Remove(); n.icon:Remove(); n.txt:Remove()
table.remove(VisualUI.Notifs.items, i)
end
end
-- ArrayList
if Settings.HUDEnabled and Settings.HUDArraylist then
local modules = {}
if Settings.Enabled then table.insert(modules, "Aimbot") end
if Settings.SilentAim then table.insert(modules, "Silent Aim") end
if Settings.Smoothing then table.insert(modules, "Aim Assist") end
if Settings.TriggerBot then table.insert(modules, "TriggerBot") end
if Settings.AutoFire then table.insert(modules, "Auto Fire") end
if Settings.HitboxSink then table.insert(modules, "Hitbox Sink") end
if Settings.HitboxDesync then table.insert(modules, "Hitbox Desync") end
if Settings.ChamsEnabled then table.insert(modules, "Chams") end
if Settings.GlowEnabled then table.insert(modules, "Glow ESP") end
if Settings.Boxes or Settings.Names or Settings.Tracers then table.insert(modules, "ESP") end
if Settings.Fullbright then table.insert(modules, "Fullbright") end
if Settings.BloomEnabled then table.insert(modules, "Bloom") end
if Settings.TrailEnabled then table.insert(modules, "Trail") end
if Settings.AuraEnabled then table.insert(modules, "Aura") end
if Settings.SpeedEnabled then table.insert(modules, "Speed") end
if Settings.FlyEnabled then table.insert(modules, "Flight") end
if Settings.NoclipEnabled then table.insert(modules, "Noclip") end
if Settings.InfJumpEnabled then table.insert(modules, "Infinite Jump") end
local key = table.concat(modules, "|")
if key ~= lastArrayKey then
lastArrayKey = key
BuildArray(modules)
end
local arrayHeight = math.max(VisualUI.Array.rowHeight, (#VisualUI.Array.ordered * (VisualUI.Array.rowHeight + VisualUI.Array.padding)) - VisualUI.Array.padding)
local arraySize = Vector2.new(VisualUI.Array.width, arrayHeight)
local arrayDefault = Vector2.new(VP.X - VisualUI.Array.width - HUDLayout.margin, HUDLayout.margin + 42)
local arrayPos = ResolveHUDPos("array", arrayDefault, arraySize, VP)
local x = arrayPos.X
local y = arrayPos.Y
local row = 0
for _, name in ipairs(VisualUI.Array.ordered) do
local m = VisualUI.Array.byName[name]
if m then
m.alpha = Lerp(m.alpha, m.targetAlpha, dt * 10)
if m.alpha > 0.02 then
row = row + 1
local rowY = y + (row - 1) * (VisualUI.Array.rowHeight + VisualUI.Array.padding)
local targetX = x + (1 - m.alpha) * VisualUI.Array.slideOffset
m.x = Lerp(m.x, targetX, dt * 12)
local rowPos = SnapV2(Vector2.new(m.x, rowY))
m.shadow.Position = rowPos + Vector2.new(2, 2)
m.shadow.Size = Vector2.new(VisualUI.Array.width + 4, VisualUI.Array.rowHeight + 4)
m.bg.Position = rowPos
m.txt.Position = rowPos + Vector2.new(8, 3)
m.bar.Position = rowPos + Vector2.new(VisualUI.Array.width - 3, 0)
m.glow.Position = rowPos + Vector2.new(VisualUI.Array.width - 5, 0)
local hueOffset = ((tick() * 0.18) + (row * 0.06)) % 1
local grad = Color3.fromHSV(hueOffset, 0.85, 1)
m.bar.Color = Settings.HUDRainbowBars and grad or accent
m.glow.Color = m.bar.Color
m.shadow.Color = theme.bg
m.bg.Color = theme.card
m.txt.Color = theme.text
m.shadow.Transparency = HUDAlpha("shadow") + (1 - m.alpha) * 0.25
m.bg.Transparency = HUDAlpha("panel") + (1 - m.alpha) * 0.65
m.txt.Transparency = 1 - m.alpha
m.bar.Transparency = 1 - m.alpha
m.glow.Transparency = 0.72 + (1 - m.alpha) * 0.2
m.shadow.Visible = Settings.HUDStyle ~= "Minimal"
m.bg.Visible = true
m.txt.Visible = true
m.bar.Visible = true
m.glow.Visible = true
else
m.shadow.Visible = false
m.bg.Visible = false
m.txt.Visible = false
m.bar.Visible = false
m.glow.Visible = false
end
end
end
for name, m in pairs(VisualUI.Array.byName) do
if m.targetAlpha == 0 then
m.alpha = Lerp(m.alpha, 0, dt * 8)
if m.alpha <= 0.01 then
m.shadow:Remove()
m.bg:Remove()
m.txt:Remove()
m.bar:Remove()
m.glow:Remove()
VisualUI.Array.byName[name] = nil
end
end
end
else
for _, item in pairs(VisualUI.Array.byName) do
item.targetAlpha = 0
item.shadow.Visible = false
item.bg.Visible = false
item.txt.Visible = false
item.bar.Visible = false
item.glow.Visible = false
end
end
-- ESP Preview Panel (right side with Roblox character model)
local preview = VisualUI.ESPPreview
if Settings.ESPPreview then
local panelW, panelH = 220, 320
local panelX = VP.X - panelW - HUDLayout.margin
local panelY = math.floor(VP.Y / 2 - panelH / 2)
local panelPos = SnapV2(Vector2.new(panelX, panelY))
preview.panelShadow.Visible = true
preview.panelShadow.Position = panelPos + Vector2.new(3, 3)
preview.panelShadow.Size = Vector2.new(panelW + 4, panelH + 4)
preview.panelShadow.Color = Color3.fromRGB(0, 0, 0)
preview.panelShadow.Transparency = HUDAlpha("shadow")
preview.panelBG.Visible = true
preview.panelBG.Position = panelPos
preview.panelBG.Size = Vector2.new(panelW, panelH)
preview.panelBG.Color = theme.card
preview.panelBG.Transparency = HUDAlpha("panel")
preview.panelAccent.Visible = true
preview.panelAccent.Position = panelPos
preview.panelAccent.Size = Vector2.new(panelW, 2)
preview.panelAccent.Color = accent
preview.title.Visible = true
preview.title.Text = "ESP PREVIEW"
preview.title.Position = panelPos + Vector2.new(panelW / 2, 10)
preview.title.Color = theme.text
preview.title.Size = 13
local activeESP = {}
if Settings.Boxes then table.insert(activeESP, "BOX") end
if Settings.CornerBoxes then table.insert(activeESP, "CORNERS") end
if Settings.Names then table.insert(activeESP, "NAME") end
if Settings.Distance then table.insert(activeESP, "DIST") end
if Settings.Tracers then table.insert(activeESP, "TRACER") end
if Settings.HealthBar then table.insert(activeESP, "HP") end
if Settings.BoxFill then table.insert(activeESP, "FILL") end
preview.subtitle.Visible = true
preview.subtitle.Text = #activeESP > 0 and table.concat(activeESP, " · ") or "No elements"
preview.subtitle.Position = panelPos + Vector2.new(panelW / 2, 26)
preview.subtitle.Color = theme.subtext
preview.subtitle.Size = 11
-- Roblox blocky character model
local cx = panelPos.X + panelW / 2
local baseY = panelPos.Y + 52
local s = 1.6 -- scale
-- Roblox R15 proportions (in pixels at scale)
local headW, headH = math.floor(16 * s), math.floor(16 * s)
local torsoW, torsoH = math.floor(16 * s), math.floor(24 * s)
local armW, armH = math.floor(8 * s), math.floor(24 * s)
local legW, legH = math.floor(8 * s), math.floor(24 * s)
local gap = math.floor(1 * s)
local headX = cx - headW / 2
local headY = baseY
local torsoX = cx - torsoW / 2
local torsoY = headY + headH + gap
local lArmX = torsoX - armW - gap
local rArmX = torsoX + torsoW + gap
local armY = torsoY
local lLegX = cx - legW - gap / 2
local rLegX = cx + gap / 2
local legY = torsoY + torsoH + gap
local bodyBottom = legY + legH
-- Colors for body parts
local skinColor = Color3.fromRGB(85, 100, 125)
local torsoColor = Color3.fromRGB(60, 75, 100)
local limbColor = Color3.fromRGB(70, 85, 110)
local outColor = Color3.fromRGB(140, 160, 190)
local function SetPart(name, px, py, pw, ph, fillC, outC)
local bp = preview.bodyParts[name]
if bp then
bp.fill.Visible = true
bp.fill.Position = Vector2.new(px, py)
bp.fill.Size = Vector2.new(pw, ph)
bp.fill.Color = fillC
bp.fill.Transparency = 0
bp.outline.Visible = true
bp.outline.Position = Vector2.new(px, py)
bp.outline.Size = Vector2.new(pw, ph)
bp.outline.Color = outC
end
end
SetPart("head", headX, headY, headW, headH, skinColor, outColor)
SetPart("torso", torsoX, torsoY, torsoW, torsoH, torsoColor, outColor)
SetPart("leftArm", lArmX, armY, armW, armH, limbColor, outColor)
SetPart("rightArm", rArmX, armY, armW, armH, limbColor, outColor)
SetPart("leftLeg", lLegX, legY, legW, legH, limbColor, outColor)
SetPart("rightLeg", rLegX, legY, legW, legH, limbColor, outColor)
-- ESP elements around the character
local espPad = 6
local espBoxSize = Vector2.new(math.floor(rArmX + armW - lArmX + espPad * 2), math.floor(bodyBottom - headY + espPad * 2))
local espBoxPos = SnapV2(Vector2.new(lArmX - espPad, headY - espPad))
local espCenter = espBoxPos + Vector2.new(espBoxSize.X / 2, espBoxSize.Y / 2)
local showCorners = Settings.CornerBoxes
local showBox = Settings.Boxes and not showCorners
for i = 1, 8 do preview.corners[i].Visible = false end
preview.box.Visible = showBox
preview.boxOutline.Visible = showBox
if showBox then
preview.box.Position = espBoxPos
preview.box.Size = espBoxSize
preview.box.Color = Settings.BoxColor
preview.boxOutline.Position = espBoxPos
preview.boxOutline.Size = espBoxSize
end
if showCorners then
local cMax = math.max(3, math.floor(math.min(espBoxSize.X, espBoxSize.Y) / 2))
local cLen = math.clamp(Settings.CornerLength, 3, cMax)
local x, y = espBoxPos.X, espBoxPos.Y
local w, h = espBoxSize.X, espBoxSize.Y
local c = Settings.BoxColor
preview.corners[1].Visible=true; preview.corners[1].From=Vector2.new(x,y); preview.corners[1].To=Vector2.new(x+cLen,y); preview.corners[1].Color=c
preview.corners[2].Visible=true; preview.corners[2].From=Vector2.new(x,y); preview.corners[2].To=Vector2.new(x,y+cLen); preview.corners[2].Color=c
preview.corners[3].Visible=true; preview.corners[3].From=Vector2.new(x+w-cLen,y); preview.corners[3].To=Vector2.new(x+w,y); preview.corners[3].Color=c
preview.corners[4].Visible=true; preview.corners[4].From=Vector2.new(x+w,y); preview.corners[4].To=Vector2.new(x+w,y+cLen); preview.corners[4].Color=c
preview.corners[5].Visible=true; preview.corners[5].From=Vector2.new(x,y+h-cLen); preview.corners[5].To=Vector2.new(x,y+h); preview.corners[5].Color=c
preview.corners[6].Visible=true; preview.corners[6].From=Vector2.new(x,y+h); preview.corners[6].To=Vector2.new(x+cLen,y+h); preview.corners[6].Color=c
preview.corners[7].Visible=true; preview.corners[7].From=Vector2.new(x+w-cLen,y+h); preview.corners[7].To=Vector2.new(x+w,y+h); preview.corners[7].Color=c
preview.corners[8].Visible=true; preview.corners[8].From=Vector2.new(x+w,y+h-cLen); preview.corners[8].To=Vector2.new(x+w,y+h); preview.corners[8].Color=c
end
preview.fill.Visible = Settings.BoxFill and (showBox or showCorners)
if preview.fill.Visible then
preview.fill.Position = espBoxPos
preview.fill.Size = espBoxSize
preview.fill.Color = Settings.BoxFillColor
preview.fill.Transparency = Settings.BoxFillTransparency
end
preview.name.Visible = Settings.Names
preview.name.Text = Player.DisplayName
preview.name.Position = espBoxPos + Vector2.new(espBoxSize.X / 2, -16)
preview.name.Color = Settings.NameColor
preview.dist.Visible = Settings.Distance
preview.dist.Text = "42m"
preview.dist.Position = espBoxPos + Vector2.new(espBoxSize.X / 2, espBoxSize.Y + 4)
preview.dist.Color = Settings.DistanceColor
preview.tracer.Visible = Settings.Tracers
preview.tracer.From = Vector2.new(cx, panelPos.Y + panelH)
preview.tracer.To = espCenter
preview.tracer.Color = Settings.TracerColor
preview.healthBG.Visible = Settings.HealthBar
preview.health.Visible = Settings.HealthBar
if Settings.HealthBar then
local hpPct = 0.72 + math.sin(tick() * 1.2) * 0.12
preview.healthBG.Position = espBoxPos - Vector2.new(7, 0)
preview.healthBG.Size = Vector2.new(3, espBoxSize.Y)
preview.healthBG.Color = Color3.new(0, 0, 0)
preview.healthBG.Transparency = 0.2
preview.health.Position = espBoxPos - Vector2.new(7, 0) + Vector2.new(0, espBoxSize.Y * (1 - hpPct))
preview.health.Size = Vector2.new(3, espBoxSize.Y * hpPct)
preview.health.Color = Color3.fromRGB(math.floor(255 * (1 - hpPct)), math.floor(255 * hpPct), 0)
preview.health.Transparency = 0
end
else
local hideList = {preview.panelShadow, preview.panelBG, preview.panelAccent, preview.title, preview.subtitle, preview.box, preview.boxOutline, preview.fill, preview.name, preview.dist, preview.tracer, preview.healthBG, preview.health}
if preview.corners then for _, c in ipairs(preview.corners) do table.insert(hideList, c) end end
if preview.bodyParts then for _, bp in pairs(preview.bodyParts) do table.insert(hideList, bp.fill) table.insert(hideList, bp.outline) end end
SetDrawVisible(hideList, false)
end
-- HUD Core
if not Settings.HUDEnabled then
SetDrawVisible({VisualUI.HUD.wm.blur3, VisualUI.HUD.wm.blur2, VisualUI.HUD.wm.blur, VisualUI.HUD.wm.bg, VisualUI.HUD.wm.accent, VisualUI.HUD.wm.text}, false)
SetDrawVisible({VisualUI.HUD.health.shadow, VisualUI.HUD.health.bg, VisualUI.HUD.health.damage, VisualUI.HUD.health.fill, VisualUI.HUD.health.accent, VisualUI.HUD.health.text}, false)
SetDrawVisible({VisualUI.HUD.stats.shadow, VisualUI.HUD.stats.bg, VisualUI.HUD.stats.accent, VisualUI.HUD.stats.title, VisualUI.HUD.stats.text}, false)
SetDrawVisible({VisualUI.HUD.keys.shadow, VisualUI.HUD.keys.bg, VisualUI.HUD.keys.accent, VisualUI.HUD.keys.title, VisualUI.HUD.keys.text}, false)
return
end
-- Watermark
if Settings.HUDWatermark then
local ping = "-"
pcall(function()
local stats = game:GetService("Stats")
if stats.Network:FindFirstChild("ServerStatsItem") then
ping = math.floor(stats.Network.ServerStatsItem["Data Ping"]:GetValue())
end
end)
local wmParts = {"FlickSpeed"}
if Settings.HUDFPS then
table.insert(wmParts, string.format("%d FPS", lastFPS))
end
table.insert(wmParts, string.format("%s MS", tostring(ping)))
if Settings.HUDTarget and CurrentTarget and CurrentTarget.Parent then
table.insert(wmParts, "LOCK " .. CurrentTarget.Parent.Name)
end
local wmText = table.concat(wmParts, " | ")
VisualUI.HUD.wm.text.Text = wmText
local bounds = VisualUI.HUD.wm.text.TextBounds
local padX, padY = HUDLayout.wmPadX, HUDLayout.wmPadY
local wmSize = Vector2.new(bounds.X + padX * 2, bounds.Y + padY * 2)
local wmPos = ResolveHUDPos("wm", Vector2.new(HUDLayout.margin, HUDLayout.margin), wmSize, VP)
VisualUI.HUD.wm.blur3.Size = Vector2.new(wmSize.X + 10, wmSize.Y + 10)
VisualUI.HUD.wm.blur3.Position = wmPos - Vector2.new(4, 4)
VisualUI.HUD.wm.blur2.Size = Vector2.new(wmSize.X + 6, wmSize.Y + 6)
VisualUI.HUD.wm.blur2.Position = wmPos - Vector2.new(2, 2)
VisualUI.HUD.wm.blur.Size = Vector2.new(wmSize.X + 3, wmSize.Y + 3)
VisualUI.HUD.wm.blur.Position = wmPos - Vector2.new(1, 1)
VisualUI.HUD.wm.blur3.Color = theme.bg
VisualUI.HUD.wm.blur2.Color = theme.bg
VisualUI.HUD.wm.blur.Color = theme.card
VisualUI.HUD.wm.bg.Size = wmSize
VisualUI.HUD.wm.bg.Position = wmPos
VisualUI.HUD.wm.bg.Color = theme.card
VisualUI.HUD.wm.bg.Transparency = HUDAlpha("panel")
VisualUI.HUD.wm.accent.Position = wmPos
VisualUI.HUD.wm.accent.Size = Vector2.new(wmSize.X, 2)
VisualUI.HUD.wm.accent.Color = accent
VisualUI.HUD.wm.text.Position = wmPos + Vector2.new(padX, padY)
VisualUI.HUD.wm.text.Color = theme.text
VisualUI.HUD.wm.blur3.Transparency = math.clamp(HUDAlpha("shadow") + 0.08, 0, 1)
VisualUI.HUD.wm.blur2.Transparency = HUDAlpha("shadow")
VisualUI.HUD.wm.blur.Transparency = math.clamp(HUDAlpha("panel") + 0.2, 0, 1)
VisualUI.HUD.wm.blur3.Visible = true
VisualUI.HUD.wm.blur2.Visible = true
VisualUI.HUD.wm.bg.Visible = true
VisualUI.HUD.wm.blur.Visible = true
VisualUI.HUD.wm.accent.Visible = true
VisualUI.HUD.wm.text.Visible = true
else
VisualUI.HUD.wm.blur3.Visible = false
VisualUI.HUD.wm.blur2.Visible = false
VisualUI.HUD.wm.bg.Visible = false
VisualUI.HUD.wm.blur.Visible = false
VisualUI.HUD.wm.accent.Visible = false
VisualUI.HUD.wm.text.Visible = false
end
-- Health Bar (animated)
if Settings.HUDHealth then
local hp = (hum and hum.MaxHealth > 0 and hum.Health / hum.MaxHealth) or 1
VisualUI.HUD.health.value = Lerp(VisualUI.HUD.health.value, hp, dt * 6)
local hbPos = SnapV2(healthPos)
local healthColor = GetHealthColor(hum)
local healthW = HUDLayout.healthWidth
VisualUI.HUD.health.shadow.Position = hbPos - Vector2.new(2, 2)
VisualUI.HUD.health.shadow.Size = Vector2.new(healthW + 4, healthHeight + 4)
VisualUI.HUD.health.shadow.Color = theme.bg
VisualUI.HUD.health.shadow.Transparency = HUDAlpha("shadow")
VisualUI.HUD.health.bg.Position = hbPos
VisualUI.HUD.health.bg.Size = Vector2.new(healthW, healthHeight)
VisualUI.HUD.health.bg.Color = theme.card
VisualUI.HUD.health.bg.Transparency = HUDAlpha("panel")
VisualUI.HUD.health.damage.Position = hbPos
VisualUI.HUD.health.damage.Size = Vector2.new(healthW * hp, healthHeight)
VisualUI.HUD.health.damage.Color = BlendColor(healthColor, Color3.fromRGB(255, 255, 255), 0.12)
VisualUI.HUD.health.damage.Transparency = 0.62
VisualUI.HUD.health.fill.Position = hbPos
VisualUI.HUD.health.fill.Size = Vector2.new(healthW * VisualUI.HUD.health.value, healthHeight)
VisualUI.HUD.health.fill.Color = healthColor
VisualUI.HUD.health.accent.Position = hbPos
VisualUI.HUD.health.accent.Size = Vector2.new(healthW, 2)
VisualUI.HUD.health.accent.Color = accent
VisualUI.HUD.health.text.Text = hum and string.format("%d / %d HP", math.floor(hum.Health), math.floor(hum.MaxHealth)) or "HP"
VisualUI.HUD.health.text.Position = hbPos + Vector2.new(healthW / 2, -15)
VisualUI.HUD.health.text.Color = theme.text
SetDrawVisible({VisualUI.HUD.health.shadow, VisualUI.HUD.health.bg, VisualUI.HUD.health.damage, VisualUI.HUD.health.fill, VisualUI.HUD.health.accent, VisualUI.HUD.health.text}, true)
else
SetDrawVisible({VisualUI.HUD.health.shadow, VisualUI.HUD.health.bg, VisualUI.HUD.health.damage, VisualUI.HUD.health.fill, VisualUI.HUD.health.accent, VisualUI.HUD.health.text}, false)
end
-- Stats Panel
if #statsLines > 0 then
VisualUI.HUD.stats.text.Text = table.concat(statsLines, "\n")
local panelPos = SnapV2(statsPos)
VisualUI.HUD.stats.shadow.Position = panelPos + Vector2.new(2, 2)
VisualUI.HUD.stats.shadow.Size = Vector2.new(HUDLayout.statsWidth + 4, statsHeight + 4)
VisualUI.HUD.stats.shadow.Color = theme.bg
VisualUI.HUD.stats.shadow.Transparency = HUDAlpha("shadow")
VisualUI.HUD.stats.bg.Position = panelPos
VisualUI.HUD.stats.bg.Size = Vector2.new(HUDLayout.statsWidth, statsHeight)
VisualUI.HUD.stats.bg.Color = theme.card
VisualUI.HUD.stats.bg.Transparency = HUDAlpha("panel")
VisualUI.HUD.stats.accent.Position = panelPos
VisualUI.HUD.stats.accent.Size = Vector2.new(HUDLayout.statsWidth, 2)
VisualUI.HUD.stats.accent.Color = accent
VisualUI.HUD.stats.title.Position = panelPos + Vector2.new(8, 6)
VisualUI.HUD.stats.title.Color = theme.subtext
VisualUI.HUD.stats.text.Position = panelPos + Vector2.new(8, compact and 18 or 21)
VisualUI.HUD.stats.text.Color = theme.text
VisualUI.HUD.stats.text.Size = compact and 12 or 13
SetDrawVisible({VisualUI.HUD.stats.shadow, VisualUI.HUD.stats.bg, VisualUI.HUD.stats.accent, VisualUI.HUD.stats.title, VisualUI.HUD.stats.text}, true)
else
SetDrawVisible({VisualUI.HUD.stats.shadow, VisualUI.HUD.stats.bg, VisualUI.HUD.stats.accent, VisualUI.HUD.stats.title, VisualUI.HUD.stats.text}, false)
end
-- Keybinds Panel
if Settings.HUDKeybinds then
local keyLines = {}
if Settings.Enabled then table.insert(keyLines, "[M1] Silent Aim") end
if Settings.ClickTP then table.insert(keyLines, "[Ctrl+M1] Click TP") end
if Settings.FlyEnabled then table.insert(keyLines, "[Space] Fly") end
if Settings.NoclipEnabled then table.insert(keyLines, "[Auto] Noclip") end
if Settings.InfJumpEnabled then table.insert(keyLines, "[Jump] Inf Jump") end
if Settings.SpeedEnabled then table.insert(keyLines, "[Auto] Speed") end
if Settings.HitboxSink then table.insert(keyLines, "[Auto] Hitbox Sink") end
if #keyLines == 0 then
table.insert(keyLines, "No active binds")
end
local keyHeight = math.max(compact and 34 or 40, (#keyLines * rowStep) + (compact and 22 or 28))
local keyDefault
if #statsLines > 0 then
keyDefault = Vector2.new(HUDLayout.margin, statsPos.Y - HUDLayout.gap - keyHeight)
elseif Settings.HUDHealth then
keyDefault = Vector2.new(HUDLayout.margin, healthPos.Y - HUDLayout.gap - keyHeight)
else
keyDefault = Vector2.new(HUDLayout.margin, VP.Y - HUDLayout.margin - keyHeight)
end
local keyPos = ResolveHUDPos("keys", keyDefault, Vector2.new(HUDLayout.keybindWidth, keyHeight), VP)
keyPos = SnapV2(keyPos)
VisualUI.HUD.keys.text.Text = table.concat(keyLines, "\n")
VisualUI.HUD.keys.shadow.Position = keyPos + Vector2.new(2, 2)
VisualUI.HUD.keys.shadow.Size = Vector2.new(HUDLayout.keybindWidth + 4, keyHeight + 4)
VisualUI.HUD.keys.shadow.Color = theme.bg
VisualUI.HUD.keys.shadow.Transparency = HUDAlpha("shadow")
VisualUI.HUD.keys.bg.Position = keyPos
VisualUI.HUD.keys.bg.Size = Vector2.new(HUDLayout.keybindWidth, keyHeight)
VisualUI.HUD.keys.bg.Color = theme.card
VisualUI.HUD.keys.bg.Transparency = HUDAlpha("panel")
VisualUI.HUD.keys.accent.Position = keyPos
VisualUI.HUD.keys.accent.Size = Vector2.new(HUDLayout.keybindWidth, 2)
VisualUI.HUD.keys.accent.Color = accent
VisualUI.HUD.keys.title.Position = keyPos + Vector2.new(8, 6)
VisualUI.HUD.keys.title.Color = theme.subtext
VisualUI.HUD.keys.text.Position = keyPos + Vector2.new(8, compact and 18 or 21)
VisualUI.HUD.keys.text.Color = theme.text
VisualUI.HUD.keys.text.Size = compact and 12 or 13
SetDrawVisible({VisualUI.HUD.keys.shadow, VisualUI.HUD.keys.bg, VisualUI.HUD.keys.accent, VisualUI.HUD.keys.title, VisualUI.HUD.keys.text}, true)
else
SetDrawVisible({VisualUI.HUD.keys.shadow, VisualUI.HUD.keys.bg, VisualUI.HUD.keys.accent, VisualUI.HUD.keys.title, VisualUI.HUD.keys.text}, false)
end
end)
-- Example notification (remove if not needed)
-- VisualUI:Notify("Loaded visual systems", "success")
Window:Init()
if ConfigLoaded then
SyncUI()
end
print("[FlickSpeed v3.5] Loaded! | Velocity 0.8.0 | HUD + FX")
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


OWWW
laggy asf..
@GhoulishL1am for me script eat like 10% fps
ill try optimize it