A Universal Time Script | FARMING GUI – OPEN SOURCE

---//Variables
local Settings = {
    MobFarm = {
        Toggle = false,
        Selectedmob = "",
        Position = 0,
    
    },
    SandDebrisFarm = {
        Toggle = false,
    },
    Dailyquest = {
        Toggle = false,
        Position = 5

    },
    Chestfarm = false,
    AstralChestfarm = false,
    Shardsfarm = false,
    Autostore = false,
    AutoFarmstand = {
        Toggle = false,
        Stand = ""
    },
    Autoquest = {
        Toggle = false,
        Position = 6,
    },
    Selectednpc = "",
    BossFarm = {
        Toggle = false,
        Boss = "",
        Position = 6
    },
    }
    local player = game.Players.LocalPlayer
    local attackremote = game:GetService("ReplicatedStorage").ReplicatedModules.KnitPackage.Knit.Services.MoveInputService.RF.FireInput
    local mobTable = {0,10 ,20, 30, 40,50,60,70,80,90,100}
    local npctable = {}
    local dialogueremote = game:GetService("ReplicatedStorage").ReplicatedModules.KnitPackage.Knit.Services.DialogueService.RF.CheckDialogue
    local spawnbossremote = game:GetService("ReplicatedStorage").ReplicatedModules.KnitPackage.Knit.Services.NPCService.RF.SpawnBoss
    local bossTable = {"Professor Diavolo","Hold up, aint you Dio?","Boa H","Umbra","Puddest","Minos Prime"}


    --//ESP Settings--
--Settings--
local ESP = {
    Enabled = false,
    Boxes = false,
    BoxShift = CFrame.new(0,-1.5,0),
BoxSize = Vector3.new(4,6,0),
    Color = Color3.fromRGB(255, 0, 0),
    FaceCamera = false,
    Names = false,
    TeamColor = false,
    Thickness = 2,
    AttachShift = 1,
    TeamMates = false,
    Players = true,
    
    Objects = setmetatable({}, {__mode="kv"}),
    Overrides = {}
}

--ESP Declarations--
local cam = workspace.CurrentCamera
local plrs = game:GetService("Players")
local plr = plrs.LocalPlayer
local mouse = plr:GetMouse()

local V3new = Vector3.new
local WorldToViewportPoint = cam.WorldToViewportPoint

--ESP Functions--
local function Draw(obj, props)
local new = Drawing.new(obj)

props = props or {}
for i,v in pairs(props) do
new[i] = v
end
return new
end

function ESP:GetTeam(p)
local ov = self.Overrides.GetTeam
if ov then
return ov(p)
end

return p and p.Team
end

function ESP:IsTeamMate(p)
    local ov = self.Overrides.IsTeamMate
if ov then
return ov(p)
    end
    
    return self:GetTeam(p) == self:GetTeam(plr)
end

function ESP:GetColor(obj)
local ov = self.Overrides.GetColor
if ov then
return ov(obj)
    end
    local p = self:GetPlrFromChar(obj)
return p and self.TeamColor and p.Team and p.Team.TeamColor.Color or self.Color
end

function ESP:GetPlrFromChar(char)
local ov = self.Overrides.GetPlrFromChar
if ov then
return ov(char)
end

return plrs:GetPlayerFromCharacter(char)
end

function ESP:Toggle(bool)
    self.Enabled = bool
    if not bool then
        for i,v in pairs(self.Objects) do
            if v.Type == "Box" then --fov circle etc
                if v.Temporary then
                    v:Remove()
                else
                    for i,v in pairs(v.Components) do
                        v.Visible = false
                    end
                end
            end
        end
    end
end

function ESP:GetBox(obj)
    return self.Objects[obj]
end

function ESP:AddObjectListener(parent, options)
    local function NewListener(c)
        if type(options.Type) == "string" and c:IsA(options.Type) or options.Type == nil then
            if type(options.Name) == "string" and c.Name == options.Name or options.Name == nil then
                if not options.Validator or options.Validator(c) then
                    local box = ESP:Add(c, {
                        PrimaryPart = type(options.PrimaryPart) == "string" and c:WaitForChild(options.PrimaryPart) or type(options.PrimaryPart) == "function" and options.PrimaryPart(c),
                        Color = type(options.Color) == "function" and options.Color(c) or options.Color,
                        ColorDynamic = options.ColorDynamic,
                        Name = type(options.CustomName) == "function" and options.CustomName(c) or options.CustomName,
                        IsEnabled = options.IsEnabled,
                        RenderInNil = options.RenderInNil
                    })
                    --TODO: add a better way of passing options
                    if options.OnAdded then
                        coroutine.wrap(options.OnAdded)(box)
                    end
                end
            end
        end
    end

    if options.Recursive then
        parent.DescendantAdded:Connect(NewListener)
        for i,v in pairs(parent:GetDescendants()) do
            coroutine.wrap(NewListener)(v)
        end
    else
        parent.ChildAdded:Connect(NewListener)
        for i,v in pairs(parent:GetChildren()) do
            coroutine.wrap(NewListener)(v)
        end
    end
