local AssetManager = {} local HttpService = game:GetService("HttpService") local NumbersHelper = require(game:GetService("ReplicatedStorage"):WaitForChild("Common"):WaitForChild("NumberHelpers")) local function handleRequestErrors(success, result, errorMessage) if not success then warn("Error in HTTP request:", errorMessage) return nil end local decodeSuccess, decodedResult = pcall(HttpService.JSONDecode, HttpService, result) if not decodeSuccess then warn("Error decoding JSON:", decodedResult) return nil end return decodedResult end local function getUserCreatedTShirts(username, SignPrices) local tshirts = {} local success, result = pcall(function() return HttpService:GetAsync("https://catalog.roblox.com/v1/search/items/details?Category=3&CreatorName=" .. username) end) result = handleRequestErrors(success, result, "Failed to retrieve user-created T-shirts") if result then print("T-shirt data:", result) for _, item in pairs(result.data) do if item.price then table.insert(tshirts, item.id) local newBtn = script.Template:Clone() local price = item.price newBtn.PurchaseButton.Text = NumbersHelper.format(tonumber(price)) .. "\u{E002}" newBtn.LayoutOrder = price newBtn.Name = price newBtn.ImportantValues.AssetName.Value = item.name newBtn.ImportantValues.AssetId.Value = item.id newBtn.ImportantValues.AssetType.Value = "Clothing" newBtn.Parent = SignPrices end end end return tshirts end local function getUserCreatedGamepasses(userId, boothUI) local gamepasses = {} local GetGamesUrl = "https://games.roproxy.com/v2/users/"..userId.."/games?accessFilter=1&limit=50&sortOrder=Asc" local success, result = pcall(function() return HttpService:GetAsync(GetGamesUrl) end) result = handleRequestErrors(success, result, "Failed to retrieve user's games") if result and result.data then print("Game data:", result) for _, GameInfo in pairs(result.data) do local gameId = GameInfo.id local url = "https://games.roproxy.com/v1/games/"..gameId.."/game-passes?limit=100&sortOrder=Asc" local success2, result2 = pcall(function() return HttpService:GetAsync(url) end) result2 = handleRequestErrors(success2, result2, "Failed to retrieve game passes for game: "..gameId) if result2 and result2.data then print("Gamepass data for game "..gameId..":", result2) for _, GamepassDetail in pairs(result2.data) do if GamepassDetail.price then table.insert(gamepasses, GamepassDetail.id) local newBtn = script.Template:Clone() local price = GamepassDetail.price newBtn.Name = price newBtn.PurchaseButton.Text = NumbersHelper.format(tonumber(price)) .. "\u{E002}" newBtn.LayoutOrder = price newBtn.ImportantValues.AssetId.Value = GamepassDetail.id newBtn.ImportantValues.AssetName.Value = GamepassDetail.displayName newBtn.ImportantValues.AssetType.Value = "Gamepass" newBtn.Parent = boothUI end end end end end return gamepasses end function AssetManager:GetAssets(Player, BoothUI) getUserCreatedTShirts(Player.Name, BoothUI) getUserCreatedGamepasses(Player.UserId, BoothUI) end function AssetManager:GetAssetsGift(PlayerName, PlayerUserId, BoothUI) getUserCreatedTShirts(PlayerName, BoothUI) getUserCreatedGamepasses(PlayerUserId, BoothUI) end return AssetManager