Get all gamepass V4 (Normal Version)
Key RequiredUniversal

Get all gamepass V4 (Normal Version)

Universal ScriptMEGAxkMEGAxk 5.3K views 2.4K executesUpdated Apr 23, 2026
1.7/ 5(3 votes)
1233% Positive
Lua Script•296 lines (9649 chars)
--[[
    Script by MegaXk 
⚠️Warning: the script may not work sometimes. It is recommended to use the script in poorly made games. 
--]]

local player = game.Players.LocalPlayer
local marketplace = game:GetService("MarketplaceService")
local http = game:GetService("HttpService")
local replicatedStorage = game:GetService("ReplicatedStorage")
local runService = game:GetService("RunService")
local starterGui = game:GetService("StarterGui")
local coreGui = game:GetService("CoreGui")

local originalNamecall, originalIndex, originalNewindex
local isHooked = false
local isInitialized = false
local gamepassIds = {}
local productIds = {}

local function isExecutorSafe()
    local execFlags = {
        is_synapse = pcall(function() return syn and syn.crypt end),
        is_krnl = pcall(function() return krnl and krnl.Clone end),
        is_scriptware = pcall(function() return is_sir_himself end),
        is_fluxus = pcall(function() return fluxus and fluxus.import end),
        is_oxygen = pcall(function() return Oxygen and Oxygen.U then true else false end),
    }
    for _, v in pairs(execFlags) do
        if v then return true end
    end
    return (getgenv and true) or (getrenv and true) or false
end

local function deepObfuscate(tbl, depth)
    depth = depth or 0
    if depth > 3 then return tbl end
    for k, v in pairs(tbl) do
        if type(v) == "function" then
            local old = v
            tbl[k] = function(...)
                runService.Heartbeat:Wait()
                return old(...)
            end
        elseif type(v) == "table" then
            deepObfuscate(v, depth + 1)
        end
    end
    return tbl
end

local function sanitizeEnvironment()
    local protected = {"warn", "print", "error", "getfenv", "setfenv"}
    for _, func in pairs(protected) do
        if _G[func] then
            _G[func] = function() end
        end
    end
    if getgenv then
        for k, v in pairs(getgenv()) do
            if type(v) == "function" and string.find(k, "hook") then
                getgenv()[k] = nil
            end
        end
    end
end

local function advancedHookProtection()
    local mt = getrawmetatable(game)
    if not mt then return false end
    local oldNamecall = mt.__namecall
    local oldIndex = mt.__index
    local oldNewindex = mt.__newindex
    setreadonly(mt, false)
    mt.__namecall = newcclosure(function(self, ...)
        local method = getnamecallmethod()
        if method == "FireServer" or method == "InvokeServer" then
            local args = {...}
            for i, arg in pairs(args) do
                if type(arg) == "string" and (string.find(arg, "anticheat") or string.find(arg, "byfron") or string.find(arg, "hyperion")) then
                    return
                end
            end
        end
        if not isHooked and self == marketplace and method == "UserOwnsGamePassAsync" then
            return true
        end
        return oldNamecall(self, ...)
    end)
    mt.__index = newcclosure(function(self, key)
        if not isHooked and self == marketplace and key == "UserOwnsGamePassAsync" then
            return function() return true end
        end
        if type(key) == "string" and string.find(key:lower(), "anticheat") then
            return nil
        end
        return oldIndex(self, key)
    end)
    mt.__newindex = newcclosure(function(self, key, value)
        if type(key) == "string" and string.find(key:lower(), "detect") then
            return
        end
        return oldNewindex(self, key, value)
    end)
    setreadonly(mt, true)
    return true
end

local function multiLayerGamepassBypass(ids)
    local successCount = 0
    local remoteEvents = {}
    for _, v in pairs(replicatedStorage:GetDescendants()) do
        if v:IsA("RemoteEvent") and (v.Name:find("Gamepass") or v.Name:find("Product") or v.Name:find("Purchase") or v.Name:find("Reward")) then
            table.insert(remoteEvents, v)
        end
    end
    for i, remote in pairs(remoteEvents) do
        for _, id in pairs(ids) do
            pcall(function()
                remote:FireServer(player.UserId, id)
                remote:FireServer("PurchaseFinished", id, true)
                remote:FireServer(id, true)
                successCount = successCount + 1
            end)
        end
    end
    local promptEvent = replicatedStorage:FindFirstChild("PromptGamepassPurchaseFinished")
    if promptEvent then
        for _, id in pairs(ids) do
            pcall(function()
                promptEvent:FireServer(player.UserId, id)
                promptEvent:FireServer(id, true)
                successCount = successCount + 1
            end)
        end
    end
    return successCount
end

local function signalManipulation(ids)
    local successCount = 0
    if marketplace.SignalPromptProductPurchaseFinished then
        for _, id in pairs(ids) do
            pcall(function()
                marketplace:SignalPromptProductPurchaseFinished(player.UserId, id, true)
                successCount = successCount + 1
            end)
        end
    end
    if marketplace.PromptProductPurchaseFinished then
        for _, id in pairs(ids) do
            pcall(function()
                local args = {player.UserId, id, true}
                local signal = marketplace.PromptProductPurchaseFinished
                if signal and signal.Fire then
                    signal:Fire(unpack(args))
                end
                successCount = successCount + 1
            end)
        end
    end
    return successCount
