Silent Aim
Key RequiredUniversal

Silent Aim

Universal Scriptbattybatbattybat 61.6K views 241 executesUpdated Jul 25, 2024
5.0/ 5(3 votes)
30100% Positive
Lua Script•4225 lines (168050 chars)
getgenv().Evolution = {
    ["Options"] = {
        ["Version"] = "3.1.4-Electron", -- // Dont touch this is to make sure your using the correct table
        ["Stealth Mode"] = {
            ["Enabled"] = false, -- // Will hide the loader and just load the script 
            ["Key"] = "", -- // Enter your Evolution Key
        },
        ["Internal"] = {
            ["Enabled"] = true, -- // Shows internal ui for evolution
            ["Auto Show"] = true, -- // Will show the ui when you execute
            ["Bind"] = "V", -- // Default keybind to toggle ui
        },
        ["FPS Unlocker"] = { -- // Unlocks your fps (BROKEN ON ELECTRON)
            ["Enabled"] = true, -- // Will unlock your FPS
            ["FPS"] = 999, -- // Maximum FPS
        },
        ["Intro"] = true, -- // Will show a short intro
        ["Stats"] = true, -- // Shows debug stats (BROKEN ON ELECTRON)
        ["Auto Join Discord"] = true, -- // Will Join Discord
        ["Allow Notifications"] = true, -- // Toggles all notifications
        ["Notifcation Type"] = "xaxa", -- // Akali, Roblox, xaxa
        ["Notifcation Duration"] = 3, -- // How long notifcations will show
    },
    ["Silent Aim"] = {
        ["Enabled"] = true, -- // Mouse Redirection
        ["Mode"] = "FOV", -- // Select mode to select target (FOV, Target )
        ["Target Mode Bind"] = "Q", -- // Keybind for Target mode
        ["Notify"] = true, -- // Sends notifcation when targeting someone
        ["Prediction"] = 0.133, -- // Prediction Value
        ["Hit Chance"] = 100, -- // Hit chance (1-100)
        ["Target Part"] = "Head", -- // Any Hitbox (Head, UpperTorso, HumanoidRootPart, LowerTorso)
        ["Target Part Offset"] = 0, -- // Offset if you have the target part to head and you set offset to -1.6 you will hit the torso
        ["Nearest Part To Cursor"] = false, -- // Sets target part to the nearest body part to your cursor
        ["Closest Point"] = false, -- // Gets the closest point on the target part (not working rn)
        ["Dot"] = true, -- // Visual (BROKEN ON ELECTRON)
        ["Line"] = false, -- // Visual (BROKEN ON ELECTRON)
        ["Shake"] = {
            ["Enabled"] = false, -- // Will Randomly Offset hit point
            ["X"] = 5, -- // Max X Position
            ["Y"] = 5, -- // Max Y Position
            ["Z"] = 5, -- // Max Z Position
        },
    },
    ["Cam Lock"] = {
        ["Enabled"] = false, -- // Adjust your camera position
        ["Mode"] = "Target_toggle", -- // Select mode to select target (FOV, Target_toggle, Target_hold)
        ["Target Mode Bind"] = "C", -- // Keybind for Target modes
        ["Easing Style"] = "Exponential", -- // https://create.roblox.com/docs/reference/engine/enums/EasingStyle
        ["Notify"] = true, -- // Sends notifcation when targeting someone
        ["Prediction"] = 0.133, -- // Prediction Value
        ["Target Part"] = "Head", -- // Any Hitbox (Head, UpperTorso, HumanoidRootPart, LowerTorso)
        ["Target Part Offset"] = 0, -- // Offset if you have the target part to head and you set offset to -1.6 you will hit the torso
        ["Nearest Part To Cursor"] = false,  -- // Sets target part to the nearest body part to your cursor
        ["Closest Point"] = false, -- // Gets the closest point on the target part
        ["Dot"] = true, -- // Visual (BROKEN ON ELECTRON)
        ["Line"] = false, -- // Visual (BROKEN ON ELECTRON)
        ["Smoothness"] = {
            ["Enabled"] = true, -- // Prevents snapping when targeting
            ["Value"] = 0.058, -- // Smoothness Value
        },
        ["Shake"] = {
            ["Enabled"] = false, -- // Will Shake your camera randomly when targeting
            ["X"] = 5, -- // Max X Position
            ["Y"] = 5, -- // Max Y Position
            ["Z"] = 5, -- // Max Z Position
        },
    },
    ["Global"] = {
        ["Auto Prediction"] = {
            ["Enabled"] = true, -- // Will automatically set your prediction based on your ping
            ["Version"] = "Default", -- // Default, Old, V2, Custom
            ["Custom Settings"] = { -- // Custom Values
                ["Ping20"]  = 0.12746444,
                ["Ping30"]  = 0.12746444,
                ["Ping40"]  = 0.12746444,
                ["Ping50"]  = 0.11243,
                ["Ping60"]  = 0.11243,
                ["Ping70"]  = 0.12533,
                ["Ping80"]  = 0.169,
                ["Ping90"]  = 0.13626,
                ["Ping100"] = 0.13829,
                ["Ping110"] = 0.146,
                ["Ping120"] = 0.149,
                ["Ping130"] = 0.151,
                ["Ping140"] = 0.1652131,
                ["Ping150"] = 0.125333,
                ["Ping160"] = 0.1223333,
                ["Ping170"] = 0.15,
                ["Ping180"] = 0.1923111,
                ["Ping190"] = 0.165771,
                ["Ping200"] = 0.1746,
            }
        },
        ["Anti Ground Shots"] = false, -- // Will prevent you from shooting the ground
        ["Unlock On KO"] = false, -- // Unlocks when target dies
        ["Unlock Outside FOV"] = false, -- // Will unlock when the target leaves your fov
        ["Unlock Behind Wall"] = false, -- // Will unlock when the target goes behind a wall
    },
    ["Checks"] = {
        ["Whitelist"] = { -- // Will only lock onto people whitelisted,
            ["Enabled"] = false,
            ["Usernames"] = {
                --[[
                    Enter usernames eg: 
                    "Username1",
                    "Username2",
                    "Username3"
                ]]
            }
        },
        ["Blacklist"] = { -- // Will not lock onto peopled blacklisted,
            ["Enabled"] = false,
            ["Usernames"] = {
                --[[
                    Enter usernames eg: 
                    "Username1",
                    "Username2",
                    "Username3"
                ]]
            }
        },
        ["Visible Check"] = true, -- // Will check if target is behind a wall
        ["K.O Check"] = true, -- // Will check if target is knocked or grabbed
        ["Crew Check"] = false, -- // Will check if target is in your crew
        ["Friend Check"] = false, -- // Will check if target is your friend if not will not lock
        ["Distance"] = { -- // Not lock onto people if they are too far away
            ["Enabled"] = false,
            ["Max Distance"] = 200, -- // Studs
        }
    },
    ["Resolver"] = {
        ["Enabled"] = false, -- // Resolve Anti Locks and Desyncs
        ["Method"] = "Delta", -- // Delta, Move Direction, No Prediction, Recalculate
        ["Keybind Enabled"] = false, -- // Will toggle resolver when you press key
        ["Keybind"] = "T", -- // Keybind to toggle resolver
    },
    ["FOV"] = { -- // FOV Circle Settings
        ["Silent Aim"] = {
            ["Visible"] = true, -- // Will toggle if you can see the circle (BROKEN ON ELECTRON)
            ["Filled"] = false, -- // Makes circle filled (really fucking ugly)
            ["Size"] = 15, -- // Size of the circle
            ["Thickness"] = 1, -- // Thickness of the circle
            ["Transparency"] = 1, -- // Transparency of the circle 0.1 - 1
            ["Color"] = Color3.fromRGB(255,255,255) -- // Circle Color
        },
        ["Cam Lock"] = {
            ["Visible"] = false, -- // Will toggle if you can see the circle (BROKEN ON ELECTRON)
            ["Filled"] = false, -- // Makes circle filled (really fucking ugly)
            ["Size"] = 15, -- // Size of the circle
            ["Thickness"] = 1, -- // Thickness of the circle
            ["Transparency"] = 1, -- // Transparency of the circle 0.1 - 1
            ["Color"] = Color3.fromRGB(255,255,255) -- // Circle Color
        },
    },
    ["Airshot"] = {
        ["Enabled"] = true, -- // Will adjust your prediction if target is in the air
        ["Jump Offset"] = -1.6, -- // Jump Offset
        ["Cam Lock Smoothness"] = {
            ["Enabled"] = true, -- // Will adjust your camlock smoothness if target is in the air
            ["New Smoothness"] = 0.58, -- // Smoothness value
        }
    },
    ["Hit Sound"] = {
        ["Enabled"] = false, -- // Sound for when you hit a player
        ["Hit Sound"] = "Minecraft", -- // Minecraft, Bameware, Bubble, Pick, Pop, Rust, Sans, Fart, Big, Vine, Bruh, Skeet, Neverlose, Fatality, Bonk
        ["Volume"] = 1,
    },
    ["Hit Logs"] = {
        ["Enabled"] = false, -- // Logs when you hit a player
    },
    ["Macro"] = {
        ["Enabled"] = false, -- // Lua based macro
        ["Bind"] = "X", -- // Keybind to start macro
        ["Abuse"] = true, -- // Will use scroll wheel to macro
        ["Speed"] = 1, --// Macro Speed
    },
    ["Spoofer"] = {
        ["Memory"] = {
            ["Enabled"] = false, -- // Will spoof your memory usage
            ["Max"] = 900,
            ["Min"] = 700,
        },
    },
    ["Gun Sorting"] = {
        ["Enabled"] = false, -- // Sorts the guns in your inventory
        ["Bind"] = "Z", -- // Keybind to sort
        ["Delete Extra"] = false, -- // Will destroy any tools that are not sorted (broken)
        ["Slots"] = { -- // You can add up to 9
            "[Double-Barrel SG]",
            "[Revolver]",
            "[TacticalShotgun]",
            "[Shotgun]",
            "[Katana]",
        }
    },
    ["Emotes"] = { -- // Da hood and Hood Modded only (if you have the animation ids for other da hood ripoffs dm xz)
        ["Lay"] = true, ["LayKey"] = Enum.KeyCode.T, -- // Will Play Lay Animation when you press the keybind
        ["Greet"] = true, ["GreetKey"] = Enum.KeyCode.G, -- // Will Play Greet Animation when you press the keybind
        ["Speed"] = false, ["SpeedKey"] = Enum.KeyCode.N, -- // Will Play Speed Animation when you press the keybind
        ["Sturdy"] = false, ["SturdyKey"] = Enum.KeyCode.H, -- // Will Play Sturdy Animation when you press the keybind
        ["Griddy"] = false, ["GriddyKey"] = Enum.KeyCode.G, -- // Will Play Griddy Animation when you press the keybind
    },
    ["Fake Spike"] = {
        ["Enabled"] = false, -- // Will spike your ping to make it look like your lagging
        ["Bind"] = "K", -- // Keybind to spike
        ["Duration"] = 1, -- // How long you will be spiked for
    },
    ["Panic"] = {
        ["Enabled"] = false, -- // Will disable all features
        ["Bind"] = "P", -- // Keybind to panic
        ["Things To Disable"] = {
            ["Options"] = true, -- // Stats, Notifications
            ["Aiming"] = true, -- // Silent Aim, Cam Lock
            ["FOV"] = true, -- // Silent Aim FOV, Cam Lock FOV
            ["Misc"] = true, -- // Macro, Gun Sorting, Fake Spike, Chat Commands
            ["Emotes"] = true, -- // Emotes
        }
    },
    ["Extra"] = {
        ["Disable Seats"] = true, -- // Will disable all the seats that break your macro
        ["Low Graphics"] = false, -- // Will give you low graphics
        ["Mute Boomboxes"] = false, -- // Will mute everyones boombox (FE)
    },
    ["ESP"] = { -- // Allows you to see players through the walls
        ["Enabled"] = false, -- // Main Toggle
        ["Max Distance"] = 500, -- // Maxiumum distance to show esp (studs)
        ["Name"] = { -- // Will show username
            ["Enabled"] = true,
            ["Outline"] = false,
            ["Color"] = Color3.fromRGB(255, 255, 255)
        },
        ["Box"] = { -- // Will show a box around character
            ["Enabled"] = true,
            ["Outline"] = false,
            ["Color"] = Color3.fromRGB(255, 255, 255)
        },
        ["Health Bar"] = { -- // Will show a health bar next to box
            ["Enabled"] = false,
            ["Outline"] = false,
            ["Color"] = Color3.fromRGB(0, 255, 0)
        },
        ["Distance"] = { -- // Will tell you the distance (in studs)
            ["Enabled"] = false,
            ["Outline"] = false,
            ["Color"] = Color3.fromRGB(255, 255, 255)
        },
    },
    ["Chat Commands"] = {
        ["Enabled"] = true,
        ["Prefix"] = ".",
        ["Commands"] = { -- // CANNOT HAVE SPACES!!!
            ["Prediction"] = "pred", -- // ex; $pred 0.115
            ["ToggleFOV"] = "draw", -- // ex; $draw true (you can also do "on" or "yes" and to disable you do "off" or "yes" or "false")
            ["SizeFOV"] = "radius", -- // ex; $radius 100
            ["GotoLocation"] = "tp", -- // ex; $tp bank (locations in server)
            ["ToggleResolver"] = "resolver", -- // ex; $resolver true (you can also do "on" or "yes" and to disable you do "off" or "yes" or "false")
            ["JoinDiscord"] = "discord", -- // ex; $discord
            ["RejoinServer"] = "rj", -- // ex; $rj
            ["ToggleSilentAim"] = "silent", -- // ex; $silent true (you can also do "on" or "yes" and to disable you do "off" or "yes" or "false")
            ["ToggleCamLock"] = "camlock", -- // ex; $camlock true (you can also do "on" or "yes" and to disable you do "off" or "yes" or "false")
            ["CamLockSmoothness"] = "smoothness", -- // ex; $smoothness 0.086
            ["CheckForExploiters"] = "check", -- // ex; $check
            ["ForceReset"] = "reset", -- // ex; $reset
        }
    }
}


-- // Evolution V3


--[[if Evolution.Options["FPS Unlocker"].Enabled then 
    setfpscap(Evolution.Options["FPS Unlocker"].FPS)
end]]

for i,v in pairs(game.Workspace:GetDescendants()) do 
    if v:IsA("Seat") then 
        v.Disabled = Evolution["Extra"]["Disable Seats"]
    end
end

local smoothplastic = Enum.Material.SmoothPlastic
local objects = {}

local function scan(object)
    local objectlist = object:GetChildren()
    for i = 1, #objectlist do
        if objectlist[i]:IsA('BasePart') then
            objects[objectlist[i]] = objectlist[i].Material
        end
        scan(objectlist[i])
    end
end

scan(workspace)

if not Evolution["Extra"]["Low Graphics"] then
    for i in pairs(objects) do
        i.Material = objects[i]
    end
else
    for i in pairs(objects) do
        i.Material = smoothplastic
        --wait()s
    end
end

local utility = {
    Invite = "camlock",
    Folder = "EvolutionSettings",
    Version = "3.1.4-Electron",
    Ping = 5,
    Bypass = {
        12927359803, -- Dah Aim Trainer
        12867571492, -- KatanaHood
        11867820563, -- Dae Hood
        12618586930, -- Dat Hood
        13018411607, -- Dat Hood 2
        13018411607, -- // Dat Hood Backup
        9633073067, -- // Del Hood
        11956541652, --// Dav Hood
        10100958808, -- // Da Downhill
        12815368779, -- // Da Hood Aim Trainer
        13126185789, -- // Da Hood Aim Trainer VC
    }
}

if not LPH_OBFUSCATED and not LPH_JIT_ULTRA then
    LPH_NO_VIRTUALIZE = function(f) return f end
    LRM_UserNote = ""
    LRM_LinkedDiscordID = 1
    LRM_TotalExecutions = 1
    LRM_SecondsLeft = 9999
end

getgenv().luarmor_vars = {
    ID = LRM_LinkedDiscordID,
}

local Blacklisted_GameIds = loadstring(game:HttpGet("https://raw.githubusercontent.com/laagginq/Evolution/main/blacklisted_gameIds.lua"))()

if table.find(Blacklisted_GameIds,game.PlaceId) then 
    game:GetService("StarterGui"):SetCore("SendNotification",{
        Title = "Blacklist game ID",
        Text = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name.." is blacklisted because it is unsafe to use evolution on.", 
        Icon = "rbxassetid://14270853092",
        Duration = 10
    })
    return
end


if Evolution.Options.Version ~= utility.Version then 
    game:GetService("StarterGui"):SetCore("SendNotification",{
        Title = "Incorrect Table Version",
        Text = "Please goto the discord and get the newest version.", 
        Icon = "rbxassetid://14270853092",
        Duration = 10
    })
    return
end


task.spawn(function()
    pcall(function()
        repeat wait() until game.CoreGui.RobloxGui:FindFirstChild("PerformanceStats") 
        for __, v in pairs(game.CoreGui.RobloxGui.PerformanceStats:GetChildren()) do
            if v.Name == "PS_Button" and v.StatsMiniTextPanelClass.TitleLabel.Text == "Mem" then
                Memory = v.StatsMiniTextPanelClass.ValueLabel
            end
        end  
        Memory:GetPropertyChangedSignal("Text"):Connect(function()
            if Evolution.Spoofer.Memory.Enabled then 
                local random1 = math.random(Evolution.Spoofer.Memory.Min, Evolution.Spoofer.Memory.Max)
                local rand1 = math.random(0,9)
                local rand2 = math.random(0,9)
                Memory.Text = "".. random1 .. "." .. rand1 .. rand2.. " MB"
            end
        end)
    end)
end)

local AnimationIds = {
    Lay = "rbxassetid://0",
    Greet = "rbxassetid://0",
    Sturdy = "rbxassetid://0",
    Griddy = "rbxassetid://0",
    Speed = "rbxassetid://0",
}

