-- ========================================================== -- UNIVERSAL MULTI-GAME HUB V33.0 - GLOBAL DISCORD SERVER TAB ADDED -- UI Library: Fluent-modded (FluentPro by StyearX) -- Supported Games: Evade, Arsenal, Teen Titans, FNP, Funky Friday, Prison Life + UNIVERSAL -- Created by isamu -- ========================================================== if _G.Universal_Hub_Cleanup then pcall(_G.Universal_Hub_Cleanup) _G.Universal_Hub_Cleanup = nil end local Connections = {} local function track(conn) table.insert(Connections, conn) return conn end -- ---------------------------------------------------------- -- 1. UNC EXECUTOR COMPATIBILITY TEST -- ---------------------------------------------------------- local UNCSummary = { Passed = 0, Failed = 0, Total = 0, Score = 0, Details = {} } local function runUNCTests() local tests = { { name = "game:HttpGet", test = function() return typeof(game.HttpGet) == "function" end }, { name = "getcustomasset / customasset", test = function() return (getcustomasset or getsynasset or customasset) ~= nil end }, { name = "writefile", test = function() return (writefile or (syn and syn.writefile)) ~= nil end }, { name = "readfile", test = function() return (readfile or (syn and syn.readfile)) ~= nil end }, { name = "isfile", test = function() return (isfile or (syn and syn.isfile)) ~= nil end }, { name = "delfile", test = function() return (delfile or (syn and syn.delfile)) ~= nil end }, { name = "hookmetamethod", test = function() return (hookmetamethod or (hookfunction and getrawmetatable)) ~= nil end }, { name = "newcclosure", test = function() return type(newcclosure) == "function" end }, { name = "getrawmetatable", test = function() return type(getrawmetatable) == "function" end }, { name = "setreadonly", test = function() return type(setreadonly) == "function" or (make_writeable ~= nil and make_readonly ~= nil) end }, { name = "getnamecallmethod", test = function() return type(getnamecallmethod) == "function" end }, { name = "mousemoverel", test = function() return type(mousemoverel) == "function" or (Input and type(Input.MouseMove) == "function") end }, { name = "Drawing API", test = function() return type(Drawing) == "table" and type(Drawing.new) == "function" end }, { name = "Highlight ESP Support", test = function() local h = Instance.new("Highlight"); local ok = (h ~= nil); if h then h:Destroy() end; return ok end }, { name = "getgc", test = function() return type(getgc) == "function" end }, { name = "getupvalues", test = function() return type(getupvalues) == "function" or (debug and type(debug.getupvalues) == "function") end }, { name = "VirtualInputManager / keypress", test = function() return game:GetService("VirtualInputManager") ~= nil or type(keypress) == "function" end }, { name = "fireclickdetector", test = function() return type(fireclickdetector) == "function" end }, { name = "firetouchinterest", test = function() return type(firetouchinterest) == "function" end }, { name = "setclipboard", test = function() return (setclipboard or (syn and syn.write_clipboard) or toclipboard) ~= nil end }, } UNCSummary.Total = #tests for _, item in ipairs(tests) do local success, result = pcall(item.test) local passed = success and result == true if passed then UNCSummary.Passed = UNCSummary.Passed + 1 else UNCSummary.Failed = UNCSummary.Failed + 1 end table.insert(UNCSummary.Details, { Name = item.name, Passed = passed }) end UNCSummary.Score = math.floor((UNCSummary.Passed / UNCSummary.Total) * 100) end runUNCTests() -- ---------------------------------------------------------- -- 2. AUTOMATIC GAME DETECTION -- ---------------------------------------------------------- local PlaceId = game.PlaceId local CurrentGame = "Universal (Any Game)" if PlaceId == 9872472334 or PlaceId == 10662095230 or PlaceId == 10662070389 or PlaceId == 10662040689 or PlaceId == 11468159863 then CurrentGame = "Evade" elseif PlaceId == 286090429 or PlaceId == 3016661674 then CurrentGame = "Arsenal" elseif PlaceId == 3082002798 then CurrentGame = "Teen Titans" elseif PlaceId == 97923943452128 or PlaceId == 10258128048 then CurrentGame = "Friday Night Partying" elseif PlaceId == 6447798030 then CurrentGame = "Funky Friday" elseif PlaceId == 155615604 then CurrentGame = "Prison Life" end -- ---------------------------------------------------------- -- 3. FLUENT UI & SERVICES LOAD -- ---------------------------------------------------------- local Fluent = loadstring(game:HttpGet("https://raw.githubusercontent.com/StyearX/Fluent-modded/main/dist/main.lua"))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TweenService = game:GetService("TweenService") local VirtualUser = game:GetService("VirtualUser") local Workspace = game:GetService("Workspace") local Camera = Workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local Mouse = LocalPlayer:GetMouse() local DefaultTheme = "Blood Red" if CurrentGame == "Evade" then DefaultTheme = "Midnight" elseif CurrentGame == "Teen Titans" or CurrentGame == "Friday Night Partying" or CurrentGame == "Funky Friday" then DefaultTheme = "Amethyst" elseif CurrentGame == "Prison Life" then DefaultTheme = "Sapphire" elseif CurrentGame:find("Universal") then DefaultTheme = "Darker" end -- ---------------------------------------------------------- -- 4. DYNAMIC BANNER BY CATEGORY / GAME -- ---------------------------------------------------------- local CustomImageURL = "https://i.pinimg.com/736x/db/49/b8/db49b858fe50e8db95595bd82d27fa4a.jpg" local ImageFileName = "aicha_banner_universal_v14.jpg" if not CurrentGame:find("Universal") then CustomImageURL = "https://i.pinimg.com/736x/73/db/be/73dbbe30272cb805e6195f997475a91d.jpg" ImageFileName = "aicha_banner_known_v15_4.jpg" end if CurrentGame == "Friday Night Partying" or CurrentGame == "Funky Friday" then CustomImageURL = "https://i.pinimg.com/736x/2a/51/67/2a5167ed1c514a55ce039d5de214f045.jpg" ImageFileName = "aicha_banner_fnf_v15_5.jpg" end local CustomImageAsset = nil pcall(function() local getAsset = getcustomasset or getsynasset or customasset local writeFile = writefile or (syn and syn.writefile) local isFile = isfile or (syn and syn.isfile) if getAsset and writeFile and isFile then if not isFile(ImageFileName) then local data = game:HttpGet(CustomImageURL) if data and #data > 0 then writeFile(ImageFileName, data) end end if isFile(ImageFileName) then CustomImageAsset = getAsset(ImageFileName) end end end) -- ---------------------------------------------------------- -- 5. MAIN WINDOW (CREATED BY ISAMU) -- ---------------------------------------------------------- local Window = Fluent:CreateWindow({ Title = "Universal Game Hub", SubTitle = "by isamu", Version = "v33.0", TabWidth = 160, Size = UDim2.fromOffset(580, 520), Acrylic = false, Theme = DefaultTheme, MinimizeKey = Enum.KeyCode.RightControl, UserInfoTop = true, UserInfoTitle = "Created by isamu", UserInfoSubtitle = LocalPlayer.DisplayName or LocalPlayer.Name, Tags = { { Text = CurrentGame, Color = (CurrentGame == "Evade" and Color3.fromRGB(255, 60, 0)) or (CurrentGame == "Arsenal" and Color3.fromRGB(220, 20, 60)) or Color3.fromRGB(160, 50, 255) }, { Text = string.format("UNC Test: %d%%", UNCSummary.Score), Color = (UNCSummary.Score >= 80 and Color3.fromRGB(0, 220, 100)) or Color3.fromRGB(255, 160, 0) }, } }) local Tabs = { UNCTest = Window:AddTab({ Title = "UNC Exec Test", Icon = "check-circle" }), Games = Window:AddTab({ Title = "Games", Icon = "layout-grid" }), Discord = Window:AddTab({ Title = "Discord Server",Icon = "share-2" }), Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }) } -- Inject Top Banner into Games Tab if CustomImageAsset and Tabs.Games and Tabs.Games.Container then local bannerHolder = Instance.new("Frame") bannerHolder.Name = "IsamuBannerHolder" bannerHolder.Size = UDim2.new(1, 0, 0, 180) bannerHolder.BackgroundTransparency = 1 bannerHolder.LayoutOrder = -1 bannerHolder.Parent = Tabs.Games.Container local bannerImg = Instance.new("ImageLabel") bannerImg.Name = "IsamuBanner" bannerImg.Size = UDim2.new(1, 0, 1, 0) bannerImg.BackgroundColor3 = Color3.fromRGB(20, 20, 25) bannerImg.Image = CustomImageAsset bannerImg.ScaleType = Enum.ScaleType.Crop bannerImg.Parent = bannerHolder local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = bannerImg local stroke = Instance.new("UIStroke") stroke.Color = (CurrentGame == "Evade" and Color3.fromRGB(255, 100, 0)) or Color3.fromRGB(160, 50, 255) stroke.Thickness = 1.6 stroke.Transparency = 0.2 stroke.Parent = bannerImg end -- =========================================================== -- GLOBAL DISCORD SERVER TAB (AVAILABLE IN ALL MODES) -- =========================================================== local DiscordInviteLink = "https://discord.gg/6F2WquY95e" Tabs.Discord:AddSection("Join Our Official Community") Tabs.Discord:AddParagraph({ Title = "Discord Server Invite Link", Content = string.format("Join our Discord server for script updates, support, and community discussions!\n\nLink: %s", DiscordInviteLink) }) Tabs.Discord:AddButton({ Title = "Copy Discord Link to Clipboard", Description = "Click to copy https://discord.gg/6F2WquY95e", Callback = function() local setClip = setclipboard or (syn and syn.write_clipboard) or toclipboard if setClip then setClip(DiscordInviteLink) Fluent:Notify({ Title = "Discord Server", Content = "Discord invite link copied to clipboard!", Duration = 4 }) else Fluent:Notify({ Title = "Discord Server", Content = "Your executor does not support setclipboard.", Duration = 4 }) end end }) -- =========================================================== -- UNC EXECUTOR COMPATIBILITY DIAGNOSTICS -- =========================================================== Tabs.UNCTest:AddSection("Executor Compatibility Test Result") Tabs.UNCTest:AddParagraph({ Title = string.format("Overall Score: %d%% (%d/%d Passed)", UNCSummary.Score, UNCSummary.Passed, UNCSummary.Total), Content = string.format("Passed Functions: %d\nMissing Functions: %d\nNote: The test was executed prior to initialization to ensure stability.", UNCSummary.Passed, UNCSummary.Failed) }) Tabs.UNCTest:AddSection("Detailed Breakdown") for _, detail in ipairs(UNCSummary.Details) do local statusText = detail.Passed and "PASSED" or "NOT SUPPORTED" Tabs.UNCTest:AddParagraph({ Title = string.format("%s: %s", detail.Name, statusText), Content = detail.Passed and "This feature is fully operational on your executor." or "Your executor lacks this API. Fallback mechanisms will be used." }) end Tabs.UNCTest:AddButton({ Title = "Rerun UNC Test", Callback = function() runUNCTests() Fluent:Notify({ Title = "UNC Tester", Content = string.format("Test completed. Success Rate: %d%%", UNCSummary.Score), Duration = 4 }) end }) -- Games Tab Info Tabs.Games:AddSection("Current Game Status") Tabs.Games:AddParagraph({ Title = "Detected Game", Content = string.format("Active Mode: %s\nPlace ID: %d\nPlayer: %s\nAuthor: isamu", CurrentGame, PlaceId, LocalPlayer.Name) }) Tabs.Games:AddSection("Integrated Games List") Tabs.Games:AddParagraph({ Title = "1. Evade (Nextbots)", Content = "Features: TPWalk Speed Engine (Selectable Speed), Bhop Engine, Anti-AFK Engine, Nextbots ESP Vision." }) Tabs.Games:AddParagraph({ Title = "2. Friday Night Partying & Funky Friday (FNF)", Content = "Features: Engine Native AutoPlayer, Anti-Bad Notes, Kawi Core Engine, 100% Sick Hits." }) Tabs.Games:AddParagraph({ Title = "3. Prison Life", Content = "Features: Auto Arrest Tween, Aimbot & Aim Assist, Guards/Inmates/Criminals ESP, Speed, NoClip." }) Tabs.Games:AddParagraph({ Title = "4. Universal Module (Any Game)", Content = "Features: Universal Aimbot, Hitbox Expander, ESP Chams + HP/Names, Speed, Jump, NoClip." }) Tabs.Games:AddParagraph({ Title = "5. Arsenal (FPS)", Content = "Features: Aim Assist, Silent Aim, Auto Look, Gun Mods, ESP Chams." }) Tabs.Games:AddParagraph({ Title = "6. Teen Titans Battlegrounds", Content = "Features: Auto Face Aimbot, Camera Lock, Hitbox Expander R6, ESP with Health Bar." }) -- =========================================================== -- GLOBAL CONTROL VARIABLES & CLEANUP -- =========================================================== local FOVCircles = {} local SilentHooked = false local OldIndex = nil local ESPData = {} local function isAlive(char) if not char or not char.Parent then return false end local h = char:FindFirstChild("Humanoid") return h and h.Health > 0 and h:GetState() ~= Enum.HumanoidStateType.Dead end local function cleanupESP(plr) local d = ESPData[plr.UserId] if not d then return end for _, c in ipairs(d.connections) do if c and c.Connected then c:Disconnect() end end if d.highlight and d.highlight.Parent then d.highlight:Destroy() end if d.billboard and d.billboard.Parent then d.billboard:Destroy() end ESPData[plr.UserId] = nil end -- =========================================================== -- GLOBAL ANTI-AFK ENGINE -- =========================================================== local AntiAFK_Connection = nil local function enableAntiAFK(state) if state then if not AntiAFK_Connection then AntiAFK_Connection = track(LocalPlayer.Idled:Connect(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.zero) end)) end else if AntiAFK_Connection then AntiAFK_Connection:Disconnect() AntiAFK_Connection = nil end end end enableAntiAFK(true) -- =========================================================== -- MODULE: EVADE (MOVEMENT & ESP ONLY - NO AUTOFARM) -- =========================================================== if CurrentGame == "Evade" then Tabs.EvadeMove = Window:AddTab({ Title = "Movement", Icon = "activity" }) Tabs.EvadeESP = Window:AddTab({ Title = "ESP Vision", Icon = "eye" }) local Evade_Config = { TPWalkEnabled = false, TPWalkSpeed = 45, BhopEnabled = false, BhopSpeed = 45, ESP_Nextbots = true, AntiAFK = true, } -- 1. TPWalk Speed Engine (Bypasses Evade Speed Lock) track(RunService.RenderStepped:Connect(function(dt) if Evade_Config.TPWalkEnabled and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.MoveDirection.Magnitude > 0 then local delta = hum.MoveDirection * (Evade_Config.TPWalkSpeed * dt) hrp.CFrame = hrp.CFrame + delta end end end)) -- 2. Bhop (Bunny Hop) Engine track(UserInputService.JumpRequest:Connect(function() if Evade_Config.BhopEnabled and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end)) track(RunService.Stepped:Connect(function() if Evade_Config.BhopEnabled and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.MoveDirection.Magnitude > 0 then if hum:GetState() == Enum.HumanoidStateType.Freefall or hum:GetState() == Enum.HumanoidStateType.Jumping then hrp.AssemblyLinearVelocity = Vector3.new( hum.MoveDirection.X * Evade_Config.BhopSpeed, hrp.AssemblyLinearVelocity.Y, hum.MoveDirection.Z * Evade_Config.BhopSpeed ) end end end end)) -- 3. Nextbots ESP local function createNextbotESP(model) if not model or not model:IsA("Model") or model == LocalPlayer.Character then return end local hrp = model:WaitForChild("HumanoidRootPart", 3) or model:WaitForChild("Torso", 3) if not hrp then return end local hl = Instance.new("Highlight") hl.Name = "Evade_Nextbot_Chams" hl.Adornee = model hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillColor = Color3.fromRGB(255, 0, 50) hl.OutlineColor = Color3.new(1, 1, 1) hl.FillTransparency = 0.3 hl.OutlineTransparency = 0.1 hl.Parent = model local bb = Instance.new("BillboardGui") bb.Name = "Evade_Nextbot_Tag" bb.Adornee = hrp bb.Size = UDim2.fromOffset(140, 40) bb.StudsOffset = Vector3.new(0, 3, 0) bb.AlwaysOnTop = true local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.fromScale(1, 1) lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(255, 50, 50) lbl.TextStrokeTransparency = 0 lbl.TextStrokeColor3 = Color3.new(0, 0, 0) lbl.Font = Enum.Font.GothamBold lbl.TextSize = 13 lbl.Text = model.Name bb.Parent = hrp local conn = RunService.RenderStepped:Connect(function() if not model.Parent or not hrp.Parent then bb:Destroy() hl:Destroy() return end local dist = math.floor((Camera.CFrame.Position - hrp.Position).Magnitude) lbl.Text = string.format("NEXTBOT: %s [%dm]", model.Name, dist) hl.Enabled = Evade_Config.ESP_Nextbots bb.Enabled = Evade_Config.ESP_Nextbots end) track(conn) end local function scanEvadeNextbots() for _, folder in ipairs({ Workspace:FindFirstChild("Game"), Workspace:FindFirstChild("Bots"), Workspace }) do if folder then for _, child in ipairs(folder:GetChildren()) do if child:IsA("Model") and (child.Name:find("Bot") or child.Name:find("Nextbot") or child:FindFirstChild("HumanoidRootPart")) then if child ~= LocalPlayer.Character and not Players:GetPlayerFromCharacter(child) then task.spawn(createNextbotESP, child) end end end end end end scanEvadeNextbots() track(Workspace.ChildAdded:Connect(function(child) if child:IsA("Model") and not Players:GetPlayerFromCharacter(child) then task.spawn(createNextbotESP, child) end end)) -- EVADE MOVEMENT & ESP UI CONTROLS Tabs.EvadeMove:AddSection("TPWalk Speed (Bypasses Speed Lock)") Tabs.EvadeMove:AddToggle("ev_tpwalk", { Title = "Enable TPWalk Speed", Default = false, Callback = function(v) Evade_Config.TPWalkEnabled = v end }) Tabs.EvadeMove:AddSlider("ev_tpwalkspeed", { Title = "Select WalkSpeed Multiplier", Default = 45, Min = 16, Max = 150, Rounding = 0, Description = "Choose custom walking speed in Evade!", Callback = function(v) Evade_Config.TPWalkSpeed = v end }) Tabs.EvadeMove:AddSection("Bhop & Anti-AFK") Tabs.EvadeMove:AddToggle("ev_bhop", { Title = "Enable Bhop (Bunny Hop Engine)", Default = false, Callback = function(v) Evade_Config.BhopEnabled = v end }) Tabs.EvadeMove:AddSlider("ev_bhopspeed", { Title = "Bhop Air Speed", Default = 45, Min = 20, Max = 120, Rounding = 0, Callback = function(v) Evade_Config.BhopSpeed = v end }) Tabs.EvadeMove:AddToggle("ev_antiafk", { Title = "Enable Anti-AFK Engine (Prevents 20m Kick)", Default = true, Callback = function(v) Evade_Config.AntiAFK = v enableAntiAFK(v) end }) Tabs.EvadeESP:AddSection("Evade ESP Vision") Tabs.EvadeESP:AddToggle("ev_espbot", { Title = "Nextbots Chams + Tag + Distance", Default = true, Callback = function(v) Evade_Config.ESP_Nextbots = v end }) end -- =========================================================== -- UNIVERSAL MODULE (ANY OTHER ROBLOX GAME) -- =========================================================== if CurrentGame:find("Universal") then Tabs.UniAim = Window:AddTab({ Title = "Aimbot", Icon = "crosshair" }) Tabs.UniHB = Window:AddTab({ Title = "Hitbox", Icon = "box" }) Tabs.UniESP = Window:AddTab({ Title = "ESP", Icon = "eye" }) Tabs.UniMisc = Window:AddTab({ Title = "Movement", Icon = "activity" }) local UC = { AimbotEnabled = false, AimbotMode = "Camera Lock", AimbotTarget = "Head", AimbotSmooth = 0.35, AimbotFOV = 150, ShowFOV = true, WallCheck = true, TeamCheck = true, HitboxEnabled = false, HitboxSize = 10, HitboxTrans = 0.6, ESP_Chams = false, ESP_Names = false, SpeedEnabled = false, SpeedValue = 24, JumpEnabled = false, JumpValue = 50, InfiniteJump = false, NoClip = false, } local UniFOV = Drawing.new("Circle") UniFOV.Thickness = 1.5; UniFOV.NumSides = 64; UniFOV.Radius = UC.AimbotFOV UniFOV.Filled = false; UniFOV.Color = Color3.fromRGB(0, 230, 255); UniFOV.Visible = false table.insert(FOVCircles, UniFOV) local function isUniEnemy(plr) if plr == LocalPlayer then return false end if not UC.TeamCheck then return true end if not plr.Team or not LocalPlayer.Team then return true end return plr.Team ~= LocalPlayer.Team end local function isUniVisible(part) local o = Camera.CFrame.Position local d = (part.Position - o) local p = RaycastParams.new() p.FilterType = Enum.RaycastFilterType.Exclude; p.IgnoreWater = true local fl = { Camera } if LocalPlayer.Character then table.insert(fl, LocalPlayer.Character) end p.FilterDescendantsInstances = fl local r = Workspace:Raycast(o, d, p) if r == nil then return true end return r.Instance and r.Instance:IsDescendantOf(part.Parent) end local function getClosestUniTarget() local best, bestD = nil, UC.AimbotFOV local mp = UserInputService:GetMouseLocation() for _, plr in ipairs(Players:GetPlayers()) do if isUniEnemy(plr) and isAlive(plr.Character) then local char = plr.Character local part = char:FindFirstChild(UC.AimbotTarget) or char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") if part then if UC.WallCheck and not isUniVisible(part) then continue end local sp, on = Camera:WorldToViewportPoint(part.Position) if on then local d = (Vector2.new(sp.X, sp.Y) - mp).Magnitude if d < bestD then bestD = d best = part end end end end end return best, bestD end track(RunService.RenderStepped:Connect(function(dt) Camera = Workspace.CurrentCamera local mp = UserInputService:GetMouseLocation() UniFOV.Position = mp UniFOV.Radius = UC.AimbotFOV UniFOV.Visible = UC.ShowFOV and UC.AimbotEnabled if UC.AimbotEnabled then local target, dist = getClosestUniTarget() if target and target.Parent then local alpha = 1 - math.pow(1 - UC.AimbotSmooth, dt * 60) alpha = math.clamp(alpha, 0.01, 1) if UC.AimbotMode == "Camera Lock" then Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, target.Position), alpha) elseif UC.AimbotMode == "Mouse Smooth" and mousemoverel then local sp = Camera:WorldToViewportPoint(target.Position) local dx = (sp.X - mp.X) * alpha local dy = (sp.Y - mp.Y) * alpha mousemoverel(dx, dy) end end end if UC.HitboxEnabled then for _, plr in ipairs(Players:GetPlayers()) do if isUniEnemy(plr) and isAlive(plr.Character) then local char = plr.Character local sz = UC.HitboxSize local vec = Vector3.new(sz, sz, sz) for _, pName in ipairs({"HumanoidRootPart", "Head", "Torso", "UpperTorso"}) do local part = char:FindFirstChild(pName) if part then if (part.Size - vec).Magnitude > 0.1 then part.Size = vec part.CanCollide = false part.Transparency = UC.HitboxTrans end end end end end end if UC.NoClip and LocalPlayer.Character then for _, p in ipairs(LocalPlayer.Character:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end end)) local function createESP_Universal(plr) if plr == LocalPlayer then return end local function setup(char) if not char then return end cleanupESP(plr) local d = { connections = {}, highlight = nil, billboard = nil } ESPData[plr.UserId] = d local hrp = char:WaitForChild("HumanoidRootPart", 5) or char:WaitForChild("Head", 5) if not hrp then return end local hl = Instance.new("Highlight") hl.Name = "Uni_Chams"; hl.Adornee = char hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillColor = Color3.fromRGB(0, 200, 255) hl.OutlineColor = Color3.new(1, 1, 1); hl.FillTransparency = 0.4; hl.OutlineTransparency = 0.1 hl.Enabled = UC.ESP_Chams and isUniEnemy(plr); hl.Parent = char; d.highlight = hl local head = char:WaitForChild("Head", 5) if head then local bb = Instance.new("BillboardGui") bb.Name = "Uni_Tag"; bb.Adornee = head; bb.Size = UDim2.fromOffset(130, 40) bb.StudsOffset = Vector3.new(0, 2.5, 0); bb.AlwaysOnTop = true bb.Enabled = UC.ESP_Names and isUniEnemy(plr) local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.fromScale(1, 1); lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(0, 255, 200); lbl.TextStrokeTransparency = 0 lbl.TextStrokeColor3 = Color3.new(0, 0, 0); lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12; lbl.Text = plr.DisplayName or plr.Name bb.Parent = head; d.billboard = bb local uc = RunService.RenderStepped:Connect(function() if not char.Parent or not head.Parent then bb.Enabled = false; hl.Enabled = false; return end if isUniEnemy(plr) then local hum = char:FindFirstChild("Humanoid") local hp = hum and math.floor(hum.Health) or "?" local dist = math.floor((Camera.CFrame.Position - head.Position).Magnitude) lbl.Text = string.format("%s [%dHP] [%dm]", plr.DisplayName or plr.Name, hp, dist) if hum then local r = math.clamp(hum.Health / hum.MaxHealth, 0, 1) lbl.TextColor3 = Color3.fromRGB(math.floor(255 * (1 - r)), math.floor(255 * r), 100) hl.FillColor = lbl.TextColor3 end bb.Enabled = UC.ESP_Names hl.Enabled = UC.ESP_Chams else bb.Enabled = false; hl.Enabled = false end end) table.insert(d.connections, uc); track(uc) end end if plr.Character then task.spawn(setup, plr.Character) end track(plr.CharacterAdded:Connect(function(c) task.spawn(setup, c) end)) end for _, p in ipairs(Players:GetPlayers()) do task.spawn(createESP_Universal, p) end track(Players.PlayerAdded:Connect(function(p) task.spawn(createESP_Universal, p) end)) track(Players.PlayerRemoving:Connect(function(p) cleanupESP(p) end)) track(UserInputService.JumpRequest:Connect(function() if UC.InfiniteJump then local c = LocalPlayer.Character if c then local h = c:FindFirstChild("Humanoid"); if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end end end)) track(RunService.Heartbeat:Connect(function() local c = LocalPlayer.Character if c then local h = c:FindFirstChild("Humanoid") if h then if UC.SpeedEnabled then h.WalkSpeed = UC.SpeedValue end if UC.JumpEnabled then if h.UseJumpPower then h.JumpPower = UC.JumpValue else h.JumpHeight = UC.JumpValue end end end end end)) Tabs.UniAim:AddSection("Universal Aimbot") Tabs.UniAim:AddToggle("u1", { Title = "Enable Aimbot", Default = false, Callback = function(v) UC.AimbotEnabled = v end }) Tabs.UniAim:AddDropdown("u2", { Title = "Aim Mode", Values = { "Camera Lock", "Mouse Smooth" }, Default = "Camera Lock", Callback = function(v) UC.AimbotMode = v end }) Tabs.UniAim:AddDropdown("u3", { Title = "Target Part", Values = { "Head", "HumanoidRootPart", "Torso" }, Default = "Head", Callback = function(v) UC.AimbotTarget = v end }) Tabs.UniAim:AddSlider("u4", { Title = "Smoothness (Lerp)", Default = 0.35, Min = 0.05, Max = 1, Rounding = 2, Callback = function(v) UC.AimbotSmooth = v end }) Tabs.UniAim:AddSlider("u5", { Title = "FOV Size", Default = 150, Min = 30, Max = 500, Rounding = 0, Callback = function(v) UC.AimbotFOV = v end }) Tabs.UniAim:AddToggle("u6", { Title = "Show FOV", Default = true, Callback = function(v) UC.ShowFOV = v end }) Tabs.UniAim:AddToggle("u7", { Title = "Wall Check", Default = true, Callback = function(v) UC.WallCheck = v end }) Tabs.UniAim:AddToggle("u8", { Title = "Team Check", Default = true, Callback = function(v) UC.TeamCheck = v end }) Tabs.UniHB:AddSection("Universal Hitbox Expander") Tabs.UniHB:AddToggle("hb1", { Title = "Enable Hitbox Expander", Default = false, Callback = function(v) UC.HitboxEnabled = v if not v then for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character then for _, pName in ipairs({"HumanoidRootPart", "Head", "Torso", "UpperTorso"}) do local part = p.Character:FindFirstChild(pName) if part then if pName == "Head" then part.Size = Vector3.new(2, 1, 1); part.Transparency = 0 elseif pName == "HumanoidRootPart" then part.Size = Vector3.new(2, 2, 1); part.Transparency = 1 else part.Size = Vector3.new(2, 2, 1); part.Transparency = 0 end end end end end end end }) Tabs.UniHB:AddSlider("hb2", { Title = "Box Size", Default = 10, Min = 4, Max = 30, Rounding = 0, Callback = function(v) UC.HitboxSize = v end }) Tabs.UniHB:AddSlider("hb3", { Title = "Visual Transparency", Default = 0.6, Min = 0, Max = 0.95, Rounding = 2, Callback = function(v) UC.HitboxTrans = v end }) Tabs.UniESP:AddSection("Universal ESP") Tabs.UniESP:AddToggle("e1", { Title = "Chams (Wall Highlights)", Default = false, Callback = function(v) UC.ESP_Chams = v end }) Tabs.UniESP:AddToggle("e2", { Title = "Names + HP + Distance", Default = false, Callback = function(v) UC.ESP_Names = v end }) Tabs.UniMisc:AddSection("Universal Movement") Tabs.UniMisc:AddToggle("m1", { Title = "Speed Hack", Default = false, Callback = function(v) UC.SpeedEnabled = v if not v and LocalPlayer.Character then local h = LocalPlayer.Character:FindFirstChild("Humanoid") if h then h.WalkSpeed = 16 end end end }) Tabs.UniMisc:AddSlider("m2", { Title = "WalkSpeed", Default = 24, Min = 16, Max = 120, Rounding = 0, Callback = function(v) UC.SpeedValue = v end }) Tabs.UniMisc:AddToggle("m3", { Title = "Super Jump", Default = false, Callback = function(v) UC.JumpEnabled = v if not v and LocalPlayer.Character then local h = LocalPlayer.Character:FindFirstChild("Humanoid") if h then if h.UseJumpPower then h.JumpPower = 50 else h.JumpHeight = 7.2 end end end end }) Tabs.UniMisc:AddSlider("m4", { Title = "Jump Power", Default = 50, Min = 10, Max = 200, Rounding = 0, Callback = function(v) UC.JumpValue = v end }) Tabs.UniMisc:AddToggle("m5", { Title = "Infinite Jump", Default = false, Callback = function(v) UC.InfiniteJump = v end }) Tabs.UniMisc:AddToggle("m6", { Title = "NoClip", Default = false, Callback = function(v) UC.NoClip = v end }) end -- =========================================================== -- MODULE 1: ARSENAL (NO HITBOX EXPANDER) -- =========================================================== if CurrentGame == "Arsenal" then Tabs.AimAssist = Window:AddTab({ Title = "Aim Assist", Icon = "magnet" }) Tabs.SilentAim = Window:AddTab({ Title = "Silent Aim", Icon = "ghost" }) Tabs.AutoLook = Window:AddTab({ Title = "Auto Look", Icon = "crosshair" }) Tabs.Guns = Window:AddTab({ Title = "Gun Mods", Icon = "swords" }) Tabs.Visuals = Window:AddTab({ Title = "ESP", Icon = "eye" }) Tabs.Misc = Window:AddTab({ Title = "Movement", Icon = "activity" }) local C = { AimAssist = false, AA_Strength = 0.12, AA_FOV = 120, AA_ShowFOV = true, AA_WallCheck = true, SilentAim = false, SA_FOV = 180, SA_ShowFOV = false, SA_Part = "Head", SA_WallCheck = true, SA_HitChance = 100, AutoLook = false, AL_Smooth = 0.5, AL_ShowFOV = false, AL_WallCheck = true, NoRecoil = true, NoSpread = true, FullAuto = true, FastReload = false, RapidFire = false, ESP_Chams = true, ESP_Names = true, SpeedEnabled = false, SpeedValue = 26, InfiniteJump = false, } local function makeFOV(r, col) local c = Drawing.new("Circle") c.Thickness = 1.5; c.NumSides = 64; c.Radius = r; c.Filled = false; c.Color = col; c.Visible = false table.insert(FOVCircles, c) return c end local AssistFOV = makeFOV(C.AA_FOV, Color3.fromRGB(0, 255, 120)) local SilentFOV = makeFOV(C.SA_FOV, Color3.fromRGB(180, 50, 255)) local AutoLookFOV = makeFOV(360, Color3.fromRGB(255, 50, 50)) local function isEnemy(plr) if plr == LocalPlayer then return false end if not plr.Team or not LocalPlayer.Team then return true end if plr.Team.Name == "FFA" or LocalPlayer.Team.Name == "FFA" then return true end return plr.Team ~= LocalPlayer.Team end local function getTeamColor(plr) if not plr.Team then return Color3.fromRGB(255, 60, 60) end local n = plr.Team.Name if n == "TRC" then return Color3.fromRGB(255, 60, 60) elseif n == "TBC" then return Color3.fromRGB(60, 150, 255) elseif n == "TYC" then return Color3.fromRGB(255, 220, 50) elseif n == "TGC" then return Color3.fromRGB(60, 255, 80) end return Color3.fromRGB(255, 60, 60) end local function isVisible(part) local o = Camera.CFrame.Position local d = (part.Position - o) local p = RaycastParams.new() p.FilterType = Enum.RaycastFilterType.Exclude; p.IgnoreWater = true local fl = { Camera } if LocalPlayer.Character then table.insert(fl, LocalPlayer.Character) end p.FilterDescendantsInstances = fl local r = Workspace:Raycast(o, d, p) if r == nil then return true end return r.Instance and r.Instance:IsDescendantOf(part.Parent) end local function findByScreen(partName, fov, wc) local best, bestD = nil, fov local mp = UserInputService:GetMouseLocation() for _, plr in ipairs(Players:GetPlayers()) do if isEnemy(plr) and isAlive(plr.Character) then local part = plr.Character:FindFirstChild(partName) or plr.Character:FindFirstChild("Head") or plr.Character:FindFirstChild("HumanoidRootPart") if part then if wc and not isVisible(part) then continue end local sp, on = Camera:WorldToViewportPoint(part.Position) if on then local d = (Vector2.new(sp.X, sp.Y) - mp).Magnitude if d < bestD then bestD = d; best = part end end end end end return best, bestD end local function findByDistance(wc) local best, bestD = nil, math.huge for _, plr in ipairs(Players:GetPlayers()) do if isEnemy(plr) and isAlive(plr.Character) then local head = plr.Character:FindFirstChild("Head") if head then if wc and not isVisible(head) then continue end local d = (Camera.CFrame.Position - head.Position).Magnitude if d < bestD then bestD = d; best = head end end end end return best end local SilentTarget = nil local function setupSilentHook() if SilentHooked then return end pcall(function() if hookmetamethod then OldIndex = hookmetamethod(game, "__index", newcclosure(function(self, key) if C.SilentAim and SilentTarget and SilentTarget.Parent and self == Mouse then if key == "Hit" then return CFrame.new(SilentTarget.Position) elseif key == "Target" then return SilentTarget elseif key == "X" then return (Camera:WorldToViewportPoint(SilentTarget.Position)).X elseif key == "Y" then return (Camera:WorldToViewportPoint(SilentTarget.Position)).Y elseif key == "UnitRay" then local o = Camera.CFrame.Position return Ray.new(o, (SilentTarget.Position - o).Unit) end end return OldIndex(self, key) end)) SilentHooked = true elseif getrawmetatable then local mt = getrawmetatable(game) if setreadonly then setreadonly(mt, false) end OldIndex = mt.__index mt.__index = newcclosure(function(self, key) if C.SilentAim and SilentTarget and SilentTarget.Parent and self == Mouse then if key == "Hit" then return CFrame.new(SilentTarget.Position) elseif key == "Target" then return SilentTarget elseif key == "X" then return (Camera:WorldToViewportPoint(SilentTarget.Position)).X elseif key == "Y" then return (Camera:WorldToViewportPoint(SilentTarget.Position)).Y elseif key == "UnitRay" then local o = Camera.CFrame.Position return Ray.new(o, (SilentTarget.Position - o).Unit) end end return OldIndex(self, key) end) if setreadonly then setreadonly(mt, true) end SilentHooked = true end end) end track(RunService.RenderStepped:Connect(function(dt) Camera = Workspace.CurrentCamera local mp = UserInputService:GetMouseLocation() AssistFOV.Position = mp; AssistFOV.Radius = C.AA_FOV; AssistFOV.Visible = C.AA_ShowFOV and C.AimAssist SilentFOV.Position = mp; SilentFOV.Radius = C.SA_FOV; SilentFOV.Visible = C.SA_ShowFOV and C.SilentAim AutoLookFOV.Position = mp; AutoLookFOV.Radius = 400; AutoLookFOV.Visible = C.AL_ShowFOV and C.AutoLook if C.AimAssist then local tgt, dist = findByScreen("Head", C.AA_FOV, C.AA_WallCheck) if tgt and tgt.Parent then local prox = 1 - (dist / C.AA_FOV) local alpha = C.AA_Strength * prox * prox alpha = 1 - math.pow(1 - alpha, dt * 60) Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, tgt.Position), math.clamp(alpha, 0, 0.3)) end end if C.SilentAim then local wc = C.SA_WallCheck if C.SA_HitChance >= 100 or math.random(100) <= C.SA_HitChance then SilentTarget = findByScreen(C.SA_Part, C.SA_FOV, wc) else SilentTarget = nil end else SilentTarget = nil end if C.AutoLook then local tgt = findByDistance(C.AL_WallCheck) if tgt and tgt.Parent then local alpha = 1 - math.pow(1 - C.AL_Smooth, dt * 60) Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, tgt.Position), math.clamp(alpha, 0.01, 1)) end end end)) local function applyGunMods() local wf = ReplicatedStorage:FindFirstChild("Weapons") if not wf then return end for _, gun in ipairs(wf:GetChildren()) do pcall(function() if C.NoRecoil and gun:FindFirstChild("RecoilControl") then gun.RecoilControl.Value = 0 end if C.NoSpread then if gun:FindFirstChild("Spread") then gun.Spread.Value = 0 end if gun:FindFirstChild("MaxSpread") then gun.MaxSpread.Value = 0 end if gun:FindFirstChild("SpreadRecovery") then gun.SpreadRecovery.Value = 0 end end if C.FullAuto and gun:FindFirstChild("Auto") then gun.Auto.Value = true end if C.RapidFire and gun:FindFirstChild("FireRate") then gun.FireRate.Value = 0.03 end if C.FastReload then if gun:FindFirstChild("ReloadTime") then gun.ReloadTime.Value = 0.05 end if gun:FindFirstChild("EquipTime") then gun.EquipTime.Value = 0.05 end end end) end end local gmt = 0 track(RunService.Heartbeat:Connect(function(dt) gmt = gmt + dt if gmt >= 0.5 then gmt = 0; applyGunMods() end end)) local function createESP_Arsenal(plr) if plr == LocalPlayer then return end local function setup(char) if not char then return end cleanupESP(plr) local d = { connections = {}, highlight = nil, billboard = nil } ESPData[plr.UserId] = d if not char:WaitForChild("HumanoidRootPart", 5) then return end local hl = Instance.new("Highlight") hl.Name = "Chams"; hl.Adornee = char hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillColor = getTeamColor(plr); hl.OutlineColor = Color3.new(1, 1, 1) hl.FillTransparency = 0.4; hl.OutlineTransparency = 0.1 hl.Enabled = C.ESP_Chams and isEnemy(plr); hl.Parent = char; d.highlight = hl local head = char:WaitForChild("Head", 5) if head then local bb = Instance.new("BillboardGui") bb.Name = "Tag"; bb.Adornee = head; bb.Size = UDim2.fromOffset(120, 40) bb.StudsOffset = Vector3.new(0, 2.5, 0); bb.AlwaysOnTop = true bb.Enabled = C.ESP_Names and isEnemy(plr) local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.fromScale(1, 1); lbl.BackgroundTransparency = 1 lbl.TextColor3 = getTeamColor(plr); lbl.TextStrokeTransparency = 0 lbl.TextStrokeColor3 = Color3.new(0, 0, 0); lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12; lbl.Text = plr.DisplayName or plr.Name bb.Parent = head; d.billboard = bb local uc = RunService.RenderStepped:Connect(function() if not char.Parent or not head.Parent then bb.Enabled = false; hl.Enabled = false; return end if isEnemy(plr) then local dist = math.floor((Camera.CFrame.Position - head.Position).Magnitude) lbl.Text = string.format("%s [%dm]", plr.DisplayName or plr.Name, dist) bb.Enabled = C.ESP_Names; hl.Enabled = C.ESP_Chams hl.FillColor = getTeamColor(plr); lbl.TextColor3 = getTeamColor(plr) else bb.Enabled = false; hl.Enabled = false end end) table.insert(d.connections, uc); track(uc) end end if plr.Character then task.spawn(setup, plr.Character) end track(plr.CharacterAdded:Connect(function(c) task.spawn(setup, c) end)) end for _, p in ipairs(Players:GetPlayers()) do task.spawn(createESP_Arsenal, p) end track(Players.PlayerAdded:Connect(function(p) task.spawn(createESP_Arsenal, p) end)) track(Players.PlayerRemoving:Connect(function(p) cleanupESP(p) end)) Tabs.AimAssist:AddSection("Console Magnetism") Tabs.AimAssist:AddToggle("aa1", { Title = "Enable", Default = false, Callback = function(v) C.AimAssist = v end }) Tabs.AimAssist:AddSlider("aa2", { Title = "Strength", Default = 0.12, Min = 0.01, Max = 0.35, Rounding = 2, Callback = function(v) C.AA_Strength = v end }) Tabs.AimAssist:AddSlider("aa3", { Title = "FOV (px)", Default = 120, Min = 30, Max = 400, Rounding = 0, Callback = function(v) C.AA_FOV = v end }) Tabs.AimAssist:AddToggle("aa4", { Title = "Show FOV", Default = true, Callback = function(v) C.AA_ShowFOV = v end }) Tabs.AimAssist:AddToggle("aa5", { Title = "Wall Check", Default = true, Callback = function(v) C.AA_WallCheck = v end }) Tabs.SilentAim:AddSection("Silent Aim") Tabs.SilentAim:AddToggle("sa1", { Title = "Enable", Default = false, Callback = function(v) C.SilentAim = v; if v then setupSilentHook() end end }) Tabs.SilentAim:AddDropdown("sa2", { Title = "Target Part", Values = { "Head", "HumanoidRootPart" }, Default = "Head", Callback = function(v) C.SA_Part = v end }) Tabs.SilentAim:AddSlider("sa3", { Title = "Hit Chance (%)", Default = 100, Min = 10, Max = 100, Rounding = 0, Callback = function(v) C.SA_HitChance = v end }) Tabs.SilentAim:AddSlider("sa4", { Title = "FOV (px)", Default = 180, Min = 30, Max = 500, Rounding = 0, Callback = function(v) C.SA_FOV = v end }) Tabs.SilentAim:AddToggle("sa5", { Title = "Show FOV", Default = false, Callback = function(v) C.SA_ShowFOV = v end }) Tabs.SilentAim:AddToggle("sa6", { Title = "Wall Check", Default = true, Callback = function(v) C.SA_WallCheck = v end }) Tabs.AutoLook:AddSection("Automatic Lock") Tabs.AutoLook:AddToggle("al1", { Title = "Enable", Default = false, Callback = function(v) C.AutoLook = v end }) Tabs.AutoLook:AddSlider("al2", { Title = "Speed", Default = 0.5, Min = 0.05, Max = 1, Rounding = 2, Callback = function(v) C.AL_Smooth = v end }) Tabs.AutoLook:AddToggle("al3", { Title = "Show FOV", Default = false, Callback = function(v) C.AL_ShowFOV = v end }) Tabs.AutoLook:AddToggle("al4", { Title = "Wall Check", Default = true, Callback = function(v) C.AL_WallCheck = v end }) Tabs.Guns:AddSection("Gun Modifications") Tabs.Guns:AddToggle("g1", { Title = "No Recoil", Default = true, Callback = function(v) C.NoRecoil = v; applyGunMods() end }) Tabs.Guns:AddToggle("g2", { Title = "No Spread", Default = true, Callback = function(v) C.NoSpread = v; applyGunMods() end }) Tabs.Guns:AddToggle("g3", { Title = "Full Auto", Default = true, Callback = function(v) C.FullAuto = v; applyGunMods() end }) Tabs.Guns:AddToggle("g4", { Title = "Rapid Fire", Default = false, Callback = function(v) C.RapidFire = v; applyGunMods() end }) Tabs.Guns:AddToggle("g5", { Title = "Fast Reload", Default = false, Callback = function(v) C.FastReload = v; applyGunMods() end }) Tabs.Visuals:AddSection("ESP Vision") Tabs.Visuals:AddToggle("e1", { Title = "Chams", Default = true, Callback = function(v) C.ESP_Chams = v end }) Tabs.Visuals:AddToggle("e2", { Title = "Names + Distance", Default = true, Callback = function(v) C.ESP_Names = v end }) Tabs.Misc:AddSection("Speed & Jump") Tabs.Misc:AddToggle("m1", { Title = "Speed", Default = false, Callback = function(v) C.SpeedEnabled = v if not v then local c = LocalPlayer.Character; if c then local h = c:FindFirstChild("Humanoid"); if h then h.WalkSpeed = 16 end end end end }) Tabs.Misc:AddSlider("m2", { Title = "WalkSpeed", Default = 26, Min = 16, Max = 60, Rounding = 0, Callback = function(v) C.SpeedValue = v end }) Tabs.Misc:AddToggle("m3", { Title = "Infinite Jump", Default = false, Callback = function(v) C.InfiniteJump = v end }) -- =========================================================== -- MODULE 2: TEEN TITANS BATTLEGROUNDS -- =========================================================== elseif CurrentGame == "Teen Titans" then Tabs.Aimbot = Window:AddTab({ Title = "Aimbot", Icon = "crosshair" }) Tabs.Hitbox = Window:AddTab({ Title = "Hitbox Expander", Icon = "box" }) Tabs.Visuals = Window:AddTab({ Title = "ESP Vision", Icon = "eye" }) Tabs.Misc = Window:AddTab({ Title = "Movement", Icon = "activity" }) local C = { AimbotEnabled = false, AimbotSmooth = 0.4, AimbotRange = 80, AimbotTarget = "Torso", AimbotAutoFace = true, AimbotCamLock = true, HitboxEnabled = false, HitboxTorso = 8, HitboxHead = 5, HitboxLimbs = 5, HitboxTrans = 0.7, HitboxShowVisual = false, ESP_Chams = false, ESP_Names = false, SpeedEnabled = false, SpeedValue = 26, InfiniteJump = false, NoClip = false, } local function isInCombatArea(char) if not char or not char.Parent then return false end local spawn = Workspace:FindFirstChild("Spawn") if spawn and char:IsDescendantOf(spawn) then return false end return true end local function findClosestEnemy() local myChar = LocalPlayer.Character; if not myChar or not isAlive(myChar) then return nil, math.huge end local myRoot = myChar:FindFirstChild("HumanoidRootPart"); if not myRoot then return nil, math.huge end local best, bestDist = nil, C.AimbotRange; local myPos = myRoot.Position for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and isAlive(plr.Character) and isInCombatArea(plr.Character) then local part = plr.Character:FindFirstChild(C.AimbotTarget) or plr.Character:FindFirstChild("Torso") or plr.Character:FindFirstChild("HumanoidRootPart") if part then local d = (myPos - part.Position).Magnitude if d < bestDist then bestDist = d; best = part end end end end return best, bestDist end local TargetIndicator = Drawing.new("Circle") TargetIndicator.Thickness = 2; TargetIndicator.NumSides = 32; TargetIndicator.Radius = 20 TargetIndicator.Filled = false; TargetIndicator.Color = Color3.fromRGB(255, 50, 50); TargetIndicator.Visible = false table.insert(FOVCircles, TargetIndicator) track(RunService.RenderStepped:Connect(function(dt) Camera = Workspace.CurrentCamera local myChar = LocalPlayer.Character; local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart") if C.AimbotEnabled and myRoot and isAlive(myChar) then local target, dist = findClosestEnemy() if target and target.Parent then local sp, on = Camera:WorldToViewportPoint(target.Position) TargetIndicator.Visible = on if on then TargetIndicator.Position = Vector2.new(sp.X, sp.Y) local ratio = math.clamp(dist / C.AimbotRange, 0, 1) TargetIndicator.Color = Color3.fromRGB(math.floor(255 * ratio), math.floor(255 * (1 - ratio)), 50) end local alpha = 1 - math.pow(1 - C.AimbotSmooth, dt * 60); alpha = math.clamp(alpha, 0.01, 1) if C.AimbotAutoFace then local lookAt = Vector3.new(target.Position.X, myRoot.Position.Y, target.Position.Z) myRoot.CFrame = myRoot.CFrame:Lerp(CFrame.new(myRoot.Position, lookAt), alpha) end if C.AimbotCamLock then Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, target.Position), alpha) end else TargetIndicator.Visible = false end else TargetIndicator.Visible = false end if C.HitboxEnabled then for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and isAlive(plr.Character) and isInCombatArea(plr.Character) then local char = plr.Character local torso = char:FindFirstChild("Torso") if torso then local sz = C.HitboxTorso; local w = Vector3.new(sz, sz, sz) if (torso.Size - w).Magnitude > 0.1 then torso.Size = w; torso.CanCollide = false; torso.Transparency = C.HitboxShowVisual and C.HitboxTrans or 0 end end local head = char:FindFirstChild("Head") if head then local sz = C.HitboxHead; local w = Vector3.new(sz, sz, sz) if (head.Size - w).Magnitude > 0.1 then head.Size = w; head.CanCollide = false; head.Transparency = C.HitboxShowVisual and C.HitboxTrans or 0 end end local hrp = char:FindFirstChild("HumanoidRootPart") if hrp then local sz = C.HitboxTorso; local w = Vector3.new(sz, sz, sz) if (hrp.Size - w).Magnitude > 0.1 then hrp.Size = w; hrp.CanCollide = false; hrp.Transparency = 1 end end for _, ln in ipairs({ "Left Arm", "Right Arm", "Left Leg", "Right Leg" }) do local l = char:FindFirstChild(ln) if l then local sz = C.HitboxLimbs; local w = Vector3.new(sz, sz, sz) if (l.Size - w).Magnitude > 0.1 then l.Size = w; l.CanCollide = false; l.Transparency = C.HitboxShowVisual and C.HitboxTrans or 0 end end end end end end if C.NoClip and myChar then for _, part in ipairs(myChar:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end)) local function createESP_TTitans(plr) if plr == LocalPlayer then return end local function setup(char) if not char then return end; cleanupESP(plr) if not isInCombatArea(char) then return end local d = { connections = {}, highlight = nil, billboard = nil }; ESPData[plr.UserId] = d if not char:WaitForChild("HumanoidRootPart", 5) then return end local hl = Instance.new("Highlight"); hl.Name = "Chams"; hl.Adornee = char hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; hl.FillColor = Color3.fromRGB(255, 60, 60) hl.OutlineColor = Color3.new(1, 1, 1); hl.FillTransparency = 0.4; hl.OutlineTransparency = 0.1 hl.Enabled = C.ESP_Chams; hl.Parent = char; d.highlight = hl local head = char:WaitForChild("Head", 5) if head then local bb = Instance.new("BillboardGui"); bb.Name = "Tag"; bb.Adornee = head bb.Size = UDim2.fromOffset(140, 40); bb.StudsOffset = Vector3.new(0, 2.5, 0); bb.AlwaysOnTop = true; bb.Enabled = C.ESP_Names local lbl = Instance.new("TextLabel", bb); lbl.Size = UDim2.fromScale(1, 1); lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(255, 255, 100); lbl.TextStrokeTransparency = 0; lbl.TextStrokeColor3 = Color3.new(0, 0, 0) lbl.Font = Enum.Font.GothamBold; lbl.TextSize = 12; bb.Parent = head; d.billboard = bb local uc = RunService.RenderStepped:Connect(function() if not char.Parent or not head.Parent then bb.Enabled = false; hl.Enabled = false; return end if isInCombatArea(char) then local hum = char:FindFirstChild("Humanoid"); local hp = hum and math.floor(hum.Health) or "?" local dist = math.floor((Camera.CFrame.Position - head.Position).Magnitude) lbl.Text = string.format("%s [%dHP] [%dm]", plr.DisplayName or plr.Name, hp, dist) if hum then local r = math.clamp(hum.Health / hum.MaxHealth, 0, 1) lbl.TextColor3 = Color3.fromRGB(math.floor(255 * (1 - r)), math.floor(255 * r), 50) hl.FillColor = lbl.TextColor3 end bb.Enabled = C.ESP_Names; hl.Enabled = C.ESP_Chams else bb.Enabled = false; hl.Enabled = false end end); table.insert(d.connections, uc); track(uc) end end if plr.Character then task.spawn(setup, plr.Character) end track(plr.CharacterAdded:Connect(function(c) task.spawn(setup, c) end)) end for _, p in ipairs(Players:GetPlayers()) do task.spawn(createESP_TTitans, p) end track(Players.PlayerAdded:Connect(function(p) task.spawn(createESP_TTitans, p) end)) track(Players.PlayerRemoving:Connect(function(p) cleanupESP(p) end)) Tabs.Aimbot:AddSection("Auto Face + Camera Lock") Tabs.Aimbot:AddToggle("aim1", { Title = "Enable Aimbot", Default = false, Callback = function(v) C.AimbotEnabled = v end }) Tabs.Aimbot:AddToggle("aim2", { Title = "Auto Face Character", Default = true, Callback = function(v) C.AimbotAutoFace = v end }) Tabs.Aimbot:AddToggle("aim3", { Title = "Camera Lock", Default = true, Callback = function(v) C.AimbotCamLock = v end }) Tabs.Aimbot:AddSlider("aim4", { Title = "Lock Speed", Default = 0.4, Min = 0.05, Max = 1, Rounding = 2, Callback = function(v) C.AimbotSmooth = v end }) Tabs.Aimbot:AddSlider("aim5", { Title = "Range (studs)", Default = 80, Min = 15, Max = 200, Rounding = 0, Callback = function(v) C.AimbotRange = v end }) Tabs.Aimbot:AddDropdown("aim6", { Title = "Target Part", Values = { "Torso", "Head", "HumanoidRootPart" }, Default = "Torso", Callback = function(v) C.AimbotTarget = v end }) Tabs.Hitbox:AddSection("Hitbox Expander R6") Tabs.Hitbox:AddToggle("hb1", { Title = "Enable", Default = false, Callback = function(v) C.HitboxEnabled = v if not v then for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character then local ch = p.Character local t = ch:FindFirstChild("Torso"); if t then t.Size = Vector3.new(2, 2, 1); t.Transparency = 0 end local h = ch:FindFirstChild("Head"); if h then h.Size = Vector3.new(2, 1, 1); h.Transparency = 0 end local r = ch:FindFirstChild("HumanoidRootPart"); if r then r.Size = Vector3.new(2, 2, 1); r.Transparency = 1 end for _, ln in ipairs({ "Left Arm", "Right Arm", "Left Leg", "Right Leg" }) do local l = ch:FindFirstChild(ln); if l then l.Size = Vector3.new(1, 2, 1); l.Transparency = 0 end end end end end end }) Tabs.Hitbox:AddSlider("hb2", { Title = "Torso", Default = 8, Min = 3, Max = 20, Rounding = 0, Callback = function(v) C.HitboxTorso = v end }) Tabs.Hitbox:AddSlider("hb3", { Title = "Head", Default = 5, Min = 2, Max = 15, Rounding = 0, Callback = function(v) C.HitboxHead = v end }) Tabs.Hitbox:AddSlider("hb4", { Title = "Limbs", Default = 5, Min = 2, Max = 15, Rounding = 0, Callback = function(v) C.HitboxLimbs = v end }) Tabs.Hitbox:AddToggle("hb5", { Title = "Show Visual Hitbox", Default = false, Callback = function(v) C.HitboxShowVisual = v end }) Tabs.Visuals:AddSection("ESP Vision") Tabs.Visuals:AddToggle("e1", { Title = "Chams", Default = false, Callback = function(v) C.ESP_Chams = v end }) Tabs.Visuals:AddToggle("e2", { Title = "Names + HP + Distance", Default = false, Callback = function(v) C.ESP_Names = v end }) Tabs.Misc:AddSection("Movement") Tabs.Misc:AddToggle("m1", { Title = "Speed", Default = false, Callback = function(v) C.SpeedEnabled = v if not v then local c = LocalPlayer.Character; if c then local h = c:FindFirstChild("Humanoid"); if h then h.WalkSpeed = 16 end end end end }) Tabs.Misc:AddSlider("m2", { Title = "WalkSpeed", Default = 26, Min = 16, Max = 80, Rounding = 0, Callback = function(v) C.SpeedValue = v end }) Tabs.Misc:AddToggle("m3", { Title = "Infinite Jump", Default = false, Callback = function(v) C.InfiniteJump = v end }) Tabs.Misc:AddToggle("m4", { Title = "NoClip", Default = false, Callback = function(v) C.NoClip = v end }) -- =========================================================== -- MODULE 3: FRIDAY NIGHT PARTYING (FNP) -- =========================================================== elseif CurrentGame == "Friday Night Partying" then Tabs.FNP = Window:AddTab({ Title = "FNP AutoPlayer", Icon = "gamepad-2" }) Tabs.FNPBad = Window:AddTab({ Title = "FNP Bad Notes", Icon = "shield-alert" }) local Conductor = require(ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Conductor")) local FNP_Config = { AutoPlayerEnabled = true, StrictHitWindow = 6, SelectedSide = "Auto", AntiBadNotes = true, LegitMode = false, HarmfulKeywords = { "kill", "instahurt", "knife", "bknife", "axe", "extricky", "trickyex", "mystery", "saw", "mine", "double killl", "sacrifice", "poison", "ebola", "bone", "blacknotebob", "karma", "trap", "drain", "hurtnote", "hurt", "fire", "flame", "spikes", "shock", "electric", "finnglitch", "glitch", "missingno", "sonic.exe", "lord x", "betrayal", "pibby", "pibbyno", "vivisection", "strangled", "taintedfate", "ice", "phantom" } } local botplayFlag = nil local activeNotesList = nil local function hookEnginePointers() for _, fn in pairs(getgc(false)) do if type(fn) == "function" and islclosure(fn) then local upvalues = getupvalues(fn) local foundFlag = false for _, up in pairs(upvalues) do if type(up) == "table" and rawget(up, "Value") ~= nil and type(up.Value) == "boolean" then botplayFlag = up foundFlag = true break end end if foundFlag then for _, up in pairs(upvalues) do if type(up) == "table" and up ~= botplayFlag then activeNotesList = up return end end end end end end hookEnginePointers() local function isHarmful(obj) if not FNP_Config.AntiBadNotes or not obj then return false end local typeStr = tostring(obj.Type or obj.dType or obj.Name or ""):lower() if obj.Animation and obj.Animation.Name then typeStr = typeStr .. " " .. tostring(obj.Animation.Name):lower() end for _, kw in ipairs(FNP_Config.HarmfulKeywords) do if typeStr:find(kw) then return true end end return false end track(RunService.RenderStepped:Connect(function() local songPos = Conductor.SongPos or 0 if songPos <= 0 then return end if not botplayFlag then hookEnginePointers() end if botplayFlag then botplayFlag.Value = FNP_Config.AutoPlayerEnabled end if not FNP_Config.AutoPlayerEnabled then return end if activeNotesList then for i = 1, #activeNotesList do local obj = activeNotesList[i] if type(obj) == "table" and not obj.GoodHit and not obj.Destroyed then local isPlayer = (FNP_Config.SelectedSide == "Auto" and obj.MustPress == true) or (FNP_Config.SelectedSide == "Both") or (FNP_Config.SelectedSide == "BF" and obj.MustPress == true) or (FNP_Config.SelectedSide == "Dad" and obj.MustPress == false) if isPlayer then if isHarmful(obj) then obj.shouldPress = false obj.CanBeHit = false else local strum = obj.StrumTime if strum then if obj.IsSustain then obj.shouldPress = true else local diff = strum - songPos local maxW = (FNP_Config.LegitMode and math.random(5, 25)) or FNP_Config.StrictHitWindow obj.shouldPress = (diff <= maxW) end end end else obj.shouldPress = false end end end end end)) Tabs.FNP:AddSection("Main Controls") Tabs.FNP:AddToggle("FNP_AP", { Title = "Enable AutoPlayer", Default = true, Callback = function(v) FNP_Config.AutoPlayerEnabled = v; if botplayFlag then botplayFlag.Value = v end end }) Tabs.FNP:AddDropdown("FNP_Side", { Title = "Player Side", Values = { "Auto (Recommended)", "Boyfriend (Right)", "Opponent / Dad (Left)", "Both Sides (Dual Play)" }, Default = "Auto (Recommended)", Callback = function(v) if v:find("Auto") then FNP_Config.SelectedSide = "Auto" elseif v:find("Boyfriend") then FNP_Config.SelectedSide = "BF" elseif v:find("Opponent") then FNP_Config.SelectedSide = "Dad" elseif v:find("Both") then FNP_Config.SelectedSide = "Both" end end }) Tabs.FNP:AddSlider("FNP_Timing", { Title = "Strict Hit Window (ms)", Default = 6, Min = 2, Max = 30, Rounding = 0, Callback = function(v) FNP_Config.StrictHitWindow = v end }) Tabs.FNPBad:AddSection("Bad Notes Filter") Tabs.FNPBad:AddToggle("FNP_BadNotes", { Title = "Enable Anti-Bad Notes (40+ Types)", Default = true, Callback = function(v) FNP_Config.AntiBadNotes = v end }) -- =========================================================== -- MODULE 4: FUNKY FRIDAY -- =========================================================== elseif CurrentGame == "Funky Friday" then Tabs.FF = Window:AddTab({ Title = "Funky Friday", Icon = "gamepad-2" }) local FF_Config = { AutoPlay = true, HitOffset = 0, HoldDuration = 0.05, AntiBadNotes = true, } local inputs = {} local tempConns = {} local vsrgConnection, vsrgConn2 local scr = Enum.InputBindingType.Scriptable local function onInput(v, overwrite) local input local laneNum = tonumber(v.Name:sub(5)) if not laneNum then return end local start = tick() while not input and vsrgConnection do for _, val in ipairs(v:GetChildren()) do if val.Name:match("Gamepad") or (tick() - start > 2 and val.Name:match("Keyboard")) or tick() - start > 4 then input = val break end end if input then break end task.wait() end if not input then return end input.Type = scr if not overwrite then table.insert(tempConns, input:GetPropertyChangedSignal("Type"):Connect(function() input.Type = scr end)) table.insert(tempConns, v.ChildAdded:Connect(function() onInput(v, true) end)) end inputs[laneNum] = input end local function hookInputs(vsrgContext) inputs = {} vsrgConnection = vsrgContext:GetPropertyChangedSignal("Parent"):Connect(function() if not vsrgContext.Parent then for _, v in ipairs(tempConns) do if v and v.Connected then v:Disconnect() end end inputs = {} if vsrgConnection then vsrgConnection:Disconnect() end if vsrgConn2 then vsrgConn2:Disconnect() end vsrgConnection = nil end end) for _, v in ipairs(vsrgContext:GetChildren()) do task.spawn(onInput, v) end vsrgConn2 = vsrgContext.ChildAdded:Connect(onInput) end local function fireLane(laneIndex, state) local inp = inputs[laneIndex] if not inp then return end local s, _ = pcall(inp.Fire, inp, state) if not s then inp.Type = scr pcall(inp.Fire, inp, state) end end local laneStates = {} local laneHitIndexes = {} local function hitLane(laneIndex, duration) duration = duration or 0 if laneStates[laneIndex] then fireLane(laneIndex, false) laneStates[laneIndex] = false end fireLane(laneIndex, true) laneStates[laneIndex] = true laneHitIndexes[laneIndex] = (laneHitIndexes[laneIndex] or -1) + 1 local myIndex = laneHitIndexes[laneIndex] if duration > 0 then task.wait(duration) else task.wait(0.02) end if laneHitIndexes[laneIndex] == myIndex then fireLane(laneIndex, false) laneStates[laneIndex] = false end end local badNoteAssets = { ["rbxassetid://103483801062498"] = true, ["rbxassetid://88530467220950"] = true, ["rbxassetid://109130876544260"] = true, ["rbxassetid://120222801097284"] = true, ["rbxassetid://101951481332606"] = true } local offsets = { Sick = 0.05, Good = 0.1, Ok = 0.15, Bad = 0.2, Miss = 0.3 } local offsetOffset = 0.01 for i, v in pairs(offsets) do offsets[i] = v - offsetOffset end local sickOffset = offsets.Sick local badOffset = offsets.Bad local missOffset2 = offsets.Miss * 2 local function getDistance(a, b) return (a - b).Magnitude end local function UDimToVector2(ud) return Vector2.new(0, ud.Y.Scale) end local function isDownS(data) local topOnes = 0 local receptor = data.Receptor for _, note in ipairs(data.Notes) do if note.Note.Position.Y.Scale < receptor.Position.Y.Scale + 0.5 then topOnes = topOnes + 1 end end return (#data.Notes > 0) and (topOnes / #data.Notes > 0.75) or true end local function sortLane(data) table.sort(data.Notes, function(a, b) local cond = a.Note.Position.Y.Scale < b.Note.Position.Y.Scale if data.IsDownScroll then cond = not cond end return cond end) end local function isBehind(data, x, y) local is = x.Y > y.Y if data.IsDownScroll then is = not is end return is end local function canHit(noteData, laneData, far) local receptorPos = UDimToVector2(laneData.Receptor.Position) + Vector2.new(0, 0.5) local notePos = UDimToVector2(noteData.Note.Position) local speed = laneData.ScrollSpeed > 0 and laneData.ScrollSpeed or 1 local dist = getDistance(receptorPos, notePos) / speed local behind = isBehind(laneData, receptorPos, notePos) dist = dist - (FF_Config.HitOffset / 1000) if dist < 0 then dist = -dist behind = not behind end if noteData.IsBad then return dist, behind end if far then return dist <= missOffset2 end if behind then return dist <= badOffset, true, dist, dist <= sickOffset end return (dist <= sickOffset or dist <= noteData.HitDistance), false, dist, (dist <= sickOffset) end local function calcHold(v, laneData) local speed = laneData.ScrollSpeed > 0 and laneData.ScrollSpeed or 1 return math.abs(v.Size.Y.Scale / speed) + 0.075 end local function hitNote(noteData, laneData, dist, sick) local Note = noteData.Note if noteData.Hit then return end noteData.Hit = true local holdTime = 0 for _, v in ipairs(Note:GetChildren()) do if v:IsA("GuiObject") and v.Size ~= UDim2.fromScale(1, 1) then holdTime = calcHold(v, laneData) break end end local finalDuration = (holdTime > 0 and holdTime or FF_Config.HoldDuration) task.spawn(function() hitLane(laneData.LaneIndex, finalDuration) end) end local function playLane(lane) local notes = lane.Notes local toRemove = {} for i = 1, #notes do local noteData = notes[i] local hit, far, dist, sick = canHit(noteData, lane) if hit then table.insert(toRemove, i) task.defer(hitNote, noteData, lane, dist, sick) else break end end for i = #toRemove, 1, -1 do table.remove(notes, toRemove[i]) end end local function processLane(lane, isMine) local noteData = lane.Notes[1] if not noteData then return end local receptor = lane.Receptor local noteStart = UDimToVector2(noteData.Note.Position) local receptorStart = UDimToVector2(receptor.Position) local start = tick() RunService.RenderStepped:Wait() local took = tick() - start local receptorEnd = UDimToVector2(receptor.Position) local receptorTravel = receptorEnd - receptorStart local rawSpeed = getDistance(noteStart, UDimToVector2(noteData.Note.Position) - receptorTravel) / took if rawSpeed > 0 then lane.ScrollSpeed = rawSpeed end if FF_Config.AutoPlay and isMine then playLane(lane) end end local function onNote(note, laneData, isMine) local sprite = note:WaitForChild("LayeredSprite", 3) and note.LayeredSprite:WaitForChild("1", 3) local isBad = (sprite and badNoteAssets[sprite.Image] == true) local noteData = { Note = note, HitDistance = offsets.Sick, IsBad = isBad, Hit = false, Lane = laneData, LaneIndex = laneData.LaneIndex } if isBad and FF_Config.AntiBadNotes then return end table.insert(laneData.Notes, noteData) local isDownScrollSpawn = note.Position.Y.Scale < laneData.Receptor.Position.Y.Scale + 0.5 if isDownScrollSpawn ~= laneData.IsDownScroll then laneData.IsDownScroll = isDownScrollSpawn sortLane(laneData) end note.AncestryChanged:Connect(function(_, parent) if not parent then for idx, nd in ipairs(laneData.Notes) do if nd.Note == note then table.remove(laneData.Notes, idx) break end end end end) end local function onLane(lane, fieldData, isMine) local laneNum = tonumber(lane.Name:sub(5)) if not laneNum then return end local receptor = lane:WaitForChild("Receptor", 5) local notes = lane:WaitForChild("Notes", 5) if not receptor or not notes then return end local laneData = { ScrollSpeed = 1, LaneIndex = laneNum, Lane = lane, Notes = {}, IsDownScroll = true, Receptor = receptor } fieldData.Lanes[laneNum] = laneData for _, v in ipairs(notes:GetChildren()) do task.spawn(onNote, v, laneData, isMine) end if #laneData.Notes > 0 then laneData.IsDownScroll = isDownS(laneData) sortLane(laneData) end notes.ChildAdded:Connect(function(v) onNote(v, laneData, isMine) end) end local function getClosest(toIterate) if not LocalPlayer.Character then return end local c, d = nil, math.huge for _, v in ipairs(toIterate:GetChildren()) do local m = (v:GetPivot().Position - LocalPlayer.Character:GetPivot().Position).Magnitude if m < d then c, d = v, m end end return c, d end local function getMySide() if workspace:FindFirstChild("Map") and workspace.Map:FindFirstChild("Stages") then local stage = getClosest(workspace.Map.Stages) if stage and stage:FindFirstChild("Nodes") then local node = getClosest(stage.Nodes) if node then return node.Name:sub(1, node.Name:find("_") - 1) end end end return "Right" end local function onField(field, fieldData, isMine) local inner = field:WaitForChild("Inner", 5) if not inner then return end for _, v in ipairs(inner:GetChildren()) do task.spawn(onLane, v, fieldData, isMine) end end local function onWindow(window) local gameFrame = window:WaitForChild("Game", 5) if not gameFrame then return end local fields = gameFrame:WaitForChild("Fields", 5) if not fields then return end local sharedData = { Fields = { Left = { Lanes = {} }, Right = { Lanes = {} } } } local side = getMySide() for sideName, fData in pairs(sharedData.Fields) do local fObj = fields:WaitForChild(sideName, 5) if fObj then task.spawn(onField, fObj, fData, sideName == side) end end track(RunService.RenderStepped:Connect(function() if not window.Parent then return end side = getMySide() or side local myField = sharedData.Fields[side] if myField then for _, lane in pairs(myField.Lanes) do task.spawn(processLane, lane, true) end end end)) end track(PlayerGui.ChildAdded:Connect(function(ch) if ch.ClassName == "InputContext" then hookInputs(ch) elseif ch.Name == "Window" then task.spawn(onWindow, ch) end end)) for _, ch in ipairs(PlayerGui:GetChildren()) do if ch.ClassName == "InputContext" then hookInputs(ch) elseif ch.Name == "Window" then task.spawn(onWindow, ch) end end Tabs.FF:AddSection("Main Controls") Tabs.FF:AddToggle("FF_AP", { Title = "Enable AutoPlayer (Kawi Core)", Default = true, Description = "Calculates scroll speed and hits 100% Sick", Callback = function(v) FF_Config.AutoPlay = v Fluent:Notify({ Title = "Funky Friday", Content = v and "AutoPlayer ENABLED" or "AutoPlayer DISABLED", Duration = 2 }) end }) Tabs.FF:AddToggle("FF_AntiBad", { Title = "Anti-Bad Notes", Default = true, Callback = function(v) FF_Config.AntiBadNotes = v end }) Tabs.FF:AddSlider("FF_Offset", { Title = "Hit Offset (ms)", Default = 0, Min = -50, Max = 50, Rounding = 0, Callback = function(v) FF_Config.HitOffset = v end }) Tabs.FF:AddSlider("FF_Hold", { Title = "Minimum Key Hold Duration (s)", Default = 0.05, Min = 0.01, Max = 0.15, Rounding = 2, Callback = function(v) FF_Config.HoldDuration = v end }) end -- =========================================================== -- GLOBAL SETTINGS TAB -- =========================================================== Tabs.Settings:AddSection("Appearance & Keybinds") Tabs.Settings:AddDropdown("ThemeDropdown", { Title = "Interface Theme", Values = { "Amethyst", "Blood Red", "Dark", "Darker", "Ocean", "Rose", "Sapphire", "Midnight" }, Default = DefaultTheme, Callback = function(Value) Fluent:SetTheme(Value) end }) Tabs.Settings:AddKeybind("MinimizeKeybind", { Title = "Toggle Keybind", Mode = "Toggle", Default = "RightControl" }) Tabs.Settings:AddButton({ Title = "Unload Script", Callback = function() if _G.Universal_Hub_Cleanup then _G.Universal_Hub_Cleanup() end end }) -- ---------------------------------------------------------- -- 6. GLOBAL CLEANUP -- ---------------------------------------------------------- _G.Universal_Hub_Cleanup = function() for _, conn in ipairs(Connections) do if conn and typeof(conn) == "RBXScriptConnection" and conn.Connected then conn:Disconnect() end end table.clear(Connections) if SilentHooked and OldIndex then pcall(function() if hookmetamethod then hookmetamethod(game, "__index", OldIndex) elseif getrawmetatable then local mt = getrawmetatable(game) if setreadonly then setreadonly(mt, false) end mt.__index = OldIndex if setreadonly then setreadonly(mt, true) end end end) end for _, c in ipairs(FOVCircles) do pcall(function() c:Remove() end) end table.clear(FOVCircles) if ESPData then for _, d in pairs(ESPData) do for _, c in ipairs(d.connections) do if c and c.Connected then c:Disconnect() end end end end Window:Destroy() print("Universal Hub v33.0 by isamu successfully unloaded.") end Window:SelectTab(1) Fluent:Notify({ Title = "Universal Multi-Game Hub v33.0", Content = string.format("Detected Game: %s\nCreated by isamu\nPress [RightControl] to toggle menu.", CurrentGame), Duration = 5 })