free purchases
Key RequiredUniversal

free purchases

Universal Scriptrealhckersbrotheraltrealhckersbrotheralt 2.5K views 766 executesUpdated Apr 30, 2026
0.0/ 5(1 votes)
010% Positive
Lua Script•899 lines (33195 chars)
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)

Features & Information

that's basically it credits are unknown this is not mine
#keyless#source code#src#free#works on some games

Community Comments (1)

works on some slop games an example is tsunami troll tower

More Scripts for Universal Scripts