local ContentProvider = game:GetService("ContentProvider") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer or Players:WaitForChild("LocalPlayer") local RunService = game:GetService("RunService") local Stats = game:GetService("Stats") local UserInputService = game:GetService("UserInputService") if not _G.LoadedAssetIds then _G.LoadedAssetIds = {} end local failedAssets = {} local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "LoadingTracker" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.DisplayOrder = 999 ScreenGui.Parent = game:GetService("CoreGui") if not _G.LoadedAssetIds then _G.LoadedAssetIds = {} end local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 400, 0, 220) MainFrame.Position = UDim2.new(0.5, -200, 0.5, -110) MainFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = true MainFrame.Parent = ScreenGui local TitleBar = Instance.new("Frame") TitleBar.Name = "TitleBar" TitleBar.Size = UDim2.new(1, 0, 0, 30) TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30) TitleBar.BorderSizePixel = 0 TitleBar.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Name = "Title" Title.Size = UDim2.new(0.4, 0, 1, 0) Title.Position = UDim2.new(0, 5, 0, 0) Title.BackgroundTransparency = 1 Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.SourceSansBold Title.TextSize = 18 Title.Text = "Loading Tracker" Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = TitleBar local ProgressInfo = Instance.new("TextLabel") ProgressInfo.Name = "ProgressInfo" ProgressInfo.Size = UDim2.new(0.4, 0, 1, 0) ProgressInfo.Position = UDim2.new(0.28, 0, 0, 1) ProgressInfo.BackgroundTransparency = 1 ProgressInfo.TextColor3 = Color3.fromRGB(255, 255, 100) ProgressInfo.Font = Enum.Font.SourceSansSemibold ProgressInfo.TextSize = 16 ProgressInfo.Text = "0% loaded (0 of 0)" ProgressInfo.TextXAlignment = Enum.TextXAlignment.Left ProgressInfo.Visible = false ProgressInfo.Parent = TitleBar local TimerLabel = Instance.new("TextLabel") TimerLabel.Name = "TimerLabel" TimerLabel.Size = UDim2.new(0, 100, 1, 0) TimerLabel.Position = UDim2.new(0.9, -190, 0, 0) TimerLabel.BackgroundTransparency = 1 TimerLabel.TextColor3 = Color3.fromRGB(255, 255, 255) TimerLabel.Font = Enum.Font.SourceSansSemibold TimerLabel.TextSize = 16 TimerLabel.Text = "Time: 0:00" TimerLabel.TextXAlignment = Enum.TextXAlignment.Left TimerLabel.Parent = TitleBar local HideButton = Instance.new("TextButton") HideButton.Name = "HideButton" HideButton.Size = UDim2.new(0, 80, 0, 20) HideButton.Position = UDim2.new(1, -85, 0, 5) HideButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) HideButton.BorderSizePixel = 0 HideButton.TextColor3 = Color3.fromRGB(255, 255, 255) HideButton.Font = Enum.Font.SourceSans HideButton.TextSize = 14 HideButton.Text = "Hide" HideButton.Parent = TitleBar local ShowButton = Instance.new("TextButton") ShowButton.Name = "ShowButton" ShowButton.Size = UDim2.new(0, 80, 0, 20) ShowButton.Position = UDim2.new(1, -85, 0, 5) ShowButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) ShowButton.BorderSizePixel = 0 ShowButton.TextColor3 = Color3.fromRGB(255, 255, 255) ShowButton.Font = Enum.Font.SourceSans ShowButton.TextSize = 14 ShowButton.Text = "Show" ShowButton.Visible = false ShowButton.Parent = TitleBar local MiniButton = Instance.new("TextButton") MiniButton.Name = "MiniButton" MiniButton.Size = UDim2.new(0, 40, 0, 40) MiniButton.Position = UDim2.new(0, 10, 0, 10) MiniButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40) MiniButton.BorderSizePixel = 0 MiniButton.TextColor3 = Color3.fromRGB(255, 255, 255) MiniButton.Font = Enum.Font.SourceSansBold MiniButton.TextSize = 14 MiniButton.Text = "Show" MiniButton.Visible = false MiniButton.Parent = ScreenGui local StatsContainer = Instance.new("Frame") StatsContainer.Name = "StatsContainer" StatsContainer.Size = UDim2.new(1, 0, 0, 20) StatsContainer.Position = UDim2.new(0, 0, 0, 30) StatsContainer.BackgroundColor3 = Color3.fromRGB(50, 50, 50) StatsContainer.BorderSizePixel = 0 StatsContainer.Parent = MainFrame local FpsLabel = Instance.new("TextLabel") FpsLabel.Name = "FpsLabel" FpsLabel.Size = UDim2.new(0.5, -5, 1, 0) FpsLabel.Position = UDim2.new(0, 5, 0, 0) FpsLabel.BackgroundTransparency = 1 FpsLabel.TextColor3 = Color3.fromRGB(100, 255, 100) FpsLabel.Font = Enum.Font.SourceSans FpsLabel.TextSize = 14 FpsLabel.Text = "FPS: --" FpsLabel.TextXAlignment = Enum.TextXAlignment.Left FpsLabel.Parent = StatsContainer local PingLabel = Instance.new("TextLabel") PingLabel.Name = "PingLabel" PingLabel.Size = UDim2.new(0.5, -5, 1, 0) PingLabel.Position = UDim2.new(0.5, 0, 0, 0) PingLabel.BackgroundTransparency = 1 PingLabel.TextColor3 = Color3.fromRGB(100, 255, 100) PingLabel.Font = Enum.Font.SourceSans PingLabel.TextSize = 14 PingLabel.Text = "Ping: -- ms" PingLabel.TextXAlignment = Enum.TextXAlignment.Left PingLabel.Parent = StatsContainer local ProgressBar = Instance.new("Frame") ProgressBar.Name = "ProgressBar" ProgressBar.Size = UDim2.new(0.9, 0, 0, 20) ProgressBar.Position = UDim2.new(0.05, 0, 0.8, 0) ProgressBar.BackgroundColor3 = Color3.fromRGB(60, 60, 60) ProgressBar.BorderSizePixel = 0 ProgressBar.Parent = MainFrame local ProgressFill = Instance.new("Frame") ProgressFill.Name = "ProgressFill" ProgressFill.Size = UDim2.new(0, 0, 1, 0) ProgressFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255) ProgressFill.BorderSizePixel = 0 ProgressFill.Parent = ProgressBar local StatusText = Instance.new("TextLabel") StatusText.Name = "StatusText" StatusText.Size = UDim2.new(0.9, 0, 0, 20) StatusText.Position = UDim2.new(0.05, 0, 0.7, 0) StatusText.BackgroundTransparency = 1 StatusText.TextColor3 = Color3.fromRGB(255, 255, 255) StatusText.Font = Enum.Font.SourceSans StatusText.TextSize = 16 StatusText.Text = "Initializing..." StatusText.TextXAlignment = Enum.TextXAlignment.Left StatusText.Parent = MainFrame local CurrentAsset = Instance.new("TextLabel") CurrentAsset.Name = "CurrentAsset" CurrentAsset.Size = UDim2.new(0.9, 0, 0, 20) CurrentAsset.Position = UDim2.new(0.05, 0, 0.4, 0) CurrentAsset.BackgroundTransparency = 1 CurrentAsset.TextColor3 = Color3.fromRGB(200, 200, 200) CurrentAsset.Font = Enum.Font.SourceSans CurrentAsset.TextSize = 14 CurrentAsset.Text = "Loading..." CurrentAsset.TextXAlignment = Enum.TextXAlignment.Left CurrentAsset.TextWrapped = true CurrentAsset.Parent = MainFrame local AssetType = Instance.new("TextLabel") AssetType.Name = "AssetType" AssetType.Size = UDim2.new(0.9, 0, 0, 20) AssetType.Position = UDim2.new(0.05, 0, 0.5, 0) AssetType.BackgroundTransparency = 1 AssetType.TextColor3 = Color3.fromRGB(200, 200, 200) AssetType.Font = Enum.Font.SourceSans AssetType.TextSize = 14 AssetType.Text = "Type: -" AssetType.TextXAlignment = Enum.TextXAlignment.Left AssetType.Parent = MainFrame local CompleteText = Instance.new("TextLabel") CompleteText.Name = "CompleteText" CompleteText.Size = UDim2.new(0.9, 0, 0, 20) CompleteText.Position = UDim2.new(0.05, 0, 0.9, 0) CompleteText.BackgroundTransparency = 1 CompleteText.TextColor3 = Color3.fromRGB(100, 255, 100) CompleteText.Font = Enum.Font.SourceSansBold CompleteText.TextSize = 16 CompleteText.Text = "" CompleteText.Parent = MainFrame local FailedAssetsButton = Instance.new("TextButton") FailedAssetsButton.Name = "FailedAssetsButton" FailedAssetsButton.Size = UDim2.new(0, 150, 0, 20) FailedAssetsButton.Position = UDim2.new(0.05, 0, 0.6, 0) FailedAssetsButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) FailedAssetsButton.BorderSizePixel = 0 FailedAssetsButton.TextColor3 = Color3.fromRGB(255, 255, 255) FailedAssetsButton.Font = Enum.Font.SourceSans FailedAssetsButton.TextSize = 14 FailedAssetsButton.Text = "Show Failed Assets (0)" FailedAssetsButton.Visible = false FailedAssetsButton.Parent = MainFrame local FailedAssetsFrame = Instance.new("Frame") FailedAssetsFrame.Name = "FailedAssetsFrame" FailedAssetsFrame.Size = UDim2.new(0, 380, 0, 200) FailedAssetsFrame.Position = UDim2.new(0.5, -190, 0.5, -100) FailedAssetsFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50) FailedAssetsFrame.BorderSizePixel = 2 FailedAssetsFrame.BorderColor3 = Color3.fromRGB(100, 100, 100) FailedAssetsFrame.Visible = false FailedAssetsFrame.ZIndex = 10 FailedAssetsFrame.Parent = ScreenGui FailedAssetsFrame.Active = true FailedAssetsFrame.Draggable = true local FailedAssetsTitleBar = Instance.new("Frame") FailedAssetsTitleBar.Name = "FailedAssetsTitleBar" FailedAssetsTitleBar.Size = UDim2.new(1, 0, 0, 30) FailedAssetsTitleBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40) FailedAssetsTitleBar.BorderSizePixel = 0 FailedAssetsTitleBar.ZIndex = 11 FailedAssetsTitleBar.Parent = FailedAssetsFrame local FailedAssetsTitle = Instance.new("TextLabel") FailedAssetsTitle.Name = "FailedAssetsTitle" FailedAssetsTitle.Size = UDim2.new(1, -40, 1, 0) FailedAssetsTitle.Position = UDim2.new(0, 5, 0, 0) FailedAssetsTitle.BackgroundTransparency = 1 FailedAssetsTitle.TextColor3 = Color3.fromRGB(255, 100, 100) FailedAssetsTitle.Font = Enum.Font.SourceSansBold FailedAssetsTitle.TextSize = 16 FailedAssetsTitle.Text = "Failed to Load (0 assets)" FailedAssetsTitle.TextXAlignment = Enum.TextXAlignment.Left FailedAssetsTitle.ZIndex = 11 FailedAssetsTitle.Parent = FailedAssetsTitleBar local CloseFailedAssetsButton = Instance.new("TextButton") CloseFailedAssetsButton.Name = "CloseButton" CloseFailedAssetsButton.Size = UDim2.new(0, 30, 0, 20) CloseFailedAssetsButton.Position = UDim2.new(1, -35, 0, 5) CloseFailedAssetsButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) CloseFailedAssetsButton.BorderSizePixel = 0 CloseFailedAssetsButton.TextColor3 = Color3.fromRGB(255, 255, 255) CloseFailedAssetsButton.Font = Enum.Font.SourceSansBold CloseFailedAssetsButton.TextSize = 14 CloseFailedAssetsButton.Text = "X" CloseFailedAssetsButton.ZIndex = 11 CloseFailedAssetsButton.Parent = FailedAssetsTitleBar local FailedAssetsScrollingFrame = Instance.new("ScrollingFrame") FailedAssetsScrollingFrame.Name = "FailedAssetsScrollingFrame" FailedAssetsScrollingFrame.Size = UDim2.new(1, -10, 1, -40) FailedAssetsScrollingFrame.Position = UDim2.new(0, 5, 0, 35) FailedAssetsScrollingFrame.BackgroundTransparency = 1 FailedAssetsScrollingFrame.BorderSizePixel = 0 FailedAssetsScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0) FailedAssetsScrollingFrame.ScrollBarThickness = 8 FailedAssetsScrollingFrame.ZIndex = 11 FailedAssetsScrollingFrame.Parent = FailedAssetsFrame local totalAssets = 0 local loadedAssets = 0 local failedAssets = {} local currentProgress = 0 local startTime = 0 local isTimerRunning = false local elapsedTime = 0 local function getAssetType(asset) if typeof(asset) ~= "Instance" then return "URL content" end if asset:IsA("MeshPart") or asset:IsA("SpecialMesh") then return "3D Model" elseif asset:IsA("Texture") or asset:IsA("Decal") or asset:IsA("ImageLabel") then return "Texture/Image" elseif asset:IsA("Sound") then return "Sound" elseif asset:IsA("Animation") then return "Animation" elseif asset:IsA("Script") or asset:IsA("LocalScript") or asset:IsA("ModuleScript") then return "Script" elseif asset:IsA("GuiObject") then return "GUI Element" else return "Other: " .. asset.ClassName end end local function getAssetName(asset) if typeof(asset) ~= "Instance" then return tostring(asset) end local path = asset:GetFullName() if #path > 50 then path = "..." .. string.sub(path, -47) end return path end local function getAllAssets() local assets = {} local function addFilteredDescendants(object) for _, descendant in ipairs(object:GetDescendants()) do if descendant:IsA("MeshPart") or descendant:IsA("Texture") or descendant:IsA("Decal") or descendant:IsA("Sound") or descendant:IsA("ImageLabel") or descendant:IsA("Animation") then table.insert(assets, descendant) end end end addFilteredDescendants(workspace) addFilteredDescendants(ReplicatedStorage) local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if playerGui then addFilteredDescendants(playerGui) end return assets end local function getAllAssetsProfiled() local startTime = tick() local assets = {} local function addFilteredDescendants(object) for _, descendant in ipairs(object:GetDescendants()) do if descendant:IsA("MeshPart") or descendant:IsA("Texture") or descendant:IsA("Decal") or descendant:IsA("Sound") or descendant:IsA("ImageLabel") or descendant:IsA("Animation") then table.insert(assets, descendant) end end end addFilteredDescendants(workspace) addFilteredDescendants(ReplicatedStorage) local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if playerGui then addFilteredDescendants(playerGui) end local duration = tick() - startTime print("getAllAssets took " .. duration * 1000 .. " ms") return assets end local isHidden = false local function formatTime(seconds) local minutes = math.floor(seconds / 60) local remainingSeconds = math.floor(seconds % 60) return string.format("%d:%02d", minutes, remainingSeconds) end local function updateTimer() if not isTimerRunning then return end elapsedTime = tick() - startTime if isHidden then TimerLabel.Text = formatTime(elapsedTime) else TimerLabel.Text = "Time: " .. formatTime(elapsedTime) end end local function stopTimer() isTimerRunning = false if isHidden then TimerLabel.Text = formatTime(elapsedTime) else TimerLabel.Text = "Time: " .. formatTime(elapsedTime) end end local function startTimer() startTime = tick() isTimerRunning = true spawn(function() while isTimerRunning do updateTimer() wait(0.1) end end) end local function stopTimer() isTimerRunning = false if isHidden then TimerLabel.Text = formatTime(elapsedTime) else TimerLabel.Text = "Time: " .. formatTime(elapsedTime) end end local frameCount = 0 local lastTime = tick() local fps = 0 RunService.RenderStepped:Connect(function() frameCount = frameCount + 1 local currentTime = tick() local deltaTime = currentTime - lastTime if deltaTime >= 1 then fps = math.floor(frameCount / deltaTime) frameCount = 0 lastTime = currentTime FpsLabel.Text = "FPS: " .. fps if fps >= 45 then FpsLabel.TextColor3 = Color3.fromRGB(100, 255, 100) elseif fps >= 30 then FpsLabel.TextColor3 = Color3.fromRGB(255, 255, 100) else FpsLabel.TextColor3 = Color3.fromRGB(255, 100, 100) end local ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()) PingLabel.Text = "Ping: " .. ping .. " ms" if ping < 100 then PingLabel.TextColor3 = Color3.fromRGB(100, 255, 100) elseif ping < 200 then PingLabel.TextColor3 = Color3.fromRGB(255, 255, 100) else PingLabel.TextColor3 = Color3.fromRGB(255, 100, 100) end end end) local function hideGUI() MainFrame.Size = UDim2.new(0, 470, 0, 30) StatsContainer.Visible = false ProgressBar.Visible = false StatusText.Visible = false CurrentAsset.Visible = false AssetType.Visible = false CompleteText.Visible = false FailedAssetsButton.Visible = false ProgressInfo.Visible = true HideButton.Visible = false ShowButton.Visible = true TimerLabel.Position = UDim2.new(0.95, -100, 0, 0) TimerLabel.Visible = true TimerLabel.ZIndex = 12 ShowButton.ZIndex = 10 Title.Text = "Loading Tracker" isHidden = true TimerLabel.Text = formatTime(elapsedTime) end local function showGUI() MainFrame.Size = UDim2.new(0, 400, 0, 220) StatsContainer.Visible = true ProgressBar.Visible = true StatusText.Visible = true CurrentAsset.Visible = true AssetType.Visible = true CompleteText.Visible = true if #failedAssets > 0 then FailedAssetsButton.Visible = true end ProgressInfo.Visible = false HideButton.Visible = true ShowButton.Visible = false TimerLabel.Position = UDim2.new(0.9, -180, 0, 0) TimerLabel.Visible = true TimerLabel.ZIndex = 12 ShowButton.ZIndex = 10 Title.Text = "Loading Tracker" isHidden = false TimerLabel.Text = "Time: " .. formatTime(elapsedTime) end HideButton.MouseButton1Click:Connect(hideGUI) ShowButton.MouseButton1Click:Connect(showGUI) MiniButton.MouseButton1Click:Connect(showGUI) local function updateProgressInfo() local percent = math.floor(currentProgress * 100) ProgressInfo.Text = percent .. "% loaded (" .. loadedAssets .. " of " .. totalAssets .. ")" if percent < 30 then ProgressInfo.TextColor3 = Color3.fromRGB(255, 100, 100) elseif percent < 70 then ProgressInfo.TextColor3 = Color3.fromRGB(255, 255, 100) else ProgressInfo.TextColor3 = Color3.fromRGB(100, 255, 100) end end local function populateFailedAssetsList() failedAssets = failedAssets or {} for _, child in ipairs(FailedAssetsScrollingFrame:GetChildren()) do child:Destroy() end FailedAssetsTitle.Text = "Failed to Load (" .. #failedAssets .. " assets)" local yOffset = 0 for i, assetInfo in ipairs(failedAssets) do local item = Instance.new("Frame") item.Name = "FailedItem" .. i item.Size = UDim2.new(1, -10, 0, 80) item.Position = UDim2.new(0, 0, 0, yOffset) item.BackgroundColor3 = Color3.fromRGB(60, 60, 60) item.BorderSizePixel = 1 item.BorderColor3 = Color3.fromRGB(80, 80, 80) item.ZIndex = 12 item.Parent = FailedAssetsScrollingFrame local nameLabel = Instance.new("TextLabel") nameLabel.Name = "NameLabel" nameLabel.Size = UDim2.new(1, -10, 0, 20) nameLabel.Position = UDim2.new(0, 5, 0, 5) nameLabel.BackgroundTransparency = 1 nameLabel.TextColor3 = Color3.fromRGB(255, 200, 200) nameLabel.Font = Enum.Font.SourceSansSemibold nameLabel.TextSize = 14 nameLabel.Text = assetInfo.name nameLabel.TextXAlignment = Enum.TextXAlignment.Left nameLabel.TextWrapped = true nameLabel.ZIndex = 12 nameLabel.Parent = item local typeLabel = Instance.new("TextLabel") typeLabel.Name = "TypeLabel" typeLabel.Size = UDim2.new(1, -10, 0, 20) typeLabel.Position = UDim2.new(0, 5, 0, 25) typeLabel.BackgroundTransparency = 1 typeLabel.TextColor3 = Color3.fromRGB(200, 200, 200) typeLabel.Font = Enum.Font.SourceSans typeLabel.TextSize = 14 typeLabel.Text = "Type: " .. assetInfo.type typeLabel.TextXAlignment = Enum.TextXAlignment.Left typeLabel.ZIndex = 12 typeLabel.Parent = item if assetInfo.reason then local reasonLabel = Instance.new("TextLabel") reasonLabel.Name = "ReasonLabel" reasonLabel.Size = UDim2.new(1, -10, 0, 20) reasonLabel.Position = UDim2.new(0, 5, 0, 45) reasonLabel.BackgroundTransparency = 1 reasonLabel.TextColor3 = Color3.fromRGB(255, 150, 150) reasonLabel.Font = Enum.Font.SourceSans reasonLabel.TextSize = 14 reasonLabel.Text = "Reason: " .. assetInfo.reason reasonLabel.TextXAlignment = Enum.TextXAlignment.Left reasonLabel.ZIndex = 12 reasonLabel.Parent = item end yOffset = yOffset + 85 end FailedAssetsScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, yOffset) end FailedAssetsButton.MouseButton1Click:Connect(function() FailedAssetsButton.Text = "Show Failed Assets (" .. #failedAssets .. ")" populateFailedAssetsList() FailedAssetsFrame.Visible = true end) FailedAssetsButton.MouseButton1Click:Connect(function() populateFailedAssetsList() FailedAssetsFrame.Visible = true end) local knownAssets = {} local newAssetsFound = false local isMonitoringActive = true function continuousAssetLoader() local currentAssets = getAllAssets() for _, asset in ipairs(currentAssets) do local assetId = typeof(asset) == "Instance" and asset:GetFullName() or tostring(asset) knownAssets[assetId] = true end while isMonitoringActive do wait(2) local latestAssets = getAllAssets() newAssetsFound = false local newAssetsList = {} for _, asset in ipairs(latestAssets) do local assetId = typeof(asset) == "Instance" and asset:GetFullName() or tostring(asset) if not knownAssets[assetId] then knownAssets[assetId] = true newAssetsFound = true table.insert(newAssetsList, asset) end end if newAssetsFound and #newAssetsList > 0 then totalAssets = totalAssets + #newAssetsList StatusText.Text = "New assets found! Loading " .. totalAssets - loadedAssets .. " assets..." currentProgress = loadedAssets / totalAssets ProgressFill:TweenSize(UDim2.new(currentProgress, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2) updateProgressInfo() for _, asset in ipairs(newAssetsList) do local assetId = typeof(asset) == "Instance" and asset:GetFullName() or tostring(asset) if not _G.LoadedAssetIds or not _G.LoadedAssetIds[assetId] then spawn(function() CurrentAsset.Text = getAssetName(asset) AssetType.Text = "Type: " .. getAssetType(asset) local success, errorMsg = pcall(function() ContentProvider:PreloadAsync({asset}) end) if success then loadedAssets = loadedAssets + 1 if _G.LoadedAssetIds then _G.LoadedAssetIds[assetId] = true end else table.insert(failedAssets, { name = getAssetName(asset), type = getAssetType(asset), reason = errorMsg or "Unknown error" }) FailedAssetsButton.Text = "Show Failed Assets (" .. #failedAssets .. ")" FailedAssetsButton.Visible = true end currentProgress = loadedAssets / totalAssets ProgressFill:TweenSize(UDim2.new(currentProgress, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2) StatusText.Text = "Loaded " .. loadedAssets .. " of " .. totalAssets .. " (" .. math.floor(currentProgress * 100) .. "%)" updateProgressInfo() end) end end end end end function finishLoading() CurrentAsset.Text = "All assets processed" AssetType.Text = "Type: -" stopTimer() spawn(continuousAssetLoader) if #failedAssets > 0 then CompleteText.Text = "Loading complete with " .. #failedAssets .. " failures!" CompleteText.TextColor3 = Color3.fromRGB(255, 200, 100) FailedAssetsButton.Text = "Show Failed Assets (" .. #failedAssets .. ")" FailedAssetsButton.Visible = true else CompleteText.Text = "Loading complete!" CompleteText.TextColor3 = Color3.fromRGB(100, 255, 100) end delay(5, function() if #failedAssets == 0 then StatusText.Visible = false CurrentAsset.Visible = false AssetType.Visible = false if not ShowButton.Visible then -- MainFrame.Size = UDim2.new(0, 400, 0, 100) end end end) end game.Players.PlayerRemoving:Connect(function(player) if player == LocalPlayer then isMonitoringActive = false end end) local function startLoadingTracker() startTimer() StatusText.Text = "Analyzing assets..." local assets if type(getAllAssetsProfiled) == "function" then assets = getAllAssetsProfiled() elseif type(getAllAssets) == "function" then assets = getAllAssets() else local function getBasicAssets() local basicAssets = {} local function addFilteredDescendants(object) for _, descendant in ipairs(object:GetDescendants()) do if descendant:IsA("MeshPart") or descendant:IsA("Texture") or descendant:IsA("Decal") or descendant:IsA("Sound") or descendant:IsA("ImageLabel") or descendant:IsA("Animation") then table.insert(basicAssets, descendant) end end end addFilteredDescendants(workspace) addFilteredDescendants(ReplicatedStorage) local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if playerGui then addFilteredDescendants(playerGui) end return basicAssets end assets = getBasicAssets() print("Warning: Using basic asset collection") end totalAssets = #assets loadedAssets = 0 failedAssets = {} StatusText.Text = "Loading " .. totalAssets .. " assets..." if totalAssets == 0 then StatusText.Text = "No assets to load" ProgressFill:TweenSize(UDim2.new(1, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.5) CompleteText.Text = "Loading complete!" currentProgress = 1 updateProgressInfo() stopTimer() spawn(continuousAssetLoader) return end for _, asset in ipairs(assets) do local assetId = typeof(asset) == "Instance" and asset:GetFullName() or tostring(asset) if _G.LoadedAssetIds and _G.LoadedAssetIds[assetId] then loadedAssets = loadedAssets + 1 currentProgress = loadedAssets / totalAssets ProgressFill:TweenSize(UDim2.new(currentProgress, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2) StatusText.Text = "Loaded " .. loadedAssets .. " of " .. totalAssets .. " (" .. math.floor(currentProgress * 100) .. "%)" updateProgressInfo() else spawn(function() CurrentAsset.Text = getAssetName(asset) AssetType.Text = "Type: " .. getAssetType(asset) local success, errorMsg = pcall(function() ContentProvider:PreloadAsync({asset}) end) if success then loadedAssets = loadedAssets + 1 if _G.LoadedAssetIds then _G.LoadedAssetIds[assetId] = true end else table.insert(failedAssets, { name = getAssetName(asset), type = getAssetType(asset), reason = errorMsg or "Unknown error" }) FailedAssetsButton.Text = "Show Failed Assets (" .. #failedAssets .. ")" FailedAssetsButton.Visible = true end currentProgress = loadedAssets / totalAssets ProgressFill:TweenSize(UDim2.new(currentProgress, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2) StatusText.Text = "Loaded " .. loadedAssets .. " of " .. totalAssets .. " (" .. math.floor(currentProgress * 100) .. "%)" updateProgressInfo() if loadedAssets >= totalAssets then finishLoading() end end) end end end startLoadingTracker() UserInputService.InputBegan:Connect(function(input, gameProcessed) if not gameProcessed and input.KeyCode == Enum.KeyCode.L and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then if ShowButton.Visible then showGUI() else hideGUI() end end end)