--[[ ╔══════════════════════════════════════════════════════╗ ║ AMETHYS HUB — by q8inty ║ ║ Fluent UI · Amethyst Theme · Custom Loader ║ ╚══════════════════════════════════════════════════════╝ ]] -- ═══════════════════════════════════════════════════════════ -- SERVICES -- ═══════════════════════════════════════════════════════════ local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") -- ═══════════════════════════════════════════════════════════ -- BRAINROT PET DATABASE -- ═══════════════════════════════════════════════════════════ local PetDB = { Common = {"Lirili Larila","Tim Cheese","Svinina Bombardino","Mateo"}, Rare = {"Trippi Troppi","Boneca Ambalabu","Cacto Hipopotamo","Tatatata Sahur","Madung"}, Epic = {"Cappuccino Assassino","Brr Brr Patapim","Bambini Crostini","Bananito Delfinito","Rhino Toasterino","Illuminati"}, Legendary = {"Chimpanzini Bananini","Burbaloni Loliloli","Balerina Capucina","Tralalero Tralala","Glorbo Fruttodrillo","Odin Din Din Dun","Tralalita Tralala"}, Mythic = {"Frigo Camelo","Bombardiro Crocodilo","Bombombini Gusini","Pakrahmatmamat","Pakrahmatmatina","Trippi Troppi Troppa Trippa","Orcalero Orcala","Garamararam"}, Celestial = {"Elefanto Cocofanto","Tung Tung Sahur","La Vacca Saturno Saturnita","Agarrini La Pallini","Los Tralaleritos","Job Job Job Sahur","Karkerkar Kurkur","Pot Hotspot"}, Secret = {"Esok Sekolah","Chicleteira Bicicleteira","Strawberrelli Flamingelli","Chef Crabracadabra","67","Strawberry Elephant","Brr Bicus Dicus","Fluri Flura","Lerulerulerule","Talpa Di Fero","Trulimero Trulicina"}, OG = {"Balerino Lololo","Bandito Bobrito","Blueberrinni Octopusini","Cavallo Virtuoso","Espresso Signora","Gangster Footera","Orangutini Ananassini","Pandaccini Bananini","Pipi Kiwi","Pipi Potato","Tigroligre Frutonni","Torrtuginni Dragonfrutini","Zibra Zubra Zibralini","Avocadini Guffo"}, Exclusive = {"Dragon Cannelloni","Gorillo Watermelondrillo","Girafa Celestre"}, } local Mutations = {"Normal","Golden","Diamond","Lava","Rainbow","Galaxy"} local AllRarities = {"Common","Rare","Epic","Legendary","Mythic","Celestial","Secret","OG","Exclusive"} -- ═══════════════════════════════════════════════════════════ -- STATE -- ═══════════════════════════════════════════════════════════ local Settings = { PetName = "Tung Tung Sahur", Mutation = "Normal", Rarity = "Celestial", Reward = 999999999999, Interval = 0.5, GodMode = false, } local spamConns, spamEnabled = {}, {} for _,r in ipairs(AllRarities) do spamEnabled[r] = false end -- ═══════════════════════════════════════════════════════════ -- CORE FUNCTIONS -- ═══════════════════════════════════════════════════════════ local function FireReward(pet, rarity, mut, reward) local m, rw = mut or Settings.Mutation, reward or Settings.Reward pcall(function() ReplicatedStorage:WaitForChild("_Net"):WaitForChild("BatchKillReward"):FireServer( {[1]={["itemName"]=pet,["mutation"]=m,["rarity"]=rarity,["reward"]=rw}}, {[1]={["Mutation"]=m,["Name"]=pet,["Rarity"]=rarity}} ) end) end local function FireAllOfRarity(rarity) for _,pet in ipairs(PetDB[rarity] or {}) do FireReward(pet, rarity); task.wait(0.05) end end local function StopAllSpam() for _,r in ipairs(AllRarities) do spamEnabled[r] = false if spamConns[r] then pcall(task.cancel, spamConns[r]); spamConns[r] = nil end end end -- Kills Farmer local killsFarmerConn = nil local killsFarmerEnabled = false local function FireKillsFarmer() pcall(function() ReplicatedStorage:WaitForChild("_Net"):WaitForChild("BatchKillReward"):FireServer( {[1]={["itemName"]="0",["mutation"]="0",["rarity"]="0",["reward"]=0}}, {[1]={["Mutation"]="0",["Name"]="0",["Rarity"]="0"}} ) end) end local function StopKillsFarmer() killsFarmerEnabled = false if killsFarmerConn then pcall(task.cancel, killsFarmerConn); killsFarmerConn = nil end end -- God Mode local godConn = nil local function SetGodMode(enabled) Settings.GodMode = enabled if godConn then godConn:Disconnect(); godConn = nil end local char = Player.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return end if enabled then hum.MaxHealth = math.huge hum.Health = math.huge godConn = hum.HealthChanged:Connect(function() if Settings.GodMode then hum.Health = math.huge end end) else hum.MaxHealth = 100 hum.Health = 100 end end -- Re-apply god mode on respawn Player.CharacterAdded:Connect(function(char) if Settings.GodMode then local hum = char:WaitForChild("Humanoid", 10) if hum then task.wait(0.5) SetGodMode(true) end end end) -- ═══════════════════════════════════════════════════════════ -- CUSTOM LOADING ANIMATION -- ═══════════════════════════════════════════════════════════ local function PlayLoader() local gui = Instance.new("ScreenGui") gui.Name = "AmethysLoader"; gui.ResetOnSpawn = false gui.IgnoreGuiInset = true; gui.DisplayOrder = 999; gui.Parent = PlayerGui local bg = Instance.new("Frame") bg.Size = UDim2.new(1,0,1,0); bg.BackgroundColor3 = Color3.fromRGB(12,8,20) bg.BackgroundTransparency = 1; bg.BorderSizePixel = 0; bg.Parent = gui local grad = Instance.new("UIGradient") grad.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(25,10,40)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(12,8,20)), ColorSequenceKeypoint.new(1, Color3.fromRGB(18,5,30)), }); grad.Rotation = 135; grad.Parent = bg local center = Instance.new("Frame") center.Size = UDim2.new(0,340,0,280); center.Position = UDim2.new(0.5,0,0.5,0) center.AnchorPoint = Vector2.new(0.5,0.5); center.BackgroundTransparency = 1; center.Parent = bg -- Spinning rings local ring1 = Instance.new("ImageLabel") ring1.Size = UDim2.new(0,110,0,110); ring1.Position = UDim2.new(0.5,0,0.22,0) ring1.AnchorPoint = Vector2.new(0.5,0.5); ring1.BackgroundTransparency = 1 ring1.ImageTransparency = 1; ring1.Image = "rbxassetid://11326662937" ring1.ImageColor3 = Color3.fromRGB(155,89,182); ring1.Parent = center local ring2 = ring1:Clone() ring2.Size = UDim2.new(0,75,0,75); ring2.ImageColor3 = Color3.fromRGB(192,132,252) ring2.Parent = center -- Glow dot local dot = Instance.new("Frame") dot.Size = UDim2.new(0,14,0,14); dot.Position = UDim2.new(0.5,0,0.22,0) dot.AnchorPoint = Vector2.new(0.5,0.5); dot.BackgroundColor3 = Color3.fromRGB(192,132,252) dot.BackgroundTransparency = 1; dot.BorderSizePixel = 0; dot.Parent = center Instance.new("UICorner", dot).CornerRadius = UDim.new(1,0) -- Title local title = Instance.new("TextLabel") title.Size = UDim2.new(1,0,0,34); title.Position = UDim2.new(0.5,0,0.5,0) title.AnchorPoint = Vector2.new(0.5,0); title.BackgroundTransparency = 1 title.Text = "AMETHYS HUB"; title.TextColor3 = Color3.fromRGB(235,235,245) title.TextTransparency = 1; title.Font = Enum.Font.GothamBold; title.TextSize = 28; title.Parent = center local sub = Instance.new("TextLabel") sub.Size = UDim2.new(1,0,0,18); sub.Position = UDim2.new(0.5,0,0.62,0) sub.AnchorPoint = Vector2.new(0.5,0); sub.BackgroundTransparency = 1 sub.Text = "by amthey • v2.0"; sub.TextColor3 = Color3.fromRGB(192,132,252) sub.TextTransparency = 1; sub.Font = Enum.Font.Gotham; sub.TextSize = 13; sub.Parent = center -- Progress bar local track = Instance.new("Frame") track.Size = UDim2.new(0.7,0,0,4); track.Position = UDim2.new(0.5,0,0.78,0) track.AnchorPoint = Vector2.new(0.5,0.5); track.BackgroundColor3 = Color3.fromRGB(35,25,50) track.BackgroundTransparency = 1; track.BorderSizePixel = 0; track.Parent = center Instance.new("UICorner", track).CornerRadius = UDim.new(1,0) local fill = Instance.new("Frame") fill.Size = UDim2.new(0,0,1,0); fill.BackgroundColor3 = Color3.fromRGB(155,89,182) fill.BorderSizePixel = 0; fill.Parent = track Instance.new("UICorner", fill).CornerRadius = UDim.new(1,0) local fg = Instance.new("UIGradient") fg.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(142,68,173)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(155,89,182)), ColorSequenceKeypoint.new(1, Color3.fromRGB(192,132,252)), }); fg.Parent = fill local status = Instance.new("TextLabel") status.Size = UDim2.new(1,0,0,16); status.Position = UDim2.new(0.5,0,0.86,0) status.AnchorPoint = Vector2.new(0.5,0); status.BackgroundTransparency = 1 status.Text = "Loading..."; status.TextColor3 = Color3.fromRGB(140,130,160) status.TextTransparency = 1; status.Font = Enum.Font.Gotham; status.TextSize = 11; status.Parent = center -- Particles local particles = {} for i = 1, 10 do local p = Instance.new("Frame") p.Size = UDim2.new(0, math.random(2,4), 0, math.random(2,4)) p.Position = UDim2.new(math.random()*0.8+0.1, 0, math.random()*0.8+0.1, 0) p.BackgroundColor3 = Color3.fromRGB(192,132,252); p.BackgroundTransparency = 1 p.BorderSizePixel = 0; p.Parent = bg Instance.new("UICorner", p).CornerRadius = UDim.new(1,0) particles[i] = p end -- ANIMATE local ti = TweenInfo.new local fadeIn = ti(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(bg, fadeIn, {BackgroundTransparency=0}):Play() TweenService:Create(ring1, fadeIn, {ImageTransparency=0.15}):Play() TweenService:Create(ring2, fadeIn, {ImageTransparency=0.25}):Play() TweenService:Create(dot, fadeIn, {BackgroundTransparency=0}):Play() TweenService:Create(title, fadeIn, {TextTransparency=0}):Play() TweenService:Create(sub, fadeIn, {TextTransparency=0.3}):Play() TweenService:Create(track, fadeIn, {BackgroundTransparency=0}):Play() TweenService:Create(status, fadeIn, {TextTransparency=0.4}):Play() for _,p in ipairs(particles) do task.delay(math.random()*0.3, function() TweenService:Create(p, ti(0.4), {BackgroundTransparency=math.random(50,80)/100}):Play() end) end task.wait(0.3) -- Spin local angle = 0 local spin = RunService.RenderStepped:Connect(function(dt) angle = angle + dt * 100 ring1.Rotation = angle; ring2.Rotation = -angle * 1.4 end) -- Pulse dot local pulse = TweenService:Create(dot, ti(0.7, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {Size = UDim2.new(0,22,0,22), BackgroundTransparency = 0.3} ); pulse:Play() -- Drift particles for _,p in ipairs(particles) do TweenService:Create(p, ti(math.random(20,35)/10, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {Position = UDim2.new(p.Position.X.Scale + math.random(-4,4)/100, 0, p.Position.Y.Scale + math.random(-4,4)/100, 0)} ):Play() end -- Progress fill local msgs = {"Initializing...","Loading modules...","Preparing pets...","Connecting...","Almost ready...","Launching..."} TweenService:Create(fill, ti(2.2, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut), {Size = UDim2.new(1,0,1,0)}):Play() for i, msg in ipairs(msgs) do task.delay((2.2/#msgs) * (i-1), function() local fo = TweenService:Create(status, ti(0.1), {TextTransparency=1}); fo:Play(); fo.Completed:Wait() status.Text = msg TweenService:Create(status, ti(0.1), {TextTransparency=0.4}):Play() end) end task.wait(2.6) -- Fade out spin:Disconnect(); pulse:Cancel() local fadeOut = ti(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In) for _,obj in ipairs({bg, ring1, ring2, dot, title, sub, track, fill, status}) do if obj:IsA("TextLabel") then TweenService:Create(obj, fadeOut, {TextTransparency=1}):Play() elseif obj:IsA("ImageLabel") then TweenService:Create(obj, fadeOut, {ImageTransparency=1}):Play() else TweenService:Create(obj, fadeOut, {BackgroundTransparency=1}):Play() end end for _,p in ipairs(particles) do TweenService:Create(p, fadeOut, {BackgroundTransparency=1}):Play() end task.wait(0.5); gui:Destroy() end -- ═══════════════════════════════════════════════════════════ -- PLAY LOADER THEN INIT UI -- ═══════════════════════════════════════════════════════════ PlayLoader() -- ═══════════════════════════════════════════════════════════ -- LOAD FLUENT UI -- ═══════════════════════════════════════════════════════════ local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))() local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))() local Window = Fluent:CreateWindow({ Title = "Amethys Hub", SubTitle = "by amthey • v2.0", TabWidth = 160, Size = UDim2.fromOffset(620, 480), Acrylic = true, Theme = "Amethyst", MinimizeKey = Enum.KeyCode.RightControl }) local Options = Fluent.Options -- ═══════════════════════════════════════════════════════════ -- TABS -- ═══════════════════════════════════════════════════════════ local Tabs = { Main = Window:AddTab({ Title = "Main", Icon = "home" }), Pets = Window:AddTab({ Title = "Pets", Icon = "star" }), AutoFarm = Window:AddTab({ Title = "Auto Farm", Icon = "repeat" }), Player = Window:AddTab({ Title = "Player", Icon = "user" }), Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }), } -- ═══════════════════════════════════════════════════════════ -- MAIN TAB -- ═══════════════════════════════════════════════════════════ Tabs.Main:AddParagraph({ Title = "💎 Amethys Hub", Content = "Premium brainrot pet script by amthey.\nUse the tabs to give pets, auto-farm, or modify your player." }) Tabs.Main:AddDropdown("MutationDrop", { Title = "Mutation", Description = "Applied to all pet gives & spam", Values = Mutations, Default = "Normal", }) Options.MutationDrop:OnChanged(function(val) Settings.Mutation = val end) Tabs.Main:AddSlider("RewardSlider", { Title = "Reward Amount", Description = "Coins per BatchKillReward fire", Default = 999999999999, Min = 1, Max = 999999999999, Rounding = 0, Callback = function(v) Settings.Reward = v end, }) Tabs.Main:AddSlider("IntervalSlider", { Title = "Spam Interval", Description = "Delay between auto-fire loops (seconds)", Default = 0.5, Min = 0.1, Max = 10, Rounding = 1, Callback = function(v) Settings.Interval = v end, }) Tabs.Main:AddInput("CustomPet", { Title = "Custom Pet Name", Default = Settings.PetName, Placeholder = "Pet name...", Callback = function(v) Settings.PetName = v end, }) Tabs.Main:AddInput("CustomRarity", { Title = "Custom Rarity", Default = Settings.Rarity, Placeholder = "Rarity...", Callback = function(v) Settings.Rarity = v end, }) Tabs.Main:AddButton({ Title = "🚀 Fire Custom Pet", Description = "One-shot fire with current settings", Callback = function() FireReward(Settings.PetName, Settings.Rarity) Fluent:Notify({Title="Fired!",Content=Settings.PetName.." ("..Settings.Rarity..")",Duration=2}) end, }) Tabs.Main:AddParagraph({ Title = "━━ Index Completer ━━", Content = "Fires every pet × every mutation × every rarity to fill your entire collection index." }) Tabs.Main:AddButton({ Title = "📖 Complete Index", Description = "Gives ALL 66 pets in ALL 6 mutations (may take a moment)", Callback = function() Fluent:Notify({Title="Index Completer",Content="Starting... this will take a moment.",Duration=3}) task.spawn(function() local total = 0 for _, rarity in ipairs(AllRarities) do for _, pet in ipairs(PetDB[rarity] or {}) do for _, mut in ipairs(Mutations) do FireReward(pet, rarity, mut, Settings.Reward) total = total + 1 task.wait(0.05) end end end Fluent:Notify({Title="Index Complete!",Content="Fired "..total.." entries across all pets & mutations.",Duration=5}) end) end, }) Tabs.Main:AddButton({ Title = "📋 Get Item Index", Description = "Invokes GetItemIndex remote and prints result", Callback = function() local success, result = pcall(function() return ReplicatedStorage:WaitForChild("_Net"):WaitForChild("GetItemIndex"):InvokeServer() end) if success then print("[Amethys Hub] Item Index:", result) Fluent:Notify({Title="Item Index",Content="Index data printed to console (F9).",Duration=3}) else warn("[Amethys Hub] GetItemIndex failed:", result) Fluent:Notify({Title="Error",Content="Failed to get index: "..tostring(result),Duration=3}) end end, }) -- ═══════════════════════════════════════════════════════════ -- PETS TAB — give buttons for every brainrot pet -- ═══════════════════════════════════════════════════════════ for _, rarity in ipairs(AllRarities) do local pets = PetDB[rarity] if pets and #pets > 0 then Tabs.Pets:AddParagraph({ Title = "━━ " .. rarity .. " (" .. #pets .. ") ━━", Content = "" }) for _, petName in ipairs(pets) do Tabs.Pets:AddButton({ Title = "Give: " .. petName, Description = rarity, Callback = function() FireReward(petName, rarity) Fluent:Notify({Title="Given!",Content=petName.." ("..rarity..")",Duration=1.5}) end, }) end end end -- ═══════════════════════════════════════════════════════════ -- AUTO FARM TAB — per-rarity spam toggles -- ═══════════════════════════════════════════════════════════ Tabs.AutoFarm:AddParagraph({ Title = "⚡ Auto Farm", Content = "Toggle each rarity to spam-fire all its pets continuously.\nUses the mutation & reward from the Main tab." }) for i, rarity in ipairs(AllRarities) do local count = PetDB[rarity] and #PetDB[rarity] or 0 Tabs.AutoFarm:AddToggle("Spam_"..rarity, { Title = "Spam " .. rarity .. " (" .. count .. " pets)", Default = false, }) Options["Spam_"..rarity]:OnChanged(function(val) spamEnabled[rarity] = val if val then spamConns[rarity] = task.spawn(function() while spamEnabled[rarity] do FireAllOfRarity(rarity); task.wait(Settings.Interval) end end) else if spamConns[rarity] then pcall(task.cancel, spamConns[rarity]); spamConns[rarity] = nil end end end) end Tabs.AutoFarm:AddToggle("SpamALL", { Title = "⚡ SPAM ALL RARITIES", Default = false, }) Options.SpamALL:OnChanged(function(val) for _, rarity in ipairs(AllRarities) do spamEnabled[rarity] = val if val then if not spamConns[rarity] then spamConns[rarity] = task.spawn(function() while spamEnabled[rarity] do FireAllOfRarity(rarity); task.wait(Settings.Interval) end end) end else if spamConns[rarity] then pcall(task.cancel, spamConns[rarity]); spamConns[rarity] = nil end end end end) Tabs.AutoFarm:AddButton({ Title = "🛑 Emergency Stop All", Description = "Immediately stops all spam loops", Callback = function() StopAllSpam() StopKillsFarmer() Fluent:Notify({Title="Stopped",Content="All spam loops stopped.",Duration=2}) end, }) Tabs.AutoFarm:AddParagraph({ Title = "━━ Kills Farmer ━━", Content = "Spam zero-value rewards to farm kill count fast." }) Tabs.AutoFarm:AddToggle("KillsFarmer", { Title = "🔪 Kills Farmer", Description = "Fires BatchKillReward with 0 values every 0.1s to farm kills", Default = false, }) Options.KillsFarmer:OnChanged(function(val) killsFarmerEnabled = val if val then killsFarmerConn = task.spawn(function() while killsFarmerEnabled do FireKillsFarmer() task.wait(0.1) end end) else StopKillsFarmer() end end) -- ═══════════════════════════════════════════════════════════ -- PLAYER TAB -- ═══════════════════════════════════════════════════════════ Tabs.Player:AddParagraph({ Title = "🎮 Player Mods", Content = "Modify your character's properties." }) Tabs.Player:AddToggle("GodMode", { Title = "God Mode", Description = "Infinite health — survives respawns", Default = false, }) Options.GodMode:OnChanged(function(val) SetGodMode(val) end) Tabs.Player:AddSlider("WalkSpeed", { Title = "Walk Speed", Default = 16, Min = 16, Max = 500, Rounding = 0, Callback = function(v) local c = Player.Character; if c then local h = c:FindFirstChildOfClass("Humanoid"); if h then h.WalkSpeed = v end end end, }) Tabs.Player:AddSlider("JumpPower", { Title = "Jump Power", Default = 50, Min = 50, Max = 1000, Rounding = 0, Callback = function(v) local c = Player.Character; if c then local h = c:FindFirstChildOfClass("Humanoid"); if h then h.JumpPower = v end end end, }) Tabs.Player:AddToggle("AntiAFK", { Title = "Anti-AFK", Description = "Prevents idle kick", Default = false, }) Options.AntiAFK:OnChanged(function(val) if val then local VU = game:GetService("VirtualUser") Player.Idled:Connect(function() VU:CaptureController(); VU:ClickButton2(Vector2.new()) end) end end) Tabs.Player:AddButton({ Title = "Rejoin Server", Callback = function() game:GetService("TeleportService"):Teleport(game.PlaceId, Player) end, }) -- ═══════════════════════════════════════════════════════════ -- SETTINGS TAB — SaveManager + InterfaceManager -- ═══════════════════════════════════════════════════════════ SaveManager:SetLibrary(Fluent) InterfaceManager:SetLibrary(Fluent) SaveManager:IgnoreThemeSettings() SaveManager:SetIgnoreIndexes({}) InterfaceManager:SetFolder("AmethysHub") SaveManager:SetFolder("AmethysHub/config") InterfaceManager:BuildInterfaceSection(Tabs.Settings) SaveManager:BuildConfigSection(Tabs.Settings) -- ═══════════════════════════════════════════════════════════ -- MOBILE UI TOGGLE -- ═══════════════════════════════════════════════════════════ local UserInputService = game:GetService("UserInputService") local MobileGui = Instance.new("ScreenGui") MobileGui.Name = "AmethysMobileToggle" MobileGui.ResetOnSpawn = false MobileGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling MobileGui.Parent = PlayerGui local ToggleButton = Instance.new("ImageButton") ToggleButton.Name = "ToggleButton" ToggleButton.Size = UDim2.new(0, 45, 0, 45) ToggleButton.Position = UDim2.new(0.5, -22, 0, 15) ToggleButton.BackgroundColor3 = Color3.fromRGB(15, 15, 20) ToggleButton.BorderSizePixel = 0 ToggleButton.Image = "rbxassetid://11326662937" ToggleButton.ImageColor3 = Color3.fromRGB(192, 132, 252) ToggleButton.Parent = MobileGui local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(1, 0) ToggleCorner.Parent = ToggleButton local ToggleStroke = Instance.new("UIStroke") ToggleStroke.Color = Color3.fromRGB(155, 89, 182) ToggleStroke.Thickness = 2 ToggleStroke.Parent = ToggleButton -- Dragging logic local dragging, dragInput, dragStart, startPos local isDragging = false ToggleButton.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true isDragging = false dragStart = input.Position startPos = ToggleButton.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) ToggleButton.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input if dragging and (input.Position - dragStart).Magnitude > 5 then isDragging = true end end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart ToggleButton.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- Toggle logic ToggleButton.MouseButton1Click:Connect(function() if not isDragging then local vim = game:GetService("VirtualInputManager") vim:SendKeyEvent(true, Enum.KeyCode.RightControl, false, game) vim:SendKeyEvent(false, Enum.KeyCode.RightControl, false, game) end end) Tabs.Settings:AddButton({ Title = "🗑️ Destroy UI", Description = "Stop everything and remove the interface", Callback = function() StopAllSpam(); StopKillsFarmer(); SetGodMode(false); if MobileGui then MobileGui:Destroy() end; Fluent:Destroy() end, }) -- ═══════════════════════════════════════════════════════════ -- FINALIZE -- ═══════════════════════════════════════════════════════════ Window:SelectTab(1) Fluent:Notify({ Title = "Amethys Hub", Content = "Loaded successfully! Made by amthey 💎", Duration = 5 }) SaveManager:LoadAutoloadConfig() -- Force Amethyst theme always (overrides saved theme) Fluent:SetTheme("Amethyst")