-- ==> FUNGSI ISLOADED BARU <== if _G.isGuiLoaded then return end -- Konfigurasi local BUTTON_CLAIM_TEXT = "Claim All Cash" local BUTTON_EQUIP_BEST_TEXT = "Equip Best" local BUTTON_SELL_ONE_TEXT = "Sell A Brainrot" local BUTTON_SELL_ALL_TEXT = "Sell All Brainrots" local BUTTON_ROLL_TEXT_OFF = "Auto Roll: OFF" local BUTTON_ROLL_TEXT_ON = "Auto Roll: ON" local ANIMATION_SPEED = 0.3 -- Senarai Nama Dice local DICE_NAMES = { "BasicDice", "AscendantDice", "AetherialDice", "AbyssalDice", "BlackholeDice", "CelestialDice", "CelestialEmperorDice", "ChronoDice", "CosmicDice", "CrystalDice", "DevilDice", "DiamondDice", "DivineDice", "EtherealDice", "GalacticDice", "GalaxyDice", "GoldenDice", "HalloweenDice", "HeavenlyDice", "InfinityDice", "MultiverseDice", "NebulaDice", "ParadoxDice", "PhantomDice", "PlatinumDice", "QuantumDice", "RealityDice", "RiftDice", "SilverDice", "SingularityDice", "SolarFlareDice", "SupernovaDice", "TimelessDice", "VoidDice" } -- Servis Penting local Players = game:GetService("Players") local MarketplaceService = game:GetService("MarketplaceService") local TweenService = game:GetService("TweenService") local LocalizationService = game:GetService("LocalizationService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") -- Pembolehubah untuk state local autoRollCoroutine = nil local isAutoRolling = false local selectedDiceName = DICE_NAMES[1] local isMinimized = false local isDropdownOpen = false local sizeBeforeMinimize = nil local isSellWarningActive = false -- Fungsi bantuan local function findInstanceFromPath(path) local current = game; for _, n in ipairs(path) do current = current:WaitForChild(n, 5); if not current then warn("Tak dapat cari:", table.concat(path, ">"), "- Gagal pada:", n); return nil end end; return current end -- Generator UUID v7 (Fixed) local function generateUUIDv7() local timestamp = DateTime.now().UnixTimestampMillis local timestamp_hex = string.format("%012x", timestamp) local r1, r2, r3, r4 = math.random(0, 0xFFF), math.random(0, 0xFFF), math.random(0, 0xFFF), math.random(0, 0xFFF) local large_random_hex = string.format("%03x%03x%03x%03x", r1, r2, r3, r4) local random_hex = string.format("%04x%s", math.random(0, 0xFFFF), large_random_hex) return string.format("%s-%s-7%s-%x%s-%s", string.sub(timestamp_hex, 1, 8), string.sub(timestamp_hex, 9, 12), string.sub(random_hex, 1, 3), 8 + math.random(0, 3), string.sub(random_hex, 4, 6), string.sub(random_hex, 7, 18)) end -- Laluan ke RemoteEvents/Functions local claimCashPath = {"ReplicatedStorage", "Network", "Client", "ClaimCash"} local equipBestPath = {"ReplicatedStorage", "Network", "Client", "EquipBestEntities"} local sellOnePath = {"ReplicatedStorage", "Network", "Client", "SellEntity"} local sellAllPath = {"ReplicatedStorage", "Network", "Client", "SellAllEntities"} local rollDicePath = {"ReplicatedStorage", "Network", "Client", "RollDice"} -- Fungsi untuk menghentikan loop local function stopCurrentLoop() if autoRollCoroutine then coroutine.close(autoRollCoroutine); autoRollCoroutine = nil end end -- Cipta GUI local screenGui = Instance.new("ScreenGui"); screenGui.Name = generateUUIDv7(); screenGui.ResetOnSpawn = false; screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global -- Saiz & Posisi local dropdownClosedSize = UDim2.new(0, 250, 0, 260) local dropdownOpenSize = UDim2.new(0, 250, 0, 400) local minimizedSize = UDim2.new(dropdownClosedSize.X.Scale, dropdownClosedSize.X.Offset, 0, 30) local mainFrame = Instance.new("Frame"); mainFrame.Name = "MainFrame"; mainFrame.Size = dropdownClosedSize; mainFrame.Position = UDim2.new(0.5, -125, 0.5, -130); mainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 45); mainFrame.BorderColor3 = Color3.fromRGB(85, 85, 125); mainFrame.BorderSizePixel = 2; mainFrame.Active = true; mainFrame.Draggable = true; mainFrame.ClipsDescendants = true; mainFrame.Parent = screenGui -- Dapatkan nama game secara dinamik local gameTitle = game.Name -- Fallback jika pcall gagal local s, r = pcall(function() return MarketplaceService:GetProductInfo(game.PlaceId) end) if s and r and r.Name then gameTitle = r.Name end local titleLabel = Instance.new("TextLabel"); titleLabel.Name = "TitleLabel"; titleLabel.Size = UDim2.new(1, 0, 0, 30); titleLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 65); titleLabel.BorderColor3 = Color3.fromRGB(85, 85, 125); titleLabel.Text = gameTitle; titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255); titleLabel.Font = Enum.Font.SourceSansBold; titleLabel.TextSize = 18; titleLabel.Parent = mainFrame local contentContainer = Instance.new("Frame"); contentContainer.Name = "ContentContainer"; contentContainer.Size = UDim2.new(1, 0, 1, -30); contentContainer.Position = UDim2.new(0, 0, 0, 30); contentContainer.BackgroundTransparency = 1; contentContainer.ClipsDescendants = true; contentContainer.Parent = mainFrame -- Butang-butang Atas local claimAllButton = Instance.new("TextButton"); claimAllButton.Name = "ClaimAllButton"; claimAllButton.Size = UDim2.new(0.9, 0, 0, 30); claimAllButton.Position = UDim2.new(0.05, 0, 0, 10); claimAllButton.BackgroundColor3 = Color3.fromRGB(70, 140, 70); claimAllButton.Text = BUTTON_CLAIM_TEXT; claimAllButton.TextColor3 = Color3.fromRGB(255, 255, 255); claimAllButton.Font = Enum.Font.SourceSans; claimAllButton.TextSize = 16; claimAllButton.Parent = contentContainer local equipBestButton = Instance.new("TextButton"); equipBestButton.Name = "EquipBestButton"; equipBestButton.Size = UDim2.new(0.9, 0, 0, 30); equipBestButton.Position = UDim2.new(0.05, 0, 0, 45); equipBestButton.BackgroundColor3 = Color3.fromRGB(80, 120, 160); equipBestButton.Text = BUTTON_EQUIP_BEST_TEXT; equipBestButton.TextColor3 = Color3.fromRGB(255, 255, 255); equipBestButton.Font = Enum.Font.SourceSans; equipBestButton.TextSize = 16; equipBestButton.Parent = contentContainer local autoRollButton = Instance.new("TextButton"); autoRollButton.Name = "AutoRollButton"; autoRollButton.Size = UDim2.new(0.9, 0, 0, 30); autoRollButton.Position = UDim2.new(0.05, 0, 0, 80); autoRollButton.BackgroundColor3 = Color3.fromRGB(60, 60, 80); autoRollButton.Text = BUTTON_ROLL_TEXT_OFF; autoRollButton.TextColor3 = Color3.fromRGB(255, 255, 255); autoRollButton.Font = Enum.Font.SourceSans; autoRollButton.TextSize = 16; autoRollButton.Parent = contentContainer local selectDiceButton = Instance.new("TextButton"); selectDiceButton.Name = "SelectDiceButton"; selectDiceButton.Size = UDim2.new(0.9, 0, 0, 30); selectDiceButton.Position = UDim2.new(0.05, 0, 0, 115); selectDiceButton.BackgroundColor3 = Color3.fromRGB(50, 50, 65); selectDiceButton.Text = "Selected: "..selectedDiceName; selectDiceButton.TextColor3 = Color3.fromRGB(220, 220, 220); selectDiceButton.Font = Enum.Font.SourceSans; selectDiceButton.TextSize = 16; selectDiceButton.Parent = contentContainer -- Dropdown local diceSelectionFrame = Instance.new("Frame"); diceSelectionFrame.Name = "DiceSelectionFrame"; diceSelectionFrame.Size = UDim2.new(0.9, 0, 0, 140); diceSelectionFrame.Position = UDim2.new(0.05, 0, 0, 150); diceSelectionFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 55); diceSelectionFrame.BorderColor3 = Color3.fromRGB(85, 85, 125); diceSelectionFrame.ClipsDescendants = true; diceSelectionFrame.Visible = false; diceSelectionFrame.Parent = contentContainer local scrollingFrame = Instance.new("ScrollingFrame"); scrollingFrame.Name = "DiceScrollingFrame"; scrollingFrame.Size = UDim2.new(1, 0, 1, 0); scrollingFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 55); scrollingFrame.BorderSizePixel = 0; scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0); scrollingFrame.ScrollBarThickness = 6; scrollingFrame.Parent = diceSelectionFrame local uiListLayout = Instance.new("UIListLayout"); uiListLayout.Name = "ListLayout"; uiListLayout.SortOrder = Enum.SortOrder.Name; uiListLayout.Padding = UDim.new(0, 3); uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center; uiListLayout.Parent = scrollingFrame -- Butang-butang Bawah local sellAllButton = Instance.new("TextButton"); sellAllButton.Name = "SellAllButton"; sellAllButton.Size = UDim2.new(0.9, 0, 0, 30); sellAllButton.AnchorPoint = Vector2.new(0.5, 1); sellAllButton.Position = UDim2.new(0.5, 0, 1, -10); sellAllButton.BackgroundColor3 = Color3.fromRGB(180, 70, 70); sellAllButton.Text = BUTTON_SELL_ALL_TEXT; sellAllButton.TextColor3 = Color3.fromRGB(255, 255, 255); sellAllButton.Font = Enum.Font.SourceSans; sellAllButton.TextSize = 16; sellAllButton.Parent = contentContainer local sellOneButton = Instance.new("TextButton"); sellOneButton.Name = "SellOneButton"; sellOneButton.Size = UDim2.new(0.9, 0, 0, 30); sellOneButton.AnchorPoint = Vector2.new(0.5, 1); sellOneButton.Position = UDim2.new(0.5, 0, 1, -45); sellOneButton.BackgroundColor3 = Color3.fromRGB(160, 120, 80); sellOneButton.Text = BUTTON_SELL_ONE_TEXT; sellOneButton.TextColor3 = Color3.fromRGB(255, 255, 255); sellOneButton.Font = Enum.Font.SourceSans; sellOneButton.TextSize = 16; sellOneButton.Parent = contentContainer -- ==> TOOLTIP DIPERBAIKI <== local tooltipFrame = Instance.new("Frame"); tooltipFrame.Name = "TooltipFrame"; tooltipFrame.AutomaticSize = Enum.AutomaticSize.XY; tooltipFrame.BackgroundColor3 = Color3.new(0, 0, 0); tooltipFrame.BackgroundTransparency = 0.5; tooltipFrame.BorderColor3 = Color3.fromRGB(100, 100, 100); tooltipFrame.Visible = false; tooltipFrame.ZIndex = 20; tooltipFrame.AnchorPoint = Vector2.new(0.5, 1); tooltipFrame.Parent = screenGui local tooltipPadding = Instance.new("UIPadding"); tooltipPadding.PaddingLeft = UDim.new(0, 5); tooltipPadding.PaddingRight = UDim.new(0, 5); tooltipPadding.PaddingTop = UDim.new(0, 2); tooltipPadding.PaddingBottom = UDim.new(0, 2); tooltipPadding.Parent = tooltipFrame local tooltipLabel = Instance.new("TextLabel"); tooltipLabel.Name = "TooltipLabel"; tooltipLabel.BackgroundTransparency = 1; tooltipLabel.Text = "Sells the currently held brainrot."; tooltipLabel.TextColor3 = Color3.new(1, 1, 1); tooltipLabel.Font = Enum.Font.SourceSans; tooltipLabel.TextSize = 14; tooltipLabel.TextWrapped = true; tooltipLabel.AutomaticSize = Enum.AutomaticSize.XY; tooltipLabel.Parent = tooltipFrame -- Butang Kawalan Tetingkap local closeButton = Instance.new("TextButton"); closeButton.Name = "CloseButton"; closeButton.Size = UDim2.new(0, 20, 0, 20); closeButton.Position = UDim2.new(1, -25, 0, 5); closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50); closeButton.Text = "X"; closeButton.TextColor3 = Color3.fromRGB(255, 255, 255); closeButton.Font = Enum.Font.SourceSansBold; closeButton.TextSize = 14; closeButton.Parent = mainFrame local minimizeButton = Instance.new("TextButton"); minimizeButton.Name = "MinimizeButton"; minimizeButton.Size = UDim2.new(0, 20, 0, 20); minimizeButton.Position = UDim2.new(1, -50, 0, 5); minimizeButton.BackgroundColor3 = Color3.fromRGB(80, 80, 100); minimizeButton.Text = "-"; minimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255); minimizeButton.Font = Enum.Font.SourceSansBold; minimizeButton.TextSize = 18; minimizeButton.Parent = mainFrame -- GUI Pengesahan (Close) local closeConfBg = Instance.new("Frame"); closeConfBg.Name = "CloseConfBg"; closeConfBg.Size = UDim2.new(1, 0, 1, 0); closeConfBg.BackgroundColor3 = Color3.new(0, 0, 0); closeConfBg.BackgroundTransparency = 0.75; closeConfBg.Visible = false; closeConfBg.ZIndex = 10; closeConfBg.Parent = screenGui local closeConfDialog = Instance.new("Frame"); closeConfDialog.Name = "CloseConfDialog"; closeConfDialog.Size = UDim2.new(0, 300, 0, 150); closeConfDialog.Position = UDim2.new(0.5, -150, 0.5, -75); closeConfDialog.BackgroundColor3 = Color3.fromRGB(45, 45, 55); closeConfDialog.BorderColor3 = Color3.fromRGB(85, 85, 125); closeConfDialog.BorderSizePixel = 2; closeConfDialog.Parent = closeConfBg local closeConfTitle = Instance.new("TextLabel"); closeConfTitle.Name = "CloseConfTitle"; closeConfTitle.Size = UDim2.new(1, 0, 0, 30); closeConfTitle.BackgroundColor3 = Color3.fromRGB(50, 50, 65); closeConfTitle.Text = gameTitle; closeConfTitle.TextColor3 = Color3.fromRGB(255, 255, 255); closeConfTitle.Font = Enum.Font.SourceSansBold; closeConfTitle.TextSize = 18; closeConfTitle.Parent = closeConfDialog local closeConfMsg = Instance.new("TextLabel"); closeConfMsg.Name = "CloseConfMsg"; closeConfMsg.Size = UDim2.new(0.9, 0, 0.5, 0); closeConfMsg.Position = UDim2.new(0.05, 0, 0.25, 0); closeConfMsg.BackgroundTransparency = 1; closeConfMsg.TextColor3 = Color3.fromRGB(220, 220, 220); closeConfMsg.Font = Enum.Font.SourceSans; closeConfMsg.TextSize = 16; closeConfMsg.TextWrapped = true; closeConfMsg.Parent = closeConfDialog local sT1, t1 = pcall(function() return LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer) end); if sT1 and t1 then closeConfMsg.Text = t1:Translate(screenGui, "Are you sure you want to close the menu?") else closeConfMsg.Text = "Are you sure you want to close the menu?" end local closeNoBtn = Instance.new("TextButton"); closeNoBtn.Name = "CloseNoBtn"; closeNoBtn.Size = UDim2.new(0.4, 0, 0, 35); closeNoBtn.Position = UDim2.new(0.525, 0, 0.7, 0); closeNoBtn.BackgroundColor3 = Color3.fromRGB(80, 160, 80); closeNoBtn.Text = "NO"; closeNoBtn.TextColor3 = Color3.fromRGB(255, 255, 255); closeNoBtn.Font = Enum.Font.SourceSansBold; closeNoBtn.TextSize = 16; closeNoBtn.Parent = closeConfDialog local closeYesBtn = Instance.new("TextButton"); closeYesBtn.Name = "CloseYesBtn"; closeYesBtn.Size = UDim2.new(0.4, 0, 0, 35); closeYesBtn.Position = UDim2.new(0.075, 0, 0.7, 0); closeYesBtn.BackgroundColor3 = Color3.fromRGB(180, 70, 70); closeYesBtn.Text = "YES"; closeYesBtn.TextColor3 = Color3.fromRGB(255, 255, 255); closeYesBtn.Font = Enum.Font.SourceSansBold; closeYesBtn.TextSize = 16; closeYesBtn.Parent = closeConfDialog -- GUI Pengesahan (Sell All) local sellAllConfBg = Instance.new("Frame"); sellAllConfBg.Name = "SellAllConfBg"; sellAllConfBg.Size = UDim2.new(1, 0, 1, 0); sellAllConfBg.BackgroundColor3 = Color3.new(0, 0, 0); sellAllConfBg.BackgroundTransparency = 0.75; sellAllConfBg.Visible = false; sellAllConfBg.ZIndex = 11; sellAllConfBg.Parent = screenGui local sellAllConfDialog = Instance.new("Frame"); sellAllConfDialog.Name = "SellAllConfDialog"; sellAllConfDialog.Size = UDim2.new(0, 300, 0, 150); sellAllConfDialog.Position = UDim2.new(0.5, -150, 0.5, -75); sellAllConfDialog.BackgroundColor3 = Color3.fromRGB(45, 45, 55); sellAllConfDialog.BorderColor3 = Color3.fromRGB(85, 85, 125); sellAllConfDialog.BorderSizePixel = 2; sellAllConfDialog.Parent = sellAllConfBg local sellAllConfTitle = Instance.new("TextLabel"); sellAllConfTitle.Name = "SellAllConfTitle"; sellAllConfTitle.Size = UDim2.new(1, 0, 0, 30); sellAllConfTitle.BackgroundColor3 = Color3.fromRGB(50, 50, 65); sellAllConfTitle.Text = "CONFIRM SELL ALL"; sellAllConfTitle.TextColor3 = Color3.fromRGB(255, 255, 255); sellAllConfTitle.Font = Enum.Font.SourceSansBold; sellAllConfTitle.TextSize = 18; sellAllConfTitle.Parent = sellAllConfDialog local sellAllConfMsg = Instance.new("TextLabel"); sellAllConfMsg.Name = "SellAllConfMsg"; sellAllConfMsg.Size = UDim2.new(0.9, 0, 0.5, 0); sellAllConfMsg.Position = UDim2.new(0.05, 0, 0.25, 0); sellAllConfMsg.BackgroundTransparency = 1; sellAllConfMsg.TextColor3 = Color3.fromRGB(220, 220, 220); sellAllConfMsg.Font = Enum.Font.SourceSans; sellAllConfMsg.TextSize = 16; sellAllConfMsg.TextWrapped = true; sellAllConfMsg.Parent = sellAllConfDialog local sT2, t2 = pcall(function() return LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer) end); if sT2 and t2 then sellAllConfMsg.Text = t2:Translate(screenGui, "This will sell ALL your brainrots. This action cannot be undone. Are you sure?") else sellAllConfMsg.Text = "This will sell ALL your brainrots. This action cannot be undone. Are you sure?" end local sellAllNoBtn = Instance.new("TextButton"); sellAllNoBtn.Name = "SellAllNoBtn"; sellAllNoBtn.Size = UDim2.new(0.4, 0, 0, 35); sellAllNoBtn.Position = UDim2.new(0.525, 0, 0.7, 0); sellAllNoBtn.BackgroundColor3 = Color3.fromRGB(80, 160, 80); sellAllNoBtn.Text = "NO"; sellAllNoBtn.TextColor3 = Color3.fromRGB(255, 255, 255); sellAllNoBtn.Font = Enum.Font.SourceSansBold; sellAllNoBtn.TextSize = 16; sellAllNoBtn.Parent = sellAllConfDialog local sellAllYesBtn = Instance.new("TextButton"); sellAllYesBtn.Name = "SellAllYesBtn"; sellAllYesBtn.Size = UDim2.new(0.4, 0, 0, 35); sellAllYesBtn.Position = UDim2.new(0.075, 0, 0.7, 0); sellAllYesBtn.BackgroundColor3 = Color3.fromRGB(180, 70, 70); sellAllYesBtn.Text = "YES"; sellAllYesBtn.TextColor3 = Color3.fromRGB(255, 255, 255); sellAllYesBtn.Font = Enum.Font.SourceSansBold; sellAllYesBtn.TextSize = 16; sellAllYesBtn.Parent = sellAllConfDialog -- Fungsi untuk menguruskan animasi dropdown local function toggleDropdown(forceState) local shouldOpen = not isDropdownOpen; if forceState ~= nil then shouldOpen = forceState end; if shouldOpen == isDropdownOpen then return end; isDropdownOpen = shouldOpen local tweenInfo = TweenInfo.new(ANIMATION_SPEED, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) if shouldOpen then diceSelectionFrame.Visible = true; TweenService:Create(mainFrame, tweenInfo, {Size = dropdownOpenSize}):Play() else local tween = TweenService:Create(mainFrame, tweenInfo, {Size = dropdownClosedSize}); tween:Play(); tween.Completed:Connect(function() if not isDropdownOpen then diceSelectionFrame.Visible = false end end) end end -- Cipta butang-butang dice for _, diceName in ipairs(DICE_NAMES) do local diceButton = Instance.new("TextButton"); diceButton.Name = diceName; diceButton.Size = UDim2.new(0.95, 0, 0, 25); diceButton.BackgroundColor3 = Color3.fromRGB(60, 60, 80); diceButton.Text = diceName; diceButton.TextColor3 = Color3.fromRGB(255, 255, 255); diceButton.Font = Enum.Font.SourceSans; diceButton.TextSize = 14; diceButton.Parent = scrollingFrame; diceButton.MouseButton1Click:Connect(function() selectedDiceName = diceName; selectDiceButton.Text = "Selected: "..selectedDiceName; toggleDropdown(false) end) end scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y) -- Sambungan fungsi claimAllButton.MouseButton1Click:Connect(function() local r = findInstanceFromPath(claimCashPath); if not r then return end; for i = 1, 10 do pcall(function() r:FireServer("PedastalHolder"..i) end) end end) equipBestButton.MouseButton1Click:Connect(function() local r = findInstanceFromPath(equipBestPath); if r then pcall(function() r:InvokeServer() end) end end) sellOneButton.MouseButton1Click:Connect(function() if isSellWarningActive then return end local char = Players.LocalPlayer.Character if char and char:FindFirstChildOfClass("Tool") then local remote = findInstanceFromPath(sellOnePath) if remote then pcall(function() remote:InvokeServer() end) end else isSellWarningActive = true local originalText = sellOneButton.Text local originalColor = sellOneButton.TextColor3 sellOneButton.Text = "HOLD BRAINROT FIRST!" sellOneButton.TextColor3 = Color3.fromRGB(255, 80, 80) -- Warna merah task.delay(3, function() sellOneButton.Text = originalText sellOneButton.TextColor3 = originalColor isSellWarningActive = false end) end end) sellAllButton.MouseButton1Click:Connect(function() sellAllConfBg.Visible = true end) sellAllYesBtn.MouseButton1Click:Connect(function() local r = findInstanceFromPath(sellAllPath); if r then pcall(function() r:InvokeServer() end) end; sellAllConfBg.Visible = false end) sellAllNoBtn.MouseButton1Click:Connect(function() sellAllConfBg.Visible = false end) sellOneButton.MouseEnter:Connect(function() tooltipFrame.Visible = true end); sellOneButton.MouseLeave:Connect(function() tooltipFrame.Visible = false end) RunService.RenderStepped:Connect(function() if tooltipFrame.Visible then local m = UserInputService:GetMouseLocation(); tooltipFrame.Position = UDim2.fromOffset(m.X, m.Y - 10) end end) autoRollButton.MouseButton1Click:Connect(function() isAutoRolling = not isAutoRolling; if isAutoRolling then stopCurrentLoop(); autoRollButton.Text = BUTTON_ROLL_TEXT_ON; autoRollButton.BackgroundColor3 = Color3.fromRGB(70, 140, 70); local r = findInstanceFromPath(rollDicePath); if r then autoRollCoroutine = coroutine.create(function() while true do pcall(function() r:InvokeServer(selectedDiceName) end) task.wait() end end); coroutine.resume(autoRollCoroutine) else isAutoRolling = false; autoRollButton.Text = BUTTON_ROLL_TEXT_OFF; autoRollButton.BackgroundColor3 = Color3.fromRGB(60, 60, 80) end else stopCurrentLoop(); autoRollButton.Text = BUTTON_ROLL_TEXT_OFF; autoRollButton.BackgroundColor3 = Color3.fromRGB(60, 60, 80) end end) selectDiceButton.MouseButton1Click:Connect(function() toggleDropdown() end) minimizeButton.MouseButton1Click:Connect(function() isMinimized = not isMinimized; local t = TweenInfo.new(ANIMATION_SPEED, Enum.EasingStyle.Quad, Enum.EasingDirection.Out); if isMinimized then sizeBeforeMinimize = mainFrame.Size; TweenService:Create(mainFrame, t, {Size = minimizedSize}):Play(); minimizeButton.Text = "+" else TweenService:Create(mainFrame, t, {Size = sizeBeforeMinimize or dropdownClosedSize}):Play(); minimizeButton.Text = "-" end end) closeButton.MouseButton1Click:Connect(function() closeConfBg.Visible = true end) closeYesBtn.MouseButton1Click:Connect(function() stopCurrentLoop(); _G.isGuiLoaded = nil; screenGui:Destroy() end) closeNoBtn.MouseButton1Click:Connect(function() closeConfBg.Visible = false end) -- Letak GUI dalam PlayerGui _G.isGuiLoaded = true screenGui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui")