--[[ When you get to defrost, turn it off after maybe 200 resets as this doesnt have a cap and will reset infinitely and stop any further progress until it is turned off, if things are buggy then just turn all off and on or rejoin and reexecute ]] local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local Remotes = ReplicatedStorage:WaitForChild("Remotes") local function getRemote(name) return Remotes:FindFirstChild(name) end local remoteDefs = { { key = "PowerRE", label = "Power" }, { key = "ClaimCoinGiftRE", label = "Claim Coin Gift" }, { key = "EnergyRE", label = "Energy" }, { key = "DiamondsRE", label = "Diamonds" }, { key = "LuckRE", label = "Luck" }, { key = "WindRE", label = "Wind" }, { key = "StarRE", label = "Star" }, { key = "SuperStarRE", label = "Super Star" }, { key = "CoinsRE", label = "Coins" }, { key = "WildCrateRE", label = "Wild Crate" }, { key = "TreeRE", label = "Tree" }, { key = "CrystalRE", label = "Crystal" }, { key = "JewelCrateRE", label = "Jewel Crate" }, { key = "WhirlpoolCrateRE", label = "Whirlpool Crate" }, { key = "DropletRE", label = "Droplet" }, { key = "GoldStarRE", label = "Gold Star" }, { key = "ShadowRE", label = "Shadow" }, { key = "SandRE", label = "Sand" }, { key = "CactusRE", label = "Cactus" }, { key = "SunlightRE", label = "Sunlight" }, { key = "PrismsRE", label = "Prisms" }, { key = "GlassRE", label = "Glass" }, { key = "SolarPanelRE", label = "Solar Panel" }, { key = "DesertCrateRE", label = "Desert Crate" }, { key = "SuperLuckRE", label = "Super Luck" }, { key = "BatteryRE", label = "Battery" }, { key = "RefractionRE", label = "Refraction" }, { key = "CryptCrateRE", label = "Crypt Crate" }, { key = "ElectricityRE", label = "Electricity" }, { key = "CloneRE", label = "Clone" }, { key = "RunicTempleRE", label = "Runic Temple" }, { key = "TempleOpenRE", label = "Temple Open (10s cap)" }, { key = "SnowRE", label = "Snow" }, { key = "IceRE", label = "Ice" }, { key = "FrostRE", label = "Frost" }, { key = "IcyCrateRE", label = "Icy Crate" }, { key = "Luck2RE", label = "Luck 2" }, { key = "FreezerRE", label = "Freezer" }, { key = "RefrostRE", label = "Refrost" }, { key = "ArcticCrateRE", label = "Arctic Crate" }, { key = "ColdPrismRE", label = "Cold Prism" }, { key = "ChilledStarRE", label = "Chilled Star" }, { key = "IglooRE", label = "Igloo" }, { key = "FrozenDiamondRE", label = "Frozen Diamond" }, { key = "PackedIceRE", label = "Packed Ice" }, { key = "SuperLuck2RE", label = "Super Luck 2" }, { key = "HailRE", label = "Hail" }, { key = "DeepCrateRE", label = "Deep Crate" }, { key = "FireRE", label = "Fire" }, { key = "MoltenRE", label = "Molten" }, { key = "LavaRE", label = "Lava" }, { key = "InferniteStarRE", label = "Infernite Star" }, { key = "MagmaRE", label = "Magma" }, { key = "SSLuckRE", label = "SS Luck" }, { key = "HotCrateRE", label = "Hot Crate" }, } local actions = {} for _, def in ipairs(remoteDefs) do local remote = getRemote(def.key) table.insert(actions, { key = def.key, label = def.label .. (remote and "" or " (missing)"), remote = remote, enabled = remote ~= nil, }) end local FULL_W, FULL_H = 300, 400 local MINI_W, MINI_H = 300, 40 local CORNER_R = 12 local BAR_H = 32 local screenGui = Instance.new("ScreenGui") screenGui.Name = "StatsUI" screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(FULL_W, FULL_H) frame.Position = UDim2.fromScale(0.5, 0.5) frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) frame.BorderSizePixel = 0 frame.Parent = screenGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, CORNER_R) uiCorner.Parent = frame local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(60, 60, 60) stroke.Thickness = 1 stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border stroke.Parent = frame local topBar = Instance.new("Frame") topBar.Name = "TopBar" topBar.Size = UDim2.new(1, 0, 0, BAR_H) topBar.BackgroundColor3 = Color3.fromRGB(32, 32, 32) topBar.BorderSizePixel = 0 topBar.Parent = frame local topCorner = Instance.new("UICorner") topCorner.CornerRadius = UDim.new(0, CORNER_R) topCorner.Parent = topBar local title = Instance.new("TextLabel") title.Text = "Stats Control" title.Font = Enum.Font.GothamSemibold title.TextColor3 = Color3.fromRGB(235, 235, 235) title.TextSize = 14 title.BackgroundTransparency = 1 title.TextXAlignment = Enum.TextXAlignment.Left title.Size = UDim2.new(1, -100, 1, 0) title.Position = UDim2.new(0, 12, 0, 0) title.Parent = topBar local minimise = Instance.new("TextButton") minimise.Text = "–" minimise.Font = Enum.Font.GothamBold minimise.TextSize = 20 minimise.BackgroundColor3 = Color3.fromRGB(45, 45, 45) minimise.TextColor3 = Color3.fromRGB(230, 230, 230) minimise.Size = UDim2.fromOffset(32, 22) minimise.Position = UDim2.new(1, -82, 0.5, -11) minimise.AutoButtonColor = true minimise.Parent = topBar local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 8) minCorner.Parent = minimise local unloadTop = Instance.new("TextButton") unloadTop.Text = "Unload" unloadTop.Font = Enum.Font.GothamBold unloadTop.TextSize = 14 unloadTop.BackgroundColor3 = Color3.fromRGB(120, 35, 35) unloadTop.TextColor3 = Color3.fromRGB(255, 235, 235) unloadTop.Size = UDim2.fromOffset(60, 22) unloadTop.Position = UDim2.new(1, -48, 0.5, -11) unloadTop.AutoButtonColor = true unloadTop.Parent = topBar local unloadCorner = Instance.new("UICorner") unloadCorner.CornerRadius = UDim.new(0, 8) unloadCorner.Parent = unloadTop local dot = Instance.new("Frame") dot.Size = UDim2.fromOffset(10, 10) dot.Position = UDim2.new(1, -18, 0.5, -5) dot.BackgroundColor3 = Color3.fromRGB(180, 0, 0) dot.BorderSizePixel = 0 dot.Parent = topBar local dotCorner = Instance.new("UICorner") dotCorner.CornerRadius = UDim.new(1, 0) dotCorner.Parent = dot local content = Instance.new("Frame") content.Name = "Content" content.BackgroundTransparency = 1 content.Size = UDim2.new(1, -20, 1, -BAR_H - 12) content.Position = UDim2.new(0, 10, 0, BAR_H + 6) content.Parent = frame local contentLayout = Instance.new("UIListLayout") contentLayout.Padding = UDim.new(0, 8) contentLayout.SortOrder = Enum.SortOrder.LayoutOrder contentLayout.Parent = content local listScroll = Instance.new("ScrollingFrame") listScroll.Name = "RemoteList" listScroll.BackgroundColor3 = Color3.fromRGB(28, 28, 28) listScroll.BorderSizePixel = 0 listScroll.Size = UDim2.new(1, 0, 0, 200) listScroll.ScrollBarThickness = 6 listScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y listScroll.CanvasSize = UDim2.new(0, 0, 0, 0) listScroll.Parent = content local listCorner = Instance.new("UICorner") listCorner.CornerRadius = UDim.new(0, 10) listCorner.Parent = listScroll local listLayout = Instance.new("UIListLayout") listLayout.SortOrder = Enum.SortOrder.LayoutOrder listLayout.Padding = UDim.new(0, 6) listLayout.Parent = listScroll local listPad = Instance.new("UIPadding") listPad.PaddingTop = UDim.new(0, 8) listPad.PaddingBottom = UDim.new(0, 8) listPad.PaddingLeft = UDim.new(0, 8) listPad.PaddingRight = UDim.new(0, 8) listPad.Parent = listScroll local div = Instance.new("Frame") div.BackgroundColor3 = Color3.fromRGB(50, 50, 50) div.BorderSizePixel = 0 div.Size = UDim2.new(1, 0, 0, 1) div.Parent = content local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(1, 0, 0, 44) toggleButton.Text = "Start" toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) toggleButton.Font = Enum.Font.GothamBold toggleButton.TextScaled = true toggleButton.AutoButtonColor = true toggleButton.Parent = content local uiCornerBtn = Instance.new("UICorner") uiCornerBtn.CornerRadius = UDim.new(0, 10) uiCornerBtn.Parent = toggleButton local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, 0, 0, 22) statusLabel.BackgroundTransparency = 1 statusLabel.TextColor3 = Color3.fromRGB(200, 200, 200) statusLabel.Font = Enum.Font.Gotham statusLabel.TextScaled = true statusLabel.Text = "Status: Stopped" statusLabel.Parent = content local intervalRow = Instance.new("Frame") intervalRow.BackgroundTransparency = 1 intervalRow.Size = UDim2.new(1, 0, 0, 26) intervalRow.Parent = content local intervalLabel = Instance.new("TextLabel") intervalLabel.BackgroundTransparency = 1 intervalLabel.Text = "Interval (s):" intervalLabel.Font = Enum.Font.Gotham intervalLabel.TextColor3 = Color3.fromRGB(210, 210, 210) intervalLabel.TextSize = 14 intervalLabel.TextXAlignment = Enum.TextXAlignment.Left intervalLabel.Size = UDim2.new(0.5, -6, 1, 0) intervalLabel.Parent = intervalRow local intervalBox = Instance.new("TextBox") intervalBox.Text = "0.05" intervalBox.ClearTextOnFocus = false intervalBox.Font = Enum.Font.GothamSemibold intervalBox.TextSize = 14 intervalBox.TextColor3 = Color3.fromRGB(240, 240, 240) intervalBox.BackgroundColor3 = Color3.fromRGB(50, 50, 50) intervalBox.Size = UDim2.new(0.5, 0, 1, 0) intervalBox.Position = UDim2.new(0.5, 0, 0, 0) intervalBox.Parent = intervalRow local intervalCorner = Instance.new("UICorner") intervalCorner.CornerRadius = UDim.new(0, 8) intervalCorner.Parent = intervalBox local function makeToggleButton(parent, initial, disabled) local btn = Instance.new("TextButton") btn.Size = UDim2.fromOffset(70, 24) btn.BackgroundColor3 = initial and Color3.fromRGB(0, 170, 90) or Color3.fromRGB(70, 70, 70) btn.TextColor3 = Color3.fromRGB(250, 250, 250) btn.Text = initial and "ON" or "OFF" btn.Font = Enum.Font.GothamSemibold btn.TextSize = 14 btn.AutoButtonColor = not disabled btn.Parent = parent local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 8) c.Parent = btn if disabled then btn.Text = "N/A" btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end return btn end local function addRemoteRow(def, conns) local row = Instance.new("Frame") row.BackgroundTransparency = 1 row.Size = UDim2.new(1, 0, 0, 24) row.Parent = listScroll local nameLabel = Instance.new("TextLabel") nameLabel.BackgroundTransparency = 1 nameLabel.Text = def.label nameLabel.Font = Enum.Font.Gotham nameLabel.TextColor3 = def.remote and Color3.fromRGB(210, 210, 210) or Color3.fromRGB(170, 120, 120) nameLabel.TextSize = 14 nameLabel.TextXAlignment = Enum.TextXAlignment.Left nameLabel.Size = UDim2.new(1, -80, 1, 0) nameLabel.Parent = row local toggle = makeToggleButton(row, def.enabled, not def.remote) toggle.Position = UDim2.new(1, -70, 0, 0) local state = def.enabled if def.remote then table.insert(conns, toggle.MouseButton1Click:Connect(function() state = not state def.enabled = state toggle.Text = state and "ON" or "OFF" toggle.BackgroundColor3 = state and Color3.fromRGB(0, 170, 90) or Color3.fromRGB(70, 70, 70) end)) end end local conns = {} for _, a in ipairs(actions) do addRemoteRow(a, conns) end local running = false local minimised = false local lastTempleFire = 0 local function setRunning(v) running = v toggleButton.Text = running and "Stop" or "Start" statusLabel.Text = "Status: " .. (running and "Running" or "Stopped") dot.BackgroundColor3 = running and Color3.fromRGB(0, 200, 80) or Color3.fromRGB(180, 0, 0) end local function getInterval() local n = tonumber(intervalBox.Text) if not n then n = 0.05 end if n < 0.01 then n = 0.01 end if n > 5 then n = 5 end return n end local function tweenFrameSize(w, h) TweenService:Create( frame, TweenInfo.new(0.18, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = UDim2.fromOffset(w, h) } ):Play() end local function setMinimised(v) minimised = v content.Visible = not minimised minimise.Text = minimised and "+" or "–" if minimised then tweenFrameSize(MINI_W, MINI_H) else tweenFrameSize(FULL_W, FULL_H) end end do local dragging = false local dragStart local startPos local function update(input) local delta = input.Position - dragStart frame.Position = UDim2.fromOffset(startPos.X + delta.X, startPos.Y + delta.Y) end table.insert(conns, topBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = Vector2.new(frame.AbsolutePosition.X, frame.AbsolutePosition.Y) table.insert(conns, input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)) end end)) table.insert(conns, UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input) end end)) end table.insert(conns, minimise.MouseButton1Click:Connect(function() setMinimised(not minimised) end)) table.insert(conns, intervalBox.FocusLost:Connect(function() local n = tonumber(intervalBox.Text) if not n then intervalBox.Text = "0.05" return end if n < 0.01 then intervalBox.Text = "0.01" elseif n > 5 then intervalBox.Text = "5" else intervalBox.Text = string.format("%.3f", n) end end)) table.insert(conns, toggleButton.MouseButton1Click:Connect(function() if running then setRunning(false) return end setRunning(true) task.spawn(function() while running do local now = time() for _, a in ipairs(actions) do if a.enabled and a.remote then if a.key == "TempleOpenRE" then if now - lastTempleFire >= 10 then pcall(function() a.remote:FireServer() end) lastTempleFire = now end else pcall(function() a.remote:FireServer() end) end end end task.wait(getInterval()) end end) end)) local pendingConfirm = false local function unload() setRunning(false) for _, c in ipairs(conns) do pcall(function() c:Disconnect() end) end pcall(function() screenGui:Destroy() end) pcall(function() if script and script.Destroy then script:Destroy() end end) end table.insert(conns, unloadTop.MouseButton1Click:Connect(function() if not pendingConfirm then pendingConfirm = true unloadTop.Text = "Confirm" unloadTop.BackgroundColor3 = Color3.fromRGB(170, 40, 40) task.delay(2, function() if pendingConfirm then pendingConfirm = false unloadTop.Text = "Unload" unloadTop.BackgroundColor3 = Color3.fromRGB(120, 35, 35) end end) else unload() end end))