end

local boxBase = {}
boxBase.__index = boxBase

function boxBase:Remove()
    ESP.Objects[self.Object] = nil
    for i,v in pairs(self.Components) do
        v.Visible = false
        v:Remove()
        self.Components[i] = nil
    end
end

function boxBase:Update()
    if not self.PrimaryPart then
        --warn("not supposed to print", self.Object)
        return self:Remove()
    end

    local color
    if ESP.Highlighted == self.Object then
       color = ESP.HighlightColor
    else
        color = self.Color or self.ColorDynamic and self:ColorDynamic() or ESP:GetColor(self.Object) or ESP.Color
    end

    local allow = true
    if ESP.Overrides.UpdateAllow and not ESP.Overrides.UpdateAllow(self) then
        allow = false
    end
    if self.Player and not ESP.TeamMates and ESP:IsTeamMate(self.Player) then
        allow = false
    end
    if self.Player and not ESP.Players then
        allow = false
    end
    if self.IsEnabled and (type(self.IsEnabled) == "string" and not ESP[self.IsEnabled] or type(self.IsEnabled) == "function" and not self:IsEnabled()) then
        allow = false
    end
    if not workspace:IsAncestorOf(self.PrimaryPart) and not self.RenderInNil then
        allow = false
    end

    if not allow then
        for i,v in pairs(self.Components) do
            v.Visible = false
        end
        return
    end

    if ESP.Highlighted == self.Object then
        color = ESP.HighlightColor
    end

    --calculations--
    local cf = self.PrimaryPart.CFrame
    if ESP.FaceCamera then
        cf = CFrame.new(cf.p, cam.CFrame.p)
    end
    local size = self.Size
    local locs = {
        TopLeft = cf * ESP.BoxShift * CFrame.new(size.X/2,size.Y/2,0),
        TopRight = cf * ESP.BoxShift * CFrame.new(-size.X/2,size.Y/2,0),
        BottomLeft = cf * ESP.BoxShift * CFrame.new(size.X/2,-size.Y/2,0),
        BottomRight = cf * ESP.BoxShift * CFrame.new(-size.X/2,-size.Y/2,0),
        TagPos = cf * ESP.BoxShift * CFrame.new(0,size.Y/2,0),
        Torso = cf * ESP.BoxShift
    }

    if ESP.Boxes then
        local TopLeft, Vis1 = WorldToViewportPoint(cam, locs.TopLeft.p)
        local TopRight, Vis2 = WorldToViewportPoint(cam, locs.TopRight.p)
        local BottomLeft, Vis3 = WorldToViewportPoint(cam, locs.BottomLeft.p)
        local BottomRight, Vis4 = WorldToViewportPoint(cam, locs.BottomRight.p)

        if self.Components.Quad then
            if Vis1 or Vis2 or Vis3 or Vis4 then
                self.Components.Quad.Visible = true
                self.Components.Quad.PointA = Vector2.new(TopRight.X, TopRight.Y)
                self.Components.Quad.PointB = Vector2.new(TopLeft.X, TopLeft.Y)
                self.Components.Quad.PointC = Vector2.new(BottomLeft.X, BottomLeft.Y)
                self.Components.Quad.PointD = Vector2.new(BottomRight.X, BottomRight.Y)
                self.Components.Quad.Color = color
            else
                self.Components.Quad.Visible = false
            end
        end
    else
        self.Components.Quad.Visible = false
    end

    if ESP.Names then
        local TagPos, Vis5 = WorldToViewportPoint(cam, locs.TagPos.p)
        
        if Vis5 then
            self.Components.Name.Visible = true
            self.Components.Name.Position = Vector2.new(TagPos.X, TagPos.Y)
            self.Components.Name.Text = self.Name
            self.Components.Name.Color = color
            
            self.Components.Distance.Visible = true
            self.Components.Distance.Position = Vector2.new(TagPos.X, TagPos.Y + 14)
            self.Components.Distance.Text = math.floor((cam.CFrame.p - cf.p).magnitude) .."m away"
            self.Components.Distance.Color = color
        else
            self.Components.Name.Visible = false
            self.Components.Distance.Visible = false
        end
    else
        self.Components.Name.Visible = false
        self.Components.Distance.Visible = false
    end
    
    if ESP.Tracers then
        local TorsoPos, Vis6 = WorldToViewportPoint(cam, locs.Torso.p)

        if Vis6 then
            self.Components.Tracer.Visible = true
            self.Components.Tracer.From = Vector2.new(TorsoPos.X, TorsoPos.Y)
            self.Components.Tracer.To = Vector2.new(cam.ViewportSize.X/2,cam.ViewportSize.Y/ESP.AttachShift)
            self.Components.Tracer.Color = color
        else
            self.Components.Tracer.Visible = false
        end
    else
        self.Components.Tracer.Visible = false
    end