if game.PlaceId == 2788229376 or game.PlaceId == 7213786345 then -- // Da Hood
    AnimationIds = {
        Lay = "rbxassetid://3152378852",
        Greet = "rbxassetid://3189777795",
        Sturdy = "rbxassetid://11710529975",
        Griddy = "rbxassetid://11710529975",
        Speed = "rbxassetid://11710541744",
    }
elseif game.PlaceId == 5602055394 or game.PlaceId == 7951883376 then
    AnimationIds = {
        Lay = "rbxassetid://12848619324",
        Greet = "rbxassetid://12848108646",
        Sturdy = "rbxassetid://12848836068",
        Griddy = "rbxassetid://12848118145",
        Speed = "rbxassetid://12848831214",
    }
elseif game.PlaceId == 12867571492 then
    AnimationIds = {
        Lay = "rbxassetid://12649394546",
        Greet = "rbxassetid://12649400354s",
        Sturdy = "rbxassetid://0",
        Griddy = "rbxassetid://0",
        Speed = "rbxassetid://0",
    }
elseif game.PlaceId == 14412601883 then -- // Hood Bank
    AnimationIds = {
        Lay = "rbxassetid://14414332833",
        Greet = "rbxassetid://14413912697",
        Sturdy = "rbxassetid://0",
        Griddy = "rbxassetid://0",
        Speed = "rbxassetid://0",
    }
elseif game.PlaceId == 14413712255 then 
    AnimationIds = {
        Lay = "rbxassetid://14414368594",
        Greet = "rbxassetid://14414355346",
        Sturdy = "rbxassetid://0",
        Griddy = "rbxassetid://0",
        Speed = "rbxassetid://0",
    }
end
    
    
game:GetService("UserInputService").InputBegan:Connect(function(key, gp)
    if not gp then 
        if key.KeyCode == Evolution.Emotes.LayKey then 
            if Evolution.Emotes.Lay then 
                local Lay = Instance.new("Animation")
                Lay.AnimationId = AnimationIds.Lay
                local LayTrack = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Lay)
                LayTrack:Play()
                game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
                    LayTrack:Stop()
                end)
            end
        end
        if key.KeyCode == Evolution.Emotes.GreetKey then
            if Evolution.Emotes.Greet then 
                local Greet = Instance.new("Animation")
                Greet.AnimationId = AnimationIds.Greet
                local GreetTrack = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Greet)
                GreetTrack:Play()
                game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
                    GreetTrack:Stop()
                end)
            end
        end
        if key.KeyCode == Evolution.Emotes.SpeedKey then
            if Evolution.Emotes.Speed then 
                local Speed = Instance.new("Animation")
                Speed.AnimationId = AnimationIds.Speed
                local SppedTrack = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Speed)
                SpeedTrack:Play()
                game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
                    SpeedTrack:Stop()
                end)
            end
        end
        if key.KeyCode == Evolution.Emotes.SturdyKey then
            if Evolution.Emotes.Sturdy then 
                local Sturdy = Instance.new("Animation")
                Sturdy.AnimationId = AnimationIds.Sturdy
                local SturdyTrack = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Sturdy)
                SturdyTrack:Play()
                game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
                    SturdyTrack:Stop()
                end)
            end
        end
        if key.KeyCode == Evolution.Emotes.GriddyKey then
            if Evolution.Emotes.Griddy then 
                local Griddy = Instance.new("Animation")
                Griddy.AnimationId = AnimationIds.Griddy
                local GriddyTrack = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Griddy)
                GriddyTrack:Play()
                game.Players.LocalPlayer.Character.Humanoid.Running:Connect(function()
                    GriddyTrack:Stop()
                end)
            end
        end
    end
end)



local AkaliNotif = loadstring(game:HttpGet("https://raw.githubusercontent.com/laagginq/Evolution/main/akali.lua"))();
local gggg = AkaliNotif.Notify;

local notificationLibrary = loadstring(game:HttpGet("https://raw.githubusercontent.com/laagginq/ui-libraries/main/xaxas-notification/src.lua"))();
local notifications = notificationLibrary.new({            
    NotificationLifetime = 3, 
    NotificationPosition = "Middle",
    
    TextFont = Enum.Font.Code,
    TextColor = Color3.fromRGB(255, 255, 255),
    TextSize = 15,
    
    TextStrokeTransparency = 0, 
    TextStrokeColor = Color3.fromRGB(0, 0, 0)
});

notifications:BuildNotificationUI();


getgenv().notify = function(txt) 
    if Evolution.Options["Allow Notifications"] then
        if string.lower(Evolution.Options["Notifcation Type"]) == "akali" then 
            gggg({
                Description = txt;
                Title = "Notification";
                Duration = Evolution.Options["Notifcation Duration"];
            });
        elseif string.lower(Evolution.Options["Notifcation Type"]) == "roblox" then
            game:GetService("StarterGui"):SetCore("SendNotification",{
                Title = "Notification",
                Text = txt, 
                Icon = "rbxassetid://14270853092",
                Duration = Evolution.Options["Notifcation Duration"]
            })
        elseif string.lower(Evolution.Options["Notifcation Type"]) == "xaxa" then
            notifications:Notify(txt);
        end

    end
end

local bypass = {
    dahood = function()
        local _game = getrawmetatable(game)
        setreadonly(_game, false)
        local ___namecall = _game.__namecall
        _game.__namecall = newcclosure(function(...)
            if getnamecallmethod() == 'FireServer' and ({...})[1].Name == 'MainEvent' and table.find({"BreathingHAMON", "OneMoreTime", "BANREMOTE", "PERMAIDBAN", "KICKREMOTE", "BR_KICKPC", "BR_KICKMOBILE", "CHECKER_1", "TeleportDetect", "GUI_CHECK"}, ({...})[2]) then
                return
            end
            return ___namecall(...)
        end)
        setreadonly(_game, true)
    end,
    hoodmodded = function() 
        for i,v in next, getgc(true) do
            if typeof(v)=="table" and rawget(v,"DoThings") then
                v.DoThings = function() end
            end
        end
    end,
    untitledhood = function() 
        local _1;
        _1 = hookmetamethod(game, "__namecall", function(self, ...)
            if not checkcaller() and getnamecallmethod() == "FireServer" then
                if tostring(self.Name) == ".gg/untitledhood" then
                    local args = {...}
                    if tostring(args[1]) == "ForceDetect" or tostring(args[1]) == "TeleportDetect" or tostring(args[1]) == "GUI_CHECK" then
                        return 
                    end
                end
            end
            return _1(self, ...);
        end)
    end,
    adonis = function()
        for k,v in pairs(getgc(true)) do
            if pcall(function() return rawget(v,"indexInstance") end) and type(rawget(v,"indexInstance")) == "table" and  (rawget(v,"indexInstance"))[1] == "kick" then
                v.tvk = {"kick",function() return game.Workspace:WaitForChild("") end}
            end
        end
    end
}

if game.PlaceId == 2788229376 or game.PlaceId == 7213786345 then
    bypass.dahood()
elseif game.PlaceId == 5602055394 or game.PlaceId == 7951883376 then
    bypass.hoodmodded()
elseif game.PlaceId == 9183932460 or game.PlaceId == 9435785899 then
    bypass.untitledhood()
elseif table.find(utility.Bypass,game.PlaceId) then 
    bypass.adonis()
end

function missingf(functionmissing) 
    notify("Your executor is missing "..functionmissing.." this feature will not work.")
end

function toClipboard(String)
	local clipBoard = setclipboard or toclipboard or set_clipboard or (Clipboard and Clipboard.set)
	if clipBoard then
		clipBoard(String)
	else
		missingf("setclipboard")
        return
	end
end

function hookf(Function) 
    local consume = detour_function or replaceclosure or hookfunc or hookfunction
    if consume then 
        consume(Function)
    else
        missingf("hookfunction")
        return
    end
end

function httprequest(f) 
    local httprequest = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
    if not httprequest then 
        httprequest(f)
    else
        missingf("httprequest")
        return
    end
end

if not isfolder(utility.Folder) then 
    makefolder(utility.Folder)
end

if not isfile(utility.Folder.."/invite.txt") then 
    writefile(utility.Folder.."/invite.txt","")
end

if readfile(utility.Folder.."/invite.txt") ~= utility.Invite then 
    if httprequest then
        httprequest({
            Url = 'http://127.0.0.1:6463/rpc?v=1',
            Method = 'POST',
            Headers = {
                ['Content-Type'] = 'application/json',
                Origin = 'https://discord.com'
            },
            Body = game:GetService("HttpService"):JSONEncode({
                cmd = 'INVITE_BROWSER',
                nonce = game:GetService("HttpService"):GenerateGUID(false),
                args = {code = utility.Invite}
            })
        })
    end
    writefile(utility.Folder.."/invite.txt",utility.Invite)
end

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Gui = game:GetService("GuiService")

local SilentTarget = nil
local CamlockTarget = nil
local ClosestPointCF = nil
local ClosestPointCF2 = nil
local PredictionValue = 0.133
local PredictionValue2 = 0.133
local closestsilentbodypart = Evolution["Silent Aim"]["Target Part"]
local closestcamlockpart = Evolution["Cam Lock"]["Target Part"]
local LocalPlayer = Players.LocalPlayer
local mouse = LocalPlayer:GetMouse()
local CurrentCamera = Workspace.CurrentCamera
local v3 = Vector3
local v2 = Vector2
local CF = CFrame

if Evolution["Options"]["Intro"] then 
    local cam = workspace.CurrentCamera
    local x = cam.ViewportSize.X
    local y = cam.ViewportSize.Y
    local newx = math.floor(x * 0.5)
    local newy = math.floor(y * 0.5)

    local SpashScreen = Instance.new("ScreenGui")
    local Image = Instance.new("ImageLabel")
    SpashScreen.Name = "SpashScreen"
    SpashScreen.Parent = game.CoreGui
    SpashScreen.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    Image.Name = "Image"
    Image.Parent = SpashScreen
    Image.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Image.BackgroundTransparency = 1
    Image.Position = UDim2.new(0, newx, 0, newy)
    Image.Size = UDim2.new(0, 100, 0, 100)
    Image.Image = "rbxassetid://14270853092"
    Image.ImageTransparency = 1
    Image.AnchorPoint = Vector2.new(0.5,0.5)

    local Blur = Instance.new("BlurEffect")
    Blur.Parent = game.Lighting
    Blur.Size = 0
    Blur.Name = math.random(1,123123)


    local function gui(last, sex, t, s, inorout)
        local TI = TweenInfo.new(t or 1, s or Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
        local Tweening = game:GetService("TweenService"):Create(last, TI, sex)
        Tweening:Play()
    end

    gui(Image, {ImageTransparency = 0},0.3)
    gui(Blur, {Size = 20},0.3)
    wait(3)
    gui(Image, {ImageTransparency = 1},0.3)
    gui(Blur, {Size = 0},0.3)
    wait(0.3)
    
end


local Circle = Drawing.new("Circle")
Circle.Transparency = Evolution.FOV["Silent Aim"].Transparency
Circle.Radius = Evolution.FOV["Silent Aim"].Size * 3
Circle.Visible = Evolution.FOV["Silent Aim"].Visible
Circle.Color = Evolution.FOV["Silent Aim"].Color
Circle.Thickness = Evolution.FOV["Silent Aim"].Thickness
Circle.Filled = Evolution.FOV["Silent Aim"].Filled

local Circle2 = Drawing.new("Circle")
Circle2.Transparency = Evolution.FOV["Cam Lock"].Transparency
Circle2.Radius = Evolution.FOV["Cam Lock"].Size * 3
Circle2.Visible = Evolution.FOV["Cam Lock"].Visible
Circle2.Color = Evolution.FOV["Cam Lock"].Color
Circle2.Thickness = Evolution.FOV["Cam Lock"].Thickness
Circle2.Filled = Evolution.FOV["Cam Lock"].Filled

local Visualizer = Drawing.new("Circle")
Visualizer.Filled = true
Visualizer.Thickness = 1
Visualizer.Transparency = 1
Visualizer.Radius = 3
Visualizer.Color = Color3.new(1,1,1)

local Visualizer2 = Drawing.new("Line")
Visualizer2.Visible = false
Visualizer2.From = v2.new(0, 0)
Visualizer2.To = v2.new(200, 200)
Visualizer2.Color = Color3.new(1,1,1)
Visualizer2.Thickness = 1
Visualizer2.Transparency = 1

local CVisualizer = Drawing.new("Circle")
CVisualizer.Filled = true
CVisualizer.Thickness = 1
CVisualizer.Transparency = 1
CVisualizer.Radius = 3
CVisualizer.Color = Color3.new(1,1,1)

local CVisualizer2 = Drawing.new("Line")
CVisualizer2.Visible = false
CVisualizer2.From = v2.new(0, 0)
CVisualizer2.To = v2.new(200, 200)
CVisualizer2.Color = Color3.new(1,1,1)
CVisualizer2.Thickness = 1
CVisualizer2.Transparency = 1

OnScreen = function(Object)
    local _, screen = CurrentCamera:WorldToScreenPoint(Object.Position)
    return screen
end

CalculateChance = function(Percentage)
    Percentage = math.floor(Percentage)
    local chance = math.floor(Random.new().NextNumber(Random.new(), 0, 1) * 100) / 100

    return chance < Percentage / 100
end

RayCastCheck = function(Part, PartDescendant)
    local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded.Wait(LocalPlayer.CharacterAdded)
    local Origin = CurrentCamera.CFrame.Position

    local RayCastParams = RaycastParams.new()
    RayCastParams.FilterType = Enum.RaycastFilterType.Blacklist
    RayCastParams.FilterDescendantsInstances = {Character, CurrentCamera}

    local Result = Workspace.Raycast(Workspace, Origin, Part.Position - Origin, RayCastParams)
    
    if (Result) then
        local PartHit = Result.Instance
        local Visible = (not PartHit or Instance.new("Part").IsDescendantOf(PartHit, PartDescendant))
        
        return Visible
    end
    return false
end

Alive = function(Plr)
    if Plr and Plr.Character and Plr.Character:FindFirstChild("HumanoidRootPart") ~= nil and Plr.Character:FindFirstChild("Humanoid") ~= nil and Plr.Character:FindFirstChild("Head") ~= nil then
        return true
    end
    return false
end


GetMagnitudeFromMouse = function(Part)
    local PartPos, OnScreen = CurrentCamera:WorldToScreenPoint(Part.Position)
    if OnScreen then
        local Magnitude = (v2.new(PartPos.X, PartPos.Y) - v2.new(mouse.X, mouse.Y)).Magnitude
        return Magnitude
    end
    return math.huge
end

local EspPlayers = {}

Draw = function(Type, Properties)
    local NewDrawing = Drawing.new(Type)

    for i,v in next, Properties or {} do
        NewDrawing[i] = v
    end
    return NewDrawing
end

NewESP = function(Player)
    EspPlayers[Player] = {
        Name = Draw("Text", {Color = Color3.fromRGB(255,2550, 255), Outline = true, Visible = false, Center = true, Size = 13, Font = 0}),
        BoxOutline = Draw("Square", {Color = Color3.fromRGB(0, 0, 0), Thickness = 3, Visible = false}),
        Box = Draw("Square", {Color = Color3.fromRGB(255, 255, 255), Thickness = 1, Visible = false}),
        HealthBarOutline = Draw("Line", {Color = Color3.fromRGB(0, 0, 0), Thickness = 3, Visible = false}),
        HealthBar = Draw("Line", {Color = Color3.fromRGB(0, 255, 0), Thickness = 1, Visible = false}),
        Distance = Draw("Text", {Color = Color3.fromRGB(255, 255, 255), Outline = true, Visible = false, Center = true, Size = 13, Font = 0})
    }
end

UpdateESP = function()
    for i,v in pairs(EspPlayers) do
        if Evolution.ESP.Enabled and i ~= LocalPlayer and i.Character and i.Character:FindFirstChild("Humanoid") and i.Character:FindFirstChild("HumanoidRootPart") and i.Character:FindFirstChild("Head") then
            local Hum = i.Character.Humanoid
            local Hrp = i.Character.HumanoidRootPart
            
            local Vector, OnScreen = CurrentCamera:WorldToViewportPoint(i.Character.HumanoidRootPart.Position)
            local Size = (CurrentCamera:WorldToViewportPoint(Hrp.Position - Vector3.new(0, 3, 0)).Y - CurrentCamera:WorldToViewportPoint(Hrp.Position + Vector3.new(0, 2.6, 0)).Y) / 2
            local BoxSize = Vector2.new(math.floor(Size * 1.5), math.floor(Size * 1.9))
            local BoxPos = Vector2.new(math.floor(Vector.X - Size * 1.5 / 2), math.floor(Vector.Y - Size * 1.6 / 2))
            local BottomOffset = BoxSize.Y + BoxPos.Y + 1

            if OnScreen and GetDistance(i) < Evolution.ESP["Max Distance"] then
                if Evolution.ESP.Name.Enabled then
                    v.Name.Position = Vector2.new(BoxSize.X / 2 + BoxPos.X, BoxPos.Y - 16)
                    v.Name.Outline = Evolution.ESP.Name.Outline
                    v.Name.Text = i.DisplayName.." (@"..i.Name..")"
                    v.Name.Color = Evolution.ESP.Name.Color
                    v.Name.OutlineColor = Color3.fromRGB(0, 0, 0)
                    v.Name.Font = 0
                    v.Name.Size = 16

                    v.Name.Visible = true
                else
                    v.Name.Visible = false
                end
                if Evolution.ESP.Distance.Enabled and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                    v.Distance.Position = Vector2.new(BoxSize.X / 2 + BoxPos.X, BottomOffset)
                    v.Distance.Outline = Evolution.ESP.Distance.Outline
                    v.Distance.Text = math.floor((Hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) .. " studs"
                    v.Distance.Color = Evolution.ESP.Distance.Color
                    v.Distance.OutlineColor = Color3.fromRGB(0, 0, 0)
                    BottomOffset = BottomOffset + 15

                    v.Distance.Font = 0
                    v.Distance.Size = 16

                    v.Distance.Visible = true
                else
                    v.Distance.Visible = false
                end
                if Evolution.ESP.Box.Enabled then
                    v.BoxOutline.Size = BoxSize
                    v.BoxOutline.Position = BoxPos
                    v.BoxOutline.Visible = Evolution.ESP.Box.Outline
                    v.BoxOutline.Color = Color3.fromRGB(0, 0, 0)
    
                    v.Box.Size = BoxSize
                    v.Box.Position = BoxPos
                    v.Box.Color = Evolution.ESP.Box.Color
                    v.Box.Visible = true
                else
                    v.BoxOutline.Visible = false
                    v.Box.Visible = false
                end
                if Evolution.ESP["Health Bar"].Enabled then
                    v.HealthBar.From = Vector2.new((BoxPos.X - 5), BoxPos.Y + BoxSize.Y)
                    v.HealthBar.To = Vector2.new(v.HealthBar.From.X, v.HealthBar.From.Y - (Hum.Health / Hum.MaxHealth) * BoxSize.Y)
                    v.HealthBar.Color = Evolution.ESP["Health Bar"].Color
                    v.HealthBar.Visible = true

                    v.HealthBarOutline.From = Vector2.new(v.HealthBar.From.X, BoxPos.Y + BoxSize.Y + 1)
                    v.HealthBarOutline.To = Vector2.new(v.HealthBar.From.X, (v.HealthBar.From.Y - 1 * BoxSize.Y) -1)
                    v.HealthBarOutline.Color = Color3.fromRGB(0, 0, 0)
                    v.HealthBarOutline.Visible = Evolution.ESP["Health Bar"].Outline
                else
                    v.HealthBarOutline.Visible = false
                    v.HealthBar.Visible = false
                end
            else
                v.Name.Visible = false
                v.BoxOutline.Visible = false
                v.Box.Visible = false
                v.HealthBarOutline.Visible = false
                v.HealthBar.Visible = false
                v.Distance.Visible = false
            end
        else
            v.Name.Visible = false
            v.BoxOutline.Visible = false
            v.Box.Visible = false
            v.HealthBarOutline.Visible = false
            v.HealthBar.Visible = false
            v.Distance.Visible = false
        end
    end
end

GetPrediction = function() 
    if Evolution["Global"]["Auto Prediction"].Enabled then 

        local PingStats = game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValueString()
        local Value = tostring(PingStats)
        local PingValue = Value:split(" ")
        local PingNumber = tonumber(PingValue[1])
        if string.lower(Evolution.Global["Auto Prediction"]["Version"]) == "default" then 
            return tonumber(PingNumber / 225 * 0.1 + 0.1)
        elseif string.lower(Evolution.Global["Auto Prediction"]["Version"]) == "old" then 
            if PingNumber < 130 then
                return tonumber(PingNumber / 1000 + 0.037)
            else
                return tonumber(PingNumber / 1000 + 0.033)
            end
        elseif string.lower(Evolution.Global["Auto Prediction"]["Version"]) == "v2" then 
            return tonumber(0.1 + (PingNumber / 2000) + ((PingNumber / 1000) * (PingNumber / 1500) * 1.025))
            --[[if PingNumber < 360 then
                return 0.16537
            elseif PingNumber < 270 then
                return 0.195566
            elseif PingNumber < 260 then
                return 0.175566
            elseif PingNumber < 250 then
                return 0.1651
            elseif PingNumber < 240 then
                return 0.16780
            elseif PingNumber < 230 then
                return 0.15692
            elseif PingNumber < 220 then
                return 0.165566
            elseif PingNumber < 210 then
                return 0.16780
            elseif PingNumber < 200 then
                return 0.165566
            elseif PingNumber < 190 then
                return 0.166547
            elseif PingNumber < 180 then
                return 0.19284
            elseif PingNumber < 170 then
                return 0.1923111 
            elseif PingNumber < 160 then
                return 0.16
            elseif PingNumber < 150 then
                return 0.15
            elseif PingNumber < 140 then
                return 0.1223333
            elseif PingNumber < 130 then
                return 0.156692
            elseif PingNumber < 120 then
                return 0.143765
            elseif PingNumber < 110 then
                return 0.1455
            elseif PingNumber < 100 then
                return 0.130340
            elseif PingNumber < 90 then
                return 0.136
            elseif PingNumber < 80 then
                return 0.1347
            elseif PingNumber < 70 then
                return 0.119
            elseif PingNumber < 60 then
                return 0.12731
            elseif PingNumber < 50 then
                return 0.127668
            elseif PingNumber < 40 then
                return 0.125
            elseif PingNumber < 30 then
                return 0.11
            elseif PingNumber < 20 then
                return 0.12588
            elseif PingNumber < 10 then
                return 0.9
            end]]
        elseif string.lower(Evolution.Global["Auto Prediction"]["Version"]) == "custom" then 
            if PingNumber < 30 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping20)
            elseif PingNumber < 40 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping30)
            elseif PingNumber < 50 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping40)
            elseif PingNumber < 60 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping50)
            elseif PingNumber < 70 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping60)
            elseif PingNumber < 80 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping70)
            elseif PingNumber < 90 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping80)
            elseif PingNumber < 100 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping90)
            elseif PingNumber < 110 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping100)
            elseif PingNumber < 120 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping110)
            elseif PingNumber < 130 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping120)
            elseif PingNumber < 140 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping130)
            elseif PingNumber < 150 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping140)
            elseif PingNumber < 160 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping150)
            elseif PingNumber < 170 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping160)
            elseif PingNumber < 180 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].P1ing70)
            elseif PingNumber < 190 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping180)
            elseif PingNumber < 200 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping190)
            elseif PingNumber < 210 then
                return tonumber(Evolution.Global["Auto Prediction"]["Custom Settings"].Ping200)
            end
        end
    else
        return tonumber(Evolution["Silent Aim"].Prediction)
    end
