Universal Script – OpenSource Simple Inventory Webhooker - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – OpenSource Simple Inventory Webhooker

Universal ScriptEzistaEzista 4.8K views 6 executesUpdated Aug 16, 2025
Unrated
00
Lua Script•148 lines (4330 chars)
local HttpService = game:GetService("HttpService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local webhook_url =
	"REPLACE_THIS_WITH_YOUR_WEBHOOK_URL"
local avatar_url =
	"EMPTY_OR_CUSTOM_IMAGE_URL"

local function makeRequest(method, url, payload)
	local requestFunc = (syn and syn.request) or request
	if not requestFunc then
		print("ERROR: Your script executor does not support 'request' or 'syn.request'.")
		return nil
	end

	local success, response = pcall(function()
		return requestFunc({
			Url = url,
			Method = method,
			Headers = { ["Content-Type"] = "application/json" },
			Body = HttpService:JSONEncode(payload),
		})
	end)

	if not success then
		print("Webhook pcall failed! Error: " .. tostring(response))
		return nil
	end

	if response then
		print("--> Webhook Response Status: " .. tostring(response.StatusCode))
		print("--> Webhook Response Success: " .. tostring(response.Success))
		print("--> Webhook Response Body: " .. tostring(response.Body))
	end

	return nil
end

local function sendShutdownMessage()
	local embed = {
		title = "Script Status Alert",
		description = "Script Stopped Working. Check Your Game.",
		color = 16711680, -- Red
		footer = { text = "Shutdown detected at " .. os.date("%c") .. "For User: " .. Players.LocalPlayer.Name },
	}
	local payload = {
		username = "Blox Fruits Informator",
		avatar_url = avatar_url,
		content = "@here",
		embeds = { embed },
	}
	makeRequest("POST", webhook_url, payload)
end

Players.PlayerRemoving:Connect(function(player)
	if player == Players.LocalPlayer then
		sendShutdownMessage()
	end
end)

local function createItemEmbed(items, title, color)
	local fields = {}
	if #items == 0 then
		table.insert(fields, { name = "Empty", value = "You have no items of this type.", inline = false })
	else
		for i, item in ipairs(items) do
			if #fields >= 24 then
				table.insert(fields, { name = "Note", value = "List is too long to display fully.", inline = false })
				break
			end
			table.insert(fields, { name = item.Name, value = "Count: " .. tostring(item.Count), inline = true })
		end
	end

	return { title = title, color = color, fields = fields }
end

while true do
	print("Loop started. Fetching player data...")
	local player = Players.LocalPlayer
	local playerData = player:WaitForChild("Data", 5)

	local invSuccess, inventory = pcall(function()
		return ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("CommF_"):InvokeServer("getInventory")
	end)

	if not invSuccess then
		print("Failed to retrieve inventory. Retrying in 60s. Error: " .. tostring(inventory))
		wait(60)
		continue
	end

	print("Successfully retrieved inventory. Processing items...")

	local beli, fragments, level, race = 0, 0, "N/A", "N/A"
	if playerData then
		beli = playerData:FindFirstChild("Beli") and playerData.Beli.Value or 0
		fragments = playerData:FindFirstChild("Fragments") and playerData.Fragments.Value or 0
		level = playerData:FindFirstChild("Level") and playerData.Level.Value or "N/A"
		race = playerData:FindFirstChild("Race") and playerData.Race.Value or "N/A"
	end

	local materials, fruits = {}, {}
	if type(inventory) == "table" then
		for _, itemData in pairs(inventory) do
			if type(itemData) == "table" and itemData.Name and itemData.Count then
				if itemData.Type == "Blox Fruit" then
					table.insert(fruits, itemData)
				elseif itemData.Type == "Material" then
					table.insert(materials, itemData)
				end
			end
		end
	end

	-- Embed 1: Player Stats
	local statsEmbed = {
		title = player.Name .. "'s Stats",
		description = string.format(
			"**Level:** %s\n**Race:** %s\n**Beli:** %s\n**Fragments:** %s",
			tostring(level),
			tostring(race),
			tostring(beli),
			tostring(fragments)
		),
		color = 3447003,
		footer = { text = "Inventory Bot | " .. os.date("%c") },
	}

	-- Embed 2: Fruits
	local fruitsEmbed = createItemEmbed(fruits, "Fruits", 15158332)

	-- Embed 3: Materials
	local materialsEmbed = createItemEmbed(materials, "Materials", 10038562)

	local payload = {
		username = "Blox Fruits Bot",
		avatar_url = avatar_url,
		embeds = { statsEmbed, fruitsEmbed, materialsEmbed },
	}

	print("Attempting to send webhook...")
	makeRequest("POST", webhook_url, payload)
	print("Webhook function called. Waiting 60 seconds...")

	wait(60)
end

How to Execute Universal Script – OpenSource Simple Inventory Webhooker

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

Ezista
Ezista
Script Creator
View Author Profile

Features & Information

Execute Universal Script – OpenSource Simple Inventory Webhooker. Key system required, created by Ezista, updated Aug 16, 2025. Tested and working on supported executors.

Script Changelog (1)

@EzistaAug 16, 2025

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – OpenSource Simple Inventory Webhooker in Roblox?

To run Universal Script – OpenSource Simple Inventory Webhooker, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – OpenSource Simple Inventory Webhooker keyless or does it require an access key?

Universal Script – OpenSource Simple Inventory Webhooker requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – OpenSource Simple Inventory Webhooker currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.