end

function ESP:Add(obj, options)
    if not obj.Parent and not options.RenderInNil then
        return warn(obj, "has no parent")
    end

    local box = setmetatable({
        Name = options.Name or obj.Name,
        Type = "Box",
        Color = options.Color --[[or self:GetColor(obj)]],
        Size = options.Size or self.BoxSize,
        Object = obj,
        Player = options.Player or plrs:GetPlayerFromCharacter(obj),
        PrimaryPart = options.PrimaryPart or obj.ClassName == "Model" and (obj.PrimaryPart or obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")) or obj:IsA("BasePart") and obj,
        Components = {},
        IsEnabled = options.IsEnabled,
        Temporary = options.Temporary,
        ColorDynamic = options.ColorDynamic,
        RenderInNil = options.RenderInNil
    }, boxBase)

    if self:GetBox(obj) then
        self:GetBox(obj):Remove()
    end

    box.Components["Quad"] = Draw("Quad", {
        Thickness = self.Thickness,
        Color = color,
        Transparency = 1,
        Filled = false,
        Visible = self.Enabled and self.Boxes
    })
    box.Components["Name"] = Draw("Text", {
Text = box.Name,
Color = box.Color,
Center = true,
Outline = true,
        Size = 19,
        Visible = self.Enabled and self.Names
})
box.Components["Distance"] = Draw("Text", {
Color = box.Color,
Center = true,
Outline = true,
        Size = 19,
        Visible = self.Enabled and self.Names
})

box.Components["Tracer"] = Draw("Line", {
Thickness = ESP.Thickness,
Color = box.Color,
        Transparency = 1,
        Visible = self.Enabled and self.Tracers
    })
    self.Objects[obj] = box
    
    obj.AncestryChanged:Connect(function(_, parent)
        if parent == nil and ESP.AutoRemove ~= false then
            box:Remove()
        end
    end)
    obj:GetPropertyChangedSignal("Parent"):Connect(function()
        if obj.Parent == nil and ESP.AutoRemove ~= false then
            box:Remove()
        end
    end)

    local hum = obj:FindFirstChildOfClass("Humanoid")
if hum then
        hum.Died:Connect(function()
            if ESP.AutoRemove ~= false then
                box:Remove()
            end
end)
    end

    return box
end

local function CharAdded(char)
    local p = plrs:GetPlayerFromCharacter(char)
    if not char:FindFirstChild("HumanoidRootPart") then
        local ev
        ev = char.ChildAdded:Connect(function(c)
            if c.Name == "HumanoidRootPart" then
                ev:Disconnect()
                ESP:Add(char, {
                    Name = p.Name,
                    Player = p,
                    PrimaryPart = c
                })
            end
        end)
    else
        ESP:Add(char, {
            Name = p.Name,
            Player = p,
            PrimaryPart = char.HumanoidRootPart
        })
    end
end
local function PlayerAdded(p)
    p.CharacterAdded:Connect(CharAdded)
    if p.Character then
        coroutine.wrap(CharAdded)(p.Character)
    end
end
plrs.PlayerAdded:Connect(PlayerAdded)
for i,v in pairs(plrs:GetPlayers()) do
    if v ~= plr then
        PlayerAdded(v)
    end
end
---//----


    ---//Functions
    for i,v in pairs(workspace.NPCS:GetChildren()) do 
        if v:IsA("Model") then
            table.insert(npctable,v.Name)
        end
    end
    
    local function npctp()
        for i,v in pairs(workspace.NPCS:GetChildren()) do 
            if v.Name == Settings.Selectednpc then
                player.Character:PivotTo(v:GetPivot())
            end
        end
    end



    local function bossfarm()
        if not Settings.BossFarm.Toggle then
            return
        end

        for i,v in pairs(workspace.Living:GetChildren()) do
            if v.Name == Settings.BossFarm.Boss and v:IsA("Model") then
                    if Settings.BossFarm.Position >= 0 then
                        player.Character:PivotTo(v:GetPivot()* CFrame.new(0,Settings.BossFarm.Position ,0)* CFrame.Angles(math.rad(-90), 0, 0))
                        attackremote:InvokeServer("MouseButton1")
                        attackremote:InvokeServer("R")
                    else
                        player.Character:PivotTo(v:GetPivot()* CFrame.new(0,Settings.BossFarm.Position ,0)* CFrame.Angles(math.rad(90), 0, 0))
                        attackremote:InvokeServer("MouseButton1")
                        attackremote:InvokeServer("R")
                    end
            else
                print("No mob?")
            end
        end
    end





    local function MobCheck(mob, toggle)
        if mob == nil or mob:FindFirstChild("HumanoidRootPart") == nil  or toggle ~= true or mob.Humanoid.Health <= 0 or mob.Name ~= "Star Platinum!?!?" or mob:GetAttribute("Level") < Settings.MobFarm.Selectedmob  then
            return nil
        end
        return true
    end
    
    
    local function mobfarm()
        if not Settings.MobFarm.Toggle then
            return
        end
        for i,v in pairs(workspace.Living:GetChildren()) do
            if MobCheck(v, Settings.MobFarm.Toggle) then
                if Settings.MobFarm.Position >= 0 then
                    player.Character.HumanoidRootPart.CFrame = v.HumanoidRootPart.CFrame * CFrame.new(0,Settings.MobFarm.Position ,0)* CFrame.Angles(math.rad(-90), 0, 0)
                    attackremote:InvokeServer("MouseButton1")
                    attackremote:InvokeServer("R")
                else
                    player.Character.HumanoidRootPart.CFrame = v.HumanoidRootPart.CFrame * CFrame.new(0,Settings.MobFarmPosition ,0)* CFrame.Angles(math.rad(90), 0, 0)
                    attackremote:InvokeServer("MouseButton1")
                    attackremote:InvokeServer("R")
                end
            end
        end
    end
    

    local function debrisfarm()
        if not Settings.SandDebrisFarm.Toggle then
            return
        end

        for i,v in pairs(workspace.ItemSpawns["Sand Debris"]:GetDescendants()) do
            if v.Name == "SandDebris" and v:FindFirstChild("ProximityAttachment") then
                player.Character:PivotTo(v:GetPivot())
                task.wait()
                local Magnitude = (player.Character.PrimaryPart.Position - v.Position).Magnitude
                if Magnitude <= 15 then
                    fireproximityprompt(v.ProximityAttachment.Interaction)
                end
            else
                print('No debris found')
            end
        end
    end


    local function chestfarm()
        if not Settings.Chestfarm then
            return
        end
        for i,v in pairs(workspace.ItemSpawns.Chests:GetDescendants()) do
            if v:IsA("Model") and v.Name == "Chest" and v.RootPart:FindFirstChild("ProximityAttachment") then
                player.Character:PivotTo(v:GetPivot())
                local Magnitude = (player.Character.PrimaryPart.Position - v.RootPart.Position).Magnitude
                if Magnitude <= 15 then
                    fireproximityprompt(v.RootPart.ProximityAttachment.Interaction)
                end 
            else
                print("No chest found")
            end
        end
    end

    local function astralchest()
        if not Settings.AstralChestfarm then 
            return
        end
    end

    local function shardsfarm()
        if not Settings.Shardsfarm then 
            return
        end

    end


    local function autodaily()
        if not Settings.Dailyquest.Toggle then
            return
        end
        if player.QuestLines:FindFirstChild("DailyQuest") then
            
        else
            dialogueremote:InvokeServer("Daily Quest")
        end
    end



    local function autostore()
        if not Settings.Autostore then
            return
        end
        for i,v in pairs(player.Backpack:GetChildren()) do
            if v:IsA("Tool") and v.Parent ~= player.Character then
                v.Parent = player.Character
                task.wait(0.2)
                if v.Parent == player.Character then
                        local args = {
                            [1] = {
                                ["AddItems"] = true
                            }   
                        }
                    game:GetService("ReplicatedStorage").ReplicatedModules.KnitPackage.Knit.Services.InventoryService.RE.ItemInventory:FireServer(unpack(args))
                end
            end
        end
    end


    local function autostand()
        if not Settings.AutoFarmstand.Toggle then
            return
        end
        --game:GetService("ReplicatedStorage").ReplicatedModules.KnitPackage.Knit.Services.DialogueService.RF.CheckDialogue:InvokeServer("Reset Stand") -- to reset stand
    end



    local function autoquest()
        if not Settings.Autoquest.Toggle then
            return
        end
        for i,v in pairs(workspace.Living:GetChildren()) do
            if player.QuestLines:FindFirstChild("Sakuya")  then
                if v.Name == "Star Platinum!?!?" and v.Humanoid.Health > 0  then
                    if Settings.MobFarm.Position >= 0 then
                        player.Character.HumanoidRootPart.CFrame = v.HumanoidRootPart.CFrame * CFrame.new(0,Settings.Autoquest.Position,0)* CFrame.Angles(math.rad(-90), 0, 0)
                        attackremote:InvokeServer("MouseButton1")
                        attackremote:InvokeServer("R")
                    else
                        player.Character.HumanoidRootPart.CFrame = v.HumanoidRootPart.CFrame * CFrame.new(0,Settings.Autoquest.Position,0)* CFrame.Angles(math.rad(90), 0, 0)
                        attackremote:InvokeServer("MouseButton1")
                        attackremote:InvokeServer("R")
                    end
                end
            else
                dialogueremote:InvokeServer("Sakuya")
            end
        end
    end

    local function chatlogger()
        loadstring(game:HttpGet(('https://raw.githubusercontent.com/mac2115/Cool-private/main/ESP'),true))()
    end

-- dialogueremote:InvokeServer("Sakuya") -- to get quest ofc

    ---//Ui
    
    local repo = 'https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/main/'
    local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))()
    local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))()
    local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))()
    local Window = Library:CreateWindow({
        -- Set Center to true if you want the menu to appear in the center
        -- Set AutoShow to true if you want the menu to appear when it is created
        -- Position and Size are also valid options here
        -- but you do not need to define them unless you are changing them :)
        Title = 'Asteria AUT',
        Center = true,
        AutoShow = true,
        TabPadding = 8,
        MenuFadeTime = 0.2
    })
    
    local Tabs = {
        -- Creates a new tab titled Main
        Main = Window:AddTab('Main'),
        ['UI Settings'] = Window:AddTab('UI Settings'),
    }
    
    
    local LeftGroupBox = Tabs.Main:AddLeftGroupbox('MobFarm')
    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Mob farm toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Mobfarm', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.MobFarm.Toggle = Value
            mobfarm()
        end
    })
    
    LeftGroupBox:AddDropdown('MyMultiDropdown', {
        Values = mobTable,
        Default = 1,
        Multi = false, -- true / false, allows multiple choices to be selected
        Text = 'Choose a mob (indicates lvl+)',
        Tooltip = 'Mob selector', -- Information shown when you hover over the dropdown
        Callback = function(Value)
            Settings.MobFarm.Selectedmob = Value
        end
    })
    
    
    
    LeftGroupBox:AddSlider('MySlider', {
        Text = 'Farm position',
        Default = 6,
        Min = -15,
        Max = 15,
        Rounding = 1,
        Compact = false,
    
        Callback = function(Value)
            Settings.MobFarm.Position = Value
        end
    })

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Bossfarm toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Bossfarm', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.BossFarm.Toggle = Value
            bossfarm()
        end
    })
    
    LeftGroupBox:AddDropdown('MyMultiDropdown', {
        Values = bossTable,
        Default = 1,
        Multi = false, -- true / false, allows multiple choices to be selected
        Text = 'Choose a boss',
        Tooltip = 'Boss selector', -- Information shown when you hover over the dropdown
        Callback = function(Value)
            Settings.BossFarm.Boss = Value
        end
    })
    
    
    LeftGroupBox:AddSlider('MySlider', {
        Text = 'Farm position',
        Default = 6,
        Min = -15,
        Max = 15,
        Rounding = 1,
        Compact = false,
    
        Callback = function(Value)
            Settings.BossFarm.Position = Value
        end
    })


    local LeftGroupBox = Tabs.Main:AddLeftGroupbox('Autoquests')

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Sakuya autoquest toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Autoquest', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.Autoquest.Toggle= Value
            autoquest()
        end
    })


    LeftGroupBox:AddSlider('MySlider', {
        Text = 'Farm position',
        Default = 6,
        Min = -15,
        Max = 15,
        Rounding = 1,
        Compact = false,
    
        Callback = function(Value)
            Settings.Autoquest.Position = Value
        end
    })

    local LeftGroupBox = Tabs.Main:AddLeftGroupbox('ItemFarms')
    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Sand Debris farm',
        Default = false, -- Default value (true / false)
        Tooltip = 'Debris farm', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.SandDebrisFarm.Toggle = Value
            debrisfarm()
        end
    })

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Chest farm',
        Default = false, -- Default value (true / false)
        Tooltip = 'Chest farm', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.Chestfarm = Value
            chestfarm()
        end
    })

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Autostore items',
        Default = false, -- Default value (true / false)
        Tooltip = 'Stores items for u', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            Settings.Autostore = Value
            autostore()
        end
    })
    
    local LeftGroupBox = Tabs.Main:AddRightGroupbox('Teleports')
    LeftGroupBox:AddDropdown('MyMultiDropdown', {
        Values = npctable,
        Default = 1,
        Multi = false, -- true / false, allows multiple choices to be selected
        Text = 'Npc Teleports',
        Tooltip = 'Npc teleporter', -- Information shown when you hover over the dropdown
        Callback = function(Value)
            Settings.Selectednpc = Value
            npctp()
        end
    })

    local LeftGroupBox = Tabs.Main:AddRightGroupbox('Misc')
    
    local MyButton = LeftGroupBox:AddButton({
        Text = 'Chatlogger',
        Func = function()
            chatlogger()
        end,
        DoubleClick = false,
        Tooltip = 'Chatlogger'
    })


    local LeftGroupBox = Tabs.Main:AddRightGroupbox('Visuals')
    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'ESP toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Esp', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            ESP.Enabled = Value
        end
    })

    LeftGroupBox:AddLabel('Color'):AddColorPicker('ColorPicker', {
        Default = Color3.fromRGB(255, 0, 0), -- Bright green
        Title = 'ESP color', -- Optional. Allows you to have a custom color picker title (when you open it)
        Transparency = 0, -- Optional. Enables transparency changing for this color picker (leave as nil to disable)
    
        Callback = function(Value)
           ESP.Color = Value
        end
    })
    

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Teammates ',
        Default = false, -- Default value (true / false)
        Tooltip = 'Teammates', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            ESP.TeamMates = Value
        end
    })
   

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Nametags toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Nametags', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            ESP.Names = Value
        end
    })
 

    LeftGroupBox:AddToggle('MyToggle', {
        Text = 'Boxes toggle',
        Default = false, -- Default value (true / false)
        Tooltip = 'Boxes', -- Information shown when you hover over the toggle
    
        Callback = function(Value)
            ESP.Boxes = Value
        end
    })
    
    
    --//Configs
    local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
    MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = 'End', NoUI = true, Text = 'Menu keybind' })
    MenuGroup:AddButton('Unload', function() Library:Unload() end)
    MenuGroup:AddButton('Copy discord invite', function() setclipboard("https://discord.gg/t2cXFpkGBh") end)
    Library.ToggleKeybind = Options.MenuKeybind
    ThemeManager:SetLibrary(Library)
    SaveManager:SetLibrary(Library)
    SaveManager:IgnoreThemeSettings()
    SaveManager:BuildConfigSection(Tabs['UI Settings'])
    ThemeManager:SetFolder('Asteria/AUT')
    SaveManager:SetFolder('Asteria/AUT')
    ThemeManager:ApplyToTab(Tabs['UI Settings'])
    SaveManager:LoadAutoloadConfig()
    
    
    
    
    
    --//Loops
    game:GetService("RunService").Heartbeat:connect(function()
        bossfarm()
        mobfarm()
        chestfarm()
        debrisfarm()
        autostore()
        autoquest()
        astralchest()
        shardsfarm()
    end)
    


    game:GetService("RunService").RenderStepped:Connect(function()
        cam = workspace.CurrentCamera
        for i,v in (ESP.Enabled and pairs or ipairs)(ESP.Objects) do
            if v.Update then
                local s,e = pcall(v.Update, v)
                if not s then warn("[EU]", e, v.Object:GetFullName()) end
            end
        end
    end)
    return ESP
Scroll to Top