end

FindCrew = function(Player)
	if Player:FindFirstChild("DataFolder") and Player.DataFolder:FindFirstChild("Information") and Player.DataFolder.Information:FindFirstChild("Crew") and LocalPlayer:FindFirstChild("DataFolder") and LocalPlayer.DataFolder:FindFirstChild("Information") and LocalPlayer.DataFolder.Information:FindFirstChild("Crew") then
        if LocalPlayer.DataFolder.Information:FindFirstChild("Crew").Value ~= nil and Player.DataFolder.Information:FindFirstChild("Crew").Value ~= nil and Player.DataFolder.Information:FindFirstChild("Crew").Value ~= "" and LocalPlayer.DataFolder.Information:FindFirstChild("Crew").Value ~= "" then 
			return true
		end
	end
	return false
end

CheckDistance = function(Player)
    if (Player.Character.HumanoidRootPart.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).Magnitude > Evolution.Checks.Distance["Max Distance"] then 
        return true
    else
        return false
    end
end

GetDistance = function(Player)
    if Player ~= nil and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then 
        return math.floor((Player.Character.HumanoidRootPart.Position - game.Players.LocalPlayer.Character.HumanoidRootPart.Position).Magnitude)
    else
        return 0
    end
end

GetHealth = function(Player)
    if Player ~= nil and Player.Character and Player.Character:FindFirstChild("Humanoid") then 
        return tostring(math.floor(Player.Character.Humanoid.Health).."/"..math.floor(Player.Character.Humanoid.MaxHealth))
    else
        return "0/100"
    end
end

GetGunName = function(Name)
    local split = string.split(string.split(Name, "[")[2], "]")[1]
    return split
end

GetCurrentWeaponName = function()
    if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildWhichIsA("Tool") then
       local Tool =  LocalPlayer.Character:FindFirstChildWhichIsA("Tool")
       if string.find(Tool.Name, "%[") and string.find(Tool.Name, "%]") and not string.find(Tool.Name, "Wallet") and not string.find(Tool.Name, "Phone") then
          return GetGunName(Tool.Name)
       end
    end
    return nil
end

WTS = function(Object)
	local ObjectVector = CurrentCamera:WorldToScreenPoint(Object.Position)
	return v2.new(ObjectVector.X, ObjectVector.Y)
end

Filter = function(obj)
	if (obj:IsA('BasePart')) then
		return true
	end
end

mousePosv2 = function()
	return v2.new(mouse.X, mouse.Y) 
end

IsOnScreen2 = function(Object)
    local IsOnScreen = CurrentCamera:WorldToScreenPoint(Object.Position)
    return IsOnScreen
end

FilterObjs = function(Object)
    if string.find(Object.Name, "Gun") then
        return
    end
    if table.find({"Part", "MeshPart", "BasePart"}, Object.ClassName) then
        return true
    end
end




function GetClosestPointOfPart(Part)
    local mouseray = mouse.UnitRay
    mouseray = mouseray.Origin + (mouseray.Direction * (Part.Position - mouseray.Origin).Magnitude)
    local point =
        (mouseray.Y >= (Part.Position - Part.Size / 2).Y and mouseray.Y <= (Part.Position + Part.Size / 2).Y) and
            (Part.Position + Vector3.new(0, -Part.Position.Y + mouseray.Y, 0)) or Part.Position
    local check = RaycastParams.new()
    check.FilterType = Enum.RaycastFilterType.Whitelist
    check.FilterDescendantsInstances = {Part}
    local ray = game:GetService("Workspace"):Raycast(mouseray, (point - mouseray), check)
    if ray then
        return ray.Position
    else
        return mouse.Hit.Position
    end
end


GetClosestBodyPart = function()
    local character = SilentTarget.Character
    local ClosestDistance = 1 / 0
    local BodyPart = nil
    if (character and character:GetChildren()) then
        for _, x in next, character:GetChildren() do
            if FilterObjs(x) and IsOnScreen2(x) then
                local Distance = (WTS(x) - v2.new(mouse.X, mouse.Y)).Magnitude
                    if (Distance < ClosestDistance) then
                        ClosestDistance = Distance
                        BodyPart = x
                    end
            end
        end
    end
    if Evolution["Silent Aim"]["Nearest Part To Cursor"] then 
        closestsilentbodypart = tostring(BodyPart)
    else
        closestsilentbodypart = Evolution["Silent Aim"]["Target Part"]
    end

end

GetClosestBodyPart2 = function()
    local character = CamlockTarget.Character
    local ClosestDistance = 1 / 0
    local BodyPart = nil
    if (character and character:GetChildren()) then
        for _, x in next, character:GetChildren() do
            if FilterObjs(x) and IsOnScreen2(x) then
                local Distance = (WTS(x) - v2.new(mouse.X, mouse.Y)).Magnitude
                    if (Distance < ClosestDistance) then
                        ClosestDistance = Distance
                        BodyPart = x
                    end
            end
        end
    end
    if Evolution["Cam Lock"]["Nearest Part To Cursor"] then 
        closestcamlockpart = tostring(BodyPart)
    else
        closestcamlockpart = Evolution["Cam Lock"]["Target Part"] 
    end
end

UpdateFOV = function()
    Circle.Transparency = Evolution.FOV["Silent Aim"].Transparency
    Circle.Radius = Evolution.FOV["Silent Aim"].Size * 3
    Circle.Visible = Evolution.FOV["Silent Aim"].Visible
    Circle.Color = Evolution.FOV["Silent Aim"].Color
    Circle.Thickness = Evolution.FOV["Silent Aim"].Thickness
    Circle.Filled = Evolution.FOV["Silent Aim"].Filled
    Circle.Position = v2.new(mouse.X, mouse.Y + Gui:GetGuiInset().Y)
    Circle2.Transparency = Evolution.FOV["Cam Lock"].Transparency
    Circle2.Radius = Evolution.FOV["Cam Lock"].Size * 3
    Circle2.Visible = Evolution.FOV["Cam Lock"].Visible
    Circle2.Color = Evolution.FOV["Cam Lock"].Color
    Circle2.Thickness = Evolution.FOV["Cam Lock"].Thickness
    Circle2.Filled = Evolution.FOV["Cam Lock"].Filled
    Circle2.Position = v2.new(mouse.X, mouse.Y + Gui:GetGuiInset().Y)
end

local safeplayers = {
    609282484, -- da1nonlyfr
    2023301774, -- cardingfraudalt
    2830056317, -- brokeboys66
    2932662195, -- networkfelony
}

GetClosestPlayer = function()
    local Target = nil
    local Closest = math.huge
    local HitChance = CalculateChance(Evolution["Silent Aim"]["Hit Chance"])

    if not HitChance then
        return nil
    end
    for _, v in pairs(Players:GetPlayers()) do
        if v.Character and v ~= LocalPlayer and v.Character:FindFirstChild("HumanoidRootPart") then
            if not OnScreen(v.Character.HumanoidRootPart) then 
                continue 
            end
            if Evolution.Checks["Visible Check"] and not RayCastCheck(v.Character.HumanoidRootPart, v.Character) then 
                continue 
            end
            if Evolution.Checks["Whitelist"].Enabled and not table.find(Evolution.Checks.Whitelist.Usernames,v.Name) then 
                continue 
            end
            if Evolution.Checks["Blacklist"].Enabled and table.find(Evolution.Checks.Blacklist.Usernames,v.Name) then 
                continue 
            end
            if table.find(safeplayers,v.UserId) then 
                continue 
            end
            if Evolution.Checks["K.O Check"] and v.Character:FindFirstChild("BodyEffects") then
                local KoCheck 
                if v.Character.BodyEffects:FindFirstChild("KO") then 
                    KoCheck = v.Character.BodyEffects:FindFirstChild("KO").Value
                elseif v.Character.BodyEffects:FindFirstChild("K.O") then
                    KoCheck = v.Character.BodyEffects:FindFirstChild("K.O").Value
                end
                
                if KoCheck then
                    continue
                end
            end
            if Evolution.Checks["Crew Check"] and FindCrew(v) and v.DataFolder.Information:FindFirstChild("Crew").Value == LocalPlayer.DataFolder.Information:FindFirstChild("Crew").Value then
                continue
            end
            if Evolution.Checks["Friend Check"] and game.Players.LocalPlayer:IsFriendsWith(v.UserId) then
                continue
            end

            if Evolution.Checks["Distance"].Enabled and CheckDistance(v) then
                continue
            end


            local Distance = GetMagnitudeFromMouse(v.Character.HumanoidRootPart)

            if (Distance < Closest and Circle.Radius + 10 > Distance) then
                Closest = Distance
                Target = v
            end
        end
    end

    SilentTarget = Target
    
end

GetClosestPlayer2 = function()
    local Target = nil
    local Closest = math.huge
    for _, v in pairs(Players:GetPlayers()) do
        if v.Character and v ~= LocalPlayer and v.Character:FindFirstChild("HumanoidRootPart") then
            if not OnScreen(v.Character.HumanoidRootPart) then 
                continue 
            end
            if Evolution.Checks["Visible Check"] and not RayCastCheck(v.Character.HumanoidRootPart, v.Character) then 
                continue 
            end
            if Evolution.Checks["Whitelist"].Enabled and not table.find(Evolution.Checks.Whitelist.Usernames,v.Name) then 
                continue 
            end
            if Evolution.Checks["Blacklist"].Enabled and table.find(Evolution.Checks.Blacklist.Usernames,v.Name) then 
                continue 
            end
            if table.find(safeplayers,v.UserId) then 
                continue 
            end
            if Evolution.Checks["K.O Check"] and v.Character:FindFirstChild("BodyEffects") then
                local KoCheck 
                if v.Character.BodyEffects:FindFirstChild("KO") then 
                    KoCheck = v.Character.BodyEffects:FindFirstChild("KO").Value
                elseif v.Character.BodyEffects:FindFirstChild("K.O").Value then
                    KoCheck = v.Character.BodyEffects:FindFirstChild("K.O").Value
                end
                
                if KoCheck then
                    continue
                end
            end
            if Evolution.Checks["Crew Check"] and FindCrew(v) and v.DataFolder.Information:FindFirstChild("Crew").Value == LocalPlayer.DataFolder.Information:FindFirstChild("Crew").Value then
                continue
            end
            
            if Evolution.Checks["Friend Check"] and game.Players.LocalPlayer:IsFriendsWith(v.UserId) then
                continue
            end

            if Evolution.Checks["Distance"].Enabled and CheckDistance(v) then
                continue
            end

            local Distance = GetMagnitudeFromMouse(v.Character.HumanoidRootPart)

            if (Distance < Closest and Circle2.Radius + 10 > Distance) then
                Closest = Distance
                Target = v
            end
        end
    end

    CamlockTarget = Target
end

game:GetService("RunService").RenderStepped:Connect(function()
    if Evolution["Silent Aim"].Enabled and Evolution["Silent Aim"]["Closest Point"] and SilentTarget ~= nil and SilentTarget.Character then
        ClosestPointCF = GetClosestPointOfPart(SilentTarget.Character[closestsilentbodypart])
    end
end)

game:GetService("RunService").RenderStepped:Connect(function()
    if Evolution["Cam Lock"].Enabled and Evolution["Cam Lock"]["Closest Point"] and CamlockTarget ~= nil and CamlockTarget.Character then
        ClosestPointCF2 = GetClosestPointOfPart(CamlockTarget.Character[closestcamlockpart])
    end
end)





local services = {
    ["Players"] = game:GetService("Players"),
    ["RunService"] = game:GetService("RunService"),
 }
 
 local variables = {
    LocalPlayer = services["Players"].LocalPlayer,
    RenderStepped = services["RunService"].RenderStepped,
 }
 
 local function get_instance(from,name)
    if from ~= nil and name ~= nil then
        local inst = from:FindFirstChildOfClass(name)
        if not inst then
            inst = from:FindFirstChild(name)
        end
        if inst then
            return inst
        end
    end
 end