end

local function cleanupHooks()
    if originalNamecall then
        local mt = getrawmetatable(game)
        if mt then
            setreadonly(mt, false)
            mt.__namecall = originalNamecall
            mt.__index = originalIndex
            mt.__newindex = originalNewindex
            setreadonly(mt, true)
        end
    end
end

local function showRobloxNotification(title, text, duration)
    pcall(function()
        starterGui:SetCore("SendNotification", {
            Title = title,
            Text = text,
            Duration = duration or 4,
            Icon = "rbxasset://textures/ui/GuiIconPlaceholder.png"
        })
    end)
end

local function getGameInfo()
    local success, info = pcall(function()
        return marketplace:GetProductInfo(game.PlaceId)
    end)
    return success and info.Name or "Unknown Game"
end

local function fetchGamepassIds()
    local url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/game-passes?limit=100"
    local allIds = {}
    local cursor = nil
    repeat
        local requestUrl = url
        if cursor then
            requestUrl = url .. "&cursor=" .. cursor
        end
        local success, response = pcall(function()
            return http:GetAsync(requestUrl)
        end)
        if not success then break end
        local data = http:JSONDecode(response)
        for _, v in pairs(data.data or {}) do
            table.insert(allIds, v.id)
        end
        cursor = data.nextPageCursor
    until not cursor
    return allIds
end

local function fetchProductIds()
    local url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/developer-products?limit=100"
    local success, response = pcall(function()
        return http:GetAsync(url)
    end)
    if not success then return {} end
    local data = http:JSONDecode(response)
    local ids = {}
    for _, v in pairs(data.data or {}) do
        table.insert(ids, v.id)
    end
    return ids
end

local function hideExecution()
    pcall(function()
        local scripts = debug.getinfo(1)
        if scripts and scripts.source then
            scripts.source = "Main"
        end
    end)
    if getgc then
        local gc = getgc(true)
        for _, v in pairs(gc) do
            if type(v) == "function" and debug.getinfo(v) and debug.getinfo(v).source and string.find(debug.getinfo(v).source, "loadstring") then
                v = nil
            end
        end
    end
    isHooked = true
end

local function delayExecution()
    local delayTime = math.random(30, 120)
    showRobloxNotification("┌⧹_" .. getGameInfo(), "Waiting " .. delayTime .. "s for optimal conditions...", 3)
    wait(delayTime)
    hideExecution()
    local gameName = getGameInfo()
    local passIds = fetchGamepassIds()
    local prodIds = fetchProductIds()
    local successPass = 0
    local successProd = 0
    if #passIds > 0 then
        successPass = multiLayerGamepassBypass(passIds)
    end
    if #prodIds > 0 then
        successProd = signalManipulation(prodIds)
    end
    if successPass > 0 or successProd > 0 then
        showRobloxNotification("✅ " .. gameName, "Simulated " .. (successPass + successProd) .. " rewards | Use responsibly", 4)
    else
        showRobloxNotification("⚠️ " .. gameName, "Partial simulation | Game uses ProcessReceipt", 4)
    end
end

local function init()
    if isInitialized then return end
    isInitialized = true
    sanitizeEnvironment()
    if not isExecutorSafe() then
        showRobloxNotification("⚠️", "Unsupported executor | Some features may not work", 4)
    end
    advancedHookProtection()
    showRobloxNotification("⟁ " .. getGameInfo(), "System ready | Execute with caution", 3)
    spawn(delayExecution)
end

pcall(init)

local function emergencyCleanup()
    cleanupHooks()
    isHooked = false
end

game:GetService("UserInputService").InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.LeftAlt and input.UserInputType == Enum.UserInputType.Keyboard then
        emergencyCleanup()
        showRobloxNotification("⟁", "Hooks cleaned | System restored", 2)
    end
end)

Features & Information

This script is designed for the Roblox environment to LOCALLY simulate ownership of all Gamepasses and Developer Products, tricking the game into believing the player has purchased them without any real transaction. ( ⚠️When you leave, you lose what you gained; it's not permanent. ) (This is the new version of the script, V4)
#V

Community Comments (10)

*latjeruk69*latjeruk69Apr 23, 2026

which game?

Replying to @*latjeruk69
MEGAxkMEGAxkApr 24, 2026

@latjeruk69 Poorly made games because of low security and bad programming; that's how the script works.

MEGAxkMEGAxkApr 24, 2026

@Xeroc You must have used it in a well-made game like Blox Fruits or Adopt Me or others, or you have an executor that doesn't support the script. I searched and my script can't be supported by some executors. (but whenever I use the script, use it in poorly made games)

XerocXerocApr 25, 2026

ok brah

XerocXerocApr 25, 2026

what exec. supported ? mine is xeno

MEGAxkMEGAxkApr 25, 2026

It depends on which game you tested. It has to be a poorly made game with few players because those games have low security.

somethingdiffrentsomethingdiffrentApr 27, 2026

highkey how to use ts

RaymenRaymenApr 30, 2026

What game could I use it on

ffsharjeel65ffsharjeel65May 1, 2026

Does it work in animal evolution simulator

wrathintheskieswrathintheskiesMay 2, 2026

Can you make it that it supports codex executor?

More Scripts for Universal Scripts