Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local TweenService = game:GetService("TweenService")
- local UserInputService = game:GetService("UserInputService")
- local MarketplaceService = game:GetService("MarketplaceService")
- local player = Players.LocalPlayer
- local playerGui = player:WaitForChild("PlayerGui")
- if playerGui:FindFirstChild("SeluwiaUI") then
- playerGui.SeluwiaUI:Destroy()
- end
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "SeluwiaUI"
- screenGui.ResetOnSpawn = false
- screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- screenGui.IgnoreGuiInset = true
- screenGui.Parent = playerGui
- local isMobile = UserInputService.TouchEnabled
- local autoSpeed = 100 -- signals per second
- -- Helper functions
- local function stroke(parent, color, thickness)
- local s = Instance.new("UIStroke", parent)
- s.Color = color or Color3.fromRGB(40, 40, 56)
- s.Thickness = thickness or 1
- return s
- end
- local function corner(parent, radius)
- local c = Instance.new("UICorner", parent)
- c.CornerRadius = UDim.new(0, radius or 10)
- return c
- end
- local function getTime()
- return os.date("%H:%M:%S")
- end
- -- Scale UI for mobile
- local panelSize
- local fontSizeScale = isMobile and 0.8 or 1
- local buttonHeight = isMobile and 36 or 28
- local titleBarHeight = isMobile and 44 or 52
- local footerHeight = isMobile and 44 or 50
- if isMobile then
- panelSize = UDim2.new(0.9, 0, 0.7, 0)
- else
- panelSize = UDim2.new(0, 760, 0, 520)
- end
- local panel = Instance.new("Frame")
- panel.Name = "Panel"
- panel.Size = panelSize
- panel.Position = UDim2.new(0.5, -panelSize.X.Offset/2, 0.5, -panelSize.Y.Offset/2)
- if isMobile then
- panel.Position = UDim2.new(0.05, 0, 0.15, 0)
- end
- panel.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
- panel.BorderSizePixel = 0
- panel.Parent = screenGui
- corner(panel, 16)
- stroke(panel, Color3.fromRGB(30, 30, 42), 1)
- -- Resize handle (PC only)
- if not isMobile then
- local resizeHandle = Instance.new("Frame")
- resizeHandle.Name = "ResizeHandle"
- resizeHandle.Size = UDim2.new(0, 20, 0, 20)
- resizeHandle.Position = UDim2.new(1, -20, 1, -20)
- resizeHandle.AnchorPoint = Vector2.new(1, 1)
- resizeHandle.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
- resizeHandle.BorderSizePixel = 0
- resizeHandle.Parent = panel
- corner(resizeHandle, 4)
- stroke(resizeHandle, Color3.fromRGB(80, 80, 110), 1)
- local resizing = false
- local resizeStartPos, startSize
- resizeHandle.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- resizing = true
- resizeStartPos = input.Position
- startSize = panel.AbsoluteSize
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if resizing and input.UserInputType == Enum.UserInputType.MouseMovement then
- local delta = input.Position - resizeStartPos
- local newWidth = math.clamp(startSize.X + delta.X, 400, 1200)
- local newHeight = math.clamp(startSize.Y + delta.Y, 300, 800)
- panel.Size = UDim2.new(0, newWidth, 0, newHeight)
- end
- end)
- UserInputService.InputEnded:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- resizing = false
- end
- end)
- end
- -- Dragging
- local dragging = false
- local dragStart, startPos
- local function onInputBegan(input)
- if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and not resizing then
- dragging = true
- dragStart = input.Position
- startPos = panel.Position
- end
- end
- local function onInputChanged(input)
- if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
- local delta = input.Position - dragStart
- panel.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
- end
- end
- local function onInputEnded(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- dragging = false
- end
- end
- -- Title bar
- local titleBar = Instance.new("Frame")
- titleBar.Name = "TitleBar"
- titleBar.Size = UDim2.new(1, 0, 0, titleBarHeight)
- titleBar.BackgroundColor3 = Color3.fromRGB(13, 13, 17)
- titleBar.BorderSizePixel = 0
- titleBar.Parent = panel
- corner(titleBar, 16)
- stroke(titleBar, Color3.fromRGB(22, 22, 31), 1)
- local titleFill = Instance.new("Frame")
- titleFill.Size = UDim2.new(1, 0, 0, 18)
- titleFill.Position = UDim2.new(0, 0, 1, -18)
- titleFill.BackgroundColor3 = Color3.fromRGB(13, 13, 17)
- titleFill.BorderSizePixel = 0
- titleFill.ZIndex = titleBar.ZIndex + 1
- titleFill.Parent = titleBar
- titleBar.InputBegan:Connect(onInputBegan)
- UserInputService.InputChanged:Connect(onInputChanged)
- UserInputService.InputEnded:Connect(onInputEnded)
- -- Live dot
- local liveDot = Instance.new("Frame")
- liveDot.Size = UDim2.new(0, 9, 0, 9)
- liveDot.Position = UDim2.new(0, 20, 0.5, -4)
- liveDot.BackgroundColor3 = Color3.fromRGB(61, 255, 160)
- liveDot.BorderSizePixel = 0
- liveDot.ZIndex = titleBar.ZIndex + 2
- liveDot.Parent = titleBar
- corner(liveDot, 999)
- local liveLabel = Instance.new("TextLabel")
- liveLabel.Size = UDim2.new(0, 50, 0, 20)
- liveLabel.Position = UDim2.new(0, 34, 0.5, -10)
- liveLabel.BackgroundTransparency = 1
- liveLabel.Text = "LIVE"
- liveLabel.TextColor3 = Color3.fromRGB(61, 255, 160)
- liveLabel.TextSize = 11 * fontSizeScale
- liveLabel.Font = Enum.Font.GothamBold
- liveLabel.TextXAlignment = Enum.TextXAlignment.Left
- liveLabel.ZIndex = titleBar.ZIndex + 2
- liveLabel.Parent = titleBar
- task.spawn(function()
- while screenGui.Parent do
- TweenService:Create(liveDot, TweenInfo.new(1), {Size = UDim2.new(0,11,0,11), Position = UDim2.new(0,19,0.5,-5)}):Play()
- task.wait(1)
- TweenService:Create(liveDot, TweenInfo.new(1), {Size = UDim2.new(0,9,0,9), Position = UDim2.new(0,20,0.5,-4)}):Play()
- task.wait(1)
- end
- end)
- local titleText = Instance.new("TextLabel")
- titleText.Size = UDim2.new(0, 200, 1, 0)
- titleText.Position = UDim2.new(0.5, -100, 0, 0)
- titleText.BackgroundTransparency = 1
- titleText.Text = "SELUWIA"
- titleText.TextColor3 = Color3.fromRGB(210, 210, 228)
- titleText.TextSize = 14 * fontSizeScale
- titleText.Font = Enum.Font.GothamBold
- titleText.ZIndex = titleBar.ZIndex + 2
- titleText.Parent = titleBar
- local clearBtn = Instance.new("TextButton")
- clearBtn.Size = UDim2.new(0, 76, 0, 30)
- clearBtn.Position = UDim2.new(1, -92, 0.5, -15)
- clearBtn.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
- clearBtn.Text = "X Clear"
- clearBtn.TextColor3 = Color3.fromRGB(255, 80, 80)
- clearBtn.TextSize = 11 * fontSizeScale
- clearBtn.Font = Enum.Font.GothamBold
- clearBtn.BorderSizePixel = 0
- clearBtn.ZIndex = titleBar.ZIndex + 3
- clearBtn.Parent = titleBar
- corner(clearBtn, 8)
- stroke(clearBtn, Color3.fromRGB(80, 28, 28), 1)
- clearBtn.MouseEnter:Connect(function()
- clearBtn.BackgroundColor3 = Color3.fromRGB(28, 10, 10)
- end)
- clearBtn.MouseLeave:Connect(function()
- clearBtn.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
- end)
- -- Log area
- local logArea = Instance.new("ScrollingFrame")
- logArea.Name = "LogArea"
- logArea.Size = UDim2.new(1, -12, 1, -(titleBarHeight + footerHeight + 10))
- logArea.Position = UDim2.new(0, 6, 0, titleBarHeight + 6)
- logArea.BackgroundTransparency = 1
- logArea.BorderSizePixel = 0
- logArea.ScrollBarThickness = isMobile and 6 or 3
- logArea.ScrollBarImageColor3 = Color3.fromRGB(60, 60, 90)
- logArea.CanvasSize = UDim2.new(0, 0, 0, 0)
- logArea.AutomaticCanvasSize = Enum.AutomaticSize.Y
- logArea.Parent = panel
- local listLayout = Instance.new("UIListLayout", logArea)
- listLayout.SortOrder = Enum.SortOrder.LayoutOrder
- listLayout.Padding = UDim.new(0, isMobile and 10 or 7)
- listLayout.VerticalAlignment = Enum.VerticalAlignment.Top
- local logPad = Instance.new("UIPadding", logArea)
- logPad.PaddingTop = UDim.new(0, 8)
- logPad.PaddingBottom = UDim.new(0, 6)
- logPad.PaddingLeft = UDim.new(0, 4)
- logPad.PaddingRight = UDim.new(0, 4)
- -- Footer
- local footer = Instance.new("Frame")
- footer.Size = UDim2.new(1, 0, 0, footerHeight)
- footer.Position = UDim2.new(0, 0, 1, -footerHeight)
- footer.BackgroundColor3 = Color3.fromRGB(13, 13, 17)
- footer.BorderSizePixel = 0
- footer.Parent = panel
- corner(footer, 16)
- local footerFill = Instance.new("Frame")
- footerFill.Size = UDim2.new(1, 0, 0, 18)
- footerFill.BackgroundColor3 = Color3.fromRGB(13, 13, 17)
- footerFill.BorderSizePixel = 0
- footerFill.Parent = footer
- local countLabel = Instance.new("TextLabel")
- countLabel.Size = UDim2.new(0, 160, 1, 0)
- countLabel.Position = UDim2.new(0, 20, 0, 0)
- countLabel.BackgroundTransparency = 1
- countLabel.Text = "0 events captured"
- countLabel.TextColor3 = Color3.fromRGB(160, 155, 200)
- countLabel.TextSize = 12 * fontSizeScale
- countLabel.Font = Enum.Font.Gotham
- countLabel.TextXAlignment = Enum.TextXAlignment.Left
- countLabel.ZIndex = footer.ZIndex + 1
- countLabel.Parent = footer
- local settingsBtn = Instance.new("TextButton")
- settingsBtn.Size = UDim2.new(0, 50, 0, buttonHeight)
- settingsBtn.Position = UDim2.new(1, -90, 0.5, -buttonHeight/2)
- settingsBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- settingsBtn.Text = "SET"
- settingsBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- settingsBtn.TextSize = 11 * fontSizeScale
- settingsBtn.Font = Enum.Font.GothamBold
- settingsBtn.BorderSizePixel = 0
- settingsBtn.ZIndex = footer.ZIndex + 1
- settingsBtn.Parent = footer
- corner(settingsBtn, 7)
- stroke(settingsBtn, Color3.fromRGB(55, 50, 85), 1)
- local stopAllBtn = Instance.new("TextButton")
- stopAllBtn.Size = UDim2.new(0, 80, 0, buttonHeight)
- stopAllBtn.Position = UDim2.new(1, -170, 0.5, -buttonHeight/2)
- stopAllBtn.BackgroundColor3 = Color3.fromRGB(35, 15, 15)
- stopAllBtn.Text = "Stop All"
- stopAllBtn.TextColor3 = Color3.fromRGB(255, 120, 120)
- stopAllBtn.TextSize = 11 * fontSizeScale
- stopAllBtn.Font = Enum.Font.GothamBold
- stopAllBtn.BorderSizePixel = 0
- stopAllBtn.ZIndex = footer.ZIndex + 1
- stopAllBtn.Parent = footer
- corner(stopAllBtn, 7)
- stroke(stopAllBtn, Color3.fromRGB(80, 30, 30), 1)
- local closeBtn = Instance.new("TextButton")
- closeBtn.Size = UDim2.new(0, 26, 0, 26)
- closeBtn.Position = UDim2.new(1, -6, 0, -6)
- closeBtn.AnchorPoint = Vector2.new(1, 0)
- closeBtn.BackgroundColor3 = Color3.fromRGB(35, 12, 12)
- closeBtn.Text = "X"
- closeBtn.TextColor3 = Color3.fromRGB(255, 90, 90)
- closeBtn.TextSize = 17 * fontSizeScale
- closeBtn.Font = Enum.Font.GothamBold
- closeBtn.BorderSizePixel = 0
- closeBtn.ZIndex = 10
- closeBtn.Parent = panel
- corner(closeBtn, 999)
- -- Settings window (toggle)
- local settingsWindow = nil
- local function toggleSettings()
- if settingsWindow then
- settingsWindow:Destroy()
- settingsWindow = nil
- else
- settingsWindow = Instance.new("Frame")
- settingsWindow.Name = "SettingsWindow"
- settingsWindow.Size = UDim2.new(0, 300, 0, 200)
- settingsWindow.Position = UDim2.new(0.5, -150, 0.5, -100)
- settingsWindow.BackgroundColor3 = Color3.fromRGB(13, 13, 17)
- settingsWindow.BorderSizePixel = 0
- settingsWindow.ZIndex = 50
- settingsWindow.Parent = screenGui
- corner(settingsWindow, 12)
- stroke(settingsWindow, Color3.fromRGB(30, 30, 45), 1)
- local settingsTitleBar = Instance.new("Frame")
- settingsTitleBar.Size = UDim2.new(1, 0, 0, 40)
- settingsTitleBar.BackgroundColor3 = Color3.fromRGB(10, 10, 14)
- settingsTitleBar.BorderSizePixel = 0
- settingsTitleBar.ZIndex = 51
- settingsTitleBar.Parent = settingsWindow
- corner(settingsTitleBar, 12)
- local settingsTitle = Instance.new("TextLabel")
- settingsTitle.Size = UDim2.new(1, -40, 1, 0)
- settingsTitle.Position = UDim2.new(0, 10, 0, 0)
- settingsTitle.BackgroundTransparency = 1
- settingsTitle.Text = "Settings"
- settingsTitle.TextColor3 = Color3.fromRGB(210, 210, 228)
- settingsTitle.TextSize = 14
- settingsTitle.Font = Enum.Font.GothamBold
- settingsTitle.TextXAlignment = Enum.TextXAlignment.Left
- settingsTitle.ZIndex = 52
- settingsTitle.Parent = settingsTitleBar
- local closeSettingsBtn = Instance.new("TextButton")
- closeSettingsBtn.Size = UDim2.new(0, 24, 0, 24)
- closeSettingsBtn.Position = UDim2.new(1, -30, 0, 8)
- closeSettingsBtn.BackgroundColor3 = Color3.fromRGB(35, 12, 12)
- closeSettingsBtn.Text = "X"
- closeSettingsBtn.TextColor3 = Color3.fromRGB(255, 90, 90)
- closeSettingsBtn.TextSize = 14
- closeSettingsBtn.Font = Enum.Font.GothamBold
- closeSettingsBtn.BorderSizePixel = 0
- closeSettingsBtn.ZIndex = 52
- closeSettingsBtn.Parent = settingsTitleBar
- corner(closeSettingsBtn, 12)
- closeSettingsBtn.MouseButton1Click:Connect(function()
- if settingsWindow then
- settingsWindow:Destroy()
- settingsWindow = nil
- end
- end)
- -- Drag settings window
- local dragStartPos, dragStartMouse
- local draggingSettings = false
- settingsTitleBar.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- draggingSettings = true
- dragStartPos = settingsWindow.Position
- dragStartMouse = input.Position
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if draggingSettings and input.UserInputType == Enum.UserInputType.MouseMovement then
- local delta = input.Position - dragStartMouse
- settingsWindow.Position = UDim2.new(dragStartPos.X.Scale, dragStartPos.X.Offset + delta.X, dragStartPos.Y.Scale, dragStartPos.Y.Offset + delta.Y)
- end
- end)
- UserInputService.InputEnded:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- draggingSettings = false
- end
- end)
- local speedLabel = Instance.new("TextLabel")
- speedLabel.Size = UDim2.new(0, 140, 0, 30)
- speedLabel.Position = UDim2.new(0, 20, 0, 60)
- speedLabel.BackgroundTransparency = 1
- speedLabel.Text = "Signals per second:"
- speedLabel.TextColor3 = Color3.fromRGB(170, 165, 220)
- speedLabel.TextSize = 12
- speedLabel.Font = Enum.Font.Gotham
- speedLabel.TextXAlignment = Enum.TextXAlignment.Left
- speedLabel.ZIndex = 51
- speedLabel.Parent = settingsWindow
- local speedBox = Instance.new("TextBox")
- speedBox.Size = UDim2.new(0, 100, 0, 30)
- speedBox.Position = UDim2.new(0, 170, 0, 60)
- speedBox.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- speedBox.Text = tostring(autoSpeed)
- speedBox.TextColor3 = Color3.fromRGB(210, 210, 228)
- speedBox.TextSize = 12
- speedBox.Font = Enum.Font.Gotham
- speedBox.BorderSizePixel = 0
- speedBox.ZIndex = 51
- speedBox.Parent = settingsWindow
- corner(speedBox, 6)
- stroke(speedBox, Color3.fromRGB(55, 50, 85), 1)
- local speedHint = Instance.new("TextLabel")
- speedHint.Size = UDim2.new(0, 260, 0, 20)
- speedHint.Position = UDim2.new(0, 20, 0, 95)
- speedHint.BackgroundTransparency = 1
- speedHint.Text = "1 = slowest | 10000 = fastest | Default: 100"
- speedHint.TextColor3 = Color3.fromRGB(120, 120, 158)
- speedHint.TextSize = 10
- speedHint.Font = Enum.Font.Gotham
- speedHint.TextXAlignment = Enum.TextXAlignment.Left
- speedHint.ZIndex = 51
- speedHint.Parent = settingsWindow
- local saveBtn = Instance.new("TextButton")
- saveBtn.Size = UDim2.new(0, 100, 0, 32)
- saveBtn.Position = UDim2.new(0.5, -50, 1, -45)
- saveBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 55)
- saveBtn.Text = "Save"
- saveBtn.TextColor3 = Color3.fromRGB(61, 255, 160)
- saveBtn.TextSize = 12
- saveBtn.Font = Enum.Font.GothamBold
- saveBtn.BorderSizePixel = 0
- saveBtn.ZIndex = 51
- saveBtn.Parent = settingsWindow
- corner(saveBtn, 7)
- stroke(saveBtn, Color3.fromRGB(45, 80, 60), 1)
- local savedMsg = nil
- saveBtn.MouseButton1Click:Connect(function()
- local newSpeed = tonumber(speedBox.Text)
- if newSpeed then
- newSpeed = math.floor(newSpeed)
- if newSpeed >= 1 and newSpeed <= 10000 then
- autoSpeed = newSpeed
- speedBox.Text = tostring(autoSpeed)
- speedBox.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- if savedMsg then savedMsg:Destroy() end
- savedMsg = Instance.new("TextLabel")
- savedMsg.Size = UDim2.new(0, 100, 0, 20)
- savedMsg.Position = UDim2.new(0.5, -50, 1, -20)
- savedMsg.BackgroundTransparency = 1
- savedMsg.Text = "Saved!"
- savedMsg.TextColor3 = Color3.fromRGB(61, 255, 160)
- savedMsg.TextSize = 10
- savedMsg.Font = Enum.Font.GothamBold
- savedMsg.ZIndex = 52
- savedMsg.Parent = settingsWindow
- task.wait(1.5)
- if savedMsg then savedMsg:Destroy() end
- else
- speedBox.BackgroundColor3 = Color3.fromRGB(80, 30, 30)
- task.wait(0.5)
- speedBox.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- else
- speedBox.BackgroundColor3 = Color3.fromRGB(80, 30, 30)
- task.wait(0.5)
- speedBox.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end)
- end
- end
- settingsBtn.MouseButton1Click:Connect(toggleSettings)
- -- Visibility toggles
- local uiVisible = true
- local reopenButton = nil
- local function showGui()
- if not screenGui.Enabled then
- screenGui.Enabled = true
- uiVisible = true
- if reopenButton then reopenButton.Visible = false end
- end
- end
- local function hideGui()
- if screenGui.Enabled then
- screenGui.Enabled = false
- uiVisible = false
- if isMobile then
- if not reopenButton or not reopenButton.Parent then
- reopenButton = Instance.new("TextButton")
- reopenButton.Size = UDim2.new(0, 56, 0, 56)
- reopenButton.Position = UDim2.new(1, -70, 1, -70)
- reopenButton.AnchorPoint = Vector2.new(1, 1)
- reopenButton.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- reopenButton.Text = "S"
- reopenButton.TextColor3 = Color3.fromRGB(210, 210, 228)
- reopenButton.TextSize = 24
- reopenButton.Font = Enum.Font.GothamBold
- reopenButton.BorderSizePixel = 0
- reopenButton.ZIndex = 100
- reopenButton.Parent = playerGui
- corner(reopenButton, 28)
- stroke(reopenButton, Color3.fromRGB(80, 70, 120), 1.5)
- local dragStartPos, dragStartMouse
- reopenButton.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
- dragStartPos = reopenButton.Position
- dragStartMouse = input.Position
- local moveConn, endConn
- moveConn = UserInputService.InputChanged:Connect(function(input2)
- if input2.UserInputType == input.UserInputType then
- local delta = input2.Position - dragStartMouse
- reopenButton.Position = UDim2.new(dragStartPos.X.Scale, dragStartPos.X.Offset + delta.X, dragStartPos.Y.Scale, dragStartPos.Y.Offset + delta.Y)
- end
- end)
- endConn = UserInputService.InputEnded:Connect(function(input2)
- if input2.UserInputType == input.UserInputType then
- moveConn:Disconnect()
- endConn:Disconnect()
- end
- end)
- end
- end)
- reopenButton.MouseButton1Click:Connect(showGui)
- else
- reopenButton.Visible = true
- end
- end
- end
- end
- closeBtn.MouseButton1Click:Connect(hideGui)
- if not isMobile then
- UserInputService.InputBegan:Connect(function(input)
- if input.KeyCode == Enum.KeyCode.RightShift then
- if uiVisible then hideGui() else showGui() end
- end
- end)
- end
- -- Log management
- local eventCount = 0
- local entries = {}
- local suppressCounter = 0
- local function fireFakeSignal(signalType, id)
- suppressCounter = suppressCounter + 1
- pcall(function()
- if signalType == "Product" then
- MarketplaceService:SignalPromptProductPurchaseFinished(player.UserId, id, true)
- elseif signalType == "Gamepass" then
- MarketplaceService:SignalPromptGamePassPurchaseFinished(player, id, true)
- elseif signalType == "Bulk" then
- MarketplaceService:SignalPromptBulkPurchaseFinished(player.UserId, id, true)
- elseif signalType == "Purchase" then
- MarketplaceService:SignalPromptPurchaseFinished(player.UserId, id, true)
- end
- end)
- suppressCounter = suppressCounter - 1
- end
- local function makeEmptyLabel()
- local el = Instance.new("TextLabel")
- el.Name = "EmptyState"
- el.Size = UDim2.new(1, 0, 0, 260)
- el.BackgroundTransparency = 1
- el.Text = "Waiting for events…\nAll marketplace events will appear here."
- el.TextColor3 = Color3.fromRGB(120, 120, 158)
- el.TextSize = 13 * fontSizeScale
- el.Font = Enum.Font.Gotham
- el.TextWrapped = true
- el.LayoutOrder = 99999
- el.Parent = logArea
- return el
- end
- local function setEmpty(show)
- local e = logArea:FindFirstChild("EmptyState")
- if show and not e then
- makeEmptyLabel()
- elseif not show and e then
- e:Destroy()
- end
- end
- local activeAutoButtons = {}
- local activeSpamButtons = {}
- local function stopAllAutoAndSpam()
- for btn, data in pairs(activeAutoButtons) do
- data.active = false
- if data.loop then task.cancel(data.loop) end
- if btn and btn.Parent then
- btn.Text = "Auto"
- btn.TextColor3 = Color3.fromRGB(170, 165, 220)
- btn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end
- table.clear(activeAutoButtons)
- for btn, data in pairs(activeSpamButtons) do
- data.active = false
- if data.loop then task.cancel(data.loop) end
- if btn and btn.Parent then
- btn.Text = "Run"
- btn.TextColor3 = Color3.fromRGB(170, 165, 220)
- btn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end
- table.clear(activeSpamButtons)
- end
- stopAllBtn.MouseButton1Click:Connect(stopAllAutoAndSpam)
- local function addLog(label, id, signalType)
- if suppressCounter > 0 then return end
- setEmpty(false)
- local entryHeight = isMobile and 56 or 46
- local entry = Instance.new("Frame")
- entry.Size = UDim2.new(1, -2, 0, entryHeight)
- entry.BackgroundColor3 = Color3.fromRGB(17, 17, 24)
- entry.BorderSizePixel = 0
- entry.LayoutOrder = -(eventCount)
- entry.Parent = logArea
- corner(entry, 10)
- stroke(entry, Color3.fromRGB(48, 46, 70), 1)
- entry.BackgroundTransparency = 1
- TweenService:Create(entry, TweenInfo.new(0.18), {BackgroundTransparency = 0}):Play()
- local dot = Instance.new("Frame")
- dot.Size = UDim2.new(0, 8, 0, 8)
- dot.Position = UDim2.new(0, 14, 0.5, -4)
- dot.BackgroundColor3 = Color3.fromRGB(61, 255, 160)
- dot.BorderSizePixel = 0
- dot.Parent = entry
- corner(dot, 999)
- local lbl = Instance.new("TextLabel")
- lbl.Size = UDim2.new(0, 76, 1, 0)
- lbl.Position = UDim2.new(0, 28, 0, 0)
- lbl.BackgroundTransparency = 1
- lbl.Text = string.upper(label)
- lbl.TextColor3 = Color3.fromRGB(160, 150, 210)
- lbl.TextSize = 10 * fontSizeScale
- lbl.Font = Enum.Font.GothamBold
- lbl.TextXAlignment = Enum.TextXAlignment.Left
- lbl.Parent = entry
- local idEl = Instance.new("TextLabel")
- idEl.Size = UDim2.new(0, 200, 1, 0)
- idEl.Position = UDim2.new(0, 108, 0, 0)
- idEl.BackgroundTransparency = 1
- idEl.Text = tostring(id)
- idEl.TextColor3 = Color3.fromRGB(220, 220, 240)
- idEl.TextSize = 14 * fontSizeScale
- idEl.Font = Enum.Font.GothamBold
- idEl.TextXAlignment = Enum.TextXAlignment.Left
- idEl.TextTruncate = Enum.TextTruncate.AtEnd
- idEl.Parent = entry
- local timeEl = Instance.new("TextLabel")
- timeEl.Size = UDim2.new(0, 70, 1, 0)
- timeEl.Position = UDim2.new(0, 320, 0, 0)
- timeEl.BackgroundTransparency = 1
- timeEl.Text = getTime()
- timeEl.TextColor3 = Color3.fromRGB(140, 135, 180)
- timeEl.TextSize = 11 * fontSizeScale
- timeEl.Font = Enum.Font.Gotham
- timeEl.Parent = entry
- local buttonFrame = Instance.new("Frame")
- buttonFrame.Size = UDim2.new(0, 200, 1, 0)
- buttonFrame.Position = UDim2.new(1, -200, 0, 0)
- buttonFrame.BackgroundTransparency = 1
- buttonFrame.Parent = entry
- local autoBtn = Instance.new("TextButton")
- autoBtn.Size = UDim2.new(0, 56, 0, buttonHeight)
- autoBtn.Position = UDim2.new(0, 0, 0.5, -buttonHeight/2)
- autoBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- autoBtn.Text = "Auto"
- autoBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- autoBtn.TextSize = 11 * fontSizeScale
- autoBtn.Font = Enum.Font.GothamBold
- autoBtn.BorderSizePixel = 0
- autoBtn.Parent = buttonFrame
- corner(autoBtn, 7)
- stroke(autoBtn, Color3.fromRGB(55, 50, 85), 1)
- local copyBtn = Instance.new("TextButton")
- copyBtn.Size = UDim2.new(0, 56, 0, buttonHeight)
- copyBtn.Position = UDim2.new(0, 62, 0.5, -buttonHeight/2)
- copyBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- copyBtn.Text = "Copy"
- copyBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- copyBtn.TextSize = 11 * fontSizeScale
- copyBtn.Font = Enum.Font.GothamBold
- copyBtn.BorderSizePixel = 0
- copyBtn.Parent = buttonFrame
- corner(copyBtn, 7)
- stroke(copyBtn, Color3.fromRGB(55, 50, 85), 1)
- local runBtn = Instance.new("TextButton")
- runBtn.Size = UDim2.new(0, 52, 0, buttonHeight)
- runBtn.Position = UDim2.new(0, 124, 0.5, -buttonHeight/2)
- runBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- runBtn.Text = "Run"
- runBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- runBtn.TextSize = 11 * fontSizeScale
- runBtn.Font = Enum.Font.GothamBold
- runBtn.BorderSizePixel = 0
- runBtn.Parent = buttonFrame
- corner(runBtn, 7)
- stroke(runBtn, Color3.fromRGB(55, 50, 85), 1)
- copyBtn.MouseEnter:Connect(function()
- copyBtn.TextColor3 = Color3.fromRGB(190, 180, 255)
- copyBtn.BackgroundColor3 = Color3.fromRGB(22, 18, 40)
- end)
- copyBtn.MouseLeave:Connect(function()
- if copyBtn.Text ~= "Copied!" then
- copyBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- copyBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end)
- copyBtn.MouseButton1Click:Connect(function()
- pcall(setclipboard, tostring(id))
- copyBtn.Text = "Copied!"
- copyBtn.TextColor3 = Color3.fromRGB(200, 190, 255)
- task.wait(1.5)
- copyBtn.Text = "Copy"
- copyBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- copyBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end)
- local autoActive = false
- local autoLoop = nil
- local function startAuto()
- if autoActive then return end
- autoActive = true
- autoBtn.Text = "Auto ON"
- autoBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
- autoBtn.BackgroundColor3 = Color3.fromRGB(40, 15, 15)
- autoLoop = task.spawn(function()
- local delay = autoSpeed > 0 and (1 / autoSpeed) or 0.01
- while autoActive and autoBtn.Parent do
- fireFakeSignal(signalType, id)
- task.wait(delay)
- end
- end)
- activeAutoButtons[autoBtn] = {active = true, loop = autoLoop}
- end
- local function stopAuto()
- autoActive = false
- if autoLoop then task.cancel(autoLoop) end
- activeAutoButtons[autoBtn] = nil
- if autoBtn.Parent then
- autoBtn.Text = "Auto"
- autoBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- autoBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end
- autoBtn.MouseButton1Click:Connect(function()
- if autoActive then stopAuto() else startAuto() end
- end)
- local holdStart = nil
- local holdConnection = nil
- local spamLoop = nil
- local isSpamming = false
- local function startSpam()
- if isSpamming then return end
- isSpamming = true
- runBtn.Text = "Spamming..."
- runBtn.TextColor3 = Color3.fromRGB(255, 200, 0)
- spamLoop = task.spawn(function()
- while isSpamming and runBtn.Parent do
- fireFakeSignal(signalType, id)
- task.wait(0.1)
- end
- end)
- activeSpamButtons[runBtn] = {active = true, loop = spamLoop}
- end
- local function stopSpam()
- isSpamming = false
- if spamLoop then task.cancel(spamLoop) end
- activeSpamButtons[runBtn] = nil
- if runBtn.Parent then
- runBtn.Text = "Run"
- runBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- runBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end
- -- Use InputBegan/InputEnded for both mouse and touch
- local function onRunPress()
- if isSpamming then return end
- holdStart = tick()
- holdConnection = task.spawn(function()
- while holdStart and (tick() - holdStart) < 3 do
- task.wait(0.1)
- end
- if holdStart and not isSpamming then
- startSpam()
- end
- end)
- end
- local function onRunRelease()
- local heldDuration = holdStart and (tick() - holdStart) or 0
- holdStart = nil
- if holdConnection then task.cancel(holdConnection) end
- if isSpamming then
- stopSpam()
- elseif heldDuration < 3 then
- fireFakeSignal(signalType, id)
- runBtn.Text = "Sent!"
- runBtn.TextColor3 = Color3.fromRGB(61, 255, 160)
- task.wait(1.5)
- if runBtn.Parent then
- runBtn.Text = "Run"
- runBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- end
- end
- end
- runBtn.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- onRunPress()
- end
- end)
- runBtn.InputEnded:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
- onRunRelease()
- end
- end)
- runBtn.MouseEnter:Connect(function()
- if not isSpamming then
- runBtn.TextColor3 = Color3.fromRGB(61, 255, 160)
- runBtn.BackgroundColor3 = Color3.fromRGB(10, 22, 18)
- end
- end)
- runBtn.MouseLeave:Connect(function()
- if not isSpamming and runBtn.Text == "Run" then
- runBtn.TextColor3 = Color3.fromRGB(170, 165, 220)
- runBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
- end
- end)
- entry.AncestryChanged:Connect(function()
- if not entry.Parent then
- if autoActive then stopAuto() end
- if isSpamming then stopSpam() end
- for i, e in ipairs(entries) do
- if e == entry then
- table.remove(entries, i)
- break
- end
- end
- end
- end)
- eventCount = eventCount + 1
- countLabel.Text = eventCount .. (eventCount == 1 and " event captured" or " events captured")
- table.insert(entries, entry)
- end
- clearBtn.MouseButton1Click:Connect(function()
- stopAllAutoAndSpam()
- for _, e in ipairs(entries) do
- e:Destroy()
- end
- entries = {}
- eventCount = 0
- countLabel.Text = "0 events captured"
- setEmpty(true)
- end)
- MarketplaceService.PromptProductPurchaseFinished:Connect(function(plr, id, bought)
- if suppressCounter == 0 then addLog("Product", id, "Product") end
- end)
- MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(plr, id, bought)
- if suppressCounter == 0 then addLog("Gamepass", id, "Gamepass") end
- end)
- MarketplaceService.PromptBulkPurchaseFinished:Connect(function(userId, id, bought)
- if suppressCounter == 0 then addLog("Bulk", id, "Bulk") end
- end)
- MarketplaceService.PromptPurchaseFinished:Connect(function(userId, id, bought)
- if suppressCounter == 0 then addLog("Purchase", id, "Purchase") end
- end)
- setEmpty(true)
Add Comment
Please, Sign In to add comment