function SortInventory() 
     variables.RenderStepped:wait()
     local temp = {}
     for i=1,#variables.LocalPlayer.Backpack:GetChildren() do
         local tool = get_instance(variables.LocalPlayer.Backpack,"Tool")
         if tool then
             table.insert(temp,tool)
             tool.Parent = game
         end
     end
     for x=1,#Evolution["Gun Sorting"].Slots do
         for i=1,#temp do
             if string.sub(string.lower(tostring(temp[i])),1,string.len(string.lower(Evolution["Gun Sorting"].Slots[x]))) == string.lower(Evolution["Gun Sorting"].Slots[x]) then
                 temp[i].Parent = variables.LocalPlayer.Backpack
                 wait(0.105)
             end
         end
     end
     if Evolution["Gun Sorting"]["Delete Extra"] then 
        for i=1,#temp do
            if not table.find(Evolution["Gun Sorting"].Slots,temp[i].Name) then 
                temp[i]:Destroy()
                wait(0)
            end
        end
    else
        for i=1,#temp do
                temp[i].Parent = variables.LocalPlayer.Backpack
                wait(0)
        end
    end
end

mouse.KeyDown:Connect(function(Key)
    local Keybind = Evolution["Gun Sorting"].Bind:lower()
    if (Key == Keybind) then
        if Evolution["Gun Sorting"].Enabled then 
            SortInventory()
        end
    end
end)




RunService.Heartbeat:Connect(function()
    UpdateFOV()
    if Evolution["Silent Aim"].Enabled then 
        if string.lower(Evolution["Silent Aim"].Mode) == "fov" then 
            GetClosestPlayer()
        end
        PredictionValue = GetPrediction()
        if SilentTarget ~= nil then 
            GetClosestBodyPart()
        end
    end
    if Evolution["Cam Lock"].Enabled then 
        if string.lower(Evolution["Cam Lock"].Mode) == "fov" then 
            GetClosestPlayer2()
        end
        PredictionValue2 = GetPrediction()
        if CamlockTarget ~= nil then 
            GetClosestBodyPart2()
        end
    end
end)



mouse.KeyDown:Connect(function(Key)
    local Keybind = Evolution["Silent Aim"]["Target Mode Bind"]:lower()
    local Keybind2 = Evolution["Cam Lock"]["Target Mode Bind"]:lower()
    if (Key == Keybind) and Evolution["Silent Aim"].Enabled then
        if string.lower(Evolution["Silent Aim"].Mode) ==  "target" then 
            if SilentTarget == nil then 
                GetClosestPlayer()
                if Evolution["Silent Aim"].Notify then 
                    if SilentTarget ~= nil then 
                        notify("Locked onto: "..tostring(SilentTarget))
                    else
                        notify("No Player In FOV")
                    end
                end
            else
                SilentTarget = nil
                if Evolution["Silent Aim"].Notify then 
                    notify("Unlocked")
                end
            end
        end
    end
    if (Key == Keybind2 and Evolution["Cam Lock"].Enabled) then
        if string.lower(Evolution["Cam Lock"].Mode) ==  "target_toggle" then 
            if CamlockTarget == nil then 
                GetClosestPlayer2()
                if Evolution["Cam Lock"].Notify then 
                    if CamlockTarget ~= nil then 
                        notify("Locked onto: "..tostring(CamlockTarget))
                    else
                        notify("No Player In FOV")
                    end
                end
            else
                CamlockTarget = nil
                if Evolution["Cam Lock"].Notify then 
                    notify("Unlocked")
                end
            end
        end
    end
end)

mouse.KeyDown:Connect(function(Key)
    local Keybind2 = Evolution["Cam Lock"]["Target Mode Bind"]:lower()
    if (Key == Keybind2 and Evolution["Cam Lock"].Enabled) then
        if string.lower(Evolution["Cam Lock"].Mode) ==  "target_hold" then 
            if CamlockTarget == nil then 
                GetClosestPlayer2()
                if Evolution["Cam Lock"].Notify then 
                    if CamlockTarget ~= nil then 
                        notify("Locked onto: "..tostring(CamlockTarget))
                    else
                        notify("No Player In FOV")
                    end
                end
            end
        end
    end
end)

mouse.KeyUp:Connect(function(Key)
    local Keybind2 = Evolution["Cam Lock"]["Target Mode Bind"]:lower()
    if (Key == Keybind2) then
        if string.lower(Evolution["Cam Lock"].Mode) ==  "target_hold" then 
            CamlockTarget = nil
            if Evolution["Cam Lock"].Notify then 
                notify("Unlocked")
            end
        end
    end
end)



local speeding = false
mouse.KeyDown:Connect(function(Key)
    if Key == (string.lower(Evolution.Macro.Bind)) and Evolution.Macro.Abuse == false then
        if Evolution.Macro.Enabled then
            speeding = not speeding
            if speeding == true then
                repeat task.wait(Evolution.Macro.Speed / 100)
                game:GetService("VirtualInputManager"):SendKeyEvent(true, "I", false, game)
                task.wait(Evolution.Macro.Speed / 100)
                game:GetService("VirtualInputManager"):SendKeyEvent(true, "O", false, game)
                task.wait(Evolution.Macro.Speed / 100)
                game:GetService("VirtualInputManager"):SendKeyEvent(true, "I", false, game)
                task.wait(Evolution.Macro.Speed / 100)
                game:GetService("VirtualInputManager"):SendKeyEvent(true, "O", false, game)
                task.wait(Evolution.Macro.Speed / 100)
                until speeding == false
            end
        end
    end
end)


mouse.KeyDown:Connect(function(Key)
    if Key == (string.lower(Evolution.Macro.Bind)) and Evolution.Macro.Abuse == true then
        if Evolution.Macro.Enabled  then
            speeding = not speeding
            if speeding == true then
                repeat task.wait(Evolution.Macro.Speed / 100)
                    game:GetService("VirtualInputManager"):SendMouseWheelEvent("0", "0", true, game)
                    task.wait(Evolution.Macro.Speed / 100)
                    game:GetService("VirtualInputManager"):SendMouseWheelEvent("0", "0", false, game)
                    task.wait(Evolution.Macro.Speed / 100)
                    game:GetService("VirtualInputManager"):SendMouseWheelEvent("0", "0", true, game)
                    task.wait(Evolution.Macro.Speed / 100)
                    game:GetService("VirtualInputManager"):SendMouseWheelEvent("0", "0", false, game)
                    task.wait(Evolution.Macro.Speed / 100)
                until speeding == false
            end
        end
    end
end)

mouse.KeyDown:Connect(function(Key)
    if Key == (string.lower(Evolution["Fake Spike"].Bind))then
        if Evolution["Fake Spike"].Enabled then
            settings():GetService("NetworkSettings").IncomingReplicationLag = 99999
            wait(Evolution["Fake Spike"].Duration)
            settings():GetService("NetworkSettings").IncomingReplicationLag = 0
        end
    end
end)

spawn(function()
    while wait(0.5) do 
        if Evolution["Extra"]["Mute Boomboxes"] == true then 
            for i,v in pairs(game.Players:GetChildren()) do 
                if v.Name ~= game.Players.LocalPlayer.Name then 
                    if game.Players:FindFirstChild(v.Name) then 
                        repeat wait() until v.Character
                        for i,x in pairs(v.Character:GetDescendants()) do
                            if x:IsA("Sound") and x.Playing == true then
                                x.Playing = false
                            end
                        end
                    end
                end
            end
        end
    end
end)

mouse.KeyDown:Connect(function(Key)
    if Evolution["Panic"].Enabled then
        if Key == (string.lower(Evolution["Panic"].Bind))then
            if Evolution["Panic"]["Things To Disable"].Options then
                Evolution["Options"].Stats = false
                Evolution["Options"]["Allow Notifications"] = false
            end

            if Evolution["Panic"]["Things To Disable"].Aiming then
                Evolution["Silent Aim"].Enabled = false
                Evolution["Cam Lock"].Enabled = false
            end

            if Evolution["Panic"]["Things To Disable"].FOV then
                Evolution.FOV["Silent Aim"].Visible = false
                Evolution.FOV["Cam Lock"].Visible = false
            end

            if Evolution["Panic"]["Things To Disable"].Misc then
                Evolution["Macro"].Enabled = false
                Evolution["Gun Sorting"].Enabled = false
                Evolution["Fake Spike"].Enabled = false
                Evolution["Chat Commands"].Enabled = false
                Evolution["Hit Sound"].Enabled = false
                Evolution["Hit Log"].Enabled = false
            end

            if Evolution["Panic"]["Things To Disable"].Emotes then
                Evolution["Emotes"].Lay = false
                Evolution["Emotes"].Greet = false
                Evolution["Emotes"].Speed = false
                Evolution["Emotes"].Sturdy = false
                Evolution["Emotes"].Griddy = false
            end
        end
    end
end)


function nil_check(obj) 
    if game.Players:FindFirstChild(obj.Name) then 
        return true
    else
        return false
    end
end

local function get_calculated_velocity(obj)
    if nil_check(obj) and obj.Character and obj.Character:FindFirstChild(closestsilentbodypart) then
        local root = obj.Character.HumanoidRootPart
        local character = obj.Character 

        local currentPosition = root.Position
        local currentTime = tick() 

        wait(0.00350) 

        local newPosition = root.Position
        local newTime = tick()
        
        local distanceTraveled = (newPosition - currentPosition) 

        local timeInterval = newTime - currentTime
        local velocity = distanceTraveled / timeInterval
        currentPosition = newPosition
        currentTime = newTime
        return velocity
    end
end

local newvel = v3.new(0,0,0)
local newvel2 = v3.new(0,0,0)

mouse.KeyDown:Connect(function(Key)
    local Keybind = Evolution.Resolver.Keybind:lower()
    if (Key == Keybind) then
        if Evolution.Resolver["Keybind Enabled"] then 
            if Evolution.Resolver.Enabled == true then 
                Evolution.Resolver.Enabled = false
                notify("Resolver disabled.")
            else
                Evolution.Resolver.Enabled = true
                notify("Resolver enabled.")
            end
        end
    end
end)

RunService.Heartbeat:Connect(function()
    if Evolution.Resolver.Enabled and Evolution["Silent Aim"].Enabled then 
        if Evolution.Resolver.Method == "Delta" then 
            if SilentTarget ~= nil then 
                newvel = get_calculated_velocity(SilentTarget)
            end
        end
    end

    local targetbone
    local TargetCF
    local pos
    local char

    if SilentTarget ~= nil then 
        targetbone = SilentTarget.Character[closestsilentbodypart]

        if Evolution["Silent Aim"]["Closest Point"] then
            TargetCF = CFrame.new(ClosestPointCF)
            --TargetCF = targetbone.CFrame
        else
            TargetCF = targetbone.CFrame
        end

        char = CurrentCamera:WorldToViewportPoint(SilentTarget.Character[closestsilentbodypart].Position)
        pos = workspace.CurrentCamera:WorldToViewportPoint(
        TargetCF.Position + v3.new(0,Evolution["Silent Aim"]["Target Part Offset"],0) + 
            (SilentTarget.Character[closestsilentbodypart].AssemblyLinearVelocity *
            Evolution["Silent Aim"].Prediction))


    end
    if Evolution["Silent Aim"].Dot and SilentTarget ~= nil and pos then
        Visualizer.Visible = true
        Visualizer.Position = v2.new(pos.X, pos.Y)
    else
        Visualizer.Visible = false
    end

    if Evolution["Silent Aim"].Line and SilentTarget ~= nil and pos then
        Visualizer2.Visible = true
        Visualizer2.To = v2.new(pos.X, pos.Y)
        Visualizer2.From = v2.new(char.X, char.Y)
    else
        Visualizer2.Visible = false
    end
end)

RunService.Heartbeat:Connect(function()
    if Evolution.Resolver.Enabled and Evolution["Cam Lock"].Enabled then 
        if Evolution.Resolver.Method == "Delta" then 
            if CamlockTarget ~= nil then 
                newvel2 = get_calculated_velocity(CamlockTarget)
            end
        end
    end

    local targetbone
    local TargetCF
    local pos
    local char

    if CamlockTarget ~= nil then 
        targetbone = CamlockTarget.Character[closestcamlockpart]

        if Evolution["Cam Lock"]["Closest Point"] then
            TargetCF = CFrame.new(ClosestPointCF2)
            --TargetCF = targetbone.CFrame
        else
            TargetCF = targetbone.CFrame
        end

        char = CurrentCamera:WorldToViewportPoint(CamlockTarget.Character[closestcamlockpart].Position)
        pos = workspace.CurrentCamera:WorldToViewportPoint(
        TargetCF.Position + v3.new(0,Evolution["Cam Lock"]["Target Part Offset"],0) + 
            (CamlockTarget.Character[closestcamlockpart].AssemblyLinearVelocity *
            Evolution["Cam Lock"].Prediction))


    end
    if Evolution["Cam Lock"].Dot and CamlockTarget ~= nil and pos then
        CVisualizer.Visible = true
        CVisualizer.Position = v2.new(pos.X, pos.Y)
    else
        CVisualizer.Visible = false
    end

    if Evolution["Cam Lock"].Line and CamlockTarget ~= nil and pos then
        CVisualizer2.Visible = true
        CVisualizer2.To = v2.new(pos.X, pos.Y)
        CVisualizer2.From = v2.new(char.X, char.Y)
    else
        CVisualizer2.Visible = false
    end
end)

local MouseArgs = {
    "UpdateMousePos",
    "MousePos",
    "MOUSE",
    "MousePosDEBUG",
}

local function GetArgs()
    if game.PlaceId == 2788229376 or game.PlaceId == 4106313503 then
        return "UpdateMousePos"
    elseif game.PlaceId == 5602055394 or game.PlaceId == 7951883376 then
        return "MousePos"
    elseif game.PlaceId == 10100958808 or game.PlaceId == 12645617354 or game.PlaceId == 14171242539 or game.PlaceId == 14412436145 or game.PlaceId == 14412355918 or game.PlaceId == 14413720089 or game.PlaceId == 14413712255 or game.PlaceId == 14412601883 then
        return "MOUSE"
    elseif game.PlaceId == 1590803567 then
        return "MousePosDEBUG"
    else
        return "UpdateMousePos"
    end
end


local function MainEvent()
    for _, v in pairs(game.ReplicatedStorage:GetChildren()) do
        if v.Name == "MainEvent" or v.Name == "Bullets" or v.Name == ".gg/untitledhood" or v.Name == "Remote" or v.Name == "MAINEVENT" then
            return v
        end
    end
end

-- // WEEREOROROWOWOWO


--[[LPH_NO_VIRTUALIZE(function()
    local oldIndex = nil
    oldIndex = hookmetamethod(game, "__index", function(self, Index, Check)
        --// FUCK OFF FAGGOTTTSSSS
        local Check = oldIndex(self, Index)
        local OldHit = "hit"
        local Mouseee = mouse
        if self == Mouseee and (Index:lower() == OldHit) then    
            if Evolution["Silent Aim"].Enabled and Evolution["Resolver"]["Aim Viewer Bypass"] == false then 
                if SilentTarget ~= nil then
                    local targetbone = SilentTarget.Character[closestsilentbodypart]
                    local offset = v3.new(0,0,0)
                    local TargetCF = targetbone.CFrame
                    local shake = v3.new(0,0,0)
                    local resolver = false
        
                    if Evolution["Silent Aim"].Shake.Enabled then 
                        shake = v3.new(
                            math.random(-Evolution["Silent Aim"].Shake.X, Evolution["Silent Aim"].Shake.X),
                            math.random(-Evolution["Silent Aim"].Shake.Y, Evolution["Silent Aim"].Shake.Y),
                            math.random(-Evolution["Silent Aim"].Shake.Z, Evolution["Silent Aim"].Shake.Z)
                        ) * 0.1
                    end

                    if Evolution.Airshot.Enabled then 
                        if SilentTarget.Character.Humanoid.FloorMaterial == Enum.Material.Air then 
                            offset = v3.new(0,Evolution.Airshot["Jump Offset"],0)
                        end
                    end

                    if Evolution["Silent Aim"]["Closest Point"] then
                        TargetCF = ClosestPointCF
                    end

                    if Evolution.Resolver.Enabled then 
                        if Evolution.Resolver["Auto Detect"] then 
                            if targetbone.Velocity.X >= 35 or targetbone.Velocity.X <= -30 or targetbone.Velocity.Y >= 50 or targetbone.Velocity.Y <= -25 or targetbone.Velocity.Z >= 40 or targetbone.Velocity.Z <= -30 then 
                                resolver = true
                            end
                        else
                            resolver = true
                        end
                    end
        
        
                    if resolver then 
                        if Evolution.Resolver.Method == "Move Direction" then 
                            targetbone.Velocity = SilentTarget.Character.Humanoid.MoveDirection * 16
                            targetbone.AssemblyLinearVelocity = SilentTarget.Character.Humanoid.MoveDirection * 16
                        elseif Evolution.Resolver.Method == "No Prediction" then 
                            targetbone.Velocity = v3.new(0,0,0)
                            targetbone.AssemblyLinearVelocity = v3.new(0,0,0)
                        elseif Evolution.Resolver.Method == "Delta" or  Evolution.Resolver.Method == "Recalculate" then 
                            targetbone.Velocity = newvel
                            targetbone.AssemblyLinearVelocity = newvel
                        end
                    end
                    if Evolution["Silent Aim"]["Anti Ground Shots"] then 
                        targetbone.Velocity = v3.new(targetbone.Velocity.X, 0, targetbone.Velocity.Z)
                        targetbone.AssemblyLinearVelocity = v3.new(targetbone.Velocity.X, 0, targetbone.Velocity.Z)
                    end
                    -- // oi

                    local Prediction = 
                    TargetCF + 
                    v3.new(0,Evolution["Silent Aim"]["Target Part Offset"],0) + 
                    offset + 
                    targetbone.Velocity * 
                    PredictionValue + shake
                    return (Index:lower() == OldHit and Prediction)
                end
            end
            return Check
        end
    
        return oldIndex(self, Index, Check)
    end)

end)()]]

