--[[⊹˚₊‧───────────────‧₊˚⊹·͙⁺˚*•̩̩͙✩•̩̩͙*˚⁺‧͙⁺˚*•̩̩͙✩•̩̩͙*˚⁺‧͙⁺˚*•̩̩͙✩•̩̩͙*˚⁺‧͙⊹˚₊‧───────────────‧₊˚⊹ ______ ______ __ __ __ / \ / \| \ | \ | \ | ▓▓▓▓▓▓\ ______ ______ _______ | ▓▓▓▓▓▓\\▓▓______ ____ | ▓▓____ ______ _| ▓▓_ | ▓▓ | ▓▓/ \ / \| \ | ▓▓__| ▓▓ \ \ \| ▓▓ \ / \| ▓▓ \ | ▓▓ | ▓▓ ▓▓▓▓▓▓\ ▓▓▓▓▓▓\ ▓▓▓▓▓▓▓\ | ▓▓ ▓▓ ▓▓ ▓▓▓▓▓▓\▓▓▓▓\ ▓▓▓▓▓▓▓\ ▓▓▓▓▓▓\\▓▓▓▓▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓▓▓▓▓▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ | ▓▓ | ▓▓ __ | ▓▓__/ ▓▓ ▓▓__/ ▓▓ ▓▓▓▓▓▓▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓__/ ▓▓ ▓▓__/ ▓▓ | ▓▓| \ \▓▓ ▓▓ ▓▓ ▓▓\▓▓ \ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓\▓▓ ▓▓ \▓▓ ▓▓ \▓▓▓▓▓▓| ▓▓▓▓▓▓▓ \▓▓▓▓▓▓▓\▓▓ \▓▓ \▓▓ \▓▓\▓▓\▓▓ \▓▓ \▓▓\▓▓▓▓▓▓▓ \▓▓▓▓▓▓ \▓▓▓▓ | ▓▓ | ▓▓ \▓▓ ༺☆༻____________☾✧ ✩ ✧☽____________༺☆༻༺☆༻____________☾✧ ✩ ✧☽____________༺☆༻ ✨Universal Aim Assist Framework✨ Release 1.9.5 twix.cyou/pix twix.cyou/OpenAimbotV3rm Author: ttwiz_z (ttwizz) License: MIT GitHub: https://github.com/ttwizz/Open-Aimbot Issues: https://github.com/ttwizz/Open-Aimbot/issues Pull requests: https://github.com/ttwizz/Open-Aimbot/pulls Discussions: https://github.com/ttwizz/Open-Aimbot/discussions Wiki: https://moderka.org/Open-Aimbot Trustpilot: https://www.trustpilot.com/review/moderka.org •───────•°•❀•°•───────•୧‿̩͙ ˖︵ꕀ ⠀𓏶 ̣̣̥⠀ ꕀ︵˖ ̩͙‿୨•───────•°•❀•°•───────•]] --! Debugger local DEBUG = false if DEBUG then getfenv().getfenv = function() return setmetatable({}, { __index = function() return function() return true end end }) end end --! Services local HttpService = game:GetService("HttpService") local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") --! Interface Manager local UISettings = { TabWidth = 160, Size = { 580, 460 }, Theme = "VSC Dark High Contrast", Acrylic = false, Transparency = true, MinimizeKey = "RightShift", ShowNotifications = true, ShowWarnings = true, RenderingMode = "RenderStepped", AutoImport = true } local InterfaceManager = {} function InterfaceManager:ImportSettings() pcall(function() if not DEBUG and getfenv().isfile and getfenv().readfile and getfenv().isfile("UISettings.ttwizz") and getfenv().readfile("UISettings.ttwizz") then for Key, Value in next, HttpService:JSONDecode(getfenv().readfile("UISettings.ttwizz")) do UISettings[Key] = Value end end end) end function InterfaceManager:ExportSettings() pcall(function() if not DEBUG and getfenv().isfile and getfenv().readfile and getfenv().writefile then getfenv().writefile("UISettings.ttwizz", HttpService:JSONEncode(UISettings)) end end) end InterfaceManager:ImportSettings() UISettings.__LAST_RUN__ = os.date() InterfaceManager:ExportSettings() --! Colors Handler local ColorsHandler = {} function ColorsHandler:PackColour(Colour) return typeof(Colour) == "Color3" and { R = Colour.R * 255, G = Colour.G * 255, B = Colour.B * 255 } or typeof(Colour) == "table" and Colour or { R = 255, G = 255, B = 255 } end function ColorsHandler:UnpackColour(Colour) return typeof(Colour) == "table" and Color3.fromRGB(Colour.R, Colour.G, Colour.B) or typeof(Colour) == "Color3" and Colour or Color3.fromRGB(255, 255, 255) end --! Configuration Importer local ImportedConfiguration = {} pcall(function() if not DEBUG and getfenv().isfile and getfenv().readfile and getfenv().isfile(string.format("%s.ttwizz", game.GameId)) and getfenv().readfile(string.format("%s.ttwizz", game.GameId)) and UISettings.AutoImport then ImportedConfiguration = HttpService:JSONDecode(getfenv().readfile(string.format("%s.ttwizz", game.GameId))) for Key, Value in next, ImportedConfiguration do if Key == "FoVColour" or Key == "NameESPOutlineColour" or Key == "ESPColour" then ImportedConfiguration[Key] = ColorsHandler:UnpackColour(Value) end end end end) --! Configuration Initializer local Configuration = {} --? Aimbot Configuration.Aimbot = ImportedConfiguration["Aimbot"] or false Configuration.OnePressAimingMode = ImportedConfiguration["OnePressAimingMode"] or false Configuration.AimKey = ImportedConfiguration["AimKey"] or "RMB" Configuration.AimMode = ImportedConfiguration["AimMode"] or "Camera" Configuration.SilentAimMethods = ImportedConfiguration["SilentAimMethods"] or { "Mouse.Hit / Mouse.Target", "GetMouseLocation" } Configuration.SilentAimChance = ImportedConfiguration["SilentAimChance"] or 100 Configuration.OffAimbotAfterKill = ImportedConfiguration["OffAimbotAfterKill"] or false Configuration.AimPartDropdownValues = ImportedConfiguration["AimPartDropdownValues"] or { "Head", "HumanoidRootPart" } Configuration.AimPart = ImportedConfiguration["AimPart"] or "HumanoidRootPart" Configuration.RandomAimPart = ImportedConfiguration["RandomAimPart"] or false Configuration.UseOffset = ImportedConfiguration["UseOffset"] or false Configuration.OffsetType = ImportedConfiguration["OffsetType"] or "Static" Configuration.StaticOffsetIncrement = ImportedConfiguration["StaticOffsetIncrement"] or 10 Configuration.DynamicOffsetIncrement = ImportedConfiguration["DynamicOffsetIncrement"] or 10 Configuration.AutoOffset = ImportedConfiguration["AutoOffset"] or false Configuration.MaxAutoOffset = ImportedConfiguration["MaxAutoOffset"] or 50 Configuration.UseSensitivity = ImportedConfiguration["UseSensitivity"] or false Configuration.Sensitivity = ImportedConfiguration["Sensitivity"] or 50 Configuration.UseNoise = ImportedConfiguration["UseNoise"] or false Configuration.NoiseFrequency = ImportedConfiguration["NoiseFrequency"] or 50 --? Bots Configuration.SpinBot = ImportedConfiguration["SpinBot"] or false Configuration.OnePressSpinningMode = ImportedConfiguration["OnePressSpinningMode"] or false Configuration.SpinKey = ImportedConfiguration["SpinKey"] or "Q" Configuration.SpinBotVelocity = ImportedConfiguration["SpinBotVelocity"] or 50 Configuration.SpinPartDropdownValues = ImportedConfiguration["SpinPartDropdownValues"] or { "Head", "HumanoidRootPart" } Configuration.SpinPart = ImportedConfiguration["SpinPart"] or "HumanoidRootPart" Configuration.RandomSpinPart = ImportedConfiguration["RandomSpinPart"] or false Configuration.TriggerBot = ImportedConfiguration["TriggerBot"] or false Configuration.OnePressTriggeringMode = ImportedConfiguration["OnePressTriggeringMode"] or false Configuration.SmartTriggerBot = ImportedConfiguration["SmartTriggerBot"] or false Configuration.TriggerKey = ImportedConfiguration["TriggerKey"] or "E" Configuration.TriggerBotChance = ImportedConfiguration["TriggerBotChance"] or 100 --? Checks Configuration.AliveCheck = ImportedConfiguration["AliveCheck"] or false Configuration.GodCheck = ImportedConfiguration["GodCheck"] or false Configuration.TeamCheck = ImportedConfiguration["TeamCheck"] or false Configuration.FriendCheck = ImportedConfiguration["FriendCheck"] or false Configuration.FollowCheck = ImportedConfiguration["FollowCheck"] or false Configuration.VerifiedBadgeCheck = ImportedConfiguration["VerifiedBadgeCheck"] or false Configuration.WallCheck = ImportedConfiguration["WallCheck"] or false Configuration.WaterCheck = ImportedConfiguration["WaterCheck"] or false Configuration.FoVCheck = ImportedConfiguration["FoVCheck"] or false Configuration.FoVRadius = ImportedConfiguration["FoVRadius"] or 100 Configuration.MagnitudeCheck = ImportedConfiguration["MagnitudeCheck"] or false Configuration.TriggerMagnitude = ImportedConfiguration["TriggerMagnitude"] or 500 Configuration.TransparencyCheck = ImportedConfiguration["TransparencyCheck"] or false Configuration.IgnoredTransparency = ImportedConfiguration["IgnoredTransparency"] or 0.5 Configuration.WhitelistedGroupCheck = ImportedConfiguration["WhitelistedGroupCheck"] or false Configuration.WhitelistedGroup = ImportedConfiguration["WhitelistedGroup"] or 0 Configuration.BlacklistedGroupCheck = ImportedConfiguration["BlacklistedGroupCheck"] or false Configuration.BlacklistedGroup = ImportedConfiguration["BlacklistedGroup"] or 0 Configuration.IgnoredPlayersCheck = ImportedConfiguration["IgnoredPlayersCheck"] or false Configuration.IgnoredPlayersDropdownValues = ImportedConfiguration["IgnoredPlayersDropdownValues"] or {} Configuration.IgnoredPlayers = ImportedConfiguration["IgnoredPlayers"] or {} Configuration.TargetPlayersCheck = ImportedConfiguration["TargetPlayersCheck"] or false Configuration.TargetPlayersDropdownValues = ImportedConfiguration["TargetPlayersDropdownValues"] or {} Configuration.TargetPlayers = ImportedConfiguration["TargetPlayers"] or {} Configuration.PremiumCheck = ImportedConfiguration["PremiumCheck"] or false --? Visuals Configuration.FoV = ImportedConfiguration["FoV"] or false Configuration.FoVKey = ImportedConfiguration["FoVKey"] or "R" Configuration.FoVThickness = ImportedConfiguration["FoVThickness"] or 2 Configuration.FoVOpacity = ImportedConfiguration["FoVOpacity"] or 0.8 Configuration.FoVFilled = ImportedConfiguration["FoVFilled"] or false Configuration.FoVColour = ImportedConfiguration["FoVColour"] or Color3.fromRGB(255, 255, 255) Configuration.SmartESP = ImportedConfiguration["SmartESP"] or false Configuration.ESPKey = ImportedConfiguration["ESPKey"] or "T" Configuration.ESPBox = ImportedConfiguration["ESPBox"] or false Configuration.ESPBoxFilled = ImportedConfiguration["ESPBoxFilled"] or false Configuration.NameESP = ImportedConfiguration["NameESP"] or false Configuration.NameESPFont = ImportedConfiguration["NameESPFont"] or "Monospace" Configuration.NameESPSize = ImportedConfiguration["NameESPSize"] or 16 Configuration.NameESPOutlineColour = ImportedConfiguration["NameESPOutlineColour"] or Color3.fromRGB(0, 0, 0) Configuration.HealthESP = ImportedConfiguration["HealthESP"] or false Configuration.MagnitudeESP = ImportedConfiguration["MagnitudeESP"] or false Configuration.TracerESP = ImportedConfiguration["TracerESP"] or false Configuration.ESPThickness = ImportedConfiguration["ESPThickness"] or 2 Configuration.ESPOpacity = ImportedConfiguration["ESPOpacity"] or 0.8 Configuration.ESPColour = ImportedConfiguration["ESPColour"] or Color3.fromRGB(255, 255, 255) Configuration.ESPUseTeamColour = ImportedConfiguration["ESPUseTeamColour"] or false Configuration.RainbowVisuals = ImportedConfiguration["RainbowVisuals"] or false Configuration.RainbowDelay = ImportedConfiguration["RainbowDelay"] or 5 --! Constants local Player = Players.LocalPlayer local Mouse = Player:GetMouse() local IsComputer = UserInputService.KeyboardEnabled and UserInputService.MouseEnabled local MonthlyLabels = { "🎅%s❄️", "☃️%s🏂", "🌷%s☘️", "🌺%s🎀", "🐝%s🌼", "🌈%s😎", "🌞%s🏖️", "☀️%s💐", "🌦%s🍁", "🎃%s💀", "🍂%s☕", "🎄%s🎁" } local PremiumLabels = { "💫PREMIUM💫", "✨PREMIUM✨", "🌟PREMIUM🌟", "⭐PREMIUM⭐", "🤩PREMIUM🤩" } --! Names Handler local function GetPlayerName(String) if typeof(String) == "string" and #String > 0 then for _, _Player in next, Players:GetPlayers() do if string.sub(string.lower(_Player.Name), 1, #string.lower(String)) == string.lower(String) then return _Player.Name end end end return "" end --! Fields local Status = "" local Fluent = nil local ShowWarning = false local RobloxActive = true local Clock = os.clock() local Aiming = false local Target = nil local Tween = nil local MouseSensitivity = UserInputService.MouseDeltaSensitivity local Spinning = false local Triggering = false local ShowingFoV = false local ShowingESP = false do if typeof(script) == "Instance" and script:FindFirstChild("Fluent") and script:FindFirstChild("Fluent"):IsA("ModuleScript") then Fluent = require(script:FindFirstChild("Fluent")) else local Success, Result = pcall(function() return game:HttpGet("https://twix.cyou/Fluent.txt", true) end) if Success and typeof(Result) == "string" and string.find(Result, "dawid") then Fluent = getfenv().loadstring(Result)() if Fluent.Premium then return getfenv().loadstring(game:HttpGet("https://twix.cyou/Aimbot.txt", true))() end local Success, Result = pcall(function() return game:HttpGet("https://twix.cyou/AimbotStatus.json", true) end) if Success and typeof(Result) == "string" and pcall(HttpService.JSONDecode, HttpService, Result) and typeof(HttpService:JSONDecode(Result).message) == "string" then Status = HttpService:JSONDecode(Result).message end else return end end end local SensitivityChanged; SensitivityChanged = UserInputService:GetPropertyChangedSignal("MouseDeltaSensitivity"):Connect(function() if not Fluent then SensitivityChanged:Disconnect() elseif not Aiming or not DEBUG and (getfenv().mousemoverel and IsComputer and Configuration.AimMode == "Mouse" or getfenv().hookmetamethod and getfenv().newcclosure and getfenv().checkcaller and getfenv().getnamecallmethod and Configuration.AimMode == "Silent") then MouseSensitivity = UserInputService.MouseDeltaSensitivity end end) --! UI Initializer do local Window = Fluent:CreateWindow({ Title = string.format("%s %s", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), #Status > 0 and Status or "🔥FREE🔥"), SubTitle = "By @ttwiz_z", TabWidth = UISettings.TabWidth, Size = UDim2.fromOffset(table.unpack(UISettings.Size)), Theme = UISettings.Theme, Acrylic = UISettings.Acrylic, MinimizeKey = UISettings.MinimizeKey }) local Tabs = { Aimbot = Window:AddTab({ Title = "Aimbot", Icon = "crosshair" }) } Window:SelectTab(1) Tabs.Aimbot:AddParagraph({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Universal Aim Assist Framework✨\nhttps://github.com/ttwizz/Open-Aimbot" }) local AimbotSection = Tabs.Aimbot:AddSection("Aimbot") local AimbotToggle = AimbotSection:AddToggle("Aimbot", { Title = "Aimbot", Description = "Toggles the Aimbot", Default = Configuration.Aimbot }) AimbotToggle:OnChanged(function(Value) Configuration.Aimbot = Value if not IsComputer then Aiming = Value end end) if IsComputer then local OnePressAimingModeToggle = AimbotSection:AddToggle("OnePressAimingMode", { Title = "One-Press Mode", Description = "Uses the One-Press Mode instead of the Holding Mode", Default = Configuration.OnePressAimingMode }) OnePressAimingModeToggle:OnChanged(function(Value) Configuration.OnePressAimingMode = Value end) local AimKeybind = AimbotSection:AddKeybind("AimKey", { Title = "Aim Key", Description = "Changes the Aim Key", Default = Configuration.AimKey, ChangedCallback = function(Value) Configuration.AimKey = Value end }) Configuration.AimKey = AimKeybind.Value ~= "RMB" and Enum.KeyCode[AimKeybind.Value] or Enum.UserInputType.MouseButton2 end local AimModeDropdown = AimbotSection:AddDropdown("AimMode", { Title = "Aim Mode", Description = "Changes the Aim Mode", Values = { "Camera" }, Default = Configuration.AimMode, Callback = function(Value) Configuration.AimMode = Value end }) if getfenv().mousemoverel and IsComputer then table.insert(AimModeDropdown.Values, "Mouse") AimModeDropdown:BuildDropdownList() else ShowWarning = true end if getfenv().hookmetamethod and getfenv().newcclosure and getfenv().checkcaller and getfenv().getnamecallmethod then table.insert(AimModeDropdown.Values, "Silent") AimModeDropdown:BuildDropdownList() local SilentAimMethodsDropdown = AimbotSection:AddDropdown("SilentAimMethods", { Title = "Silent Aim Methods", Description = "Sets the Silent Aim Methods", Values = { "Mouse.Hit / Mouse.Target", "GetMouseLocation", "Raycast", "FindPartOnRay", "FindPartOnRayWithIgnoreList", "FindPartOnRayWithWhitelist" }, Multi = true, Default = Configuration.SilentAimMethods }) SilentAimMethodsDropdown:OnChanged(function(Value) Configuration.SilentAimMethods = {} for Key, _ in next, Value do if typeof(Key) == "string" then table.insert(Configuration.SilentAimMethods, Key) end end end) AimbotSection:AddSlider("SilentAimChance", { Title = "Silent Aim Chance", Description = "Changes the Hit Chance for Silent Aim", Default = Configuration.SilentAimChance, Min = 1, Max = 100, Rounding = 1, Callback = function(Value) Configuration.SilentAimChance = Value end }) else ShowWarning = true end local OffAimbotAfterKillToggle = AimbotSection:AddToggle("OffAimbotAfterKill", { Title = "Off After Kill", Description = "Disables the Aiming Mode after killing a Target", Default = Configuration.OffAimbotAfterKill }) OffAimbotAfterKillToggle:OnChanged(function(Value) Configuration.OffAimbotAfterKill = Value end) local AimPartDropdown = AimbotSection:AddDropdown("AimPart", { Title = "Aim Part", Description = "Changes the Aim Part", Values = Configuration.AimPartDropdownValues, Default = Configuration.AimPart, Callback = function(Value) Configuration.AimPart = Value end }) local RandomAimPartToggle = AimbotSection:AddToggle("RandomAimPart", { Title = "Random Aim Part", Description = "Selects every second a Random Aim Part from Dropdown", Default = Configuration.RandomAimPart }) RandomAimPartToggle:OnChanged(function(Value) Configuration.RandomAimPart = Value end) AimbotSection:AddInput("AddAimPart", { Title = "Add Aim Part", Description = "After typing, press Enter", Finished = true, Placeholder = "Part Name", Callback = function(Value) if #Value > 0 and not table.find(Configuration.AimPartDropdownValues, Value) then table.insert(Configuration.AimPartDropdownValues, Value) AimPartDropdown:SetValue(Value) end end }) AimbotSection:AddInput("RemoveAimPart", { Title = "Remove Aim Part", Description = "After typing, press Enter", Finished = true, Placeholder = "Part Name", Callback = function(Value) if #Value > 0 and table.find(Configuration.AimPartDropdownValues, Value) then if Configuration.AimPart == Value then AimPartDropdown:SetValue(nil) end table.remove(Configuration.AimPartDropdownValues, table.find(Configuration.AimPartDropdownValues, Value)) AimPartDropdown:SetValues(Configuration.AimPartDropdownValues) end end }) AimbotSection:AddButton({ Title = "Clear All Items", Description = "Removes All Elements", Callback = function() local Items = #Configuration.AimPartDropdownValues AimPartDropdown:SetValue(nil) Configuration.AimPartDropdownValues = {} AimPartDropdown:SetValues(Configuration.AimPartDropdownValues) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been cleared!" or Items == 1 and "1 Item has been cleared!" or string.format("%s Items have been cleared!", Items), Buttons = { { Title = "Confirm" } } }) end }) local AimOffsetSection = Tabs.Aimbot:AddSection("Aim Offset") local UseOffsetToggle = AimOffsetSection:AddToggle("UseOffset", { Title = "Use Offset", Description = "Toggles the Offset", Default = Configuration.UseOffset }) UseOffsetToggle:OnChanged(function(Value) Configuration.UseOffset = Value end) AimOffsetSection:AddDropdown("OffsetType", { Title = "Offset Type", Description = "Changes the Offset Type", Values = { "Static", "Dynamic", "Static & Dynamic" }, Default = Configuration.OffsetType, Callback = function(Value) Configuration.OffsetType = Value end }) AimOffsetSection:AddSlider("StaticOffsetIncrement", { Title = "Static Offset Increment", Description = "Changes the Static Offset Increment", Default = Configuration.StaticOffsetIncrement, Min = 1, Max = 50, Rounding = 1, Callback = function(Value) Configuration.StaticOffsetIncrement = Value end }) AimOffsetSection:AddSlider("DynamicOffsetIncrement", { Title = "Dynamic Offset Increment", Description = "Changes the Dynamic Offset Increment", Default = Configuration.DynamicOffsetIncrement, Min = 1, Max = 50, Rounding = 1, Callback = function(Value) Configuration.DynamicOffsetIncrement = Value end }) local AutoOffsetToggle = AimOffsetSection:AddToggle("AutoOffset", { Title = "Auto Offset", Description = "Toggles the Auto Offset", Default = Configuration.AutoOffset }) AutoOffsetToggle:OnChanged(function(Value) Configuration.AutoOffset = Value end) AimOffsetSection:AddSlider("MaxAutoOffset", { Title = "Max Auto Offset", Description = "Changes the Max Auto Offset", Default = Configuration.MaxAutoOffset, Min = 1, Max = 50, Rounding = 1, Callback = function(Value) Configuration.MaxAutoOffset = Value end }) local SensitivityNoiseSection = Tabs.Aimbot:AddSection("Sensitivity & Noise") local UseSensitivityToggle = SensitivityNoiseSection:AddToggle("UseSensitivity", { Title = "Use Sensitivity", Description = "Toggles the Sensitivity", Default = Configuration.UseSensitivity }) UseSensitivityToggle:OnChanged(function(Value) Configuration.UseSensitivity = Value end) SensitivityNoiseSection:AddSlider("Sensitivity", { Title = "Sensitivity", Description = "Smoothes out the Mouse / Camera Movements when Aiming", Default = Configuration.Sensitivity, Min = 1, Max = 100, Rounding = 1, Callback = function(Value) Configuration.Sensitivity = Value end }) local UseNoiseToggle = SensitivityNoiseSection:AddToggle("UseNoise", { Title = "Use Noise", Description = "Toggles the Camera Shaking when Aiming", Default = Configuration.UseNoise }) UseNoiseToggle:OnChanged(function(Value) Configuration.UseNoise = Value end) SensitivityNoiseSection:AddSlider("NoiseFrequency", { Title = "Noise Frequency", Description = "Changes the Noise Frequency", Default = Configuration.NoiseFrequency, Min = 1, Max = 100, Rounding = 1, Callback = function(Value) Configuration.NoiseFrequency = Value end }) Tabs.Bots = Window:AddTab({ Title = "Bots", Icon = "bot" }) Tabs.Bots:AddParagraph({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Universal Aim Assist Framework✨\nhttps://github.com/ttwizz/Open-Aimbot" }) local SpinBotSection = Tabs.Bots:AddSection("SpinBot") SpinBotSection:AddParagraph({ Title = "NOTE", Content = "SpinBot does not function normally in RenderStepped Rendering Mode. Set a different Rendering Mode value than RenderStepped to solve this problem." }) local SpinBotToggle = SpinBotSection:AddToggle("SpinBot", { Title = "SpinBot", Description = "Toggles the SpinBot", Default = Configuration.SpinBot }) SpinBotToggle:OnChanged(function(Value) Configuration.SpinBot = Value if not IsComputer then Spinning = Value end end) if IsComputer then local OnePressSpinningModeToggle = SpinBotSection:AddToggle("OnePressSpinningMode", { Title = "One-Press Mode", Description = "Uses the One-Press Mode instead of the Holding Mode", Default = Configuration.OnePressSpinningMode }) OnePressSpinningModeToggle:OnChanged(function(Value) Configuration.OnePressSpinningMode = Value end) local SpinKeybind = SpinBotSection:AddKeybind("SpinKey", { Title = "Spin Key", Description = "Changes the Spin Key", Default = Configuration.SpinKey, ChangedCallback = function(Value) Configuration.SpinKey = Value end }) Configuration.SpinKey = SpinKeybind.Value ~= "RMB" and Enum.KeyCode[SpinKeybind.Value] or Enum.UserInputType.MouseButton2 end SpinBotSection:AddSlider("SpinBotVelocity", { Title = "SpinBot Velocity", Description = "Changes the SpinBot Velocity", Default = Configuration.SpinBotVelocity, Min = 1, Max = 50, Rounding = 1, Callback = function(Value) Configuration.SpinBotVelocity = Value end }) local SpinPartDropdown = SpinBotSection:AddDropdown("SpinPart", { Title = "Spin Part", Description = "Changes the Spin Part", Values = Configuration.SpinPartDropdownValues, Default = Configuration.SpinPart, Callback = function(Value) Configuration.SpinPart = Value end }) local RandomSpinPartToggle = SpinBotSection:AddToggle("RandomSpinPart", { Title = "Random Spin Part", Description = "Selects every second a Random Spin Part from Dropdown", Default = Configuration.RandomSpinPart }) RandomSpinPartToggle:OnChanged(function(Value) Configuration.RandomSpinPart = Value end) SpinBotSection:AddInput("AddSpinPart", { Title = "Add Spin Part", Description = "After typing, press Enter", Finished = true, Placeholder = "Part Name", Callback = function(Value) if #Value > 0 and not table.find(Configuration.SpinPartDropdownValues, Value) then table.insert(Configuration.SpinPartDropdownValues, Value) SpinPartDropdown:SetValue(Value) end end }) SpinBotSection:AddInput("RemoveSpinPart", { Title = "Remove Spin Part", Description = "After typing, press Enter", Finished = true, Placeholder = "Part Name", Callback = function(Value) if #Value > 0 and table.find(Configuration.SpinPartDropdownValues, Value) then if Configuration.SpinPart == Value then SpinPartDropdown:SetValue(nil) end table.remove(Configuration.SpinPartDropdownValues, table.find(Configuration.SpinPartDropdownValues, Value)) SpinPartDropdown:SetValues(Configuration.SpinPartDropdownValues) end end }) SpinBotSection:AddButton({ Title = "Clear All Items", Description = "Removes All Elements", Callback = function() local Items = #Configuration.SpinPartDropdownValues SpinPartDropdown:SetValue(nil) Configuration.SpinPartDropdownValues = {} SpinPartDropdown:SetValues(Configuration.SpinPartDropdownValues) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been cleared!" or Items == 1 and "1 Item has been cleared!" or string.format("%s Items have been cleared!", Items), Buttons = { { Title = "Confirm" } } }) end }) if getfenv().mouse1click and IsComputer then local TriggerBotSection = Tabs.Bots:AddSection("TriggerBot") local TriggerBotToggle = TriggerBotSection:AddToggle("TriggerBot", { Title = "TriggerBot", Description = "Toggles the TriggerBot", Default = Configuration.TriggerBot }) TriggerBotToggle:OnChanged(function(Value) Configuration.TriggerBot = Value end) local OnePressTriggeringModeToggle = TriggerBotSection:AddToggle("OnePressTriggeringMode", { Title = "One-Press Mode", Description = "Uses the One-Press Mode instead of the Holding Mode", Default = Configuration.OnePressTriggeringMode }) OnePressTriggeringModeToggle:OnChanged(function(Value) Configuration.OnePressTriggeringMode = Value end) local SmartTriggerBotToggle = TriggerBotSection:AddToggle("SmartTriggerBot", { Title = "Smart TriggerBot", Description = "Uses the TriggerBot only when Aiming", Default = Configuration.SmartTriggerBot }) SmartTriggerBotToggle:OnChanged(function(Value) Configuration.SmartTriggerBot = Value end) local TriggerKeybind = TriggerBotSection:AddKeybind("TriggerKey", { Title = "Trigger Key", Description = "Changes the Trigger Key", Default = Configuration.TriggerKey, ChangedCallback = function(Value) Configuration.TriggerKey = Value end }) Configuration.TriggerKey = TriggerKeybind.Value ~= "RMB" and Enum.KeyCode[TriggerKeybind.Value] or Enum.UserInputType.MouseButton2 TriggerBotSection:AddSlider("TriggerBotChance", { Title = "TriggerBot Chance", Description = "Changes the Hit Chance for TriggerBot", Default = Configuration.TriggerBotChance, Min = 1, Max = 100, Rounding = 1, Callback = function(Value) Configuration.TriggerBotChance = Value end }) else ShowWarning = true end Tabs.Checks = Window:AddTab({ Title = "Checks", Icon = "list-checks" }) Tabs.Checks:AddParagraph({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Universal Aim Assist Framework✨\nhttps://github.com/ttwizz/Open-Aimbot" }) local SimpleChecksSection = Tabs.Checks:AddSection("Simple Checks") local AliveCheckToggle = SimpleChecksSection:AddToggle("AliveCheck", { Title = "Alive Check", Description = "Toggles the Alive Check", Default = Configuration.AliveCheck }) AliveCheckToggle:OnChanged(function(Value) Configuration.AliveCheck = Value end) local GodCheckToggle = SimpleChecksSection:AddToggle("GodCheck", { Title = "God Check", Description = "Toggles the God Check", Default = Configuration.GodCheck }) GodCheckToggle:OnChanged(function(Value) Configuration.GodCheck = Value end) local TeamCheckToggle = SimpleChecksSection:AddToggle("TeamCheck", { Title = "Team Check", Description = "Toggles the Team Check", Default = Configuration.TeamCheck }) TeamCheckToggle:OnChanged(function(Value) Configuration.TeamCheck = Value end) local FriendCheckToggle = SimpleChecksSection:AddToggle("FriendCheck", { Title = "Friend Check", Description = "Toggles the Friend Check", Default = Configuration.FriendCheck }) FriendCheckToggle:OnChanged(function(Value) Configuration.FriendCheck = Value end) local FollowCheckToggle = SimpleChecksSection:AddToggle("FollowCheck", { Title = "Follow Check", Description = "Toggles the Follow Check", Default = Configuration.FollowCheck }) FollowCheckToggle:OnChanged(function(Value) Configuration.FollowCheck = Value end) local VerifiedBadgeCheckToggle = SimpleChecksSection:AddToggle("VerifiedBadgeCheck", { Title = "Verified Badge Check", Description = "Toggles the Verified Badge Check", Default = Configuration.VerifiedBadgeCheck }) VerifiedBadgeCheckToggle:OnChanged(function(Value) Configuration.VerifiedBadgeCheck = Value end) local WallCheckToggle = SimpleChecksSection:AddToggle("WallCheck", { Title = "Wall Check", Description = "Toggles the Wall Check", Default = Configuration.WallCheck }) WallCheckToggle:OnChanged(function(Value) Configuration.WallCheck = Value end) local WaterCheckToggle = SimpleChecksSection:AddToggle("WaterCheck", { Title = "Water Check", Description = "Toggles the Water Check if Wall Check is enabled", Default = Configuration.WaterCheck }) WaterCheckToggle:OnChanged(function(Value) Configuration.WaterCheck = Value end) local AdvancedChecksSection = Tabs.Checks:AddSection("Advanced Checks") local FoVCheckToggle = AdvancedChecksSection:AddToggle("FoVCheck", { Title = "FoV Check", Description = "Toggles the FoV Check", Default = Configuration.FoVCheck }) FoVCheckToggle:OnChanged(function(Value) Configuration.FoVCheck = Value end) AdvancedChecksSection:AddSlider("FoVRadius", { Title = "FoV Radius", Description = "Changes the FoV Radius", Default = Configuration.FoVRadius, Min = 10, Max = 1000, Rounding = 1, Callback = function(Value) Configuration.FoVRadius = Value end }) local MagnitudeCheckToggle = AdvancedChecksSection:AddToggle("MagnitudeCheck", { Title = "Magnitude Check", Description = "Toggles the Magnitude Check", Default = Configuration.MagnitudeCheck }) MagnitudeCheckToggle:OnChanged(function(Value) Configuration.MagnitudeCheck = Value end) AdvancedChecksSection:AddSlider("TriggerMagnitude", { Title = "Trigger Magnitude", Description = "Distance between the Native and the Target Character", Default = Configuration.TriggerMagnitude, Min = 10, Max = 1000, Rounding = 1, Callback = function(Value) Configuration.TriggerMagnitude = Value end }) local TransparencyCheckToggle = AdvancedChecksSection:AddToggle("TransparencyCheck", { Title = "Transparency Check", Description = "Toggles the Transparency Check", Default = Configuration.TransparencyCheck }) TransparencyCheckToggle:OnChanged(function(Value) Configuration.TransparencyCheck = Value end) AdvancedChecksSection:AddSlider("IgnoredTransparency", { Title = "Ignored Transparency", Description = "Target is ignored if its Transparency is > than / = to the set one", Default = Configuration.IgnoredTransparency, Min = 0.1, Max = 1, Rounding = 1, Callback = function(Value) Configuration.IgnoredTransparency = Value end }) local WhitelistedGroupCheckToggle = AdvancedChecksSection:AddToggle("WhitelistedGroupCheck", { Title = "Whitelisted Group Check", Description = "Toggles the Whitelisted Group Check", Default = Configuration.WhitelistedGroupCheck }) WhitelistedGroupCheckToggle:OnChanged(function(Value) Configuration.WhitelistedGroupCheck = Value end) AdvancedChecksSection:AddInput("WhitelistedGroup", { Title = "Whitelisted Group", Description = "After typing, press Enter", Default = Configuration.WhitelistedGroup, Numeric = true, Finished = true, Placeholder = "Group Id", Callback = function(Value) Configuration.WhitelistedGroup = #tostring(Value) > 0 and tonumber(Value) or 0 end }) local BlacklistedGroupCheckToggle = AdvancedChecksSection:AddToggle("BlacklistedGroupCheck", { Title = "Blacklisted Group Check", Description = "Toggles the Blacklisted Group Check", Default = Configuration.BlacklistedGroupCheck }) BlacklistedGroupCheckToggle:OnChanged(function(Value) Configuration.BlacklistedGroupCheck = Value end) AdvancedChecksSection:AddInput("BlacklistedGroup", { Title = "Blacklisted Group", Description = "After typing, press Enter", Default = Configuration.BlacklistedGroup, Numeric = true, Finished = true, Placeholder = "Group Id", Callback = function(Value) Configuration.BlacklistedGroup = #tostring(Value) > 0 and tonumber(Value) or 0 end }) local ExpertChecksSection = Tabs.Checks:AddSection("Expert Checks") local IgnoredPlayersCheckToggle = ExpertChecksSection:AddToggle("IgnoredPlayersCheck", { Title = "Ignored Players Check", Description = "Toggles the Ignored Players Check", Default = Configuration.IgnoredPlayersCheck }) IgnoredPlayersCheckToggle:OnChanged(function(Value) Configuration.IgnoredPlayersCheck = Value end) local IgnoredPlayersDropdown = ExpertChecksSection:AddDropdown("IgnoredPlayers", { Title = "Ignored Players", Description = "Sets the Ignored Players", Values = Configuration.IgnoredPlayersDropdownValues, Multi = true, Default = Configuration.IgnoredPlayers }) IgnoredPlayersDropdown:OnChanged(function(Value) Configuration.IgnoredPlayers = {} for Key, _ in next, Value do if typeof(Key) == "string" then table.insert(Configuration.IgnoredPlayers, Key) end end end) ExpertChecksSection:AddInput("AddIgnoredPlayer", { Title = "Add Ignored Player", Description = "After typing, press Enter", Finished = true, Placeholder = "Player Name", Callback = function(Value) Value = #GetPlayerName(Value) > 0 and GetPlayerName(Value) or pcall(Players.GetUserIdFromNameAsync, Players, Value) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(Value)) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(Value)) or string.sub(Value, 1, 1) == "@" and (#GetPlayerName(string.sub(Value, 2)) > 0 and GetPlayerName(string.sub(Value, 2)) or pcall(Players.GetUserIdFromNameAsync, Players, string.sub(Value, 2)) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(string.sub(Value, 2)))) or string.sub(Value, 1, 1) == "#" and pcall(Players.GetNameFromUserIdAsync, Players, tonumber(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(tonumber(string.sub(Value, 2))) or "" if #Value > 0 and not table.find(Configuration.IgnoredPlayersDropdownValues, Value) then table.insert(Configuration.IgnoredPlayersDropdownValues, Value) if not table.find(Configuration.IgnoredPlayers, Value) then IgnoredPlayersDropdown.Value[Value] = true table.insert(Configuration.IgnoredPlayers, Value) end IgnoredPlayersDropdown:BuildDropdownList() end end }) ExpertChecksSection:AddInput("RemoveIgnoredPlayer", { Title = "Remove Ignored Player", Description = "After typing, press Enter", Finished = true, Placeholder = "Player Name", Callback = function(Value) Value = #GetPlayerName(Value) > 0 and GetPlayerName(Value) or pcall(Players.GetUserIdFromNameAsync, Players, Value) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(Value)) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(Value)) or string.sub(Value, 1, 1) == "@" and (#GetPlayerName(string.sub(Value, 2)) > 0 and GetPlayerName(string.sub(Value, 2)) or pcall(Players.GetUserIdFromNameAsync, Players, string.sub(Value, 2)) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(string.sub(Value, 2)))) or string.sub(Value, 1, 1) == "#" and pcall(Players.GetNameFromUserIdAsync, Players, tonumber(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(tonumber(string.sub(Value, 2))) or "" if #Value > 0 and table.find(Configuration.IgnoredPlayersDropdownValues, Value) then if table.find(Configuration.IgnoredPlayers, Value) then IgnoredPlayersDropdown.Value[Value] = nil table.remove(Configuration.IgnoredPlayers, table.find(Configuration.IgnoredPlayers, Value)) IgnoredPlayersDropdown:Display() end table.remove(Configuration.IgnoredPlayersDropdownValues, table.find(Configuration.IgnoredPlayersDropdownValues, Value)) IgnoredPlayersDropdown:SetValues(Configuration.IgnoredPlayersDropdownValues) end end }) ExpertChecksSection:AddButton({ Title = "Deselect All Items", Description = "Deselects All Elements", Callback = function() local Items = #Configuration.IgnoredPlayers IgnoredPlayersDropdown:SetValue({}) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been deselected!" or Items == 1 and "1 Item has been deselected!" or string.format("%s Items have been deselected!", Items), Buttons = { { Title = "Confirm" } } }) end }) ExpertChecksSection:AddButton({ Title = "Clear Unselected Items", Description = "Removes Unselected Players", Callback = function() local Cache = {} local Items = 0 for _, Value in next, Configuration.IgnoredPlayersDropdownValues do if table.find(Configuration.IgnoredPlayers, Value) then table.insert(Cache, Value) else Items = Items + 1 end end Configuration.IgnoredPlayersDropdownValues = Cache IgnoredPlayersDropdown:SetValues(Configuration.IgnoredPlayersDropdownValues) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been cleared!" or Items == 1 and "1 Item has been cleared!" or string.format("%s Items have been cleared!", Items), Buttons = { { Title = "Confirm" } } }) end }) local TargetPlayersCheckToggle = ExpertChecksSection:AddToggle("TargetPlayersCheck", { Title = "Target Players Check", Description = "Toggles the Target Players Check", Default = Configuration.TargetPlayersCheck }) TargetPlayersCheckToggle:OnChanged(function(Value) Configuration.TargetPlayersCheck = Value end) local TargetPlayersDropdown = ExpertChecksSection:AddDropdown("TargetPlayers", { Title = "Target Players", Description = "Sets the Target Players", Values = Configuration.TargetPlayersDropdownValues, Multi = true, Default = Configuration.TargetPlayers }) TargetPlayersDropdown:OnChanged(function(Value) Configuration.TargetPlayers = {} for Key, _ in next, Value do if typeof(Key) == "string" then table.insert(Configuration.TargetPlayers, Key) end end end) ExpertChecksSection:AddInput("AddTargetPlayer", { Title = "Add Target Player", Description = "After typing, press Enter", Finished = true, Placeholder = "Player Name", Callback = function(Value) Value = #GetPlayerName(Value) > 0 and GetPlayerName(Value) or pcall(Players.GetUserIdFromNameAsync, Players, Value) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(Value)) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(Value)) or string.sub(Value, 1, 1) == "@" and (#GetPlayerName(string.sub(Value, 2)) > 0 and GetPlayerName(string.sub(Value, 2)) or pcall(Players.GetUserIdFromNameAsync, Players, string.sub(Value, 2)) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(string.sub(Value, 2)))) or string.sub(Value, 1, 1) == "#" and pcall(Players.GetNameFromUserIdAsync, Players, tonumber(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(tonumber(string.sub(Value, 2))) or "" if #Value > 0 and not table.find(Configuration.TargetPlayersDropdownValues, Value) then table.insert(Configuration.TargetPlayersDropdownValues, Value) if not table.find(Configuration.TargetPlayers, Value) then TargetPlayersDropdown.Value[Value] = true table.insert(Configuration.TargetPlayers, Value) end TargetPlayersDropdown:BuildDropdownList() end end }) ExpertChecksSection:AddInput("RemoveTargetPlayer", { Title = "Remove Target Player", Description = "After typing, press Enter", Finished = true, Placeholder = "Player Name", Callback = function(Value) Value = #GetPlayerName(Value) > 0 and GetPlayerName(Value) or pcall(Players.GetUserIdFromNameAsync, Players, Value) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(Value)) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(Value)) or string.sub(Value, 1, 1) == "@" and (#GetPlayerName(string.sub(Value, 2)) > 0 and GetPlayerName(string.sub(Value, 2)) or pcall(Players.GetUserIdFromNameAsync, Players, string.sub(Value, 2)) and pcall(Players.GetNameFromUserIdAsync, Players, Players:GetUserIdFromNameAsync(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(Players:GetUserIdFromNameAsync(string.sub(Value, 2)))) or string.sub(Value, 1, 1) == "#" and pcall(Players.GetNameFromUserIdAsync, Players, tonumber(string.sub(Value, 2))) and Players:GetNameFromUserIdAsync(tonumber(string.sub(Value, 2))) or "" if #Value > 0 and table.find(Configuration.TargetPlayersDropdownValues, Value) then if table.find(Configuration.TargetPlayers, Value) then TargetPlayersDropdown.Value[Value] = nil table.remove(Configuration.TargetPlayers, table.find(Configuration.TargetPlayers, Value)) TargetPlayersDropdown:Display() end table.remove(Configuration.TargetPlayersDropdownValues, table.find(Configuration.TargetPlayersDropdownValues, Value)) TargetPlayersDropdown:SetValues(Configuration.TargetPlayersDropdownValues) end end }) ExpertChecksSection:AddButton({ Title = "Deselect All Items", Description = "Deselects All Elements", Callback = function() local Items = #Configuration.TargetPlayers TargetPlayersDropdown:SetValue({}) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been deselected!" or Items == 1 and "1 Item has been deselected!" or string.format("%s Items have been deselected!", Items), Buttons = { { Title = "Confirm" } } }) end }) ExpertChecksSection:AddButton({ Title = "Clear Unselected Items", Description = "Removes Unselected Players", Callback = function() local Cache = {} local Items = 0 for _, Value in next, Configuration.TargetPlayersDropdownValues do if table.find(Configuration.TargetPlayers, Value) then table.insert(Cache, Value) else Items = Items + 1 end end Configuration.TargetPlayersDropdownValues = Cache TargetPlayersDropdown:SetValues(Configuration.TargetPlayersDropdownValues) Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = Items == 0 and "Nothing has been cleared!" or Items == 1 and "1 Item has been cleared!" or string.format("%s Items have been cleared!", Items), Buttons = { { Title = "Confirm" } } }) end }) local PremiumChecksSection = Tabs.Checks:AddSection("Premium Checks") local PremiumCheckToggle = PremiumChecksSection:AddToggle("PremiumCheck", { Title = "Premium Check", Description = "Toggles the Premium Check", Default = Configuration.PremiumCheck }) PremiumCheckToggle:OnChanged(function(Value) Configuration.PremiumCheck = Value end) PremiumChecksSection:AddParagraph({ Title = string.format("%s 💫PREMIUM💫", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Upgrade to unlock all Options✨\nContact @ttwiz_z via Discord to buy" }) if DEBUG or getfenv().Drawing and getfenv().Drawing.new then Tabs.Visuals = Window:AddTab({ Title = "Visuals", Icon = "box" }) Tabs.Visuals:AddParagraph({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Universal Aim Assist Framework✨\nhttps://github.com/ttwizz/Open-Aimbot" }) local FoVSection = Tabs.Visuals:AddSection("FoV") local FoVToggle = FoVSection:AddToggle("FoV", { Title = "FoV", Description = "Graphically Displays the FoV Radius", Default = Configuration.FoV }) FoVToggle:OnChanged(function(Value) Configuration.FoV = Value if not IsComputer then ShowingFoV = Value end end) if IsComputer then local FoVKeybind = FoVSection:AddKeybind("FoVKey", { Title = "FoV Key", Description = "Changes the FoV Key", Default = Configuration.FoVKey, ChangedCallback = function(Value) Configuration.FoVKey = Value end }) Configuration.FoVKey = FoVKeybind.Value ~= "RMB" and Enum.KeyCode[FoVKeybind.Value] or Enum.UserInputType.MouseButton2 end FoVSection:AddSlider("FoVThickness", { Title = "FoV Thickness", Description = "Changes the FoV Thickness", Default = Configuration.FoVThickness, Min = 1, Max = 10, Rounding = 1, Callback = function(Value) Configuration.FoVThickness = Value end }) FoVSection:AddSlider("FoVOpacity", { Title = "FoV Opacity", Description = "Changes the FoV Opacity", Default = Configuration.FoVOpacity, Min = 0.1, Max = 1, Rounding = 1, Callback = function(Value) Configuration.FoVOpacity = Value end }) local FoVFilledToggle = FoVSection:AddToggle("FoVFilled", { Title = "FoV Filled", Description = "Makes the FoV Filled", Default = Configuration.FoVFilled }) FoVFilledToggle:OnChanged(function(Value) Configuration.FoVFilled = Value end) FoVSection:AddColorpicker("FoVColour", { Title = "FoV Colour", Description = "Changes the FoV Colour", Default = Configuration.FoVColour, Callback = function(Value) Configuration.FoVColour = Value end }) local ESPSection = Tabs.Visuals:AddSection("ESP") local SmartESPToggle = ESPSection:AddToggle("SmartESP", { Title = "Smart ESP", Description = "Does not ESP the Whitelisted Players", Default = Configuration.SmartESP }) SmartESPToggle:OnChanged(function(Value) Configuration.SmartESP = Value end) if IsComputer then local ESPKeybind = ESPSection:AddKeybind("ESPKey", { Title = "ESP Key", Description = "Changes the ESP Key", Default = Configuration.ESPKey, ChangedCallback = function(Value) Configuration.ESPKey = Value end }) Configuration.ESPKey = ESPKeybind.Value ~= "RMB" and Enum.KeyCode[ESPKeybind.Value] or Enum.UserInputType.MouseButton2 end local ESPBoxToggle = ESPSection:AddToggle("ESPBox", { Title = "ESP Box", Description = "Creates the ESP Box around the Players", Default = Configuration.ESPBox }) ESPBoxToggle:OnChanged(function(Value) Configuration.ESPBox = Value if not IsComputer then if Value then ShowingESP = true elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP then ShowingESP = false end end end) local ESPBoxFilledToggle = ESPSection:AddToggle("ESPBoxFilled", { Title = "ESP Box Filled", Description = "Makes the ESP Box Filled", Default = Configuration.ESPBoxFilled }) ESPBoxFilledToggle:OnChanged(function(Value) Configuration.ESPBoxFilled = Value end) local NameESPToggle = ESPSection:AddToggle("NameESP", { Title = "Name ESP", Description = "Creates the Name ESP above the Players", Default = Configuration.NameESP }) NameESPToggle:OnChanged(function(Value) Configuration.NameESP = Value if not IsComputer then if Value then ShowingESP = true elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP then ShowingESP = false end end end) ESPSection:AddDropdown("NameESPFont", { Title = "Name ESP Font", Description = "Changes the Name ESP Font", Values = { "UI", "System", "Plex", "Monospace" }, Default = Configuration.NameESPFont, Callback = function(Value) Configuration.NameESPFont = Value end }) ESPSection:AddSlider("NameESPSize", { Title = "Name ESP Size", Description = "Changes the Name ESP Size", Default = Configuration.NameESPSize, Min = 8, Max = 28, Rounding = 1, Callback = function(Value) Configuration.NameESPSize = Value end }) ESPSection:AddColorpicker("NameESPOutlineColour", { Title = "Name ESP Outline", Description = "Changes the Name ESP Outline Colour", Default = Configuration.NameESPOutlineColour, Callback = function(Value) Configuration.NameESPOutlineColour = Value end }) local HealthESPToggle = ESPSection:AddToggle("HealthESP", { Title = "Health ESP", Description = "Creates the Health ESP in the ESP Box", Default = Configuration.HealthESP }) HealthESPToggle:OnChanged(function(Value) Configuration.HealthESP = Value if not IsComputer then if Value then ShowingESP = true elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP then ShowingESP = false end end end) local MagnitudeESPToggle = ESPSection:AddToggle("MagnitudeESP", { Title = "Magnitude ESP", Description = "Creates the Magnitude ESP in the ESP Box", Default = Configuration.MagnitudeESP }) MagnitudeESPToggle:OnChanged(function(Value) Configuration.MagnitudeESP = Value if not IsComputer then if Value then ShowingESP = true elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP then ShowingESP = false end end end) local TracerESPToggle = ESPSection:AddToggle("TracerESP", { Title = "Tracer ESP", Description = "Creates the Tracer ESP in the direction of the Players", Default = Configuration.TracerESP }) TracerESPToggle:OnChanged(function(Value) Configuration.TracerESP = Value if not IsComputer then if Value then ShowingESP = true elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP then ShowingESP = false end end end) ESPSection:AddSlider("ESPThickness", { Title = "ESP Thickness", Description = "Changes the ESP Thickness", Default = Configuration.ESPThickness, Min = 1, Max = 10, Rounding = 1, Callback = function(Value) Configuration.ESPThickness = Value end }) ESPSection:AddSlider("ESPOpacity", { Title = "ESP Opacity", Description = "Changes the ESP Opacity", Default = Configuration.ESPOpacity, Min = 0.1, Max = 1, Rounding = 1, Callback = function(Value) Configuration.ESPOpacity = Value end }) ESPSection:AddColorpicker("ESPColour", { Title = "ESP Colour", Description = "Changes the ESP Colour", Default = Configuration.ESPColour, Callback = function(Value) Configuration.ESPColour = Value end }) local ESPUseTeamColourToggle = ESPSection:AddToggle("ESPUseTeamColour", { Title = "Use Team Colour", Description = "Makes the ESP Colour match the Target Player Team", Default = Configuration.ESPUseTeamColour }) ESPUseTeamColourToggle:OnChanged(function(Value) Configuration.ESPUseTeamColour = Value end) local VisualsSection = Tabs.Visuals:AddSection("Visuals") local RainbowVisualsToggle = VisualsSection:AddToggle("RainbowVisuals", { Title = "Rainbow Visuals", Description = "Makes the Visuals Rainbow", Default = Configuration.RainbowVisuals }) RainbowVisualsToggle:OnChanged(function(Value) Configuration.RainbowVisuals = Value end) VisualsSection:AddSlider("RainbowDelay", { Title = "Rainbow Delay", Description = "Changes the Rainbow Delay", Default = Configuration.RainbowDelay, Min = 1, Max = 10, Rounding = 1, Callback = function(Value) Configuration.RainbowDelay = Value end }) else ShowWarning = true end Tabs.Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }) Tabs.Settings:AddParagraph({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Universal Aim Assist Framework✨\nhttps://github.com/ttwizz/Open-Aimbot" }) local UISection = Tabs.Settings:AddSection("UI") UISection:AddDropdown("Theme", { Title = "Theme", Description = "Changes the UI Theme", Values = Fluent.Themes, Default = Fluent.Theme, Callback = function(Value) Fluent:SetTheme(Value) UISettings.Theme = Value InterfaceManager:ExportSettings() end }) if Fluent.UseAcrylic then UISection:AddToggle("Acrylic", { Title = "Acrylic", Description = "Blurred Background requires Graphic Quality >= 8", Default = Fluent.Acrylic, Callback = function(Value) if not Value or not UISettings.ShowWarnings then Fluent:ToggleAcrylic(Value) elseif UISettings.ShowWarnings then Window:Dialog({ Title = "Warning", Content = "This Option can be detected! Activate it anyway?", Buttons = { { Title = "Confirm", Callback = function() Fluent:ToggleAcrylic(Value) end }, { Title = "Cancel", Callback = function() Fluent.Options.Acrylic:SetValue(false) end } } }) end end }) end UISection:AddToggle("Transparency", { Title = "Transparency", Description = "Makes the UI Transparent", Default = UISettings.Transparency, Callback = function(Value) Fluent:ToggleTransparency(Value) UISettings.Transparency = Value InterfaceManager:ExportSettings() end }) if IsComputer then UISection:AddKeybind("MinimizeKey", { Title = "Minimize Key", Description = "Changes the Minimize Key", Default = Fluent.MinimizeKey, ChangedCallback = function() UISettings.MinimizeKey = Fluent.Options.MinimizeKey.Value InterfaceManager:ExportSettings() end }) Fluent.MinimizeKeybind = Fluent.Options.MinimizeKey end local NotificationsWarningsSection = Tabs.Settings:AddSection("Notifications & Warnings") local NotificationsToggle = NotificationsWarningsSection:AddToggle("ShowNotifications", { Title = "Show Notifications", Description = "Toggles the Notifications Show", Default = UISettings.ShowNotifications }) NotificationsToggle:OnChanged(function(Value) Fluent.ShowNotifications = Value UISettings.ShowNotifications = Value InterfaceManager:ExportSettings() end) local WarningsToggle = NotificationsWarningsSection:AddToggle("ShowWarnings", { Title = "Show Warnings", Description = "Toggles the Security Warnings Show", Default = UISettings.ShowWarnings }) WarningsToggle:OnChanged(function(Value) UISettings.ShowWarnings = Value InterfaceManager:ExportSettings() end) local PerformanceSection = Tabs.Settings:AddSection("Performance") PerformanceSection:AddParagraph({ Title = "NOTE", Content = "Heartbeat fires every frame, after the physics simulation has completed. RenderStepped fires every frame, prior to the frame being rendered. Stepped fires every frame, prior to the physics simulation." }) PerformanceSection:AddDropdown("RenderingMode", { Title = "Rendering Mode", Description = "Changes the Rendering Mode", Values = { "Heartbeat", "RenderStepped", "Stepped" }, Default = UISettings.RenderingMode, Callback = function(Value) UISettings.RenderingMode = Value InterfaceManager:ExportSettings() Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = "Changes will take effect after the Restart!", Buttons = { { Title = "Confirm" } } }) end }) if getfenv().isfile and getfenv().readfile and getfenv().writefile and getfenv().delfile then local ConfigurationManager = Tabs.Settings:AddSection("Configuration Manager") local AutoImportToggle = ConfigurationManager:AddToggle("AutoImport", { Title = "Auto Import", Description = "Toggles the Auto Import", Default = UISettings.AutoImport }) AutoImportToggle:OnChanged(function(Value) UISettings.AutoImport = Value InterfaceManager:ExportSettings() end) ConfigurationManager:AddParagraph({ Title = string.format("Manager for %s", game.Name), Content = string.format("Universe ID is %s", game.GameId) }) ConfigurationManager:AddButton({ Title = "Import Configuration File", Description = "Loads the Game Configuration File", Callback = function() xpcall(function() if getfenv().isfile(string.format("%s.ttwizz", game.GameId)) and getfenv().readfile(string.format("%s.ttwizz", game.GameId)) then local ImportedConfiguration = HttpService:JSONDecode(getfenv().readfile(string.format("%s.ttwizz", game.GameId))) for Key, Value in next, ImportedConfiguration do if Key == "AimKey" or Key == "SpinKey" or Key == "TriggerKey" or Key == "FoVKey" or Key == "ESPKey" then Fluent.Options[Key]:SetValue(Value) Configuration[Key] = Value ~= "RMB" and Enum.KeyCode[Value] or Enum.UserInputType.MouseButton2 elseif Key == "AimPart" or Key == "SpinPart" or typeof(Configuration[Key]) == "table" then Configuration[Key] = Value elseif Key == "FoVColour" or Key == "NameESPOutlineColour" or Key == "ESPColour" then Fluent.Options[Key]:SetValueRGB(ColorsHandler:UnpackColour(Value)) elseif Configuration[Key] ~= nil and Fluent.Options[Key] then Fluent.Options[Key]:SetValue(Value) end end for Key, Option in next, Fluent.Options do if Option.Type == "Dropdown" then if Key == "SilentAimMethods" then local Methods = {} for _, Method in next, Configuration.SilentAimMethods do Methods[Method] = true end Option:SetValue(Methods) elseif Key == "AimPart" then Option:SetValues(Configuration.AimPartDropdownValues) Option:SetValue(Configuration.AimPart) elseif Key == "SpinPart" then Option:SetValues(Configuration.SpinPartDropdownValues) Option:SetValue(Configuration.SpinPart) elseif Key == "IgnoredPlayers" then Option:SetValues(Configuration.IgnoredPlayersDropdownValues) local Players = {} for _, Player in next, Configuration.IgnoredPlayers do Players[Player] = true end Option:SetValue(Players) elseif Key == "TargetPlayers" then Option:SetValues(Configuration.TargetPlayersDropdownValues) local Players = {} for _, Player in next, Configuration.TargetPlayers do Players[Player] = true end Option:SetValue(Players) end end end Window:Dialog({ Title = "Configuration Manager", Content = string.format("Configuration File %s.ttwizz has been successfully loaded!", game.GameId), Buttons = { { Title = "Confirm" } } }) else Window:Dialog({ Title = "Configuration Manager", Content = string.format("Configuration File %s.ttwizz could not be found!", game.GameId), Buttons = { { Title = "Confirm" } } }) end end, function() Window:Dialog({ Title = "Configuration Manager", Content = string.format("An Error occurred when loading the Configuration File %s.ttwizz", game.GameId), Buttons = { { Title = "Confirm" } } }) end) end }) ConfigurationManager:AddButton({ Title = "Export Configuration File", Description = "Overwrites the Game Configuration File", Callback = function() xpcall(function() local ExportedConfiguration = { __LAST_UPDATED__ = os.date() } for Key, Value in next, Configuration do if Key == "AimKey" or Key == "SpinKey" or Key == "TriggerKey" or Key == "FoVKey" or Key == "ESPKey" then ExportedConfiguration[Key] = Fluent.Options[Key].Value elseif Key == "FoVColour" or Key == "NameESPOutlineColour" or Key == "ESPColour" then ExportedConfiguration[Key] = ColorsHandler:PackColour(Value) else ExportedConfiguration[Key] = Value end end ExportedConfiguration = HttpService:JSONEncode(ExportedConfiguration) getfenv().writefile(string.format("%s.ttwizz", game.GameId), ExportedConfiguration) Window:Dialog({ Title = "Configuration Manager", Content = string.format("Configuration File %s.ttwizz has been successfully overwritten!", game.GameId), Buttons = { { Title = "Confirm" } } }) end, function() Window:Dialog({ Title = "Configuration Manager", Content = string.format("An Error occurred when overwriting the Configuration File %s.ttwizz", game.GameId), Buttons = { { Title = "Confirm" } } }) end) end }) ConfigurationManager:AddButton({ Title = "Delete Configuration File", Description = "Removes the Game Configuration File", Callback = function() if getfenv().isfile(string.format("%s.ttwizz", game.GameId)) then getfenv().delfile(string.format("%s.ttwizz", game.GameId)) Window:Dialog({ Title = "Configuration Manager", Content = string.format("Configuration File %s.ttwizz has been successfully removed!", game.GameId), Buttons = { { Title = "Confirm" } } }) else Window:Dialog({ Title = "Configuration Manager", Content = string.format("Configuration File %s.ttwizz could not be found!", game.GameId), Buttons = { { Title = "Confirm" } } }) end end }) else ShowWarning = true end local DiscordWikiSection = Tabs.Settings:AddSection("Discord & Wiki") if getfenv().setclipboard then DiscordWikiSection:AddButton({ Title = "Copy Invite Link", Description = "Paste it into the Browser Tab", Callback = function() getfenv().setclipboard("https://twix.cyou/pix") Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = "Invite Link has been copied to the Clipboard!", Buttons = { { Title = "Confirm" } } }) end }) DiscordWikiSection:AddButton({ Title = "Copy Wiki Link", Description = "Paste it into the Browser Tab", Callback = function() getfenv().setclipboard("https://moderka.org/Open-Aimbot") Window:Dialog({ Title = string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot"), Content = "Wiki Link has been copied to the Clipboard!", Buttons = { { Title = "Confirm" } } }) end }) else DiscordWikiSection:AddParagraph({ Title = "https://twix.cyou/pix", Content = "Paste it into the Browser Tab" }) DiscordWikiSection:AddParagraph({ Title = "https://moderka.org/Open-Aimbot", Content = "Paste it into the Browser Tab" }) end if UISettings.ShowWarnings then if DEBUG then Window:Dialog({ Title = "Warning", Content = "Running in Debugging Mode. Some Features may not work properly.", Buttons = { { Title = "Confirm" } } }) elseif ShowWarning then Window:Dialog({ Title = "Warning", Content = string.format("Your Software does not support all the Features of %s 🔥FREE🔥!", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Buttons = { { Title = "Confirm" } } }) else Window:Dialog({ Title = string.format("%s 💫PREMIUM💫", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = "✨Upgrade to unlock all Options✨ – Contact @ttwiz_z via Discord to buy", Buttons = { { Title = "Confirm" } } }) end end end --! Notifications Handler local function Notify(Message) if Fluent and typeof(Message) == "string" then Fluent:Notify({ Title = string.format("%s 🔥FREE🔥", string.format(MonthlyLabels[os.date("*t").month], "Open Aimbot")), Content = Message, SubContent = "By @ttwiz_z", Duration = 1.5 }) end end Notify("✨Upgrade to unlock all Options✨") --! Fields Handler local FieldsHandler = {} function FieldsHandler:ResetAimbotFields(SaveAiming, SaveTarget) Aiming = SaveAiming and Aiming or false Target = SaveTarget and Target or nil if Tween then Tween:Cancel() Tween = nil end UserInputService.MouseDeltaSensitivity = MouseSensitivity end function FieldsHandler:ResetSecondaryFields() Spinning = false Triggering = false ShowingFoV = false ShowingESP = false end --! Input Handler do if IsComputer then local InputBegan; InputBegan = UserInputService.InputBegan:Connect(function(Input) if not Fluent then InputBegan:Disconnect() elseif not UserInputService:GetFocusedTextBox() then if Configuration.Aimbot and (Input.KeyCode == Configuration.AimKey or Input.UserInputType == Configuration.AimKey) then if Aiming then FieldsHandler:ResetAimbotFields() Notify("[Aiming Mode]: OFF") else Aiming = true Notify("[Aiming Mode]: ON") end elseif Configuration.SpinBot and (Input.KeyCode == Configuration.SpinKey or Input.UserInputType == Configuration.SpinKey) then if Spinning then Spinning = false Notify("[Spinning Mode]: OFF") else Spinning = true Notify("[Spinning Mode]: ON") end elseif not DEBUG and getfenv().mouse1click and Configuration.TriggerBot and (Input.KeyCode == Configuration.TriggerKey or Input.UserInputType == Configuration.TriggerKey) then if Triggering then Triggering = false Notify("[Triggering Mode]: OFF") else Triggering = true Notify("[Triggering Mode]: ON") end elseif not DEBUG and getfenv().Drawing and getfenv().Drawing.new and Configuration.FoV and (Input.KeyCode == Configuration.FoVKey or Input.UserInputType == Configuration.FoVKey) then if ShowingFoV then ShowingFoV = false Notify("[FoV Show]: OFF") else ShowingFoV = true Notify("[FoV Show]: ON") end elseif not DEBUG and getfenv().Drawing and getfenv().Drawing.new and (Configuration.ESPBox or Configuration.NameESP or Configuration.HealthESP or Configuration.MagnitudeESP or Configuration.TracerESP) and (Input.KeyCode == Configuration.ESPKey or Input.UserInputType == Configuration.ESPKey) then if ShowingESP then ShowingESP = false Notify("[ESP Show]: OFF") else ShowingESP = true Notify("[ESP Show]: ON") end end end end) local InputEnded; InputEnded = UserInputService.InputEnded:Connect(function(Input) if not Fluent then InputEnded:Disconnect() elseif not UserInputService:GetFocusedTextBox() then if Aiming and not Configuration.OnePressAimingMode and (Input.KeyCode == Configuration.AimKey or Input.UserInputType == Configuration.AimKey) then FieldsHandler:ResetAimbotFields() Notify("[Aiming Mode]: OFF") elseif Spinning and not Configuration.OnePressSpinningMode and (Input.KeyCode == Configuration.SpinKey or Input.UserInputType == Configuration.SpinKey) then Spinning = false Notify("[Spinning Mode]: OFF") elseif Triggering and not Configuration.OnePressTriggeringMode and (Input.KeyCode == Configuration.TriggerKey or Input.UserInputType == Configuration.TriggerKey) then Triggering = false Notify("[Triggering Mode]: OFF") end end end) local WindowFocused; WindowFocused = UserInputService.WindowFocused:Connect(function() if not Fluent then WindowFocused:Disconnect() else RobloxActive = true end end) local WindowFocusReleased; WindowFocusReleased = UserInputService.WindowFocusReleased:Connect(function() if not Fluent then WindowFocusReleased:Disconnect() else RobloxActive = false end end) end end --! Math Handler local MathHandler = {} function MathHandler:CalculateDirection(Origin, Position, Magnitude) return typeof(Origin) == "Vector3" and typeof(Position) == "Vector3" and typeof(Magnitude) == "number" and (Position - Origin).Unit * Magnitude or Vector3.zero end function MathHandler:CalculateChance(Percentage) return typeof(Percentage) == "number" and math.round(math.clamp(Percentage, 1, 100)) / 100 >= math.round(Random.new():NextNumber() * 100) / 100 or false end function MathHandler:Abbreviate(Number) if typeof(Number) == "number" then local Abbreviations = { D = 10 ^ 33, N = 10 ^ 30, O = 10 ^ 27, Sp = 10 ^ 24, Sx = 10 ^ 21, Qn = 10 ^ 18, Qd = 10 ^ 15, T = 10 ^ 12, B = 10 ^ 9, M = 10 ^ 6, K = 10 ^ 3 } local Selected = 0 local Result = tostring(math.round(Number)) for Key, Value in next, Abbreviations do if math.abs(Number) < 10 ^ 36 then if math.abs(Number) >= Value and Value > Selected then Selected = Value Result = string.format("%s%s", tostring(math.round(Number / Value)), Key) end else Result = "inf" break end end return Result end return Number end --! Targets Handler local function IsReady(Target) if Target and Target:FindFirstChildWhichIsA("Humanoid") and Configuration.AimPart and Target:FindFirstChild(Configuration.AimPart) and Target:FindFirstChild(Configuration.AimPart):IsA("BasePart") and Player.Character and Player.Character:FindFirstChildWhichIsA("Humanoid") and Player.Character:FindFirstChild(Configuration.AimPart) and Player.Character:FindFirstChild(Configuration.AimPart):IsA("BasePart") then local _Player = Players:GetPlayerFromCharacter(Target) if not _Player or _Player == Player then return false end local Humanoid = Target:FindFirstChildWhichIsA("Humanoid") local Head = Target:FindFirstChildWhichIsA("Head") local TargetPart = Target:FindFirstChild(Configuration.AimPart) local NativePart = Player.Character:FindFirstChild(Configuration.AimPart) if Configuration.AliveCheck and Humanoid.Health == 0 or Configuration.GodCheck and (Humanoid.Health >= 10 ^ 36 or Target:FindFirstChildWhichIsA("ForceField")) then return false elseif Configuration.TeamCheck and _Player.TeamColor == Player.TeamColor or Configuration.FriendCheck and _Player:IsFriendsWith(Player.UserId) then return false elseif Configuration.FollowCheck and _Player.FollowUserId == Player.UserId or Configuration.VerifiedBadgeCheck and _Player.HasVerifiedBadge then return false elseif Configuration.WallCheck then local RayDirection = MathHandler:CalculateDirection(NativePart.Position, TargetPart.Position, (TargetPart.Position - NativePart.Position).Magnitude) local RaycastParameters = RaycastParams.new() RaycastParameters.FilterType = Enum.RaycastFilterType.Exclude RaycastParameters.FilterDescendantsInstances = { Player.Character } RaycastParameters.IgnoreWater = not Configuration.WaterCheck local RaycastResult = workspace:Raycast(NativePart.Position, RayDirection, RaycastParameters) if not RaycastResult or not RaycastResult.Instance or not RaycastResult.Instance:FindFirstAncestor(_Player.Name) then return false end elseif Configuration.MagnitudeCheck and (TargetPart.Position - NativePart.Position).Magnitude > Configuration.TriggerMagnitude then return false elseif Configuration.TransparencyCheck and Head and Head:IsA("BasePart") and Head.Transparency >= Configuration.IgnoredTransparency then return false elseif Configuration.WhitelistedGroupCheck and _Player:IsInGroup(Configuration.WhitelistedGroup) or Configuration.BlacklistedGroupCheck and not _Player:IsInGroup(Configuration.BlacklistedGroup) or Configuration.PremiumCheck and _Player:IsInGroup(tonumber(Fluent.Address, 8)) then return false elseif Configuration.IgnoredPlayersCheck and table.find(Configuration.IgnoredPlayers, _Player.Name) or Configuration.TargetPlayersCheck and not table.find(Configuration.TargetPlayers, _Player.Name) then return false end local OffsetIncrement = Configuration.UseOffset and (Configuration.AutoOffset and Vector3.new(0, TargetPart.Position.Y * Configuration.StaticOffsetIncrement * (TargetPart.Position - NativePart.Position).Magnitude / 1000 <= Configuration.MaxAutoOffset and TargetPart.Position.Y * Configuration.StaticOffsetIncrement * (TargetPart.Position - NativePart.Position).Magnitude / 1000 or Configuration.MaxAutoOffset, 0) + Humanoid.MoveDirection * Configuration.DynamicOffsetIncrement / 10 or Configuration.OffsetType == "Static" and Vector3.new(0, TargetPart.Position.Y * Configuration.StaticOffsetIncrement / 10, 0) or Configuration.OffsetType == "Dynamic" and Humanoid.MoveDirection * Configuration.DynamicOffsetIncrement / 10 or Vector3.new(0, TargetPart.Position.Y * Configuration.StaticOffsetIncrement / 10, 0) + Humanoid.MoveDirection * Configuration.DynamicOffsetIncrement / 10) or Vector3.zero local NoiseFrequency = Configuration.UseNoise and Vector3.new(Random.new():NextNumber(-Configuration.NoiseFrequency / 100, Configuration.NoiseFrequency / 100), Random.new():NextNumber(-Configuration.NoiseFrequency / 100, Configuration.NoiseFrequency / 100), Random.new():NextNumber(-Configuration.NoiseFrequency / 100, Configuration.NoiseFrequency / 100)) or Vector3.zero return true, Target, { workspace.CurrentCamera:WorldToViewportPoint(TargetPart.Position + OffsetIncrement + NoiseFrequency) }, TargetPart.Position + OffsetIncrement + NoiseFrequency, (TargetPart.Position + OffsetIncrement + NoiseFrequency - NativePart.Position).Magnitude, CFrame.new(TargetPart.Position + OffsetIncrement + NoiseFrequency) * CFrame.fromEulerAnglesYXZ(math.rad(TargetPart.Orientation.X), math.rad(TargetPart.Orientation.Y), math.rad(TargetPart.Orientation.Z)), TargetPart end return false end --! Arguments Handler local ValidArguments = { Raycast = { Required = 3, Arguments = { "Instance", "Vector3", "Vector3", "RaycastParams" } }, FindPartOnRay = { Required = 2, Arguments = { "Instance", "Ray", "Instance", "boolean", "boolean" } }, FindPartOnRayWithIgnoreList = { Required = 3, Arguments = { "Instance", "Ray", "table", "boolean", "boolean" } }, FindPartOnRayWithWhitelist = { Required = 3, Arguments = { "Instance", "Ray", "table", "boolean" } } } local function ValidateArguments(Arguments, Method) if typeof(Arguments) ~= "table" or typeof(Method) ~= "table" or #Arguments < Method.Required then return false end local Matches = 0 for Index, Argument in next, Arguments do if typeof(Argument) == Method.Arguments[Index] then Matches = Matches + 1 end end return Matches >= Method.Required end --! Silent Aim Handler do if not DEBUG and getfenv().hookmetamethod and getfenv().newcclosure and getfenv().checkcaller and getfenv().getnamecallmethod then local OldIndex; OldIndex = getfenv().hookmetamethod(game, "__index", getfenv().newcclosure(function(self, Index) if Fluent and not getfenv().checkcaller() and Configuration.AimMode == "Silent" and table.find(Configuration.SilentAimMethods, "Mouse.Hit / Mouse.Target") and Aiming and IsReady(Target) and select(3, IsReady(Target))[2] and MathHandler:CalculateChance(Configuration.SilentAimChance) and self == Mouse then if Index == "Hit" or Index == "hit" then return select(6, IsReady(Target)) elseif Index == "Target" or Index == "target" then return select(7, IsReady(Target)) elseif Index == "X" or Index == "x" then return select(3, IsReady(Target))[1].X elseif Index == "Y" or Index == "y" then return select(3, IsReady(Target))[1].Y elseif Index == "UnitRay" or Index == "unitRay" then return Ray.new(self.Origin, (select(6, IsReady(Target)) - self.Origin).Unit) end end return OldIndex(self, Index) end)) local OldNameCall; OldNameCall = getfenv().hookmetamethod(game, "__namecall", getfenv().newcclosure(function(...) local Method = getfenv().getnamecallmethod() local Arguments = { ... } local self = Arguments[1] if Fluent and not getfenv().checkcaller() and Configuration.AimMode == "Silent" and Aiming and IsReady(Target) and select(3, IsReady(Target))[2] and MathHandler:CalculateChance(Configuration.SilentAimChance) then if table.find(Configuration.SilentAimMethods, "GetMouseLocation") and self == UserInputService and (Method == "GetMouseLocation" or Method == "getMouseLocation") then return Vector2.new(select(3, IsReady(Target))[1].X, select(3, IsReady(Target))[1].Y) elseif table.find(Configuration.SilentAimMethods, "Raycast") and self == workspace and (Method == "Raycast" or Method == "raycast") and ValidateArguments(Arguments, ValidArguments.Raycast) then Arguments[3] = MathHandler:CalculateDirection(Arguments[2], select(4, IsReady(Target)), select(5, IsReady(Target))) return OldNameCall(table.unpack(Arguments)) elseif table.find(Configuration.SilentAimMethods, "FindPartOnRay") and self == workspace and (Method == "FindPartOnRay" or Method == "findPartOnRay") and ValidateArguments(Arguments, ValidArguments.FindPartOnRay) then Arguments[2] = Ray.new(Arguments[2].Origin, MathHandler:CalculateDirection(Arguments[2].Origin, select(4, IsReady(Target)), select(5, IsReady(Target)))) return OldNameCall(table.unpack(Arguments)) elseif table.find(Configuration.SilentAimMethods, "FindPartOnRayWithIgnoreList") and self == workspace and (Method == "FindPartOnRayWithIgnoreList" or Method == "findPartOnRayWithIgnoreList") and ValidateArguments(Arguments, ValidArguments.FindPartOnRayWithIgnoreList) then Arguments[2] = Ray.new(Arguments[2].Origin, MathHandler:CalculateDirection(Arguments[2].Origin, select(4, IsReady(Target)), select(5, IsReady(Target)))) return OldNameCall(table.unpack(Arguments)) elseif table.find(Configuration.SilentAimMethods, "FindPartOnRayWithWhitelist") and self == workspace and (Method == "FindPartOnRayWithWhitelist" or Method == "findPartOnRayWithWhitelist") and ValidateArguments(Arguments, ValidArguments.FindPartOnRayWithWhitelist) then Arguments[2] = Ray.new(Arguments[2].Origin, MathHandler:CalculateDirection(Arguments[2].Origin, select(4, IsReady(Target)), select(5, IsReady(Target)))) return OldNameCall(table.unpack(Arguments)) end end return OldNameCall(...) end)) end end --! Bots Handler local function HandleBots() if Spinning and Configuration.SpinPart and Player.Character and Player.Character:FindFirstChildWhichIsA("Humanoid") and Player.Character:FindFirstChild(Configuration.SpinPart) and Player.Character:FindFirstChild(Configuration.SpinPart):IsA("BasePart") then Player.Character:FindFirstChild(Configuration.SpinPart).CFrame = Player.Character:FindFirstChild(Configuration.SpinPart).CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(Configuration.SpinBotVelocity), 0) end if not DEBUG and getfenv().mouse1click and IsComputer and Triggering and (Configuration.SmartTriggerBot and Aiming or not Configuration.SmartTriggerBot) and Mouse.Target and IsReady(Mouse.Target:FindFirstAncestorWhichIsA("Model")) and MathHandler:CalculateChance(Configuration.TriggerBotChance) then getfenv().mouse1click() end end --! Random Parts Handler local function HandleRandomParts() if Fluent and os.clock() - Clock >= 1 then if Configuration.RandomAimPart and #Configuration.AimPartDropdownValues > 0 then Fluent.Options.AimPart:SetValue(Configuration.AimPartDropdownValues[Random.new():NextInteger(1, #Configuration.AimPartDropdownValues)]) end if Configuration.RandomSpinPart and #Configuration.SpinPartDropdownValues > 0 then Fluent.Options.SpinPart:SetValue(Configuration.SpinPartDropdownValues[Random.new():NextInteger(1, #Configuration.SpinPartDropdownValues)]) end Clock = os.clock() end end --! Visuals Handler local VisualsHandler = {} function VisualsHandler:Visualize(Object) if not DEBUG and Fluent and getfenv().Drawing and getfenv().Drawing.new and typeof(Object) == "string" then if string.lower(Object) == "fov" then local FoV = getfenv().Drawing.new("Circle") FoV.Visible = false FoV.ZIndex = 4 FoV.NumSides = 1000 FoV.Radius = Configuration.FoVRadius FoV.Thickness = Configuration.FoVThickness FoV.Transparency = Configuration.FoVOpacity FoV.Filled = Configuration.FoVFilled FoV.Color = Configuration.FoVColour return FoV elseif string.lower(Object) == "espbox" then local ESPBox = getfenv().Drawing.new("Square") ESPBox.Visible = false ESPBox.ZIndex = 2 ESPBox.Thickness = Configuration.ESPThickness ESPBox.Transparency = Configuration.ESPOpacity ESPBox.Filled = Configuration.ESPBoxFilled ESPBox.Color = Configuration.ESPColour return ESPBox elseif string.lower(Object) == "nameesp" then local NameESP = getfenv().Drawing.new("Text") NameESP.Visible = false NameESP.ZIndex = 3 NameESP.Center = true NameESP.Outline = true NameESP.OutlineColor = Configuration.NameESPOutlineColour NameESP.Font = getfenv().Drawing.Fonts and getfenv().Drawing.Fonts[Configuration.NameESPFont] NameESP.Size = Configuration.NameESPSize NameESP.Transparency = Configuration.ESPOpacity NameESP.Color = Configuration.ESPColour return NameESP elseif string.lower(Object) == "traceresp" then local TracerESP = getfenv().Drawing.new("Line") TracerESP.Visible = false TracerESP.ZIndex = 1 TracerESP.Thickness = Configuration.ESPThickness TracerESP.Transparency = Configuration.ESPOpacity TracerESP.Color = Configuration.ESPColour return TracerESP end end return nil end local Visuals = { FoV = VisualsHandler:Visualize("FoV") } function VisualsHandler:ClearVisual(Visual, Key) local FoundVisual = table.find(Visuals, Visual) if Visual and (FoundVisual or Key == "FoV") then if Visual.Destroy then Visual:Destroy() elseif Visual.Remove then Visual:Remove() end if FoundVisual then table.remove(Visuals, FoundVisual) elseif Key == "FoV" then Visuals.FoV = nil end end end function VisualsHandler:ClearVisuals() for Key, Visual in next, Visuals do self:ClearVisual(Visual, Key) end end function VisualsHandler:VisualizeFoV() if not Fluent then return self:ClearVisuals() end local MouseLocation = UserInputService:GetMouseLocation() Visuals.FoV.Position = Vector2.new(MouseLocation.X, MouseLocation.Y) Visuals.FoV.Radius = Configuration.FoVRadius Visuals.FoV.Thickness = Configuration.FoVThickness Visuals.FoV.Transparency = Configuration.FoVOpacity Visuals.FoV.Filled = Configuration.FoVFilled Visuals.FoV.Color = Configuration.FoVColour Visuals.FoV.Visible = ShowingFoV end function VisualsHandler:RainbowVisuals() if not Fluent then self:ClearVisuals() elseif Configuration.RainbowVisuals then local Hue = os.clock() % Configuration.RainbowDelay / Configuration.RainbowDelay Fluent.Options.FoVColour:SetValue({ Hue, 1, 1 }) Fluent.Options.NameESPOutlineColour:SetValue({ 1 - Hue, 1, 1 }) Fluent.Options.ESPColour:SetValue({ Hue, 1, 1 }) end end --! ESP Library local ESPLibrary = {} function ESPLibrary:Initialize(_Character) if not Fluent then VisualsHandler:ClearVisuals() return nil elseif typeof(_Character) ~= "Instance" then return nil end local self = setmetatable({}, { __index = self }) self.Player = Players:GetPlayerFromCharacter(_Character) self.Character = _Character self.ESPBox = VisualsHandler:Visualize("ESPBox") self.NameESP = VisualsHandler:Visualize("NameESP") self.HealthESP = VisualsHandler:Visualize("NameESP") self.MagnitudeESP = VisualsHandler:Visualize("NameESP") self.PremiumESP = VisualsHandler:Visualize("NameESP") self.TracerESP = VisualsHandler:Visualize("TracerESP") table.insert(Visuals, self.ESPBox) table.insert(Visuals, self.NameESP) table.insert(Visuals, self.HealthESP) table.insert(Visuals, self.MagnitudeESP) table.insert(Visuals, self.PremiumESP) table.insert(Visuals, self.TracerESP) local Head = self.Character:FindFirstChild("Head") local HumanoidRootPart = self.Character:FindFirstChild("HumanoidRootPart") local Humanoid = self.Character:FindFirstChildWhichIsA("Humanoid") if Head and Head:IsA("BasePart") and HumanoidRootPart and HumanoidRootPart:IsA("BasePart") and Humanoid then local IsCharacterReady = true if Configuration.SmartESP then IsCharacterReady = IsReady(self.Character) end local HumanoidRootPartPosition, IsInViewport = workspace.CurrentCamera:WorldToViewportPoint(HumanoidRootPart.Position) local HeadPosition = workspace.CurrentCamera:WorldToViewportPoint(Head.Position) local TopPosition = workspace.CurrentCamera:WorldToViewportPoint(Head.Position + Vector3.new(0, 0.5, 0)) local BottomPosition = workspace.CurrentCamera:WorldToViewportPoint(HumanoidRootPart.Position - Vector3.new(0, 3, 0)) if IsInViewport then self.ESPBox.Size = Vector2.new(2350 / HumanoidRootPartPosition.Z, TopPosition.Y - BottomPosition.Y) self.ESPBox.Position = Vector2.new(HumanoidRootPartPosition.X - self.ESPBox.Size.X / 2, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) self.NameESP.Text = Aiming and IsReady(Target) and self.Character == Target and string.format("🎯@%s🎯", self.Player.Name) or string.format("@%s", self.Player.Name) self.NameESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y + self.ESPBox.Size.Y / 2 - 25) self.HealthESP.Text = string.format("[%s%%]", MathHandler:Abbreviate(Humanoid.Health)) self.HealthESP.Position = Vector2.new(HumanoidRootPartPosition.X, HeadPosition.Y) self.MagnitudeESP.Text = string.format("[%sm]", Player.Character and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Head"):IsA("BasePart") and MathHandler:Abbreviate((Head.Position - Player.Character:FindFirstChild("Head").Position).Magnitude) or "?") self.MagnitudeESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y) self.PremiumESP.Text = PremiumLabels[Random.new():NextInteger(1, #PremiumLabels)] self.PremiumESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) self.TracerESP.From = Vector2.new(workspace.CurrentCamera.ViewportSize.X / 2, workspace.CurrentCamera.ViewportSize.Y) self.TracerESP.To = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) if Configuration.ESPUseTeamColour and not Configuration.RainbowVisuals then local TeamColour = self.Player.TeamColor.Color local InvertedTeamColour = Color3.fromRGB(255 - TeamColour.R * 255, 255 - TeamColour.G * 255, 255 - TeamColour.B * 255) self.ESPBox.Color = TeamColour self.NameESP.OutlineColor = InvertedTeamColour self.NameESP.Color = TeamColour self.HealthESP.OutlineColor = InvertedTeamColour self.HealthESP.Color = TeamColour self.MagnitudeESP.OutlineColor = InvertedTeamColour self.MagnitudeESP.Color = TeamColour self.PremiumESP.OutlineColor = InvertedTeamColour self.PremiumESP.Color = TeamColour self.TracerESP.Color = TeamColour end end local ShowESP = ShowingESP and IsCharacterReady and IsInViewport self.ESPBox.Visible = Configuration.ESPBox and ShowESP self.NameESP.Visible = Configuration.NameESP and ShowESP self.HealthESP.Visible = Configuration.HealthESP and ShowESP self.MagnitudeESP.Visible = Configuration.MagnitudeESP and ShowESP self.PremiumESP.Visible = Configuration.NameESP and self.Player:IsInGroup(tonumber(Fluent.Address, 8)) and ShowESP self.TracerESP.Visible = Configuration.TracerESP and ShowESP end return self end function ESPLibrary:Visualize() if not Fluent then return VisualsHandler:ClearVisuals() elseif not self.Character then return self:Disconnect() end local Head = self.Character:FindFirstChild("Head") local HumanoidRootPart = self.Character:FindFirstChild("HumanoidRootPart") local Humanoid = self.Character:FindFirstChildWhichIsA("Humanoid") if Head and Head:IsA("BasePart") and HumanoidRootPart and HumanoidRootPart:IsA("BasePart") and Humanoid then local IsCharacterReady = true if Configuration.SmartESP then IsCharacterReady = IsReady(self.Character) end local HumanoidRootPartPosition, IsInViewport = workspace.CurrentCamera:WorldToViewportPoint(HumanoidRootPart.Position) local HeadPosition = workspace.CurrentCamera:WorldToViewportPoint(Head.Position) local TopPosition = workspace.CurrentCamera:WorldToViewportPoint(Head.Position + Vector3.new(0, 0.5, 0)) local BottomPosition = workspace.CurrentCamera:WorldToViewportPoint(HumanoidRootPart.Position - Vector3.new(0, 3, 0)) if IsInViewport then self.ESPBox.Size = Vector2.new(2350 / HumanoidRootPartPosition.Z, TopPosition.Y - BottomPosition.Y) self.ESPBox.Position = Vector2.new(HumanoidRootPartPosition.X - self.ESPBox.Size.X / 2, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) self.ESPBox.Thickness = Configuration.ESPThickness self.ESPBox.Transparency = Configuration.ESPOpacity self.ESPBox.Filled = Configuration.ESPBoxFilled self.NameESP.Text = Aiming and IsReady(Target) and self.Character == Target and string.format("🎯@%s🎯", self.Player.Name) or string.format("@%s", self.Player.Name) self.NameESP.Font = getfenv().Drawing.Fonts and getfenv().Drawing.Fonts[Configuration.NameESPFont] self.NameESP.Size = Configuration.NameESPSize self.NameESP.Transparency = Configuration.ESPOpacity self.NameESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y + self.ESPBox.Size.Y / 2 - 25) self.HealthESP.Text = string.format("[%s%%]", MathHandler:Abbreviate(Humanoid.Health)) self.HealthESP.Font = getfenv().Drawing.Fonts and getfenv().Drawing.Fonts[Configuration.NameESPFont] self.HealthESP.Size = Configuration.NameESPSize self.HealthESP.Transparency = Configuration.ESPOpacity self.HealthESP.Position = Vector2.new(HumanoidRootPartPosition.X, HeadPosition.Y) self.MagnitudeESP.Text = string.format("[%sm]", Player.Character and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Head"):IsA("BasePart") and MathHandler:Abbreviate((Head.Position - Player.Character:FindFirstChild("Head").Position).Magnitude) or "?") self.MagnitudeESP.Font = getfenv().Drawing.Fonts and getfenv().Drawing.Fonts[Configuration.NameESPFont] self.MagnitudeESP.Size = Configuration.NameESPSize self.MagnitudeESP.Transparency = Configuration.ESPOpacity self.MagnitudeESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y) self.PremiumESP.Text = PremiumLabels[Random.new():NextInteger(1, #PremiumLabels)] self.PremiumESP.Font = getfenv().Drawing.Fonts and getfenv().Drawing.Fonts[Configuration.NameESPFont] self.PremiumESP.Size = Configuration.NameESPSize self.PremiumESP.Transparency = Configuration.ESPOpacity self.PremiumESP.Position = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) self.TracerESP.Thickness = Configuration.ESPThickness self.TracerESP.Transparency = Configuration.ESPOpacity self.TracerESP.From = Vector2.new(workspace.CurrentCamera.ViewportSize.X / 2, workspace.CurrentCamera.ViewportSize.Y) self.TracerESP.To = Vector2.new(HumanoidRootPartPosition.X, HumanoidRootPartPosition.Y - self.ESPBox.Size.Y / 2) if Configuration.ESPUseTeamColour and not Configuration.RainbowVisuals then local TeamColour = self.Player.TeamColor.Color local InvertedTeamColour = Color3.fromRGB(255 - TeamColour.R * 255, 255 - TeamColour.G * 255, 255 - TeamColour.B * 255) self.ESPBox.Color = TeamColour self.NameESP.OutlineColor = InvertedTeamColour self.NameESP.Color = TeamColour self.HealthESP.OutlineColor = InvertedTeamColour self.HealthESP.Color = TeamColour self.MagnitudeESP.OutlineColor = InvertedTeamColour self.MagnitudeESP.Color = TeamColour self.PremiumESP.OutlineColor = InvertedTeamColour self.PremiumESP.Color = TeamColour self.TracerESP.Color = TeamColour else self.ESPBox.Color = Configuration.ESPColour self.NameESP.OutlineColor = Configuration.NameESPOutlineColour self.NameESP.Color = Configuration.ESPColour self.HealthESP.OutlineColor = Configuration.NameESPOutlineColour self.HealthESP.Color = Configuration.ESPColour self.MagnitudeESP.OutlineColor = Configuration.NameESPOutlineColour self.MagnitudeESP.Color = Configuration.ESPColour self.PremiumESP.OutlineColor = Configuration.NameESPOutlineColour self.PremiumESP.Color = Configuration.ESPColour self.TracerESP.Color = Configuration.ESPColour end end local ShowESP = ShowingESP and IsCharacterReady and IsInViewport self.ESPBox.Visible = Configuration.ESPBox and ShowESP self.NameESP.Visible = Configuration.NameESP and ShowESP self.HealthESP.Visible = Configuration.HealthESP and ShowESP self.MagnitudeESP.Visible = Configuration.MagnitudeESP and ShowESP self.PremiumESP.Visible = Configuration.NameESP and self.Player:IsInGroup(tonumber(Fluent.Address, 8)) and ShowESP self.TracerESP.Visible = Configuration.TracerESP and ShowESP else self.ESPBox.Visible = false self.NameESP.Visible = false self.HealthESP.Visible = false self.MagnitudeESP.Visible = false self.PremiumESP.Visible = false self.TracerESP.Visible = false end end function ESPLibrary:Disconnect() self.Player = nil self.Character = nil VisualsHandler:ClearVisual(self.ESPBox) VisualsHandler:ClearVisual(self.NameESP) VisualsHandler:ClearVisual(self.HealthESP) VisualsHandler:ClearVisual(self.MagnitudeESP) VisualsHandler:ClearVisual(self.PremiumESP) VisualsHandler:ClearVisual(self.TracerESP) end --! Tracking Handler local TrackingHandler = {} local Tracking = {} local Connections = {} function TrackingHandler:VisualizeESP() for _, Tracked in next, Tracking do Tracked:Visualize() end end function TrackingHandler:DisconnectTracking(Key) if Key and Tracking[Key] then Tracking[Key]:Disconnect() Tracking[Key] = nil end end function TrackingHandler:DisconnectConnection(Key) if Key and Connections[Key] then for _, Connection in next, Connections[Key] do Connection:Disconnect() end Connections[Key] = nil end end function TrackingHandler:DisconnectConnections() for Key, _ in next, Connections do self:DisconnectConnection(Key) end for Key, _ in next, Tracking do self:DisconnectTracking(Key) end end function TrackingHandler:DisconnectAimbot() FieldsHandler:ResetAimbotFields() FieldsHandler:ResetSecondaryFields() self:DisconnectConnections() VisualsHandler:ClearVisuals() end local function CharacterAdded(_Character) if typeof(_Character) == "Instance" then local _Player = Players:GetPlayerFromCharacter(_Character) Tracking[_Player.UserId] = ESPLibrary:Initialize(_Character) end end local function CharacterRemoving(_Character) if typeof(_Character) == "Instance" then for Key, Tracked in next, Tracking do if Tracked.Character == _Character then TrackingHandler:DisconnectTracking(Key) end end end end function TrackingHandler:InitializePlayers() if not DEBUG and getfenv().Drawing and getfenv().Drawing.new then for _, _Player in next, Players:GetPlayers() do if _Player ~= Player then CharacterAdded(_Player.Character) Connections[_Player.UserId] = { _Player.CharacterAdded:Connect(CharacterAdded), _Player.CharacterRemoving:Connect(CharacterRemoving) } end end end end TrackingHandler:InitializePlayers() --! Player Events Handler local OnTeleport; OnTeleport = Player.OnTeleport:Connect(function() if DEBUG or not Fluent or not getfenv().queue_on_teleport then OnTeleport:Disconnect() else getfenv().queue_on_teleport("getfenv().loadstring(game:HttpGet(\"https://raw.githubusercontent.com/ttwizz/Open-Aimbot/master/source.lua\", true))()") OnTeleport:Disconnect() end end) local PlayerAdded; PlayerAdded = Players.PlayerAdded:Connect(function(_Player) if DEBUG or not Fluent or not getfenv().Drawing or not getfenv().Drawing.new then PlayerAdded:Disconnect() else Connections[_Player.UserId] = { _Player.CharacterAdded:Connect(CharacterAdded), _Player.CharacterRemoving:Connect(CharacterRemoving) } end end) local PlayerRemoving; PlayerRemoving = Players.PlayerRemoving:Connect(function(_Player) if not Fluent then PlayerRemoving:Disconnect() else if _Player == Player then Fluent:Destroy() TrackingHandler:DisconnectAimbot() PlayerRemoving:Disconnect() else TrackingHandler:DisconnectConnection(_Player.UserId) TrackingHandler:DisconnectTracking(_Player.UserId) end end end) --! Aimbot Handler local AimbotLoop; AimbotLoop = RunService[UISettings.RenderingMode]:Connect(function() if Fluent.Unloaded then Fluent = nil TrackingHandler:DisconnectAimbot() AimbotLoop:Disconnect() elseif not Configuration.Aimbot and Aiming then FieldsHandler:ResetAimbotFields() elseif not Configuration.SpinBot and Spinning then Spinning = false elseif not Configuration.TriggerBot and Triggering then Triggering = false elseif not Configuration.FoV and ShowingFoV then ShowingFoV = false elseif not Configuration.ESPBox and not Configuration.NameESP and not Configuration.HealthESP and not Configuration.MagnitudeESP and not Configuration.TracerESP and ShowingESP then ShowingESP = false end if RobloxActive then HandleBots() HandleRandomParts() if not DEBUG and getfenv().Drawing and getfenv().Drawing.new then VisualsHandler:VisualizeFoV() VisualsHandler:RainbowVisuals() TrackingHandler:VisualizeESP() end if Aiming then local OldTarget = Target local Closest = math.huge if not IsReady(OldTarget) then if OldTarget and not Configuration.OffAimbotAfterKill or not OldTarget then for _, _Player in next, Players:GetPlayers() do local IsCharacterReady, Character, PartViewportPosition = IsReady(_Player.Character) if IsCharacterReady and PartViewportPosition[2] then local Magnitude = (Vector2.new(Mouse.X, Mouse.Y) - Vector2.new(PartViewportPosition[1].X, PartViewportPosition[1].Y)).Magnitude if Magnitude <= Closest and Magnitude <= (Configuration.FoVCheck and Configuration.FoVRadius or Closest) then Target = Character Closest = Magnitude end end end else FieldsHandler:ResetAimbotFields() end end local IsTargetReady, _, PartViewportPosition, PartWorldPosition = IsReady(Target) if IsTargetReady then if not DEBUG and getfenv().mousemoverel and IsComputer and Configuration.AimMode == "Mouse" then if PartViewportPosition[2] then FieldsHandler:ResetAimbotFields(true, true) local MouseLocation = UserInputService:GetMouseLocation() local Sensitivity = Configuration.UseSensitivity and Configuration.Sensitivity / 5 or 10 getfenv().mousemoverel((PartViewportPosition[1].X - MouseLocation.X) / Sensitivity, (PartViewportPosition[1].Y - MouseLocation.Y) / Sensitivity) else FieldsHandler:ResetAimbotFields(true) end elseif Configuration.AimMode == "Camera" then UserInputService.MouseDeltaSensitivity = 0 if Configuration.UseSensitivity then Tween = TweenService:Create(workspace.CurrentCamera, TweenInfo.new(math.clamp(Configuration.Sensitivity, 9, 99) / 100, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { CFrame = CFrame.new(workspace.CurrentCamera.CFrame.Position, PartWorldPosition) }) Tween:Play() else workspace.CurrentCamera.CFrame = CFrame.new(workspace.CurrentCamera.CFrame.Position, PartWorldPosition) end elseif not DEBUG and getfenv().hookmetamethod and getfenv().newcclosure and getfenv().checkcaller and getfenv().getnamecallmethod and Configuration.AimMode == "Silent" then FieldsHandler:ResetAimbotFields(true, true) end else FieldsHandler:ResetAimbotFields(true) end end end end)