--[[ GUI with 2 tabs: 1) Package giver: select type + variant and fire GivePackageToPlayer 2) Autofarm: spam DiamondOmega and every 0.5s call SellAllItems Note on naming convention: - Normal -> " Package" - Gold -> "Gold Package" - Diamond -> "Diamond Package" -- without space ]] ---------------------------------------------------------------- -- Services and remotes ---------------------------------------------------------------- local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local REMOTE_GIVE = ReplicatedStorage:WaitForChild("GivePackageToPlayer") local REMOTE_SELL = ReplicatedStorage:WaitForChild("SellAllItems") ---------------------------------------------------------------- -- Helpers: package detection ---------------------------------------------------------------- local function endsWithPackage(name) return name:sub(-8) == " Package" end -- recursively collect all names local function collectAllNamesRecursive(parent, set) for _,child in ipairs(parent:GetChildren()) do if endsWithPackage(child.Name) then set[child.Name] = true end collectAllNamesRecursive(child, set) end end local function collectAllNames() local set = {} collectAllNamesRecursive(ReplicatedStorage, set) return set end local function buildCatalog() local names = collectAllNames() local catalog = {} local bases = {} for fullName,_ in pairs(names) do if not fullName:match("^Gold%s") and not fullName:match("^Diamond") then local base = fullName:match("^(.*) Package$") if base and base ~= "" then bases[base] = true end end end for fullName,_ in pairs(names) do local base if fullName:match("^Gold%s") then base = fullName:match("^Gold%s(.+) Package$") elseif fullName:match("^Diamond") then base = fullName:match("^Diamond(.+) Package$") end if base and base ~= "" then bases[base] = true end end for base,_ in pairs(bases) do local normalName = base .. " Package" local goldName = "Gold " .. base .. " Package" local diamondName = "Diamond" .. base .. " Package" catalog[base] = { Normal = names[normalName] or false, Gold = names[goldName] or false, Diamond = names[diamondName] or false, } end local sorted = {} for base,_ in pairs(catalog) do table.insert(sorted, base) end table.sort(sorted, function(a,b) return a:lower() < b:lower() end) return catalog, sorted end local function composeName(base, variant) if variant == "Gold" then return ("Gold %s Package"):format(base) elseif variant == "Diamond" then return ("Diamond%s Package"):format(base) else return ("%s Package"):format(base) end end ---------------------------------------------------------------- -- GUI shell ---------------------------------------------------------------- local player = Players.LocalPlayer local screenGui = Instance.new("ScreenGui") screenGui.Name = "PackageToolsGui" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 520, 0, 360) frame.Position = UDim2.new(0, 24, 0, 120) frame.BackgroundColor3 = Color3.fromRGB(26, 27, 31) frame.BorderSizePixel = 0 frame.Parent = screenGui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) local pad = Instance.new("UIPadding", frame) pad.PaddingTop = UDim.new(0, 12) pad.PaddingBottom = UDim.new(0, 12) pad.PaddingLeft = UDim.new(0, 12) pad.PaddingRight = UDim.new(0, 12) -- drag do local dragging = false local dragStart, startPos frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end -- header local title = Instance.new("TextLabel") title.BackgroundTransparency = 1 title.Size = UDim2.new(1, -180, 0, 28) title.Position = UDim2.new(0, 8, 0, 6) title.Font = Enum.Font.GothamBold title.TextSize = 22 title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = Color3.fromRGB(235,235,235) title.Text = "Give Package -" title.Parent = frame -- tabbar top right local tabBar = Instance.new("Frame") tabBar.Size = UDim2.new(0, 180, 0, 28) tabBar.Position = UDim2.new(1, -188, 0, 6) tabBar.BackgroundTransparency = 1 tabBar.Parent = frame local function makeTab(text, x) local b = Instance.new("TextButton") b.Size = UDim2.new(0, 86, 1, 0) b.Position = UDim2.new(0, x, 0, 0) b.Text = text b.Font = Enum.Font.GothamBold b.TextSize = 14 b.BackgroundColor3 = Color3.fromRGB(50, 52, 58) b.TextColor3 = Color3.fromRGB(235,235,235) b.BorderSizePixel = 0 b.Parent = tabBar Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end local tabGiver = makeTab("Package", 0) local tabFarm = makeTab("Autofarm", 92) local function setTabSelected(btn, selected) btn.BackgroundColor3 = selected and Color3.fromRGB(70, 110, 200) or Color3.fromRGB(50, 52, 58) end ---------------------------------------------------------------- -- PAGE 1: Package giver ---------------------------------------------------------------- local giverPage = Instance.new("Frame") giverPage.Size = UDim2.new(1, -16, 1, -52) giverPage.Position = UDim2.new(0, 8, 0, 40) giverPage.BackgroundTransparency = 1 giverPage.Parent = frame local lblLeft = Instance.new("TextLabel") lblLeft.BackgroundTransparency = 1 lblLeft.Text = "Select type:" lblLeft.Font = Enum.Font.Gotham lblLeft.TextSize = 14 lblLeft.TextColor3 = Color3.fromRGB(200,200,200) lblLeft.Size = UDim2.new(0, 200, 0, 22) lblLeft.Position = UDim2.new(0, 0, 0, 0) lblLeft.Parent = giverPage local list = Instance.new("ScrollingFrame") list.Size = UDim2.new(0, 220, 1, -90) -- space below for sell button list.Position = UDim2.new(0, 0, 0, 28) list.ScrollBarThickness = 6 list.CanvasSize = UDim2.new(0,0,0,0) list.BackgroundColor3 = Color3.fromRGB(38, 40, 46) list.BorderSizePixel = 0 list.Parent = giverPage Instance.new("UICorner", list).CornerRadius = UDim.new(0, 10) local ll = Instance.new("UIListLayout", list) ll.Padding = UDim.new(0, 6) ll.SortOrder = Enum.SortOrder.LayoutOrder ll:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() list.CanvasSize = UDim2.new(0, 0, 0, ll.AbsoluteContentSize.Y + 12) end) local lblRight = lblLeft:Clone() lblRight.Text = "Variant:" lblRight.Position = UDim2.new(0, 240, 0, 0) lblRight.Parent = giverPage local function makeToggle(parent, text, y) local b = Instance.new("TextButton") b.Size = UDim2.new(0, 200, 0, 40) b.Position = UDim2.new(0, 240, 0, y) b.Text = text b.Font = Enum.Font.GothamBold b.TextSize = 16 b.BackgroundColor3 = Color3.fromRGB(65, 67, 75) b.TextColor3 = Color3.fromRGB(235,235,235) b.AutoButtonColor = true b.BorderSizePixel = 0 b.Parent = parent Instance.new("UICorner", b).CornerRadius = UDim.new(0, 12) return b end local normalBtn = makeToggle(giverPage, "Normal", 28) local goldBtn = makeToggle(giverPage, "Gold", 78) local diamondBtn = makeToggle(giverPage, "Diamond",128) local sellBtn = Instance.new("TextButton") sellBtn.Size = UDim2.new(0, 220, 0, 44) sellBtn.Position = UDim2.new(0, 0, 1, -44) sellBtn.Text = "Sell Inventory" sellBtn.Font = Enum.Font.GothamBold sellBtn.TextSize = 18 sellBtn.BackgroundColor3 = Color3.fromRGB(180, 125, 40) sellBtn.TextColor3 = Color3.fromRGB(255,255,255) sellBtn.BorderSizePixel = 0 sellBtn.Parent = giverPage Instance.new("UICorner", sellBtn).CornerRadius = UDim.new(0, 16) local giveBtn = sellBtn:Clone() giveBtn.Size = UDim2.new(0, 220, 0, 44) giveBtn.Text = "Give Package" giveBtn.BackgroundColor3 = Color3.fromRGB(35, 140, 90) giveBtn.Position = UDim2.new(0, 240, 1, -44) giveBtn.Parent = giverPage local status = Instance.new("TextLabel") status.BackgroundTransparency = 1 status.Size = UDim2.new(1, 0, 0, 20) status.Position = UDim2.new(0, 0, 1, -20) status.Font = Enum.Font.Gotham status.TextSize = 14 status.TextXAlignment = Enum.TextXAlignment.Left status.TextColor3 = Color3.fromRGB(210,210,210) status.Text = "" status.Parent = giverPage -- data + interaction local catalog, sortedBases = buildCatalog() local selectedBase = nil local selectedVariant = "Normal" local function setVariantButtonsEnabled(info) local function setBtn(btn, enabled, selected) btn.Active = enabled btn.AutoButtonColor = enabled btn.TextTransparency = enabled and 0 or 0.5 btn.BackgroundColor3 = selected and Color3.fromRGB(60,110,210) or (enabled and Color3.fromRGB(65,67,75) or Color3.fromRGB(50,52,58)) end setBtn(normalBtn, info.Normal, selectedVariant == "Normal") setBtn(goldBtn, info.Gold, selectedVariant == "Gold") setBtn(diamondBtn, info.Diamond, selectedVariant == "Diamond") end local function refreshList() -- remove all buttons for _,c in ipairs(list:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end for _,base in ipairs(sortedBases) do local b = Instance.new("TextButton") b.Size = UDim2.new(1, -12, 0, 36) b.Text = base b.Font = Enum.Font.Gotham b.TextSize = 16 b.BackgroundColor3 = Color3.fromRGB(55,57,64) b.TextColor3 = Color3.fromRGB(235,235,235) b.BorderSizePixel = 0 b.Parent = list Instance.new("UICorner", b).CornerRadius = UDim.new(0, 12) b.MouseButton1Click:Connect(function() selectedBase = base title.Text = "Give Package - " .. base local info = catalog[base] if info.Normal then selectedVariant = "Normal" elseif info.Gold then selectedVariant = "Gold" elseif info.Diamond then selectedVariant = "Diamond" end setVariantButtonsEnabled(info) end) end end normalBtn.MouseButton1Click:Connect(function() if not selectedBase then return end if not catalog[selectedBase].Normal then return end selectedVariant = "Normal"; setVariantButtonsEnabled(catalog[selectedBase]) end) goldBtn.MouseButton1Click:Connect(function() if not selectedBase then return end if not catalog[selectedBase].Gold then return end selectedVariant = "Gold"; setVariantButtonsEnabled(catalog[selectedBase]) end) diamondBtn.MouseButton1Click:Connect(function() if not selectedBase then return end if not catalog[selectedBase].Diamond then return end selectedVariant = "Diamond"; setVariantButtonsEnabled(catalog[selectedBase]) end) giveBtn.MouseButton1Click:Connect(function() if not selectedBase then status.Text = "Select a type first."; return end local name = composeName(selectedBase, selectedVariant) REMOTE_GIVE:FireServer(name) status.Text = "Sent: " .. name end) sellBtn.MouseButton1Click:Connect(function() REMOTE_SELL:FireServer() status.Text = "Inventory sold." end) refreshList() if #sortedBases > 0 then selectedBase = sortedBases[1] title.Text = "Give Package - " .. selectedBase setVariantButtonsEnabled(catalog[selectedBase]) end ---------------------------------------------------------------- -- PAGE 2: Autofarm ---------------------------------------------------------------- local farmPage = Instance.new("Frame") farmPage.Size = giverPage.Size farmPage.Position = giverPage.Position farmPage.BackgroundTransparency = 1 farmPage.Visible = false farmPage.Parent = frame local farmTitle = Instance.new("TextLabel") farmTitle.BackgroundTransparency = 1 farmTitle.Text = "Autofarm: DiamondOmega + Sell" farmTitle.Font = Enum.Font.GothamBold farmTitle.TextSize = 18 farmTitle.TextColor3 = Color3.fromRGB(230,230,230) farmTitle.TextXAlignment = Enum.TextXAlignment.Left farmTitle.Size = UDim2.new(1, 0, 0, 24) farmTitle.Parent = farmPage local startBtn = Instance.new("TextButton") startBtn.Size = UDim2.new(0, 220, 0, 44) startBtn.Position = UDim2.new(0, 0, 0, 40) startBtn.Text = "Start" startBtn.Font = Enum.Font.GothamBold startBtn.TextSize = 18 startBtn.BackgroundColor3 = Color3.fromRGB(35, 140, 90) startBtn.TextColor3 = Color3.fromRGB(255,255,255) startBtn.BorderSizePixel = 0 startBtn.Parent = farmPage Instance.new("UICorner", startBtn).CornerRadius = UDim.new(0, 16) local stopBtn = startBtn:Clone() stopBtn.Text = "Stop" stopBtn.BackgroundColor3 = Color3.fromRGB(170, 65, 65) stopBtn.Position = UDim2.new(0, 240, 0, 40) stopBtn.Parent = farmPage local farmStatus = Instance.new("TextLabel") farmStatus.BackgroundTransparency = 1 farmStatus.Size = UDim2.new(1, 0, 0, 22) farmStatus.Position = UDim2.new(0, 0, 0, 96) farmStatus.Font = Enum.Font.Gotham farmStatus.TextSize = 14 farmStatus.TextXAlignment = Enum.TextXAlignment.Left farmStatus.TextColor3 = Color3.fromRGB(210,210,210) farmStatus.Text = "Ready." farmStatus.Parent = farmPage -- loops local running = false local giverThread, sellThread local function startFarm() if running then return end running = true farmStatus.Text = "Running..." -- 0.01 give DiamondOmega Package giverThread = task.spawn(function() local name = "DiamondOmega Package" while running do REMOTE_GIVE:FireServer(name) task.wait(0.01) end end) -- 0.5 sell sellThread = task.spawn(function() while running do REMOTE_SELL:FireServer() task.wait(0.5) end end) end local function stopFarm() running = false farmStatus.Text = "Stopped." end startBtn.MouseButton1Click:Connect(startFarm) stopBtn.MouseButton1Click:Connect(stopFarm) ---------------------------------------------------------------- -- Tab switching ---------------------------------------------------------------- local function showPage(which) if which == "giver" then giverPage.Visible = true farmPage.Visible = false setTabSelected(tabGiver, true) setTabSelected(tabFarm, false) elseif which == "farm" then giverPage.Visible = false farmPage.Visible = true setTabSelected(tabGiver, false) setTabSelected(tabFarm, true) end end tabGiver.MouseButton1Click:Connect(function() showPage("giver") end) tabFarm.MouseButton1Click:Connect(function() showPage("farm") end) -- initial state showPage("giver")