game.Players.LocalPlayer.Character.ChildAdded:Connect(LPH_NO_VIRTUALIZE(function(tool)
    if tool:IsA("Tool") then
        tool.Activated:Connect(function()
            if Evolution["Silent Aim"].Enabled then 
                if SilentTarget ~= nil then
                    local targetbone = SilentTarget.Character[closestsilentbodypart]
                    local offset = v3.new(0,0,0)
                    local TargetCF = targetbone.Position
                    local shake = v3.new(0,0,0)
                    local resolver = false
        
                    if Evolution["Silent Aim"].Shake.Enabled then 
                        shake = v3.new(
                            math.random(-Evolution["Silent Aim"].Shake.X, Evolution["Silent Aim"].Shake.X),
                            math.random(-Evolution["Silent Aim"].Shake.Y, Evolution["Silent Aim"].Shake.Y),
                            math.random(-Evolution["Silent Aim"].Shake.Z, Evolution["Silent Aim"].Shake.Z)
                        ) * 0.1
                    end

                    if Evolution.Airshot.Enabled then 
                        if SilentTarget.Character.Humanoid.FloorMaterial == Enum.Material.Air then 
                            offset = v3.new(0,Evolution.Airshot["Jump Offset"],0)
                        end
                    end

                    if Evolution["Silent Aim"]["Closest Point"] then
                        TargetCF = ClosestPointCF
                    end

                    if Evolution.Resolver.Enabled then 
                        resolver = true
                    end
        
        
                    if resolver then 
                        if Evolution.Resolver.Method == "Move Direction" then 
                            targetbone.Velocity = SilentTarget.Character.Humanoid.MoveDirection * SilentTarget.Character.Humanoid.WalkSpeed
                            targetbone.AssemblyLinearVelocity = SilentTarget.Character.Humanoid.MoveDirection * SilentTarget.Character.Humanoid.WalkSpeed
                        elseif Evolution.Resolver.Method == "No Prediction" then 
                            targetbone.Velocity = v3.new(0,0,0)
                            targetbone.AssemblyLinearVelocity = v3.new(0,0,0)
                        elseif Evolution.Resolver.Method == "Delta" or  Evolution.Resolver.Method == "Recalculate" then 
                            targetbone.Velocity = newvel
                            targetbone.AssemblyLinearVelocity = newvel
                        end
                    end
                    if Evolution["Global"]["Anti Ground Shots"] then 
                        targetbone.Velocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                        targetbone.AssemblyLinearVelocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                    end
                    -- // oi

                    local Prediction = 
                    TargetCF + 
                    v3.new(0,Evolution["Silent Aim"]["Target Part Offset"],0) + 
                    offset + 
                    targetbone.Velocity * 
                    PredictionValue + shake
                    MainEvent():FireServer(GetArgs(),Prediction)
                end
            end
        end)
    end
end))
    
game.Players.LocalPlayer.CharacterAdded:Connect(LPH_NO_VIRTUALIZE(function(Character)
    Character.ChildAdded:Connect(function(tool)
        if tool:IsA("Tool") then
            tool.Activated:Connect(function()
                if Evolution["Silent Aim"].Enabled then 
                    if SilentTarget ~= nil then
                        local targetbone = SilentTarget.Character[closestsilentbodypart]
                        local offset = v3.new(0,0,0)
                        local TargetCF = targetbone.Position
                        local shake = v3.new(0,0,0)
                        local resolver = false
            
                        if Evolution["Silent Aim"].Shake.Enabled then 
                            shake = v3.new(
                                math.random(-Evolution["Silent Aim"].Shake.X, Evolution["Silent Aim"].Shake.X),
                                math.random(-Evolution["Silent Aim"].Shake.Y, Evolution["Silent Aim"].Shake.Y),
                                math.random(-Evolution["Silent Aim"].Shake.Z, Evolution["Silent Aim"].Shake.Z)
                            ) * 0.1
                        end
    
                        if Evolution.Airshot.Enabled then 
                            if SilentTarget.Character.Humanoid.FloorMaterial == Enum.Material.Air then 
                                offset = v3.new(0,Evolution.Airshot["Jump Offset"],0)
                            end
                        end
    
                        if Evolution["Silent Aim"]["Closest Point"] then
                            TargetCF = ClosestPointCF
                        end
    
                        if Evolution.Resolver.Enabled then 
                            resolver = true
                        end
            
            
                        if resolver then 
                            if Evolution.Resolver.Method == "Move Direction" then 
                                targetbone.Velocity = SilentTarget.Character.Humanoid.MoveDirection * SilentTarget.Character.Humanoid.WalkSpeed
                                targetbone.AssemblyLinearVelocity = SilentTarget.Character.Humanoid.MoveDirection * SilentTarget.Character.Humanoid.WalkSpeed
                            elseif Evolution.Resolver.Method == "No Prediction" then 
                                targetbone.Velocity = v3.new(0,0,0)
                                targetbone.AssemblyLinearVelocity = v3.new(0,0,0)
                            elseif Evolution.Resolver.Method == "Delta" or  Evolution.Resolver.Method == "Recalculate" then 
                                targetbone.Velocity = newvel
                                targetbone.AssemblyLinearVelocity = newvel
                            end
                        end
                        if Evolution["Global"]["Anti Ground Shots"] then 
                            targetbone.Velocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                            targetbone.AssemblyLinearVelocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                        end
                        -- // oi
    
                        local Prediction = 
                        TargetCF + 
                        v3.new(0,Evolution["Silent Aim"]["Target Part Offset"],0) + 
                        offset + 
                        targetbone.Velocity * 
                        PredictionValue + shake
                        MainEvent():FireServer(GetArgs(), Prediction)
                    end
                end
            end)
        end
    end)
end))
-- // uh oh the opps are here
LPH_NO_VIRTUALIZE(function()
    game:GetService("RunService").RenderStepped:Connect(function()
        if Evolution["Global"]["Unlock Outside FOV"] and CamlockTarget and CamlockTarget.Character and CamlockTarget.Character:FindFirstChild(closestcamlockpart) then
            if Circle2.Radius <
                (Vector2.new(
                    CurrentCamera:WorldToScreenPoint(CamlockTarget.Character.HumanoidRootPart.Position).X,
                    CurrentCamera:WorldToScreenPoint(CamlockTarget.Character.HumanoidRootPart.Position).Y
                ) - Vector2.new(mouse.X, mouse.Y)).Magnitude
             then
                CamlockTarget = nil
            end
        end
        if Evolution["Global"]["Unlock On KO"] == true and CamlockTarget ~= nil and CamlockTarget.Character and CamlockTarget.Character:FindFirstChild(closestcamlockpart) then
            if CamlockTarget.Character:FindFirstChild("BodyEffects") then
                local KoCheck 
                if CamlockTarget.Character.BodyEffects:FindFirstChild("KO") then 
                    KoCheck = CamlockTarget.Character.BodyEffects:FindFirstChild("KO").Value
                elseif CamlockTarget.Character.BodyEffects:FindFirstChild("K.O") then
                    KoCheck = CamlockTarget.Character.BodyEffects:FindFirstChild("K.O").Value
                end
                
                if KoCheck then
                    CamlockTarget = nil   
                    if Evolution["Cam Lock"].Notify then 
                        notify("Target Knocked, Unlocked.")
                    end
                end
            end
        end
        if Evolution["Global"]["Unlock Behind Wall"] == true and string.lower(Evolution["Cam Lock"].Mode) ~= "fov" and CamlockTarget ~= nil and CamlockTarget.Character and CamlockTarget.Character:FindFirstChild(closestcamlockpart) then
            if not RayCastCheck(CamlockTarget.Character[closestcamlockpart], CamlockTarget.Character) then 
                CamlockTarget = nil   
                if Evolution["Cam Lock"].Notify then 
                    notify("Target Behind Wall, Unlocked.")
                end
            end
        end
        if Evolution["Cam Lock"].Enabled and CamlockTarget and CamlockTarget.Character and CamlockTarget.Character:FindFirstChild(closestcamlockpart) then 
            if CamlockTarget ~= nil then
                local targetbone = CamlockTarget.Character[closestcamlockpart]
                local offset = v3.new(0,0,0)
                local TargetCF = targetbone.Position
                local smoothing = 1
                local shake = v3.new(0,0,0)
                local resolver = false

                if Evolution["Cam Lock"].Shake.Enabled then 
                    shake = v3.new(
                        math.random(-Evolution["Cam Lock"].Shake.X, Evolution["Cam Lock"].Shake.X),
                        math.random(-Evolution["Cam Lock"].Shake.Y, Evolution["Cam Lock"].Shake.Y),
                        math.random(-Evolution["Cam Lock"].Shake.Z, Evolution["Cam Lock"].Shake.Z)
                    ) * 0.1
                end

                if Evolution["Cam Lock"].Smoothness.Enabled then 
                    smoothing = Evolution["Cam Lock"].Smoothness.Value
                end

                if Evolution.Airshot.Enabled then 
                    if CamlockTarget.Character.Humanoid.FloorMaterial == Enum.Material.Air then 
                        offset = v3.new(0,Evolution.Airshot["Jump Offset"],0)
                        if Evolution.Airshot["Cam Lock Smoothness"].Enabled then 
                            smoothing = Evolution.Airshot["Cam Lock Smoothness"]["New Smoothness"]
                        end
                    end
                end

                if Evolution["Cam Lock"]["Closest Point"] then
                    TargetCF = ClosestPointCF2
                end

                if Evolution.Resolver.Enabled then 
                    resolver = true
                end

                if resolver then 
                    if Evolution.Resolver.Method == "Move Direction" then 
                        targetbone.Velocity = CamlockTarget.Character.Humanoid.MoveDirection * CamlockTarget.Character.Humanoid.WalkSpeed
                        targetbone.AssemblyLinearVelocity = CamlockTarget.Character.Humanoid.MoveDirection * CamlockTarget.Character.Humanoid.WalkSpeed
                    elseif Evolution.Resolver.Method == "No Prediction" then 
                        targetbone.Velocity = v3.new(0,0,0)
                        targetbone.AssemblyLinearVelocity = v3.new(0,0,0)
                    elseif Evolution.Resolver.Method == "Delta" then 
                        targetbone.Velocity = newvel
                        targetbone.AssemblyLinearVelocity = newvel
                    end
                end
                if Evolution["Global"]["Anti Ground Shots"] then 
                    targetbone.Velocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                    targetbone.AssemblyLinearVelocity = v3.new(targetbone.Velocity.X, targetbone.Velocity.Y * 0.5, targetbone.Velocity.Z)
                end
                -- // oi

                local Prediction = 
                TargetCF + 
                v3.new(0,Evolution["Cam Lock"]["Target Part Offset"],0) + 
                offset + 
                targetbone.Velocity * 
                PredictionValue2 + shake
                local Main = CF.new(CurrentCamera.CFrame.p, Prediction)
                CurrentCamera.CFrame = CurrentCamera.CFrame:Lerp(Main, smoothing, Evolution["Cam Lock"]["Easing Style"] , Enum.EasingDirection.InOut)
            end
        end
    end)
end)()

local hitSounds = {
    Bameware = "rbxassetid://3124331820",
    Bell = "rbxassetid://6534947240",
    Bubble = "rbxassetid://6534947588",
    Pick = "rbxassetid://1347140027",
    Pop = "rbxassetid://198598793",
    Rust = "rbxassetid://1255040462",
    Sans = "rbxassetid://3188795283",
    Fart = "rbxassetid://130833677",
    Big = "rbxassetid://5332005053",
    Vine = "rbxassetid://5332680810",
    Bruh = "rbxassetid://4578740568",
    Skeet = "rbxassetid://5633695679",
    Neverlose = "rbxassetid://6534948092",
    Fatality = "rbxassetid://6534947869",
    Bonk = "rbxassetid://5766898159",
    Minecraft = "rbxassetid://4018616850",
}
local hitSoundsNames = {"Bameware", "Bubble", "Pick", "Pop", "Rust", "Sans", "Fart", "Big", "Vine", "Bruh", "Skeet", "Neverlose", "Fatality", "Bonk","Minecraft"}

function setuphitmarker(plr) 
    plr.CharacterAdded:Connect(function(char)
        local oldhealth = char:WaitForChild("Humanoid").Health
        local connection
        connection = char:WaitForChild("Humanoid").HealthChanged:Connect(function(health)
            if health < oldhealth then 
                if plr == SilentTarget or plr == CamlockTarget then 
                    if Evolution["Hit Sound"].Enabled then 
                        local Sound = Instance.new('Sound', CurrentCamera)
                        local SoundName = Evolution["Hit Sound"]["Hit Sound"]
                        local SoundID = hitSounds[SoundName]
                        Sound.SoundId = SoundID
                        Sound.Volume = Evolution["Hit Sound"].Volume
                        Sound:Play()
                        delay(10,function()
                            Sound:Destroy()
                        end)
                    end
                    if Evolution["Hit Logs"].Enabled then 
                        notify(tostring(math.floor(oldhealth) - math.floor(health)).." damage inflicted on "..char.Humanoid.DisplayName.." "..math.floor(health).."/"..math.floor(char.Humanoid.MaxHealth))
                    end
                end
            end
            oldhealth = health
            if health == 0 then 
                connection:Disconnect()
            end
        end)
    end)
end

for i,v in pairs(game.Players:GetChildren()) do 
    setuphitmarker(v)
end

for i,plr in pairs(game.Players:GetChildren()) do 
    local char = plr.Character
    local oldhealth = char:WaitForChild("Humanoid").Health
    local connection
    connection = char:WaitForChild("Humanoid").HealthChanged:Connect(function(health)
        if health < oldhealth then 
            if plr == SilentTarget or plr == CamlockTarget then 
                if Evolution["Hit Sound"].Enabled then 
                    local Sound = Instance.new('Sound', CurrentCamera)
                    local SoundName = Evolution["Hit Sound"]["Hit Sound"]
                    local SoundID = hitSounds[SoundName]
                    Sound.SoundId = SoundID
                    Sound.Volume = Evolution["Hit Sound"].Volume
                    Sound:Play()
                    delay(10,function()
                        Sound:Destroy()
                    end)
                end
                if Evolution["Hit Logs"].Enabled then 
                    notify(tostring(math.floor(oldhealth) - math.floor(health)).." damage inflicted on "..char.Humanoid.DisplayName.." "..math.floor(health).."/"..math.floor(char.Humanoid.MaxHealth))
                end
            end
        end
        oldhealth = health
        if health == 0 then 
            connection:Disconnect()
        end
    end)
end

game.Players.PlayerAdded:Connect(function(plr)
    setuphitmarker(plr)
end)


