script.lol
Executors Arceus X (Mobile) Delta Executor Synapse X (PC) KRNL Exploit Xeno Scripts Keyless Scripts
Search Roblox Scripts
Popular Searches
Payload copied to clipboard
100% Free & Keyless šŸŽ® Grow A Garden 2 Jun 29, 2026 Author: Zr3

GAG2 Notifier | Seed Notifier | Gear Notifier | Sell Price Notifier | Open Source (Grow A Garden 2) Script Pastebin 2026 - Auto Farm, ESP & Keyless (Arceus X)

Verified and keyless Lua script payload for GAG2 Notifier | Seed Notifier | Gear Notifier | Sell Price Notifier | Open Source. Compatible with Android/iOS mobile executors and Windows PC exploits.

script.lua (Raw Payload)
--[[
    Grow a Garden 2 — Stock & Fruit Price Monitor
    Monitors SeedShop, GearShop stock + fruit sell price multipliers.
    Sends Discord webhook on stock arrival and fruit price spikes.
    Made by Zr3 // Discord - https://discord.gg/Gj9bnxa5Kz
]]

local CONFIG = {
    enabled             = true,
    webhookURL          = "YOUR_WEBHOOK",
    checkInterval       = 0.01,
    monitorSeeds        = true,
    monitorGears        = true,
    monitorFruitPrices  = true,
    notifyOnStock       = true,
    notifyOnOutOfStock  = false,
    cooldown            = 250,
    fruitCooldown       = 600,
    fruitThreshold      = 2,
    pingHere            = true,
}

local monitoredSeeds = {
    ["Dragon's Breath"] = true,  --seeds to be monitored
    ["Moon Bloom"]      = true,
    ["Hypno Bloom"]     = true,
    ["Venom Spitter"]   = true,
}

local monitoredGears = {
    ["Super Sprinkler"]       = true, -- gears to be monitored
    ["Super Watering Can"]    = true,
    ["Legendary Sprinkler"]   = true,
}

local monitoredFruits = {
    ["Dragon's Breath"] = true, -- fruits to monitor for 2x and more price
    ["Moon Bloom"]      = true,
    ["Ghost Pepper"]    = true,
    ["Venom Spitter"]   = true,
}

local Players           = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local HttpService       = game:GetService("HttpService")
local RunService        = game:GetService("RunService")

local LP = Players.LocalPlayer

local stockStatus        = { seeds = {}, gears = {} }
local lastNotification   = { seeds = {}, gears = {} }
local lastFruitAlert     = {}
local isRunning          = false
local monitorConnection  = nil
local hasSentPing        = false

local function sendWebhook(content, embeds)
    if not CONFIG.webhookURL or CONFIG.webhookURL:find("YOUR_WEBHOOK") then
        warn("[Monitor] Webhook URL not configured!")
        return false
    end
    local data = { content = content or "", embeds = embeds or {} }
    local ok, err = pcall(function()
        local json = HttpService:JSONEncode(data)
        local reqFn = (syn and syn.request) or (http and http.request) or request
        if reqFn then
            reqFn({
                Url     = CONFIG.webhookURL,
                Method  = "POST",
                Headers = { ["Content-Type"] = "application/json" },
                Body    = json,
            })
        else
            HttpService:PostAsync(CONFIG.webhookURL, json, Enum.HttpContentType.ApplicationJson)
        end
    end)
    if not ok then warn("[Monitor] Webhook error: "..tostring(err)) end
    return ok
end

local function embed(title, desc, color, fields)
    return {
        title       = title,
        description = desc or "",
        color       = color or 0x7ED957,
        fields      = fields or {},
        footer      = { text = "Made by Zr3 • " .. os.date("%H:%M:%S") },
    }
end

local function stockFolder(shop)
    local sv = ReplicatedStorage:FindFirstChild("StockValues")
    local sh = sv and sv:FindFirstChild(shop)
    return sh and sh:FindFirstChild("Items")
end

local function getAllStock(shop)
    local folder = stockFolder(shop)
    if not folder then return {} end
    local out = {}
    for _, v in ipairs(folder:GetChildren()) do
        if v:IsA("ValueBase") then out[v.Name] = v.Value or 0 end
    end
    return out
end

