SELUWIA
Key RequiredUniversal

SELUWIA

Universal Scriptrichardnyabayo289richardnyabayo289 24.8K views 21.8K executesUpdated Apr 26, 2026
3.3/ 5(6 votes)
4267% 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

Gives free gamepass
#Free gamepass#Gamepass#Free

Community Comments (9)

sersmir10sersmir10Apr 26, 2026

"Ah yes, let me change the value of a serverside-locked gamepass with my clientside script"

Replying to @sersmir10
IgivefreekeysIgivefreekeysApr 27, 2026

@sersmir10 It works with real gamepasses, it just sends a signal to the game to execute the gamepass, it only works if the game doesnt check if u have it. it is clientside, but it makes so that you will get the gamepass/product, it doesnt change the value.

Replying to @Igivefreekeys
UsurperOfMythosUsurperOfMythosApr 27, 2026

@Igivefreekeys Any way to know which games this will work in? I only got it working in [Grow Your Black Hole], tried it in a few other games but none of it worked. Any games you know it works in that I could try?

Replying to @Igivefreekeys
Axelito54Axelito54Jul 8, 2026

@Igivefreekeys bro, works with rivals? iwk

miran6esenmiran6esenApr 29, 2026

how can i activate this script

FrooztFrooztApr 30, 2026

it dusent work i triend in alot of games pls help

shrakshrakJun 3, 2026

Ur all stupid, it works on game products very rarely gamepasses and rarely products, it works in games that havent been setup well.

UpdateAsPro99991UpdateAsPro99991Jul 18, 2026

I try to place it well in xeno but its failing like a scam. ITS A SCAM!!! Plus not working well.

UpdateAsPro99991UpdateAsPro99991Jul 25, 2026

IT DOSENT WORK AT ALL WHEN I CLICK RUN! ITS A SCAM IN THIS SCRIPT, STUPID SCRIPT!!! THAT DOSENT WORK IT FAILURE.

More Scripts for Universal Scripts