local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))() local ReplicatedStorage = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- Services local EquipRemote = ReplicatedStorage.Remotes.ItemRemotes.Equip local UpgradeRemote = ReplicatedStorage.Remotes.UpgradeRemotes.Upgrade local ClickRemote = ReplicatedStorage.Remotes.ItemRemotes.Click local BuyRemote = ReplicatedStorage.Remotes.BlackMarketRemotes.Buy -- Data local EquippedItem = LocalPlayer:WaitForChild("DataFolder"):WaitForChild("EquippedItem") local StocksFolder = ReplicatedStorage:WaitForChild("Server"):WaitForChild("BlackMarket"):WaitForChild("Stocks") -- Globals getgenv().autotap = false getgenv().autoupgrade = false getgenv().autoequip = false getgenv().autoblackmarket = false getgenv().unequipOnBuy = false getgenv().merchantBuyerPaused = false -- Auto Tap function dotap() task.spawn(function() while getgenv().autotap do ClickRemote:FireServer() task.wait() end end) end -- Auto Upgrade function autoupgrade() task.spawn(function() while getgenv().autoupgrade do if EquippedItem.Value ~= "" then UpgradeRemote:FireServer() end task.wait(0.6) end end) end -- Auto Equip function autoequip() task.spawn(function() while getgenv().autoequip do if getgenv().merchantBuyerPaused then task.wait(1) continue end local inventoryFolder = LocalPlayer:FindFirstChild("InventoryFolder") local inventory = inventoryFolder and inventoryFolder:FindFirstChild("ItemInventoryFolder") local dataFolder = LocalPlayer:FindFirstChild("DataFolder") local equippedItem = dataFolder and dataFolder:FindFirstChild("EquippedItem") if not inventory or not equippedItem then task.wait(5) continue end local ItemInfo = require(ReplicatedStorage.Controllers.InformationController.Informations["Information.Item"]) task.wait(1) local bestItemObject = nil local bestClicks = 0 for _, itemValue in pairs(inventory:GetChildren()) do if itemValue:IsA("NumberValue") and itemValue.Value > 0 then local itemData = ItemInfo[itemValue.Name] if itemData and type(itemData) == "table" and itemData.EarnTable and not itemData.Consumable then local clicks = tonumber(itemData.EarnTable[2]) or 0 if clicks > bestClicks then bestClicks = clicks bestItemObject = itemValue end end end end if bestItemObject and bestItemObject.Name ~= equippedItem.Value then EquipRemote:FireServer(bestItemObject) task.wait(2) end task.wait(5) end end) end -- Black Market Buyer function blackmarketbuyer() task.spawn(function() local merchantContainer = workspace.Containers.BlackMarketContainer local floorPosition = CFrame.new(-25.2620239, -4.92173386, 38.6270752) local function buyAllStock() if not getgenv().autoblackmarket then return end local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local humanoid = character:FindFirstChild("Humanoid") local originalCFrame = humanoidRootPart.CFrame if not merchantContainer:FindFirstChildWhichIsA("Model") then return end -- Handle item unequip local savedEquippedItem = nil if getgenv().unequipOnBuy then local equippedItem = LocalPlayer.DataFolder and LocalPlayer.DataFolder:FindFirstChild("EquippedItem") if equippedItem and equippedItem.Value ~= "" then savedEquippedItem = equippedItem.Value getgenv().merchantBuyerPaused = true EquipRemote:FireServer(nil) task.wait(0.5) end end -- Teleport in front of merchant humanoidRootPart.CFrame = floorPosition * CFrame.new(0, 0, -4) if humanoid then humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None end task.wait(0.3) -- Buy stock for _, stock in pairs(StocksFolder:GetChildren()) do local leftForPlayer = stock:GetAttribute("Left_" .. LocalPlayer.UserId) or 0 for i = 1, leftForPlayer do BuyRemote:FireServer(stock.Name) task.wait(0.1) end end task.wait(1) -- Return and restore humanoidRootPart.CFrame = originalCFrame if humanoid then humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer end -- Re-equip item if getgenv().unequipOnBuy and savedEquippedItem then task.wait(0.5) local inventory = LocalPlayer.InventoryFolder and LocalPlayer.InventoryFolder:FindFirstChild("ItemInventoryFolder") if inventory then local itemToEquip = inventory:FindFirstChild(savedEquippedItem) if itemToEquip then EquipRemote:FireServer(itemToEquip) end end task.wait(0.5) getgenv().merchantBuyerPaused = false end end merchantContainer.ChildAdded:Connect(function(child) if child:IsA("Model") and getgenv().autoblackmarket then task.wait(0.5) buyAllStock() end end) if merchantContainer:FindFirstChildWhichIsA("Model") and getgenv().autoblackmarket then buyAllStock() end end) end -- UI local Window = WindUI:CreateWindow({ Title = "User Hub", Icon = "door-open", Author = "by User-Friendly", Folder = "UserHub", Transparent = true, Theme = "Midnight", NewEelements = true, Resizable = true, SideBarWidth = 210, BackgroundImageTransparency = 0.42, HideSearchBar = true, ScrollBarEnabled = true, OpenButton = { Enabled = true, Title = "Open UI", Icon = "panel-left-open", Position = UDim2.new(0, 120, 0, 120), Draggable = true, OnlyMobile = false, Scale = 1 }, }) -- Config Manager local ConfigManager = Window.ConfigManager local myConfig = ConfigManager:CreateConfig("UserHubConfig") Window.Topbar:Button({ Name = "Unload", Icon = "solar:logout-3-bold", IconSize = 22, Callback = function() getgenv().autotap = false getgenv().autoequip = false getgenv().autoupgrade = false getgenv().autoblackmarket = false getgenv().unequipOnBuy = false Window:Destroy() end, }) local Tab1 = Window:Tab({Title = "Main", Icon = "bird"}) local Tab2 = Window:Tab({Title = "Black Market", Icon = "shopping-cart"}) local Tab3 = Window:Tab({Title = "Config", Icon = "settings"}) local AutoTapToggle = Tab1:Toggle({ Title = "Auto Tap", Type = "Checkbox", Flag = "AutoTap", Value = false, Callback = function(state) getgenv().autotap = state if state then dotap() end end, }) local AutoUpgradeToggle = Tab1:Toggle({ Title = "Auto Upgrade", Type = "Checkbox", Flag = "AutoUpgrade", Value = false, Callback = function(state) getgenv().autoupgrade = state if state then autoupgrade() end end, }) local AutoEquipToggle = Tab1:Toggle({ Title = "Auto Equip", Type = "Checkbox", Flag = "AutoEquip", Value = false, Callback = function(state) getgenv().autoequip = state if state then autoequip() end end, }) local AutoBuyToggle = Tab2:Toggle({ Title = "Auto Buy Black Market", Type = "Checkbox", Flag = "AutoBuyBlackMarket", Value = false, Callback = function(state) getgenv().autoblackmarket = state if state then blackmarketbuyer() end end, }) local UnequipToggle = Tab2:Toggle({ Title = "Unequip Item On Buy", Type = "Checkbox", Flag = "UnequipOnBuy", Value = false, Callback = function(state) getgenv().unequipOnBuy = state end, }) -- Register all toggles myConfig:Register("AutoTap", AutoTapToggle) myConfig:Register("AutoUpgrade", AutoUpgradeToggle) myConfig:Register("AutoEquip", AutoEquipToggle) myConfig:Register("AutoBuyBlackMarket", AutoBuyToggle) myConfig:Register("UnequipOnBuy", UnequipToggle) -- Config Tab Buttons Tab3:Button({ Title = "Save Config", Callback = function() myConfig:Save() print("Config saved!") end }) Tab3:Button({ Title = "Delete Config", Callback = function() myConfig:Delete() print("Config deleted!") end }) -- Auto-load config on startup myConfig:Load()