local function checkStock()
    if not CONFIG.enabled then return end

    local seedStock = CONFIG.monitorSeeds and getAllStock("SeedShop") or {}
    local gearStock = CONFIG.monitorGears and getAllStock("GearShop") or {}

    local alerts       = {}
    local now          = os.time()
    local hasInStock   = false

    local function scanCategory(monitorTable, stockData, statusTable, notifTable, catKey)
        for name, _ in pairs(monitorTable) do
            local stock      = stockData[name] or 0
            local wasInStock = statusTable[name] or false
            local inStock    = stock > 0
            local lastN      = notifTable[name] or 0
            local canNotify  = (now - lastN) >= CONFIG.cooldown

            if CONFIG.notifyOnStock and inStock and not wasInStock and canNotify then
                alerts[#alerts+1] = { cat=catKey, name=name, stock=stock, status="in_stock" }
                notifTable[name] = now
                hasInStock = true
            elseif CONFIG.notifyOnOutOfStock and not inStock and wasInStock and canNotify then
                alerts[#alerts+1] = { cat=catKey, name=name, stock=stock, status="out_of_stock" }
                notifTable[name] = now
            end
            statusTable[name] = inStock
        end
    end

    scanCategory(monitoredSeeds, seedStock, stockStatus.seeds, lastNotification.seeds, "seed")
    scanCategory(monitoredGears, gearStock, stockStatus.gears, lastNotification.gears, "gear")

    if #alerts == 0 then return end

    local fields = {}
    local allOut = true
    for _, a in ipairs(alerts) do
        local icon   = a.cat == "seed" and "🌱" or "šŸ”§"
        local sIcon  = a.status == "in_stock" and "āœ…" or "āŒ"
        local sText  = a.status == "in_stock"  and "IN STOCK" or "OUT OF STOCK"
        fields[#fields+1] = {
            name   = icon .. " " .. a.name,
            value  = string.format("**Status:** %s %s\n**Qty:** %d\n**Time:** %s", sIcon, sText, a.stock, os.date("%H:%M:%S")),
            inline = true,
        }
        if a.status == "in_stock" then allOut = false end
    end

    if not hasInStock then hasSentPing = false end

    local content = nil
    if CONFIG.pingHere and hasInStock then
        content = "@here"
        hasSentPing = true
    end

    sendWebhook(content, {
        embed(
            "šŸ“¦ Stock Notifications — Made by Zr3",
            "",
            allOut and 0xFF4444 or 0x7ED957,
            fields
        )
    })
end

local function parseMult(txt)
    if not txt then return nil end
    local n = txt:match("x?(%d+%.?%d*)")
    return n and tonumber(n) or nil
end

local function checkFruitPrices()
    if not CONFIG.monitorFruitPrices then return end
    pcall(function()
        local sf = LP.PlayerGui
            :FindFirstChild("FruitStockPrice")
            and LP.PlayerGui.FruitStockPrice:FindFirstChild("Frame")
            and LP.PlayerGui.FruitStockPrice.Frame:FindFirstChild("ScrollingFrame")
        if not sf then return end

        local now = os.time()
        local alerts = {}
        local maxMultiplier = 0

        for _, card in ipairs(sf:GetChildren()) do
            if card.Name == "FruitCard" then
                local fruitName = card:GetAttribute("SeedToolTip")
                if fruitName and monitoredFruits[fruitName] then
                    local mFrame = card:FindFirstChild("Frame")
                    local mLabel = mFrame and mFrame:FindFirstChild("Multiplier")
                    if mLabel then
                        local mult = parseMult(mLabel.Text)
                        if mult and mult >= CONFIG.fruitThreshold then
                            local last = lastFruitAlert[fruitName] or 0
                            if (now - last) >= CONFIG.fruitCooldown then
                                lastFruitAlert[fruitName] = now
                                alerts[#alerts+1] = { 
                                    name = fruitName, 
                                    mult = mult
                                }
                                if mult > maxMultiplier then
                                    maxMultiplier = mult
                                end
                            end
                        end
                    end
                end
            end
        end

        if #alerts == 0 then return end

        table.sort(alerts, function(a, b) return a.mult > b.mult end)

        local fields = {}
        for _, a in ipairs(alerts) do
            local stars = ""
            if a.mult >= 4 then
                stars = " ⭐⭐⭐⭐"
            elseif a.mult >= 3 then
                stars = " ⭐⭐⭐"
            elseif a.mult >= 2.5 then
                stars = " ⭐⭐"
            elseif a.mult >= 2 then
                stars = " ⭐"
            end
            
            fields[#fields+1] = {
                name   = "šŸŽ " .. a.name .. stars,
                value  = string.format("**Price Multiplier:** x%.1f\n**Time:** %s", a.mult, os.date("%H:%M:%S")),
                inline = true,
            }
        end

        local description = string.format(
            "Found **%d** fruit(s) with multiplier ≄ x%.0f\n",
            #alerts,
            CONFIG.fruitThreshold
        )

        sendWebhook("@here", {
            embed(
                "šŸ’° Fruit Price Increase!",
                description,
                0xFFD700,
                fields
            )
        })
    end)
end

local stockTimer     = 0
local fruitTimer     = 0
local FRUIT_INTERVAL = 3

local function startMonitor()
    if isRunning then return end
    isRunning       = true
    CONFIG.enabled  = true
    hasSentPing     = false

    task.spawn(function() task.wait(2); checkStock() end)

    monitorConnection = RunService.Heartbeat:Connect(function(dt)
        if not CONFIG.enabled then return end
        if not LP or not LP.Parent then return end

        stockTimer = stockTimer + dt
        if stockTimer >= CONFIG.checkInterval then
            stockTimer = 0
            task.spawn(checkStock)
        end

        if CONFIG.monitorFruitPrices then
            fruitTimer = fruitTimer + dt
            if fruitTimer >= FRUIT_INTERVAL then
                fruitTimer = 0
                task.spawn(checkFruitPrices)
            end
        end
    end)

    print("[Monitor] Started. Stock check every "..CONFIG.checkInterval.."s, fruit prices every "..FRUIT_INTERVAL.."s.")
end

local function stopMonitor()
    if monitorConnection then monitorConnection:Disconnect(); monitorConnection=nil end
    isRunning      = false
    CONFIG.enabled = false
    hasSentPing    = false
    print("[Monitor] Stopped.")
end

task.wait(5)
startMonitor()
game:GetService("StarterGui"):SetCore("SendNotification", {
    Title    = "GAG2 Monitor Loaded!",
    Text     = "Made by Zr3 • https://discord.gg/Gj9bnxa5Kz",
    Duration = 5,
})
print("[Monitor] Loaded!")
print("Notifier Made by Zr3 • https://discord.gg/Gj9bnxa5Kz")
Verified Executor Compatibility

Features of GAG2 Notifier | Seed Notifier | Gear Notifier | Sell Price Notifier | Open Source Script

The GAG2 Notifier | Seed Notifier | Gear Notifier | Sell Price Notifier | Open Source script is an optimized Lua execution payload designed for Roblox players. Built to minimize FPS drops and prevent crashes, it provides essential automated functions:

  • Auto Farm & Level Grinding: Automatically cycles quests and mobs with efficient positioning algorithms.
  • Aimbot & ESP: Accurate enemy targeting and wall visibility for items, chests and players.
  • Teleportation: Seamless movement across game checkpoints, safe zones and dungeons.
  • Direct Keyless Loadstring: Executes directly without third-party key verification links.

How to Execute This Script on Mobile & PC

Follow these steps depending on your platform:

Mobile (Android / iOS)

  1. Install Arceus X NEO or Delta Mobile.
  2. Launch the game inside the executor environment.
  3. Open the floating executor console.
  4. Paste the Lua script copied from above.
  5. Click Execute.

PC (Windows)

  1. Launch your PC exploit (such as Synapse X, KRNL, or Xeno).
  2. Join the Roblox game server.
  3. Click Inject / Attach.
  4. Paste the copied script into the script tab.
  5. Press Execute to run the menu.

Frequently Asked Questions (FAQ)

Is the GAG2 Notifier | Seed Notifier | Gear Notifier | Sell Price Notifier | Open Source script free and keyless?

Yes, this script payload is verified to be 100% free and keyless without linkvertise checkpoints.

Which executors support this script?

Compatible with Arceus X, Delta, Arceus X, Synapse X, KRNL, Fluxus and Xeno.

How do I execute this script safely?

Copy the script payload using the Copy button above, launch your Roblox executor on PC or Mobile, attach to the game client, paste the payload into the editor, and press Execute.

Related & Recommended Scripts