local MarketplaceService = game:GetService("MarketplaceService") local CoreGui = game:GetService("CoreGui") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local StarterGui = game:GetService("StarterGui") local localPlayer = Players.LocalPlayer; -- [[ DIUBAH: Pembolehubah pengurusan keadaan yang dipertingkatkan ]] local autoBuyLoops = {} local purchaseCounts = {} local productFramesMap = {} local activeButtonResets = setmetatable({}, { __mode = "k" }) -- Jadual untuk menjejak coroutine set semula butang task.spawn(function() local success, message = pcall(function() if MarketplaceService.SignalPromptProductPurchaseFinished and typeof(MarketplaceService.SignalPromptProductPurchaseFinished) == "function" then return "MarketplaceService:SignalPromptProductPurchaseFinished() detected." else return "MarketplaceService:SignalPromptProductPurchaseFinished() not found." end end) local notificationTitle = "Function Check" local notificationText = success and message or "An error occurred during function check." StarterGui:SetCore("SendNotification", { Title = notificationTitle, Text = notificationText, Duration = 5, }) end) local function Finished(productInfo) local productId = productInfo.ProductId pcall(function() MarketplaceService:SignalPromptProductPurchaseFinished(localPlayer.UserId, productId, true) end) purchaseCounts[productId] = (purchaseCounts[productId] or 0) + 1 local frame = productFramesMap[productId] if frame and frame.Parent then local countLabel = frame:FindFirstChild("PurchaseCountLabel") if countLabel then countLabel.Text = "Total Purchases: " .. purchaseCounts[productId] end end end --[[ Gui Setup ]] local mainGui = Instance.new("ScreenGui") mainGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling; mainGui.Parent = CoreGui; local tooltipFrame = Instance.new("Frame") tooltipFrame.Name = "DescriptionTooltip" tooltipFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) tooltipFrame.BackgroundTransparency = 0.2 tooltipFrame.BorderSizePixel = 0 tooltipFrame.Size = UDim2.new(0, 200, 0, 50) tooltipFrame.Visible = false tooltipFrame.ZIndex = 10 tooltipFrame.Parent = mainGui Instance.new("UICorner", tooltipFrame).CornerRadius = UDim.new(0, 5) local tooltipStroke = Instance.new("UIStroke", tooltipFrame) tooltipStroke.Color = Color3.fromRGB(120, 120, 120) tooltipStroke.Thickness = 1 local tooltipPadding = Instance.new("UIPadding", tooltipFrame) tooltipPadding.PaddingTop = UDim.new(0, 5) tooltipPadding.PaddingBottom = UDim.new(0, 5) tooltipPadding.PaddingLeft = UDim.new(0, 5) tooltipPadding.PaddingRight = UDim.new(0, 5) local tooltipLabel = Instance.new("TextLabel", tooltipFrame) tooltipLabel.Name = "TooltipLabel" tooltipLabel.Font = Enum.Font.Gotham tooltipLabel.Text = "Ini adalah deskripsi produk." tooltipLabel.TextColor3 = Color3.fromRGB(255, 255, 255) tooltipLabel.TextSize = 14 tooltipLabel.TextWrapped = true -- [[ DIKEKALKAN: Memastikan pembalutan perkataan ]] tooltipLabel.TextXAlignment = Enum.TextXAlignment.Left tooltipLabel.TextYAlignment = Enum.TextYAlignment.Top tooltipLabel.BackgroundTransparency = 1 tooltipLabel.AutomaticSize = Enum.AutomaticSize.Y tooltipLabel.Size = UDim2.new(1, 0, 0, 0) local developerProductsFrame = Instance.new("TextButton") developerProductsFrame.Font = Enum.Font.GothamBold; developerProductsFrame.Text = "Product Faker V2" developerProductsFrame.TextColor3 = Color3.fromRGB(255, 255, 255) developerProductsFrame.TextSize = 16; developerProductsFrame.AutoButtonColor = false; developerProductsFrame.BackgroundColor3 = Color3.fromRGB(46, 46, 46) developerProductsFrame.BorderSizePixel = 0; developerProductsFrame.Position = UDim2.new(0.35, 0, 0.3, 0) developerProductsFrame.Size = UDim2.new(0, 252, 0, 35) developerProductsFrame.Parent = mainGui; Instance.new("UICorner", developerProductsFrame).CornerRadius = UDim.new(0, 6) local closeButton = Instance.new("TextButton") closeButton.Font = Enum.Font.GothamBold; closeButton.Text = "X"; closeButton.TextColor3 = Color3.fromRGB(255, 255, 255); closeButton.TextSize = 18; closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50); closeButton.BorderSizePixel = 0; closeButton.Position = UDim2.new(1, -32, 0, 2.5); closeButton.Size = UDim2.new(0, 30, 0, 30); closeButton.Parent = developerProductsFrame; Instance.new("UICorner", closeButton).CornerRadius = UDim.new(0, 6) local searchBox = Instance.new("TextBox") searchBox.Name = "SearchBox"; searchBox.Font = Enum.Font.Gotham; searchBox.Text = ""; searchBox.PlaceholderText = "Search by name..."; searchBox.TextColor3 = Color3.fromRGB(230, 230, 230); searchBox.TextSize = 14; searchBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30); searchBox.Position = UDim2.new(0, 0, 1, 2); searchBox.Size = UDim2.new(1, 0, 0, 30); searchBox.Parent = developerProductsFrame; Instance.new("UICorner", searchBox).CornerRadius = UDim.new(0, 6) task.delay(0.3, function() local buyAllProductsButton = Instance.new("TextButton") buyAllProductsButton.Name = "BuyAllProductsButton"; buyAllProductsButton.Font = Enum.Font.GothamBold; buyAllProductsButton.Text = "Buy All Products"; buyAllProductsButton.TextColor3 = Color3.fromRGB(255, 255, 255); buyAllProductsButton.TextSize = 14; buyAllProductsButton.BackgroundColor3 = Color3.fromRGB(150, 50, 50); buyAllProductsButton.BorderSizePixel = 0; buyAllProductsButton.Position = UDim2.new(0, 0, 1, 34); buyAllProductsButton.Size = UDim2.new(1, 0, 0, 30); buyAllProductsButton.Parent = developerProductsFrame; Instance.new("UICorner", buyAllProductsButton).CornerRadius = UDim.new(0, 6) end) local containerFrame = Instance.new("Frame") containerFrame.BackgroundColor3 = Color3.fromRGB(46, 46, 46); containerFrame.BorderSizePixel = 0; containerFrame.Position = UDim2.new(0, 0, 1, 66); containerFrame.Size = UDim2.new(0, 252, 0, 441); containerFrame.Parent = developerProductsFrame; Instance.new("UICorner").Parent = containerFrame; Instance.new("UIStroke", containerFrame).Color = Color3.fromRGB(113, 113, 113) local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y; scrollingFrame.ScrollBarThickness = 5; scrollingFrame.Active = true; scrollingFrame.BackgroundTransparency = 1; scrollingFrame.BorderSizePixel = 0; scrollingFrame.Size = UDim2.new(1, 0, 1, 0); scrollingFrame.Parent = containerFrame; Instance.new("UIListLayout", scrollingFrame).SortOrder = Enum.SortOrder.LayoutOrder; --[[ Template Produk ]] local exampleProductFrame = Instance.new("Frame") exampleProductFrame.BackgroundTransparency = 1; exampleProductFrame.BorderSizePixel = 0; exampleProductFrame.Size = UDim2.new(1, 0, 0, 95); exampleProductFrame.Visible = false; exampleProductFrame.Name = "ExampleFrame"; exampleProductFrame.Parent = scrollingFrame; local hoverBg = Instance.new("Frame", exampleProductFrame) hoverBg.BackgroundColor3 = Color3.fromRGB(60, 60, 60); hoverBg.BackgroundTransparency = 1; hoverBg.BorderSizePixel = 0; hoverBg.Size = UDim2.new(1, 0, 1, 0); hoverBg.Name = "HoverBg"; Instance.new("UICorner", hoverBg).CornerRadius = UDim.new(0, 6) local nameLabel = Instance.new("TextLabel", exampleProductFrame) nameLabel.Name = "NameLabel"; nameLabel.Font = Enum.Font.Gotham; nameLabel.Text = "Product Name:"; nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255); nameLabel.TextSize = 14; nameLabel.TextXAlignment = Enum.TextXAlignment.Left; nameLabel.BackgroundTransparency = 1; nameLabel.Position = UDim2.new(0.048, 0, 0.1, 0); nameLabel.Size = UDim2.new(0.6, 0, 0, 21) local idLabel = Instance.new("TextLabel", exampleProductFrame) idLabel.Name = "IDLabel"; idLabel.Font = Enum.Font.Gotham; idLabel.Text = "Product ID:"; idLabel.TextColor3 = Color3.fromRGB(255, 255, 255); idLabel.TextSize = 14; idLabel.TextXAlignment = Enum.TextXAlignment.Left; idLabel.BackgroundTransparency = 1; idLabel.Position = UDim2.new(0.048, 0, 0.3, 0); idLabel.Size = UDim2.new(0.6, 0, 0, 21) local priceLabel = Instance.new("TextLabel", exampleProductFrame) priceLabel.Name = "PriceLabel"; priceLabel.Font = Enum.Font.Gotham; priceLabel.Text = "Product Price:"; priceLabel.TextColor3 = Color3.fromRGB(255, 255, 255); priceLabel.TextSize = 14; priceLabel.TextXAlignment = Enum.TextXAlignment.Left; priceLabel.BackgroundTransparency = 1; priceLabel.Position = UDim2.new(0.048, 0, 0.5, 0); priceLabel.Size = UDim2.new(0.6, 0, 0, 21) local purchaseCountLabel = Instance.new("TextLabel", exampleProductFrame) purchaseCountLabel.Name = "PurchaseCountLabel"; purchaseCountLabel.Font = Enum.Font.Gotham; purchaseCountLabel.Text = "Total Purchases: 0"; purchaseCountLabel.TextColor3 = Color3.fromRGB(200, 200, 200); purchaseCountLabel.TextSize = 14; purchaseCountLabel.TextXAlignment = Enum.TextXAlignment.Left; purchaseCountLabel.BackgroundTransparency = 1; purchaseCountLabel.Position = UDim2.new(0.048, 0, 0.7, 0); purchaseCountLabel.Size = UDim2.new(0.6, 0, 0, 21) local divider = Instance.new("Frame", exampleProductFrame) divider.Name = "Divider"; divider.BackgroundColor3 = Color3.fromRGB(102, 102, 102); divider.BorderSizePixel = 0; divider.Position = UDim2.new(0, 0, 1, 0); divider.Size = UDim2.new(1, 0, 0, 2) local clickDetector = Instance.new("TextButton", exampleProductFrame) clickDetector.Name = "Click"; clickDetector.Text = ""; clickDetector.TextTransparency = 1; clickDetector.BackgroundTransparency = 1; clickDetector.Size = UDim2.new(1, 0, 1, 0) local autoBuyButton = Instance.new("TextButton", exampleProductFrame) autoBuyButton.Name = "AutoBuyButton"; autoBuyButton.Font = Enum.Font.GothamBold; autoBuyButton.Text = "Auto Buy"; autoBuyButton.TextColor3 = Color3.fromRGB(255, 255, 255); autoBuyButton.TextSize = 12; autoBuyButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80); autoBuyButton.Position = UDim2.new(0.65, 0, 0.07, 0); autoBuyButton.Size = UDim2.new(0, 80, 0, 21); Instance.new("UICorner", autoBuyButton).CornerRadius = UDim.new(0, 4) local copyButton = Instance.new("TextButton", exampleProductFrame) copyButton.Name = "CopyButton"; copyButton.Font = Enum.Font.GothamBold; copyButton.Text = "Copy ID"; copyButton.TextColor3 = Color3.fromRGB(255, 255, 255); copyButton.TextSize = 12; copyButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70); copyButton.Position = UDim2.new(0.65, 0, 0.38, 0); copyButton.Size = UDim2.new(0, 80, 0, 21); Instance.new("UICorner", copyButton).CornerRadius = UDim.new(0, 4) local buyButton = Instance.new("TextButton", exampleProductFrame) buyButton.Name = "BuyButton"; buyButton.Font = Enum.Font.GothamBold; buyButton.Text = "Buy Product"; buyButton.TextColor3 = Color3.fromRGB(255, 255, 255); buyButton.TextSize = 12; buyButton.BackgroundColor3 = Color3.fromRGB(150, 50, 50); buyButton.Position = UDim2.new(0.65, 0, 0.69, 0); buyButton.Size = UDim2.new(0, 80, 0, 21); Instance.new("UICorner", buyButton).CornerRadius = UDim.new(0, 4) local function createHoverEffect(button, hoverColor) local originalColor = button.BackgroundColor3; button.MouseEnter:Connect(function() TweenService:Create(button, TweenInfo.new(0.15), { BackgroundColor3 = hoverColor }):Play() end) button.MouseLeave:Connect(function() TweenService:Create(button, TweenInfo.new(0.15), { BackgroundColor3 = originalColor }):Play() end) end; task.spawn(function() local success, products = pcall(function() return MarketplaceService:GetDeveloperProductsAsync() end) if not success then warn("Failed to fetch developer products:", products) return end; local allProductsInfo = products:GetCurrentPage() local allProductFrames = {} local buyAllProductsButton = developerProductsFrame:WaitForChild("BuyAllProductsButton", 5) if buyAllProductsButton then createHoverEffect(buyAllProductsButton, Color3.fromRGB(180, 70, 70)) buyAllProductsButton.MouseButton1Click:Connect(function() if activeButtonResets[buyAllProductsButton] then task.cancel(activeButtonResets[buyAllProductsButton]) end if not buyAllProductsButton:GetAttribute("OriginalText") then buyAllProductsButton:SetAttribute("OriginalText", buyAllProductsButton.Text) buyAllProductsButton:SetAttribute("OriginalColor", buyAllProductsButton.BackgroundColor3) end local originalText = buyAllProductsButton:GetAttribute("OriginalText") local originalColor = buyAllProductsButton:GetAttribute("OriginalColor") buyAllProductsButton.Text = "Processing..." buyAllProductsButton.BackgroundColor3 = Color3.fromRGB(200, 100, 0) activeButtonResets[buyAllProductsButton] = task.spawn(function() for _, productInfo in pairs(allProductsInfo) do Finished(productInfo) task.wait(0.3) end buyAllProductsButton.Text = "Done!" buyAllProductsButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) task.wait(1.5) buyAllProductsButton.Text = originalText buyAllProductsButton.BackgroundColor3 = originalColor activeButtonResets[buyAllProductsButton] = nil end) end) end for _, productInfo in pairs(allProductsInfo) do local productFrame = exampleProductFrame:Clone() productFrame:SetAttribute("ProductName", productInfo.Name) productFrame.Visible = true; productFrame.Parent = scrollingFrame; table.insert(allProductFrames, productFrame) purchaseCounts[productInfo.ProductId] = 0 productFramesMap[productInfo.ProductId] = productFrame productFrame.NameLabel.Text = "Name: " .. productInfo.Name; productFrame.IDLabel.Text = "ID: " .. tostring(productInfo.ProductId) productFrame.PriceLabel.Text = "Price: " .. tostring(productInfo.PriceInRobux) productFrame.Click.MouseButton1Click:Connect(function() Finished(productInfo) end) local buttons = {productFrame.AutoBuyButton, productFrame.CopyButton, productFrame.BuyButton} productFrame.Click.MouseEnter:Connect(function() if productInfo.Description and productInfo.Description:gsub("%s*", "") ~= "" then -- [[ DIUBAH: Pemeriksaan tooltip pintar ]] tooltipLabel.Text = productInfo.Description tooltipFrame.Visible = true end end) productFrame.Click.MouseLeave:Connect(function() tooltipFrame.Visible = false end) for _, btn in ipairs(buttons) do btn.MouseEnter:Connect(function() tooltipFrame.Visible = false end) btn.MouseLeave:Connect(function() if productInfo.Description and productInfo.Description:gsub("%s*", "") ~= "" then tooltipFrame.Visible = true end end) end local productHoverBg = productFrame.HoverBg; productFrame.Click.MouseEnter:Connect(function() TweenService:Create(productHoverBg, TweenInfo.new(0.2), { BackgroundTransparency = 0.7 }):Play() end) productFrame.Click.MouseLeave:Connect(function() TweenService:Create(productHoverBg, TweenInfo.new(0.2), { BackgroundTransparency = 1 }):Play() end) local productAutoBuyButton = productFrame.AutoBuyButton; createHoverEffect(productAutoBuyButton, Color3.fromRGB(100, 100, 100)) productAutoBuyButton.MouseButton1Click:Connect(function() autoBuyLoops[productFrame] = not autoBuyLoops[productFrame] if autoBuyLoops[productFrame] then productAutoBuyButton.BackgroundColor3 = Color3.fromRGB(50, 180, 50) task.spawn(function() while autoBuyLoops[productFrame] do Finished(productInfo) task.wait(0.1) end end) else productAutoBuyButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80) end end) local productCopyButton = productFrame.CopyButton; createHoverEffect(productCopyButton, Color3.fromRGB(90, 90, 90)) productCopyButton.MouseButton1Click:Connect(function() if setclipboard then setclipboard(tostring(productInfo.ProductId)) local originalText = productCopyButton.Text; local originalColor = productCopyButton.BackgroundColor3; productCopyButton.Text = "Copied!"; productCopyButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) task.wait(1) productCopyButton.Text = originalText; productCopyButton.BackgroundColor3 = originalColor end end) local productBuyButton = productFrame.BuyButton; createHoverEffect(productBuyButton, Color3.fromRGB(180, 70, 70)) productBuyButton.MouseButton1Click:Connect(function() if activeButtonResets[productBuyButton] then task.cancel(activeButtonResets[productBuyButton]) end --[[ DIUBAH: Pembetulan spam ]] if not productBuyButton:GetAttribute("OriginalText") then productBuyButton:SetAttribute("OriginalText", productBuyButton.Text) productBuyButton:SetAttribute("OriginalColor", productBuyButton.BackgroundColor3) end local originalText = productBuyButton:GetAttribute("OriginalText") local originalColor = productBuyButton:GetAttribute("OriginalColor") productBuyButton.Text = "Processing..."; productBuyButton.BackgroundColor3 = Color3.fromRGB(200, 100, 0) Finished(productInfo) activeButtonResets[productBuyButton] = task.spawn(function() task.wait(0.5) productBuyButton.Text = "Done!"; productBuyButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) task.wait(1.5) productBuyButton.Text = originalText; productBuyButton.BackgroundColor3 = originalColor activeButtonResets[productBuyButton] = nil end) end) end searchBox:GetPropertyChangedSignal("Text"):Connect(function() local searchText = string.lower(searchBox.Text) -- [[ DIUBAH: Carian tidak peka huruf ]] for _, frame in ipairs(allProductFrames) do if searchText == "" then frame.Visible = true else local productName = string.lower(frame:GetAttribute("ProductName")) -- [[ DIUBAH: Carian tidak peka huruf ]] if productName and string.find(productName, searchText, 1, true) then frame.Visible = true else frame.Visible = false end end end end) end) UserInputService.InputChanged:Connect(function(input) if tooltipFrame.Visible and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local mousePos = UserInputService:GetMouseLocation() tooltipFrame.Position = UDim2.fromOffset(mousePos.X + 15, mousePos.Y + 15) end end) closeButton.MouseButton1Click:Connect(function() mainGui:Destroy() end) local isDragging = false; local dragStart; local startPosition; local mouseMoveConnection; local mouseUpConnection; developerProductsFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then isDragging = true; dragStart = input.Position; startPosition = developerProductsFrame.Position; mouseMoveConnection = UserInputService.InputChanged:Connect(function(moveInput) if (moveInput.UserInputType == Enum.UserInputType.MouseMovement or moveInput.UserInputType == Enum.UserInputType.Touch) and isDragging then local delta = moveInput.Position - dragStart; developerProductsFrame.Position = UDim2.new(startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y) end end) mouseUpConnection = UserInputService.InputEnded:Connect(function(endInput) if (endInput.UserInputType == Enum.UserInputType.MouseButton1 or endInput.UserInputType == Enum.UserInputType.Touch) and isDragging then isDragging = false; if mouseMoveConnection then mouseMoveConnection:Disconnect() end if mouseUpConnection then mouseUpConnection:Disconnect() end end end) end end)