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, ChamColor = Color3.fromRGB(255, 0, 0), GlowColor = Color3.fromRGB(255, 255, 255), ChamTransparency = 0.5, ChamType = "Fill", ChamWireThickness = 1.2, ChamWireLines = 240, -- 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, -- 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, HUDColor = Color3.fromRGB(170, 85, 255), -- 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 SettingsData.ChamWireLines = math.clamp(tonumber(SettingsData.ChamWireLines) or 240, 24, 600) SettingsData.ChamWireThickness = math.clamp(tonumber(SettingsData.ChamWireThickness) or 1.2, 0.5, 5) IsLoading = false ConfigLoaded = true return true 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("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("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})) 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})) -- 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("HUDColor", HUDSec:Label("HUD Accent Color"):Colorpicker({Default = Settings.HUDColor, Callback = function(v) Settings.HUDColor = 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 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 = {}, WireTriangles = {}, } 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 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 _, v in pairs(ESPCache[plr]) do if 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.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 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 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) 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 lineCursor = 1 local triCursor = 1 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) 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 = Color3.new(0, 0, 0) ln.Thickness = wireThickness 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 = math.clamp(1 - (Settings.ChamTransparency or 0.5), 0.1, 0.95) 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 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 end 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 (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 if esp.WireMesh then for i = lineCursor, #esp.WireMesh do esp.WireMesh[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 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 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 = 150, 52 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 TargetPanelName.Visible = true TargetPanelName.Position = Vector2.new(px + 6, py + 4) TargetPanelName.Text = nameText TargetPanelName.Color = Color3.fromRGB(240, 240, 245) TargetPanelInfo1.Visible = true TargetPanelInfo1.Position = Vector2.new(px + 6, py + 22) TargetPanelInfo1.Text = hpText TargetPanelInfo1.Color = Color3.fromRGB(210, 210, 220) TargetPanelInfo2.Visible = true TargetPanelInfo2.Position = Vector2.new(px + 6, py + 36) TargetPanelInfo2.Text = distText TargetPanelInfo2.Color = Color3.fromRGB(210, 210, 220) else TargetPanelBG.Visible = false; TargetPanelAccent.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 TargetPanelName.Visible = false; TargetPanelInfo1.Visible = false; TargetPanelInfo2.Visible = false end else TargetLine.Visible = false; TargetCircle.Visible = false TargetPanelBG.Visible = false; TargetPanelAccent.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 showWire = Settings.ChamsEnabled and (chamType == "Wireframe" or chamType == "Fill+Wireframe" or chamType == "TriMesh") local showTriFill = Settings.ChamsEnabled and (chamType == "TriFill" or chamType == "TriMesh") local showFill = Settings.ChamsEnabled and (chamType == "Fill" or chamType == "Flat" or chamType == "Fill+Wireframe") local showChamOutline = Settings.ChamsEnabled and (chamType == "Outline" or chamType == "Flat") local showWireWallOutline = showWire or showTriFill local showOutline = Settings.GlowEnabled or showChamOutline or showWireWallOutline hl.Enabled = showFill or showOutline hl.FillColor = Settings.ChamColor hl.OutlineColor = showWireWallOutline and Settings.ChamColor or (Settings.RainbowGlow and RGB or Settings.GlowColor) hl.FillTransparency = showFill and Settings.ChamTransparency or 1 hl.OutlineTransparency = showOutline and 0 or 1 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop UpdateWireframe(char) if showWire or showTriFill then RenderWireMeshForCharacter(esp, char, Settings.ChamColor, Settings.ChamWireThickness, Settings.ChamWireLines, showWire, showTriFill) 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 HSVGradient(speed) local h = (tick() * speed) % 1 return Color3.fromHSV(h, 0.85, 1) 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) -- ========================= -- Notifications -- ========================= VisualUI.Notifs = { items = {}, queue = {}, maxVisible = 5, width = 280, height = 36, padding = 6, 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 bg = NewSquare() bg.Color = UI_BG bg.Transparency = 0.15 bg.Size = Vector2.new(VisualUI.Notifs.width, VisualUI.Notifs.height) local bar = NewSquare() bar.Color = notifColors[data.type] or Settings.HUDColor bar.Transparency = 0 bar.Size = Vector2.new(4, VisualUI.Notifs.height) 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 = UI_TEXT return { bg = bg, bar = bar, icon = icon, txt = txt, start = tick(), alpha = 0, pos = Vector2.new(0, 0), data = data } end -- ========================= -- ArrayList -- ========================= VisualUI.Array = { byName = {}, ordered = {}, width = 200, 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 = UI_BG bg.Transparency = 0.2 bg.Size = Vector2.new(VisualUI.Array.width, VisualUI.Array.rowHeight) local txt = NewText() txt.Text = name txt.Size = 14 txt.Color = UI_TEXT local bar = NewSquare() bar.Color = Settings.HUDColor bar.Size = Vector2.new(3, VisualUI.Array.rowHeight) item = { name = name, bg = bg, txt = txt, bar = bar, 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 = {} } local function BuildHUD() -- Watermark (fake blur via stacked layers) VisualUI.HUD.wm.blur3 = NewSquare() VisualUI.HUD.wm.blur3.Color = UI_BG VisualUI.HUD.wm.blur3.Transparency = 0.6 VisualUI.HUD.wm.blur2 = NewSquare() VisualUI.HUD.wm.blur2.Color = UI_BG VisualUI.HUD.wm.blur2.Transparency = 0.48 VisualUI.HUD.wm.blur = NewSquare() VisualUI.HUD.wm.blur.Color = UI_BG VisualUI.HUD.wm.blur.Transparency = 0.36 VisualUI.HUD.wm.bg = NewSquare() VisualUI.HUD.wm.bg.Color = UI_BG VisualUI.HUD.wm.bg.Transparency = 0.15 VisualUI.HUD.wm.text = NewText() VisualUI.HUD.wm.text.Size = 13 -- Health Bar VisualUI.HUD.health.bg = NewSquare() VisualUI.HUD.health.bg.Color = UI_BG VisualUI.HUD.health.bg.Transparency = 0.2 VisualUI.HUD.health.bg.Size = Vector2.new(180, 8) VisualUI.HUD.health.fill = NewSquare() VisualUI.HUD.health.fill.Color = Settings.HUDColor VisualUI.HUD.health.fill.Transparency = 0 -- Stats Panel VisualUI.HUD.stats.bg = NewSquare() VisualUI.HUD.stats.bg.Color = UI_BG VisualUI.HUD.stats.bg.Transparency = 0.2 VisualUI.HUD.stats.bg.Size = Vector2.new(200, 52) VisualUI.HUD.stats.text = NewText() VisualUI.HUD.stats.text.Size = 13 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 accent = Settings.HUDColor -- 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 baseX = VP.X - VisualUI.Notifs.width - 10 local baseY = VP.Y - 50 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.bg:Remove(); n.bar: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 = LerpV2(n.pos, Vector2.new(slideX, targetY), dt * 8) n.pos = pos n.bg.Position = pos n.bar.Position = pos n.icon.Position = pos + Vector2.new(11, 14) n.txt.Position = pos + Vector2.new(26, 9) n.icon.Color = notifColors[n.data.type] or accent n.bg.Transparency = 0.15 + (1 - n.alpha) * 0.6 n.bar.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.bg:Remove(); n.bar:Remove(); n.icon:Remove(); n.txt:Remove() table.remove(VisualUI.Notifs.items, i) end end -- ArrayList if 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 x = VP.X - VisualUI.Array.width - 10 local y = 20 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 = Vector2.new(m.x, rowY) m.bg.Position = rowPos m.txt.Position = rowPos + Vector2.new(6, 3) m.bar.Position = rowPos + Vector2.new(VisualUI.Array.width - 3, 0) local hueOffset = ((tick() * 0.18) + (row * 0.06)) % 1 local grad = Color3.fromHSV(hueOffset, 0.85, 1) m.bar.Color = grad m.bg.Transparency = 0.2 + (1 - m.alpha) * 0.65 m.txt.Transparency = 1 - m.alpha m.bar.Transparency = 1 - m.alpha m.bg.Visible = true m.txt.Visible = true m.bar.Visible = true else m.bg.Visible = false m.txt.Visible = false m.bar.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.bg:Remove() m.txt:Remove() m.bar:Remove() VisualUI.Array.byName[name] = nil end end end else for _, item in pairs(VisualUI.Array.byName) do item.targetAlpha = 0 item.bg.Visible = false item.txt.Visible = false item.bar.Visible = false end end -- HUD Core if not Settings.HUDEnabled then VisualUI.HUD.wm.blur3.Visible = false VisualUI.HUD.wm.blur2.Visible = false VisualUI.HUD.wm.blur.Visible = false VisualUI.HUD.wm.bg.Visible = false VisualUI.HUD.wm.text.Visible = false VisualUI.HUD.health.bg.Visible = false VisualUI.HUD.health.fill.Visible = false VisualUI.HUD.stats.bg.Visible = false VisualUI.HUD.stats.text.Visible = 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 wmText = string.format("FlickSpeed | %d FPS | %s ms", lastFPS, tostring(ping)) VisualUI.HUD.wm.text.Text = wmText local bounds = VisualUI.HUD.wm.text.TextBounds local padX, padY = 10, 6 VisualUI.HUD.wm.blur3.Size = Vector2.new(bounds.X + padX * 2 + 10, bounds.Y + padY * 2 + 10) VisualUI.HUD.wm.blur3.Position = Vector2.new(12, 12) VisualUI.HUD.wm.blur2.Size = Vector2.new(bounds.X + padX * 2 + 6, bounds.Y + padY * 2 + 6) VisualUI.HUD.wm.blur2.Position = Vector2.new(14, 14) VisualUI.HUD.wm.blur.Size = Vector2.new(bounds.X + padX * 2 + 3, bounds.Y + padY * 2 + 3) VisualUI.HUD.wm.blur.Position = Vector2.new(15, 15) VisualUI.HUD.wm.bg.Size = Vector2.new(bounds.X + padX * 2, bounds.Y + padY * 2) VisualUI.HUD.wm.bg.Position = Vector2.new(16, 16) VisualUI.HUD.wm.text.Position = Vector2.new(16 + padX, 16 + padY) 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.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.text.Visible = false end -- Health Bar (animated) if Settings.HUDHealth then local char = Player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local hp = (hum and hum.Health / hum.MaxHealth) or 1 VisualUI.HUD.health.value = Lerp(VisualUI.HUD.health.value, hp, dt * 6) local hbPos = Vector2.new(16, VP.Y - 30) VisualUI.HUD.health.bg.Position = hbPos VisualUI.HUD.health.fill.Position = hbPos VisualUI.HUD.health.fill.Size = Vector2.new(180 * VisualUI.HUD.health.value, 8) VisualUI.HUD.health.fill.Color = accent VisualUI.HUD.health.bg.Visible = true VisualUI.HUD.health.fill.Visible = true else VisualUI.HUD.health.bg.Visible = false VisualUI.HUD.health.fill.Visible = false end -- Stats Panel if Settings.HUDSpeed or Settings.HUDCoords or Settings.HUDPlayers then local char = Player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") local spd = hum and hum.WalkSpeed or 0 local coords = root and root.Position or Vector3.new() local players = #Players:GetPlayers() local lines = {} if Settings.HUDSpeed then table.insert(lines, string.format("Speed: %d", spd)) end if Settings.HUDCoords then table.insert(lines, string.format("XYZ: %d %d %d", coords.X, coords.Y, coords.Z)) end if Settings.HUDPlayers then table.insert(lines, string.format("Players: %d", players)) end VisualUI.HUD.stats.text.Text = table.concat(lines, "\n") VisualUI.HUD.stats.bg.Position = Vector2.new(16, VP.Y - 95) VisualUI.HUD.stats.text.Position = Vector2.new(22, VP.Y - 90) VisualUI.HUD.stats.bg.Visible = true VisualUI.HUD.stats.text.Visible = true else VisualUI.HUD.stats.bg.Visible = false VisualUI.HUD.stats.text.Visible = 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")