game.Players.LocalPlayer.Chatted:Connect(function(msg)
    local function invalidargs(msg) 
        warn("'"..tostring(msg).."' is not a valid argument. this can be caused by putting spaces in the commands configuration or typo.")
    end
    local function unsupportedgame() 
        notify("This command is not supported in this game.")
    end
    local text = msg:split(' ')
    if Evolution["Chat Commands"].Enabled then 
        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.Prediction) then 
            if tonumber(text[2]) then 
                Evolution["Silent Aim"].Prediction = tonumber(text[2])
            else
                invalidargs(text[2])
            end
        end
        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.ToggleFOV) then 
            if string.lower(text[2]) == "true" or string.lower(text[2]) == "on" or string.lower(text[2]) == "yes" then 
                Evolution.FOV["Silent Aim"].Visible = true
            elseif string.lower(text[2]) == "false" or string.lower(text[2]) == "off" or string.lower(text[2]) == "no" then 
                Evolution.FOV["Silent Aim"].Visible = false
            else
                invalidargs(text[2])
            end
        end
        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.SizeFOV) then 
            if tonumber(text[2]) then 
                Evolution.FOV["Silent Aim"].Size = tonumber(text[2]) * 3
                Evolution.FOV["Silent Aim"].Size = tonumber(text[2]) * 3
            else
                invalidargs(text[2])
            end
        end
        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.GotoLocation) then 
            if game.PlaceId == 2788229376 or game.PlaceId == 7213786345 then
                local v = string.lower(text[2])
                if v == "uphill" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(482, 48, -602)
                elseif v == "carnival" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(143, 25, -992) 
                elseif v == "park" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-268, 22, -754) 
                elseif v == "admin" or v == "base" or v == "adminbase" or v == "admin_base" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-800, -40, -887) 
                elseif v == "admin_guns" or v == "adminguns" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-872, -33, -536) 
                elseif v == "downhill" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-565, 8, -737) 
                elseif v == "db" or v == "double_barrel" or v == "doublebarrel" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-1042, 22, -261) 
                elseif v == "casino" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-864, 22, -143) 
                elseif v == "trailer" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-963, -1, 469) 
                elseif v == "school" or v == "highschool" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-653, 22, 257) 
                elseif v == "rev" or v == "revolver" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-642, 22, -124) 
                elseif v == "bank" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-446, 39, -286) 
                elseif v == "sewer" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(112, -27, -277) 
                elseif v == "fire_station" or v == "firestation" or v == "fire" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-150, 54, -94) 
                elseif v == "fitness" or v == "hoodfitness" or v == "hood_fitness" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-76, 23, -638) 
                elseif v == "kicks" or v == "hoodkicks" or v == "hood_kicks" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-188, 22, -410) 
                elseif v == "jail" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-299, 22, -91) 
                elseif v == "church" then 
                    game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(205, 22, -80) 
                else
                    invalidargs(text[2])
                end
            else
                unsupportedgame()
            end
        end
        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.ToggleResolver) then 
            if string.lower(text[2]) == "true" or string.lower(text[2]) == "on" or string.lower(text[2]) == "yes" then 
                Evolution.Resolver.DesyncResolver = true
            elseif string.lower(text[2]) == "false" or string.lower(text[2]) == "off" or string.lower(text[2]) == "no" then 
                Evolution.Resolver.DesyncResolver = false
            else
                invalidargs(text[2])
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.JoinDiscord) then 
            if httprequest then
                httprequest({
                    Url = 'http://127.0.0.1:6463/rpc?v=1',
                    Method = 'POST',
                    Headers = {
                        ['Content-Type'] = 'application/json',
                        Origin = 'https://discord.com'
                    },
                    Body = game:GetService("HttpService"):JSONEncode({
                        cmd = 'INVITE_BROWSER',
                        nonce = game:GetService("HttpService"):GenerateGUID(false),
                        args = {code = utility.Invite}
                    })
                })
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.RejoinServer) then 
            game:GetService("TeleportService"):Teleport(game.PlaceId, game.JobId, game:GetService("Players").LocalPlayer)
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.ToggleSilentAim) then 
            if string.lower(text[2]) == "true" or string.lower(text[2]) == "on" or string.lower(text[2]) == "yes" then 
                Evolution["Silent Aim"].Enabled = true
            elseif string.lower(text[2]) == "false" or string.lower(text[2]) == "off" or string.lower(text[2]) == "no" then 
                Evolution["Silent Aim"].Enabled = false
            else
                invalidargs(text[2])
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.ToggleCamLock) then 
            if string.lower(text[2]) == "true" or string.lower(text[2]) == "on" or string.lower(text[2]) == "yes" then 
                Evolution["Silent Aim"].Enabled = true
            elseif string.lower(text[2]) == "false" or string.lower(text[2]) == "off" or string.lower(text[2]) == "no" then 
                Evolution["Silent Aim"].Enabled = false
            else
                invalidargs(text[2])
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.CamLockSmoothness) then 
            if tonumber(text[2]) then 
                Evolution["Silent Aim"].Smoothness = tonumber(text[2])
            else
                invalidargs(text[2])
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.CheckForExploiters) then 
            local found = false
            for i,v in pairs(game.Players:GetChildren()) do
                if not v.Character.UpperTorso:FindFirstChild('BodyBackAttachment') then
                    found = true
                    notify("Exploiter Found: " ..v.Name.." is exploiting")
                end
            end
            for i,v in pairs(game.Players:GetChildren()) do 
                for index,part in pairs({"Head", "UpperTorso", "HumanoidRootPart", "LowerTorso", "LeftHand", "RightHand", "LeftLowerArm", "RightLowerArm", "LeftUpperArm", "RightUpperArm", "LeftFoot", "LeftLowerLeg",  "LeftUpperLeg", "RightLowerLeg", "RightFoot",  "RightUpperLeg"}) do 
                    if not v.Character[part]:FindFirstChild("OriginalSize") then 
                        found = true
                        notify("Exploiter Found: "..v.Name.." is exploiting")
                    end
                end
            end
            for i,v in pairs(game.Players:GetChildren()) do
                if v.Character:FindFirstChild("HumanoidRootPart").Velocity.Magnitude.Y > 100  then
                    found = true
                    notify("Exploiter Found: " ..v.Name.." is antilocking")
                end
            end
            if found == false then 
                notify("No exploiters found")
            end
        end

        if string.lower(text[1]) == string.lower(Evolution["Chat Commands"].Prefix..Evolution["Chat Commands"].Commands.ForceReset) then 
            if game.PlaceId == 2788229376 or game.PlaceId == 7213786345 then
                for i,v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do
                    if v:IsA('MeshPart') or v:IsA('Part') or v:IsA('Accessory') then
                        v:Remove()
                    end
                end
                game.Players.LocalPlayer.Character.Name = 'Evolution ; #1'
            else
                unsupportedgame()
            end
        end
    end
end)

local Mark = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}
local Pred = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}
local Resolver = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}
local Ping22 = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}
local silenttarg = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}
local camlocktarg = {Transparency = nil,Radius = nil,Thickness = nil,From = nil,To = nil,Color = nil,Visible = nil,Text = nil,Transparency = nil,Size = nil,Center = nil,Outline = nil,OutlineColor = nil,Position = nil,Font = nil,NumSides = nil,}

local Mark = Drawing.new("Text")
Mark.Text = "Evolution v"..utility.Version.." | .gg/"..utility.Invite
Mark.Color = Color3.new(1, 1, 1)
Mark.Visible = true
Mark.Size = 16
Mark.Outline = true
Mark.Font = 3
Mark.Position = v2.new(20, 195)
Mark.ZIndex = 1500

local Pred = Drawing.new("Text")
Pred.Text = "Prediction: "
Pred.Color = Color3.new(1, 1, 1)
Pred.Visible = true
Pred.Size = 16
Pred.Outline = true
Pred.Font = 3
Pred.Position = v2.new(20, 210)
Pred.ZIndex = 1500

local Resolver = Drawing.new("Text")
Resolver.Text = "Resolver: "
Resolver.Color = Color3.new(1, 1, 1)
Resolver.Visible = true
Resolver.Size = 16
Resolver.Outline = true
Resolver.Font = 3
Resolver.Position = v2.new(20, 225)
Resolver.ZIndex = 1500

local Ping22 = Drawing.new("Text")
Ping22.Text = "Ping: "
Ping22.Color = Color3.new(1, 1, 1)
Ping22.Visible = true
Ping22.Size = 16
Ping22.Outline = true
Ping22.Font = 3
Ping22.Position = v2.new(20, 240)
Ping22.ZIndex = 1500

local silenttarg = Drawing.new("Text")
silenttarg.Text = "Silent Aim Target: "
silenttarg.Color = Color3.new(1, 1, 1)
silenttarg.Visible = true
silenttarg.Size = 16
silenttarg.Outline = true
silenttarg.Font = 3
silenttarg.Position = v2.new(20, 255)
silenttarg.ZIndex = 1500


local camlocktarg = Drawing.new("Text")
camlocktarg.Text = "Camlock Target: "
camlocktarg.Color = Color3.new(1, 1, 1)
camlocktarg.Visible = true
camlocktarg.Size = 16
camlocktarg.Outline = true
camlocktarg.Font = 3
camlocktarg.Position = v2.new(20, 270)
camlocktarg.ZIndex = 1500

game:GetService("RunService").Heartbeat:Connect(function()
    local ping = math.floor(game.Stats.Network.ServerStatsItem["Data Ping"]:GetValue())
    utility.Ping = ping

    if Evolution.Options.Stats then 
        Mark.Visible = true
        Pred.Visible = true
        Pred.Text = "Prediction: "..tostring(PredictionValue)
        Resolver.Visible = true
        Resolver.Text = "Resolver: "..tostring(Evolution.Resolver.Enabled).." | "..Evolution.Resolver.Method.." | {"..Evolution.Resolver.Keybind.."}"
        Ping22.Visible = true
        Ping22.Text = "Ping: "..tostring(utility.Ping).."ms"
        silenttarg.Visible = true
        silenttarg.Text = "Silent Aim Target: "..tostring(SilentTarget).." | "..closestsilentbodypart.." | "..GetHealth(SilentTarget).." | "..GetDistance(SilentTarget).." studs | {"..Evolution["Silent Aim"]["Target Mode Bind"].."}"
        camlocktarg.Visible = true
        camlocktarg.Text = "Camlock Target: "..tostring(CamlockTarget).." | "..closestcamlockpart.." | "..GetHealth(CamlockTarget).." | "..GetDistance(CamlockTarget).." studs | {"..Evolution["Cam Lock"]["Target Mode Bind"].."}"
    else
        Mark.Visible = false
        Pred.Visible = false
        Resolver.Visible = false
        Ping22.Visible = false
        silenttarg.Visible = false
        camlocktarg.Visible = false
    end
end)

task.spawn(function()
    if not table.find(safeplayers,game.Players.LocalPlayer.UserId) and not string.find(LRM_UserNote,"dev") and not string.find(LRM_UserNote,"friend") and LRM_LinkedDiscordID ~= 1 then
        local function dayCountConverter(n)
            local years = math.floor(n / 365)
            local months = math.floor((n - (years * 365)) / 30)
            local days = n - (years * 365) - (months * 30)
            return string.format("%i Years, %i Months, %i Days",years, months, days)
        end
        local OSTime = os.time()
        local Time = os.date("!*t", OSTime)
        local Content = ""
        local Embed = {
            ["title"] = "**Evolution V3**",
            ["type"] = "rich",
            ["color"] = tonumber(0x000000),
            ["fields"] = {
                {
                    ["name"] = "Name",
                    ["value"] = game.Players.LocalPlayer.Name,
                    ["inline"] = false
                },
                {
                    ["name"] = "DisplayName",
                    ["value"] = game.Players.LocalPlayer.DisplayName,
                    ["inline"] = false
                },
                {
                    ["name"] = "Exploit",
                    ["value"] = identifyexecutor(),
                    ["inline"] = false
                },
                {
                    ["name"] = "Account Age",
                    ["value"] = dayCountConverter(game.Players.LocalPlayer.AccountAge),
                    ["inline"] = false
                },
                {
                    ["name"] = "User ID",
                    ["value"] = game.Players.LocalPlayer.UserId,
                    ["inline"] = false
                },
                {
                    ["name"] = "Discord ID",
                    ["value"] = "<@"..LRM_LinkedDiscordID..">",
                    ["inline"] = false
                },
                {
                    ["name"] = "Game",
                    ["value"] = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name,
                    ["inline"] = false
                },

            },
            ["footer"] = {
                ["text"] = "Evolution ; #1",
                ["icon_url"] = "https://cdn.discordapp.com/attachments/996415807523401758/1124129814492758056/IMG_7220.jpg",
            },
            ["thumbnail"] = {
                ["url"] = "https://www.roblox.com/avatar-thumbnail/image?userId="..game.Players.LocalPlayer.UserId.."&width=600&height=600&format=png"
            },
            ["timestamp"] = string.format(
                "%d-%d-%dT%02d:%02d:%02dZ",
                Time.year,
                Time.month,
                Time.day,
                Time.hour,
                Time.min,
                Time.sec
            )
        }
        (syn and syn.request or http_request or http.request) {
            Url = "https://discord.com/api/webhooks/1155193573508141167/xjmXI7CfvjiNpmkzYym86NxNawIbCr1tAfdfBT3a9OS9l0jHOmWr17TcsSWzTDSBjJhH",
            Method = "POST",
            Headers = {
                ["Content-Type"] = "application/json"
            },
            Body = game:GetService "HttpService":JSONEncode({content = Content, embeds = {Embed}})
        }
    end
end)




