Aim Script
Aim Script
✩˚*•̩̩͙
‧͙ ⁺ •̩̩͙*˚‧͙⁺✩‧͙˚*•̩̩͙⁺ •̩̩͙*˚‧͙⊹₊ ‧͙˚‧ ─────────────── ‧₊˚⊹
______ ______ __ __
__
/ \ / \| \ | \
| \
| ▓▓▓▓▓▓\ ______ ______ _______ | ▓▓▓▓▓▓\\▓▓______ ____ | ▓▓____ ______
_| ▓▓_
| ▓▓ | ▓▓/ \ / \| \ | ▓▓__| ▓▓ \ \ \|
▓▓ \ / \| ▓▓ \
| ▓▓ | ▓▓ ▓▓▓▓▓▓\ ▓▓▓▓▓▓\ ▓▓▓▓▓▓▓\ | ▓▓ ▓▓ ▓▓ ▓▓▓▓▓▓\▓▓▓▓\ ▓▓▓▓▓▓▓\
▓▓▓▓▓▓\\▓▓▓▓▓▓
| ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓▓▓▓▓▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ |
▓▓ | ▓▓ __
| ▓▓__/ ▓▓ ▓▓__/ ▓▓ ▓▓▓▓▓▓▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓__/ ▓▓ ▓▓__/
▓▓ | ▓▓| \
\▓▓ ▓▓ ▓▓ ▓▓\▓▓ \ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓\▓▓
▓▓ \▓▓ ▓▓
\▓▓▓▓▓▓| ▓▓▓▓▓▓▓ \▓▓▓▓▓▓▓\▓▓ \▓▓ \▓▓ \▓▓\▓▓\▓▓ \▓▓ \▓▓\▓▓▓▓▓▓▓ \
▓▓▓▓▓▓ \▓▓▓▓
| ▓▓
| ▓▓
\▓▓
twix.cyou/pix
twix.cyou/OpenAimbotV3rm
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
if DEBUG then
getfenv().getfenv = function()
return setmetatable({}, {
__index = function()
return function()
return true
end
end
})
end
end
--! Services
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
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)
local Configuration = {}
--? Aimbot
--? Bots
--? Checks
--? Visuals
--! Constants
❄️ ", "☃️%s",
local MonthlyLabels = { "%s ☘️ "%s😎", "%s",
☀️ "%s🌼", "🌈%s😎 ", "🌞%s🏖️
", "☀️%s💐",
☕
"%s🍁", "🎃%s💀", "🍂%s☕ ", "🎄%s🎁" }
local PremiumLabels = { "💫PREMIUM💫", "✨PREMIUM✨", "🌟PREMIUM🌟", "⭐PREMIUM⭐", "🤩
PREMIUM🤩" }
--! Names Handler
--! Fields
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
--! UI Initializer
do
local Window = Fluent:CreateWindow({
Title = string.format("%s <b><i>%s</i></b>",
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
})
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"
})
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 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
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
})
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
})
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 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
})
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: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"
})
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."
})
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)
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
})
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
})
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)
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: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 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)
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 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 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)
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
})
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"
})
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"
})
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
})
FoVSection:AddColorpicker("FoVColour", {
Title = "FoV Colour",
Description = "Changes the FoV Colour",
Default = Configuration.FoVColour,
Callback = function(Value)
Configuration.FoVColour = 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
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
})
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
})
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: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"
})
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 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)
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
})
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
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
local FieldsHandler = {}
function FieldsHandler:ResetSecondaryFields()
Spinning = false
Triggering = false
ShowingFoV = false
ShowingESP = false
end
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 MathHandler = {}
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
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" }
}
}
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))
Fluent.Options.AimPart:SetValue(Configuration.AimPartDropdownValues[Random.new():Ne
xtInteger(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
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
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
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
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
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()