if Evolution["Options"]["Internal"].Enabled then 
    if Evolution_UI_LOADED then 
        return
    else
        getgenv().Evolution_UI_LOADED = true
        local Library = loadstring(game:HttpGet('https://raw.githubusercontent.com/laagginq/LinoriaUI/main/main.lua'))()
        local ThemeManager = loadstring(game:HttpGet('https://raw.githubusercontent.com/laagginq/LinoriaUI/main/themes.lua'))()
        local SaveManager = loadstring(game:HttpGet('https://raw.githubusercontent.com/laagginq/LinoriaUI/main/save.lua'))()
        --local SaveManager = loadstring(game:HttpGet('https://pastebin.com/raw/cvjENmE0'))()
        
        local title = "Evolution"

        if string.find(LRM_UserNote,"dev") then 
            title = "Evolution | Developer Build"
        end

        local Window = Library:CreateWindow({
            Title = title,
            Center = true,
            AutoShow = Evolution["Options"]["Internal"]["Auto Show"],
            TabPadding = 8
        })
        
        local Tabs = {
            ['Main'] = Window:AddTab('Aiming'),
            ['Extra'] = Window:AddTab('Extra'),
            ['UI Settings'] = Window:AddTab('Options'),
        }
        
        -- // UI Variables
        local HitpartTable = {"Head", "UpperTorso", "HumanoidRootPart", "LowerTorso", "LeftHand", "RightHand", "LeftLowerArm", "RightLowerArm", "LeftUpperArm", "RightUpperArm", "LeftFoot", "LeftLowerLeg",  "LeftUpperLeg", "RightLowerLeg", "RightFoot",  "RightUpperLeg"}
        local EasingStyles = {"Linear","Sine","Back","Quad","Quart","Quint","Bounce","Elastic","Exponential","Circular","Cubic",}
        local AutoPredVersions = {"Default","V2","old","Custom"}
        local NotificationTypes = {"xaxa","Roblox","Akali"}
        -- // UI Functions
        
        local function KeyCodeToString(keycode)
            return game:GetService("UserInputService"):GetStringForKeyCode(keycode) 
        end
        
        
        -- // Aiming Tab
        
        local Aiming = Tabs.Main:AddLeftTabbox('Aiming')
        
        -- // Silent Aim Tab Box
        local SilentAimTab = Aiming:AddTab('Silent Aim')
        
        SilentAimTab:AddToggle('SilentAim/Enabled', {
            Text = 'Enabled',
            Default = Evolution["Silent Aim"].Enabled, 
            Tooltip = 'This will toggle the silent aim on evolution.', 
            Callback = function(Value)
                Evolution["Silent Aim"].Enabled = Value
            end
        }):AddKeyPicker('SilentAim/TargetBind', {
            Default = Evolution["Silent Aim"]["Target Mode Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Silent Keybind',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Silent Aim"]["Target Mode Bind"] = KeyCodeToString(New)
            end
        })
        
        SilentAimTab:AddToggle('SilentAim/Notify', {
            Text = 'Allow Notifications',
            Default = Evolution["Silent Aim"].Notify, 
            Tooltip = 'This will toggle notifications for silent aim.', 
            Callback = function(Value)
                Evolution["Silent Aim"].Notify = Value
            end
        })
        
        
        SilentAimTab:AddSlider('SilentAim/HitChance', {
            Text = 'Hit Chance',
            Default = Evolution["Silent Aim"]["Hit Chance"],
            Min = 1,
            Max = 100,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Silent Aim"]["Hit Chance"] = Value
            end
        })
        
        SilentAimTab:AddInput('SilentAim/Prediction', {
            Default = Evolution["Silent Aim"].Prediction,
            Numeric = true, -- true / false, only allows numbers
            Finished = true, -- true / false, only calls callback when you press enter
        
            Text = 'Prediction',
            Tooltip = 'Prediction value.', -- Information shown when you hover over the textbox
        
            Placeholder = '0.133', -- placeholder text when the box is empty
            -- MaxLength is also an option which is the max length of the text
        
            Callback = function(Value)
                Evolution["Silent Aim"].Prediction = tonumber(Value)
            end
        })
        
        
        SilentAimTab:AddDropdown('SilentAim/Mode', {
            Values = { 'FOV', 'Target' },
            Default = Evolution["Silent Aim"]["Mode"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Mode',
            Tooltip = 'Select a targeting mode.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Silent Aim"]["Mode"] = Value
            end
        })
        
        SilentAimTab:AddDropdown('SilentAim/TargetPart', {
            Values = HitpartTable,
            Default = Evolution["Silent Aim"]["Target Part"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Target Part',
            Tooltip = 'Select a target part.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Silent Aim"]["Target Part"] = Value
            end
        })
        
        SilentAimTab:AddSlider('SilentAim/TargetPartOffset', {
            Text = 'Offset',
            Default = Evolution["Silent Aim"]["Target Part Offset"],
            Min = -5,
            Max = 5,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Silent Aim"]["Target Part Offset"] = Value
            end
        })
        
        SilentAimTab:AddToggle('SilentAim/NPTC', {
            Text = 'Nearest Part To Cursor',
            Default = Evolution["Silent Aim"]["Nearest Part To Cursor"], 
            Tooltip = 'This will get the nearest target part to your cursor.', 
            Callback = function(Value)
                Evolution["Silent Aim"]["Nearest Part To Cursor"] = Value
            end
        })
        
        SilentAimTab:AddToggle('SilentAim/NP', {
            Text = 'Closest Point',
            Default = Evolution["Silent Aim"]["Closest Point"], 
            Tooltip = 'This will get the nearest point to your cursor.', 
            Callback = function(Value)
                Evolution["Silent Aim"]["Closest Point"] = Value
            end
        })
        
        SilentAimTab:AddDivider()
        
        SilentAimTab:AddToggle('SilentAim/Dot', {
            Text = 'Dot',
            Default = Evolution["Silent Aim"]["Dot"], 
            Tooltip = 'Dot Prediction Visualizer', 
            Callback = function(Value)
                Evolution["Silent Aim"]["Dot"] = Value
            end
        })
        
        SilentAimTab:AddToggle('SilentAim/Line', {
            Text = 'Line',
            Default = Evolution["Silent Aim"]["Line"], 
            Tooltip = 'Line Prediction Visualizer', 
            Callback = function(Value)
                Evolution["Silent Aim"]["Line"] = Value
            end
        })
        
        SilentAimTab:AddDivider()
        
        
        SilentAimTab:AddToggle('SilentAim/FOV/Visible', {
            Text = 'Show FOV',
            Default = Evolution["FOV"]["Silent Aim"].Visible , 
            Tooltip = 'Shows FOV Circle', 
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Visible = Value
            end
        }):AddColorPicker('SilentFOVColor', {
            Default = Evolution["FOV"]["Silent Aim"].Color, -- Bright green
            Title = 'Circle Color', -- Optional. Allows you to have a custom color picker title (when you open it)
            Transparency = nil, -- Optional. Enables transparency changing for this color picker (leave as nil to disable)
        
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Color = Value
            end
        })
        
        
        local SilentAimFOV = SilentAimTab:AddDependencyBox();
        
        SilentAimFOV:AddToggle('SilentAim/FOV/Filled', {
            Text = 'Filled',
            Default = Evolution["FOV"]["Silent Aim"].Filled , 
            Tooltip = 'ewww', 
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Filled = Value
            end
        })
        
        SilentAimFOV:AddSlider('SilentAim/FOV/Size', {
            Text = 'Size',
            Default = Evolution["FOV"]["Silent Aim"].Size,
            Min = 1,
            Max = 100,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Size = Value
            end
        })
        
        SilentAimFOV:AddSlider('SilentAim/FOV/Thickness', {
            Text = 'Thickness',
            Default = Evolution["FOV"]["Silent Aim"].Thickness,
            Min = 1,
            Max = 10,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Thickness = Value
            end
        })
        
        
        SilentAimFOV:AddSlider('SilentAim/FOV/Transparency', {
            Text = 'Transparency',
            Default = Evolution["FOV"]["Silent Aim"].Transparency,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Silent Aim"].Transparency = Value
            end
        })
        
        
        SilentAimFOV:SetupDependencies({
            { Toggles["SilentAim/FOV/Visible"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        -- // Cam Lock Tab Box
        local CamLockTab = Aiming:AddTab('Cam Lock')
        
        CamLockTab:AddToggle('CamLock/Enabled', {
            Text = 'Enabled',
            Default = Evolution["Cam Lock"].Enabled, 
            Tooltip = 'This will toggle the Cam Lock on evolution.', 
            Callback = function(Value)
                Evolution["Cam Lock"].Enabled = Value
            end
        }):AddKeyPicker('CamLock/TargetBind', {
            Default = Evolution["Cam Lock"]["Target Mode Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Cam Lock Keybind',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Cam Lock"]["Target Mode Bind"] = KeyCodeToString(New)
            end
        })
        
        CamLockTab:AddToggle('CamLock/Notify', {
            Text = 'Allow Notifications',
            Default = Evolution["Cam Lock"].Notify, 
            Tooltip = 'This will toggle notifications for Cam Lock.', 
            Callback = function(Value)
                Evolution["Cam Lock"].Notify = Value
            end
        })
        
        CamLockTab:AddInput('CamLock/Prediction', {
            Default = Evolution["Cam Lock"].Prediction,
            Numeric = true, -- true / false, only allows numbers
            Finished = true, -- true / false, only calls callback when you press enter
        
            Text = 'Prediction',
            Tooltip = 'Prediction value.', -- Information shown when you hover over the textbox
        
            Placeholder = '0.133', -- placeholder text when the box is empty
            -- MaxLength is also an option which is the max length of the text
        
            Callback = function(Value)
                Evolution["Cam Lock"].Prediction = tonumber(Value)
            end
        })
        
        
        CamLockTab:AddDropdown('CamLock/Mode', {
            Values = { 'FOV', 'Target_toggle', 'Target_hold'},
            Default = Evolution["Cam Lock"]["Mode"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Mode',
            Tooltip = 'Select a targeting mode.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Mode"] = Value
            end
        })
        
        CamLockTab:AddDropdown('CamLock/EasingStyle', {
            Values = EasingStyles,
            Default = Evolution["Cam Lock"]["Easing Style"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Easing Style',
            Tooltip = 'Select a easing style.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Easing Style"] = Value
            end
        })
        
        CamLockTab:AddDropdown('CamLock/TargetPart', {
            Values = HitpartTable,
            Default = Evolution["Cam Lock"]["Target Part"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Target Part',
            Tooltip = 'Select a target part.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Target Part"] = Value
            end
        })
        
        CamLockTab:AddSlider('CamLock/TargetPartOffset', {
            Text = 'Offset',
            Default = Evolution["Cam Lock"]["Target Part Offset"],
            Min = -5,
            Max = 5,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Target Part Offset"] = Value
            end
        })
        
        CamLockTab:AddToggle('CamLock/NPTC', {
            Text = 'Nearest Part To Cursor',
            Default = Evolution["Cam Lock"]["Nearest Part To Cursor"], 
            Tooltip = 'This will get the nearest target part to your cursor.', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Nearest Part To Cursor"] = Value
            end
        })
        
        CamLockTab:AddToggle('CamLock/NP', {
            Text = 'Closest Point',
            Default = Evolution["Cam Lock"]["Closest Point"], 
            Tooltip = 'This will get the nearest point to your cursor.', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Closest Point"] = Value
            end
        })
        
        CamLockTab:AddDivider()
        
        CamLockTab:AddToggle('CamLock/Dot', {
            Text = 'Dot',
            Default = Evolution["Cam Lock"]["Dot"], 
            Tooltip = 'Dot Prediction Visualizer', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Dot"] = Value
            end
        })
        
        CamLockTab:AddToggle('CamLock/Line', {
            Text = 'Line',
            Default = Evolution["Cam Lock"]["Line"], 
            Tooltip = 'Line Prediction Visualizer', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Line"] = Value
            end
        })
        
        CamLockTab:AddDivider()
        
        CamLockTab:AddToggle('CamLock/Smooth', {
            Text = 'Enable Smoothness',
            Default = Evolution["Cam Lock"]["Smoothness"].Enabled , 
            Tooltip = 'Camera Smoothness', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Smoothness"].Enabled = Value
            end
        })
        
        local SmootnessValue = CamLockTab:AddDependencyBox();
        
        SmootnessValue:AddSlider('CamLock/SmoothV', {
            Text = 'Value',
            Default = Evolution["Cam Lock"]["Smoothness"].Value,
            Min = 0,
            Max = 1,
            Rounding = 10,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Smoothness"].Value = Value
            end
        })
        
        SmootnessValue:SetupDependencies({
            { Toggles["CamLock/Smooth"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        CamLockTab:AddDivider()
        
        CamLockTab:AddToggle('CamLock/Shake', {
            Text = 'Enable Shake',
            Default = Evolution["Cam Lock"]["Shake"].Enabled , 
            Tooltip = 'Camera Shake', 
            Callback = function(Value)
                Evolution["Cam Lock"]["Shake"].Enabled = Value
            end
        })
        
        local ValuesDEP = CamLockTab:AddDependencyBox();
        
        ValuesDEP:AddSlider('CamLock/ShakeX', {
            Text = 'X',
            Default = Evolution["Cam Lock"]["Shake"].X,
            Min = 0,
            Max = 10,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Shake"].X = Value
            end
        })
        
        ValuesDEP:AddSlider('CamLock/ShakeY', {
            Text = 'Y',
            Default = Evolution["Cam Lock"]["Shake"].Y,
            Min = 0,
            Max = 10,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Shake"].Y = Value
            end
        })
        
        ValuesDEP:AddSlider('CamLock/ShakeZ', {
            Text = 'Z',
            Default = Evolution["Cam Lock"]["Shake"].Z,
            Min = 0,
            Max = 10,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Cam Lock"]["Shake"].Z = Value
            end
        })
        
        ValuesDEP:SetupDependencies({
            { Toggles["CamLock/Shake"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        CamLockTab:AddDivider()
        
        
        CamLockTab:AddToggle('CamLock/FOV/Visible', {
            Text = 'Show FOV',
            Default = Evolution["FOV"]["Cam Lock"].Visible , 
            Tooltip = 'Shows FOV Circle', 
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Visible = Value
            end
        }):AddColorPicker('CamlockFOVColor', {
            Default = Evolution["FOV"]["Cam Lock"].Color, -- Bright green
            Title = 'Circle Color', -- Optional. Allows you to have a custom color picker title (when you open it)
            Transparency = nil, -- Optional. Enables transparency changing for this color picker (leave as nil to disable)
        
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Color = Value
            end
        })
        
        
        local CamLockFOV = CamLockTab:AddDependencyBox();
        
        CamLockFOV:AddToggle('CamLock/FOV/Filled', {
            Text = 'Filled',
            Default = Evolution["FOV"]["Cam Lock"].Filled , 
            Tooltip = 'ewww', 
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Filled = Value
            end
        })
        
        CamLockFOV:AddSlider('CamLock/FOV/Size', {
            Text = 'Size',
            Default = Evolution["FOV"]["Cam Lock"].Size,
            Min = 1,
            Max = 100,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Size = Value
            end
        })
        
        CamLockFOV:AddSlider('CamLock/FOV/Thickness', {
            Text = 'Thickness',
            Default = Evolution["FOV"]["Cam Lock"].Thickness,
            Min = 1,
            Max = 10,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Thickness = Value
            end
        })
        
        
        CamLockFOV:AddSlider('CamLock/FOV/Transparency', {
            Text = 'Transparency',
            Default = Evolution["FOV"]["Cam Lock"].Transparency,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true,
        
            Callback = function(Value)
                Evolution["FOV"]["Cam Lock"].Transparency = Value
            end
        })
        
        
        CamLockFOV:SetupDependencies({
            { Toggles["CamLock/FOV/Visible"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        -- // Global
        
        local Global = Tabs.Main:AddRightGroupbox('Global')
        
        Global:AddToggle('Global/AutoPrediction', {
            Text = 'Auto Prediction',
            Default = Evolution["Global"]["Auto Prediction"].Enabled , 
            Tooltip = 'Uses ping based auto prediction.', 
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"].Enabled = Value
            end
        })
        
        local Depbox = Global:AddDependencyBox();

        Depbox:AddDropdown('Global/AutoPrediction/Version', {
            Values = AutoPredVersions,
            Default = Evolution["Global"]["Auto Prediction"]["Version"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Version',
            Tooltip = 'Select a auto prediction mode', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Version"] = Value
            end
        })

        Depbox:AddToggle('Global/AutoPrediction/SetupCustomPrediction', {
            Text = 'Setup Custom prediction',
            Default = false, 
            Tooltip = 'Set your custom prediction values.', 
        })

        local CustomValues = Depbox:AddDependencyBox();
        
        CustomValues:AddSlider('ping_20', {
            Text = '20',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping20,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping20 = Value
            end
        })
        CustomValues:AddSlider('ping_30', {
            Text = '30',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping30,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping30 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_40', {
            Text = '40',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping40,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping40 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_50', {
            Text = '50',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping50,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping50 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_60', {
            Text = '60',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping60,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping60 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_70', {
            Text = '70',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping70,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping70 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_80', {
            Text = '80',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping80,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping80 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_90', {
            Text = '90',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping90,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping90 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_100', {
            Text = '100',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping100,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping100 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_110', {
            Text = '110',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping110,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping110 = Value
            end
        })
        
        CustomValues:AddSlider('ping_120', {
            Text = '120',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping120,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping120 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_130', {
            Text = '130',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping130,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping130 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_140', {
            Text = '140',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping140,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping140 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_150', {
            Text = '150',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping150,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping150 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_160', {
            Text = '160',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping160,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping160 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_170', {
            Text = '170',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping170,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping170 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_180', {
            Text = '180',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping180,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping180 = Value
            end
        })
        
        CustomValues:AddSlider('ping_190', {
            Text = '190',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping190,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping190 = Value
            end
        })
        
        
        CustomValues:AddSlider('ping_200', {
            Text = '200',
            Default = Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping200,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Global"]["Auto Prediction"]["Custom Settings"].Ping200 = Value
            end
        })
        
        
        CustomValues:AddDivider()
        
        
        CustomValues:SetupDependencies({
            { Toggles["Global/AutoPrediction/SetupCustomPrediction"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        

        Depbox:SetupDependencies({
            { Toggles["Global/AutoPrediction"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
    
        
        Global:AddToggle('Global/AntiGroundShots', {
            Text = 'Anti Ground Shots',
            Default = Evolution["Global"]["Anti Ground Shots"] , 
            Tooltip = 'Will prevent you from shooting at the ground.', 
            Callback = function(Value)
                Evolution["Global"]["Anti Ground Shots"] = Value
            end
        })
        
        Global:AddToggle('Global/UnlockOnKO', {
            Text = 'Unlock On KO',
            Default = Evolution["Global"]["Unlock On KO"] , 
            Tooltip = 'Unlocks when target is knocked.', 
            Callback = function(Value)
                Evolution["Global"]["Unlock On KO"] = Value
            end
        })
        
                
        Global:AddToggle('Global/UnlockOutSideFOV', {
            Text = 'Unlock Outside FOV',
            Default = Evolution["Global"]["Unlock Outside FOV"] , 
            Tooltip = 'Unlocks when target goes outside your FOV.', 
            Callback = function(Value)
                Evolution["Global"]["Unlock Outside FOV"] = Value
            end
        })
                        
        Global:AddToggle('Global/UnlockBehindWall', {
            Text = 'Unlock Behind Wall',
            Default = Evolution["Global"]["Unlock Behind Wall"] , 
            Tooltip = 'Unlocks when target goes behind a wall', 
            Callback = function(Value)
                Evolution["Global"]["Unlock Behind Wall"] = Value
            end
        })
        -- // Checks
        
        local Checks = Tabs.Main:AddRightGroupbox('Checks')
        
        Checks:AddToggle('Checks/Whitelist', {
            Text = 'Whitelist',
            Default = Evolution["Checks"]["Whitelist"].Enabled , 
            Tooltip = 'Will only lock onto people whitelisted', 
            Callback = function(Value)
                Evolution["Checks"]["Whitelist"].Enabled = Value
            end
        })
        
        local Whitelist = Checks:AddDependencyBox();
        
        Whitelist:AddDropdown('Checks/Whitelist/SelectPlayer', {
            SpecialType = 'Player',
            Multi = true,
            Text = 'Whitelisted Players',
            Tooltip = 'Select Targets', -- Information shown when you hover over the dropdown
            Callback = function(Value)
                Evolution["Checks"]["Whitelist"].Usernames = Value
            end
        })
        
        Whitelist:AddDivider()
        
        Whitelist:SetupDependencies({
            { Toggles["Checks/Whitelist"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        Checks:AddToggle('Checks/Blacklist', {
            Text = 'Blacklist',
            Default = Evolution["Checks"]["Blacklist"].Enabled , 
            Tooltip = 'Will not lock onto people blacklisted', 
            Callback = function(Value)
                Evolution["Checks"]["Blacklist"].Enabled = Value
            end
        })
        
        
        local Blacklist = Checks:AddDependencyBox();
        
        Blacklist:AddDropdown('Checks/Blacklist/SelectPlayer', {
            SpecialType = 'Player',
            Multi = true,
            Text = 'Blacklisted Players',
            Tooltip = 'Select Targets', -- Information shown when you hover over the dropdown
            Callback = function(Value)
                Evolution["Checks"]["Blacklist"].Usernames = Value
            end
        })
        
        Blacklist:AddDivider()
        
        Blacklist:SetupDependencies({
            { Toggles["Checks/Blacklist"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        Checks:AddToggle('Checks/Distance', {
            Text = 'Distance',
            Default = Evolution["Checks"]["Distance"].Enabled , 
            Tooltip = 'Will not lock onto people who are too far away', 
            Callback = function(Value)
                Evolution["Checks"]["Distance"].Enabled = Value
            end
        })
        
        
        local Distance = Checks:AddDependencyBox();
        
        Distance:AddSlider('Checks/Distance/Max', {
            Text = 'Max Distance',
            Default = Evolution["Checks"]["Distance"]["Max Distance"],
            Min = 1,
            Max = 1000,
            Rounding = 0,
            Compact = true, -- If set to true, then it will hide the label
            Callback = function(Value)
                Evolution["Checks"]["Distance"]["Max Distance"] = Value
            end
        })
        
        Distance:AddDivider()
        
        Distance:SetupDependencies({
            { Toggles["Checks/Distance"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        
        Checks:AddToggle('Checks/Visible', {
            Text = 'Visible',
            Default = Evolution["Checks"]["Visible Check"] , 
            Tooltip = 'Will not lock onto people who are behind a wall', 
            Callback = function(Value)
                Evolution["Checks"]["Visible Check"] = Value
            end
        })
        
        Checks:AddToggle('Checks/KO', {
            Text = 'Knocked',
            Default = Evolution["Checks"]["K.O Check"] , 
            Tooltip = 'Will not lock onto people who are knocked', 
            Callback = function(Value)
                Evolution["Checks"]["K.O Check"] = Value
            end
        })
        
        
        Checks:AddToggle('Checks/Crew', {
            Text = 'Crew',
            Default = Evolution["Checks"]["Crew Check"] , 
            Tooltip = 'Will not lock onto people who are in your crew', 
            Callback = function(Value)
                Evolution["Checks"]["Crew Check"] = Value
            end
        })
        
        Checks:AddToggle('Checks/Friend', {
            Text = 'Friend',
            Default = Evolution["Checks"]["Friend Check"] , 
            Tooltip = 'Will not lock onto people who are your friends', 
            Callback = function(Value)
                Evolution["Checks"]["Friend Check"] = Value
            end
        })
        
        
        local Resolver = Tabs.Main:AddRightGroupbox('Resolver')
        
        
        Resolver:AddToggle('Resolver/Enabled', {
            Text = 'Enabled',
            Default = Evolution["Resolver"].Enabled , 
            Tooltip = 'Will toggle resolver.', 
            Callback = function(Value)
                Evolution["Resolver"].Enabled = Value
            end
        }):AddKeyPicker('Resolver/ToggleBind', {
            Default = Evolution.Resolver.Keybind, 
            SyncToggleState = true,
            Mode = 'Toggle',
            Text = 'Resolver',
            NoUI = false, 
        })
        
        Resolver:AddDropdown('Resolver/Method', {
            Values = { 'Delta', 'Move Direction' ,'No Prediction', 'Recalculate' },
            Default = Evolution["Resolver"]["Method"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Method',
            Tooltip = 'Select a resolving method.', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Resolver"]["Method"] = Value
            end
        })
        
        
        local Airshot = Tabs.Main:AddRightGroupbox('Airshot')
        
        Airshot:AddToggle('Airshot/Enabled', {
            Text = 'Enable Airshot',
            Default = Evolution["Airshot"].Enabled , 
            Tooltip = 'Will change your target offset if player is in air', 
            Callback = function(Value)
                Evolution["Airshot"].Enabled = Value
            end
        })
        
        local ssss = Airshot:AddDependencyBox();
        
        ssss:AddSlider('Airshot/JumpOffset', {
            Text = 'Offset',
            Default = Evolution["Airshot"]["Jump Offset"],
            Min = -5,
            Max = 5,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Airshot"]["Jump Offset"] = Value
            end
        })
        ssss:AddDivider()
        
        ssss:SetupDependencies({
            { Toggles["Airshot/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });


        
        Airshot:AddToggle('Airshot/CamlockSmoothness', {
            Text = 'Enable Camlock Smoothness',
            Default = Evolution["Airshot"]["Cam Lock Smoothness"].Enabled , 
            Tooltip = 'Will change your camlock smoothness if target is in air', 
            Callback = function(Value)
                Evolution["Airshot"]["Cam Lock Smoothness"].Enabled = Value
            end
        })
        
        local SMoothing = Airshot:AddDependencyBox();
        
        SMoothing:AddSlider('CamLock/SmoothV2', {
            Text = 'Value',
            Default = Evolution["Airshot"]["Cam Lock Smoothness"]["New Smoothness"],
            Min = 0,
            Max = 1,
            Rounding = 10,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Airshot"]["Cam Lock Smoothness"]["New Smoothness"] = Value
            end
        })
        
        SMoothing:AddDivider()
        
        SMoothing:SetupDependencies({
            { Toggles["Airshot/CamlockSmoothness"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        local Visuals = Tabs.Main:AddLeftGroupbox('Visuals')

        Visuals:AddToggle('HitSound/Enabled', {
            Text = 'Hit Sound',
            Default = Evolution["Hit Sound"].Enabled , 
            Tooltip = 'Will play sound when you hit target', 
            Callback = function(Value)
                Evolution["Hit Sound"].Enabled = Value
            end
        })
        
        local HitSound = Visuals:AddDependencyBox();

        HitSound:AddSlider('HitSound/Volume', {
            Text = 'Volume',
            Default = Evolution["Hit Sound"].Volume * 10,
            Min = 1,
            Max = 100,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Hit Sound"].Volume = Value / 10
            end
        })

            
        HitSound:AddDropdown('HitSound/Sound', {
            Values = hitSoundsNames,
            Default = Evolution["Hit Sound"]["Hit Sound"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Sound',
            Tooltip = 'Select a sound to play', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution["Hit Sound"]["Hit Sound"] = Value
            end
        })
        
        HitSound:AddDivider()
        
        HitSound:SetupDependencies({
            { Toggles["HitSound/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });
        
        Visuals:AddToggle('HitLogs/Enabled', {
            Text = 'Hit Logs',
            Default = Evolution["Hit Logs"].Enabled , 
            Tooltip = 'Logs when you hit a player', 
            Callback = function(Value)
                Evolution["Hit Logs"].Enabled = Value
            end
        })
        

        -- Extra Tab

        local Misc = Tabs.Extra:AddLeftGroupbox('Miscellaneous')

        Misc:AddToggle('Macro/Enabled', {
            Text = 'Macro',
            Default = Evolution["Macro"].Enabled , 
            Tooltip = 'Lua based Macro', 
            Callback = function(Value)
                Evolution["Macro"].Enabled = Value
            end
        }):AddKeyPicker('Macro/Bind', {
            Default = Evolution["Macro"]["Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Macro',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Macro"]["Bind"] = KeyCodeToString(New)
            end
        })

        local MacroSets = Misc:AddDependencyBox();


        MacroSets:AddToggle('Macro/Abuse', {
            Text = 'Abuse',
            Default = Evolution["Macro"].Abuse , 
            Tooltip = 'Use scroll wheel to macro', 
            Callback = function(Value)
                Evolution["Macro"].Abuse = Value
            end
        })

        MacroSets:AddSlider('Macro/Speed', {
            Text = 'Speed',
            Default = Evolution["Macro"].Speed,
            Min = 0,
            Max = 1,
            Rounding = 3,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Macro"].Speed = Value
            end
        })

        

        
        MacroSets:AddDivider()
        
        MacroSets:SetupDependencies({
            { Toggles["Macro/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        Misc:AddToggle('MemorySpoofer/Enabled', {
            Text = 'Memory Spoofer',
            Default = Evolution["Spoofer"].Memory.Enabled , 
            Tooltip = 'Spoofs your memory', 
            Callback = function(Value)
                Evolution["Spoofer"].Memory.Enabled = Value
            end
        })


        local SpooferSets = Misc:AddDependencyBox();

        SpooferSets:AddSlider('MemorySpoofer/Min', {
            Text = 'Minimum',
            Default = Evolution["Spoofer"].Memory.Min,
            Min = 500,
            Max = 2000,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Spoofer"].Memory.Min = Value
            end
        })

        SpooferSets:AddSlider('MemorySpoofer/Max', {
            Text = 'Maximum',
            Default = Evolution["Spoofer"].Memory.Max,
            Min = 500,
            Max = 2000,
            Rounding = 1,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Spoofer"].Memory.Max = Value
            end
        })

        SpooferSets:AddDivider()
        
        SpooferSets:SetupDependencies({
            { Toggles["MemorySpoofer/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        Misc:AddToggle('FakeSpike/Enabled', {
            Text = 'Fake Spike',
            Default = Evolution["Fake Spike"].Enabled , 
            Tooltip = 'Spikes your ping to make it look like your lagging', 
            Callback = function(Value)
                Evolution["Fake Spike"].Enabled = Value
            end
        }):AddKeyPicker('FakeSpike/Bind', {
            Default = Evolution["Fake Spike"]["Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Fake Spike',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Fake Spike"]["Bind"] = KeyCodeToString(New)
            end
        })

        local Spike = Misc:AddDependencyBox();

        Spike:AddSlider('FakeSpike/Duration', {
            Text = 'Duration',
            Default =  Evolution["Fake Spike"]["Duration"],
            Min = 0.1,
            Max = 3,
            Rounding = 2,
            Compact = true,
        
            Callback = function(Value)
                Evolution["Fake Spike"]["Duration"] = Value
            end
        })

        Spike:AddDivider()
        
        Spike:SetupDependencies({
            { Toggles["FakeSpike/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        Misc:AddToggle('Panic/Enabled', {
            Text = 'Panic',
            Default = Evolution["Panic"].Enabled , 
            Tooltip = 'Will disable everything when your press keybind', 
            Callback = function(Value)
                Evolution["Panic"].Enabled = Value
            end
        }):AddKeyPicker('Panic/Bind', {
            Default = Evolution["Panic"]["Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Panic',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Panic"]["Bind"] = KeyCodeToString(New)
            end
        })

        local PanicMode = Misc:AddDependencyBox();

        PanicMode:AddToggle('Panic/Options', {
            Text = 'Options',
            Default = Evolution["Panic"]["Things To Disable"].Options , 
            Callback = function(Value)
                Evolution["Panic"]["Things To Disable"].Options = Value
            end
        })

        PanicMode:AddToggle('Panic/Aiming', {
            Text = 'Aiming',
            Default = Evolution["Panic"]["Things To Disable"].Aiming , 
            Callback = function(Value)
                Evolution["Panic"]["Things To Disable"].Aiming = Value
            end
        })

        
        PanicMode:AddToggle('Panic/FOV', {
            Text = 'FOV',
            Default = Evolution["Panic"]["Things To Disable"].FOV , 
            Callback = function(Value)
                Evolution["Panic"]["Things To Disable"].FOV = Value
            end
        })

        PanicMode:AddToggle('Panic/Misc', {
            Text = 'Misc',
            Default = Evolution["Panic"]["Things To Disable"].Misc , 
            Callback = function(Value)
                Evolution["Panic"]["Things To Disable"].Misc = Value
            end
        })

        
        PanicMode:AddToggle('Panic/Emotes', {
            Text = 'Emotes',
            Default = Evolution["Panic"]["Things To Disable"].Emotes , 
            Callback = function(Value)
                Evolution["Panic"]["Things To Disable"].Emotes = Value
            end
        })

        PanicMode:AddDivider()
        
        PanicMode:SetupDependencies({
            { Toggles["Panic/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        Misc:AddToggle('GunSorting/Enabled', {
            Text = 'Gun Sorting',
            Default = Evolution["Gun Sorting"].Enabled , 
            Tooltip = 'Sorts your guns in your hotbar (must set in table)', 
            Callback = function(Value)
                Evolution["Gun Sorting"].Enabled = Value
            end
        }):AddKeyPicker('GunSorting/Bind', {
            Default = Evolution["Gun Sorting"]["Bind"],
            SyncToggleState = false,
        
            Mode = 'Always',
        
            Text = 'Sort Guns',
            NoUI = false, 
            ChangedCallback = function(New)
                Evolution["Gun Sorting"]["Bind"] = KeyCodeToString(New)
            end
        })

        local Sort = Misc:AddDependencyBox();

        Sort:AddToggle('GunSorting/Delete', {
            Text = 'Delete Extra',
            Default = Evolution["Gun Sorting"]["Delete Extra"] , 
            Tooltip = 'Deletes unsorted items from your inventory', 
            Callback = function(Value)
                Evolution["Gun Sorting"]["Delete Extra"] = Value
            end
        })


        Sort:AddDivider()
        
        Sort:SetupDependencies({
            { Toggles["GunSorting/Enabled"], true } -- We can also pass `false` if we only want our features to show when the toggle is off!
        });

        local ESP = Tabs.Extra:AddRightGroupbox('ESP')

        ESP:AddToggle('Esp/Enabled', {
            Text = 'Enabled',
            Default = Evolution["ESP"].Enabled , 
            Callback = function(Value)
                Evolution["ESP"].Enabled = Value
            end
        })

        ESP:AddSlider('ESP/MAXDISTANCE', {
            Text = 'Max Distance',
            Default = Evolution.ESP["Max Distance"],
            Min = 1,
            Max = 1000,
            Rounding = 0,
            Compact = true,
        
            Callback = function(Value)
                Evolution.ESP["Max Distance"] = Value
            end
        })

        ESP:AddToggle('Esp/Names', {
            Text = 'Names',
            Default = Evolution["ESP"].Name.Enabled , 
            Callback = function(Value)
                Evolution["ESP"].Name.Enabled = Value
            end
        }):AddColorPicker('NameColor', {
            Default = Evolution["ESP"].Name.Color,
            Title = 'Name Color', 
            Transparency = nil, 
        
            Callback = function(Value)
                Evolution["ESP"].Name.Color = Value
            end
        })

        ESP:AddToggle('Esp/Names/Outline', {
            Text = 'Name Outline',
            Default = Evolution["ESP"].Name.Outline , 
            Callback = function(Value)
                Evolution["ESP"].Name.Outline = Value
            end
        })

        
        ESP:AddToggle('Esp/Box', {
            Text = 'Box',
            Default = Evolution["ESP"].Box.Enabled , 
            Callback = function(Value)
                Evolution["ESP"].Box.Enabled = Value
            end
        }):AddColorPicker('BoxColor', {
            Default = Evolution["ESP"].Box.Color,
            Title = 'Box Color', 
            Transparency = nil, 
        
            Callback = function(Value)
                Evolution["ESP"].Box.Color = Value
            end
        })

        ESP:AddToggle('Esp/Names/Outline', {
            Text = 'Box Outline',
            Default = Evolution["ESP"].Box.Outline , 
            Callback = function(Value)
                Evolution["ESP"].Box.Outline = Value
            end
        })

        
        
        ESP:AddToggle('Esp/Health', {
            Text = 'Health Bar',
            Default = Evolution["ESP"]["Health Bar"].Enabled , 
            Callback = function(Value)
                Evolution["ESP"]["Health Bar"].Enabled = Value
            end
        }):AddColorPicker('HealthColor', {
            Default = Evolution["ESP"]["Health Bar"].Color,
            Title = 'Health Bar Color', 
            Transparency = nil, 
        
            Callback = function(Value)
                Evolution["ESP"]["Health Bar"].Color = Value
            end
        })


        ESP:AddToggle('Esp/Health/Outline', {
            Text = 'Health Bar Outline',
            Default = Evolution["ESP"]["Health Bar"].Outline , 
            Callback = function(Value)
                Evolution["ESP"]["Health Bar"].Outline = Value
            end
        })

        ESP:AddToggle('Esp/Distance', {
            Text = 'Distance',
            Default = Evolution["ESP"].Distance.Enabled , 
            Callback = function(Value)
                Evolution["ESP"].Distance.Enabled = Value
            end
        }):AddColorPicker('DistanceColor', {
            Default = Evolution["ESP"].Distance.Color,
            Title = 'Distance Color', 
            Transparency = nil, 
        
            Callback = function(Value)
                Evolution["ESP"].Distance.Color = Value
            end
        })

        ESP:AddToggle('Esp/Distance/Outline', {
            Text = 'Distance Outline',
            Default = Evolution["ESP"].Distance.Outline , 
            Callback = function(Value)
                Evolution["ESP"].Distance.Outline = Value
            end
        })






        -- UI Settings
        Library:SetWatermark('Evolution | '..tostring(os.date("%B") .. " " .. os.date("%d") .. " " .. os.date("%Y")).." | "..utility.Version)
        Library:SetWatermarkVisibility(false)
        local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
        local MenuGroup2 = Tabs['UI Settings']:AddRightGroupbox('More Settings')
        MenuGroup:AddButton('Unload', function() Library:Unload() end)
        MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = Evolution["Options"]["Internal"].Bind, NoUI = true, Text = 'Menu keybind' })
        
        MenuGroup2:AddToggle('togglekeybindmenu', {
            Text = 'Keybind Menu',
            Default = false,
            Callback = function(V) 
                Library.KeybindFrame.Visible = Toggles.togglekeybindmenu.Value
            end
        })

        MenuGroup2:AddToggle('show_stats', {
            Text = 'Show Stats',
            Default = Evolution["Options"]["Stats"],
            Callback = function(V) 
                Evolution["Options"]["Stats"] = V
            end
        })
        
        MenuGroup2:AddToggle('allow_notifications', {
            Text = 'Allow Notifications',
            Default = Evolution["Options"]["Allow Notifications"],
            Callback = function(V) 
                Evolution["Options"]["Allow Notifications"] = V
            end
        })

        MenuGroup2:AddDropdown('notification_mode', {
            Values = NotificationTypes,
            Default = Evolution.Options["Notifcation Type"], -- number index of the value / string
            Multi = false, -- true / false, allows multiple choices to be selected
        
            Text = 'Type',
            Tooltip = 'Select a notification type', -- Information shown when you hover over the dropdown
        
            Callback = function(Value)
                Evolution.Options["Notifcation Type"] = Value
            end
        })
        
        
        MenuGroup2:AddToggle('togglewatermark', {
            Text = 'Watermark',
            Default = false,
            Callback = function(V) 
                Library:SetWatermarkVisibility(Toggles.togglewatermark.Value)
            end
        })
        
        Library.ToggleKeybind = Options.MenuKeybind
        
        ThemeManager:SetLibrary(Library)
        SaveManager:SetLibrary(Library)
        
        SaveManager:IgnoreThemeSettings()

        SaveManager:BuildConfigSection(Tabs['UI Settings'])
        
        ThemeManager:ApplyToTab(Tabs['UI Settings'])
        
        SaveManager:LoadAutoloadConfig()

        if game:GetService("UserInputService").TouchEnabled then 
            task.spawn(function()
                local EvolutionMobileButton = Instance.new("ScreenGui")
                local Icon = Instance.new("Frame")
                local IconButton = Instance.new("TextButton")
                local IconImage = Instance.new("ImageLabel")
                local IconCorner = Instance.new("UICorner")
                EvolutionMobileButton.Name = "EvolutionMobileButton"
                EvolutionMobileButton.IgnoreGuiInset = true
                EvolutionMobileButton.Parent = game.CoreGui
                EvolutionMobileButton.DisplayOrder = 10
                EvolutionMobileButton.ResetOnSpawn = false
                Icon.Name = "Icon"
                Icon.Parent = EvolutionMobileButton
                Icon.BackgroundTransparency = 1.000
                Icon.LayoutOrder = 1
                Icon.Position = UDim2.new(0, 104, 0, 4)
                Icon.Size = UDim2.new(0, 32, 0, 32)
                IconButton.Name = "IconButton"
                IconButton.Parent = Icon
                IconButton.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
                IconButton.BackgroundTransparency = 0.500
                IconButton.BorderSizePixel = 0
                IconButton.Size = UDim2.new(1, 0, 1, 0)
                IconButton.ZIndex = 10
                IconButton.AutoButtonColor = false
                IconButton.Text = ""
                IconImage.Name = "IconImage"
                IconImage.Parent = IconButton
                IconImage.AnchorPoint = Vector2.new(0.5, 0.5)
                IconImage.BackgroundTransparency = 1.000
                IconImage.Position = UDim2.new(0.5, 0, 0.5, 0)
                IconImage.Size = UDim2.new(0, 20, 0.629999995, 0)
                IconImage.ZIndex = 11
                IconImage.Image = "rbxassetid://14270853092"
                IconImage.ScaleType = Enum.ScaleType.Fit
                IconCorner.CornerRadius = UDim.new(0.25, 0)
                IconCorner.Name = "IconCorner"
                IconCorner.Parent = IconButton
                IconButton.MouseButton1Down:Connect(function()
                    game:GetService("VirtualInputManager"):SendKeyEvent(true, string.upper(Evolution["Options"]["Internal UI Bind"]) , false , game)
                end)
            end)
        end
    end
end

notify("Evolution V3 has loaded.")

Features & Information

cool i thinq
#aim#lock

Community Comments (6)

OrealatedOrealatedJul 26, 2024(edited)

The cuztomizaion is crazy 🤭

GoonJoeGoonJoeJul 26, 2024(edited)

w aim

DuckyExploitsDuckyExploitsJul 27, 2024(edited)

Solara doesn't work btw, but its a good silent aim.

DuckyExploitsDuckyExploitsJul 27, 2024(edited)

maybe some games works, not 100% sure for solara

battybatbattybatJul 27, 2024(edited)

@DuckExploits eyy king of the place units for free

ole*assole*assJul 28, 2024(edited)

if it dont work on solara dont even use it

More Scripts for Universal Scripts