local oldGui = game:GetService("CoreGui"):FindFirstChild("InventoryTrackerGui") if oldGui then oldGui:Destroy() end local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local HttpService = game:GetService("HttpService") local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "InventoryTrackerGui" ScreenGui.Parent = CoreGui ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local function styleCorner(parent, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius or 6) corner.Parent = parent end local currentMode = "Data" local activeTargetPlayer = nil local isViewingSnapshot = false local activeSnapshotData = nil local liveConnections = {} local playerTitleConnections = {} local rainbowElements = {} local shakingFrames = {} local SavesFrame = Instance.new("Frame") SavesFrame.Name = "SavesFrame" SavesFrame.Parent = ScreenGui SavesFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) SavesFrame.Position = UDim2.new(0.05, -165, 0.3, 0) SavesFrame.Size = UDim2.new(0, 160, 0, 320) SavesFrame.Active = true SavesFrame.Draggable = true styleCorner(SavesFrame, 8) local SavesTitle = Instance.new("TextLabel") SavesTitle.Parent = SavesFrame SavesTitle.Size = UDim2.new(1, 0, 0, 35) SavesTitle.BackgroundTransparency = 1 SavesTitle.Font = Enum.Font.SourceSansBold SavesTitle.Text = "SAVE SLOTS" SavesTitle.TextColor3 = Color3.fromRGB(240, 240, 240) SavesTitle.TextSize = 14 local SaveActionFrame = Instance.new("Frame") SaveActionFrame.Parent = SavesFrame SaveActionFrame.Size = UDim2.new(1, -10, 0, 25) SaveActionFrame.Position = UDim2.new(0, 5, 0, 35) SaveActionFrame.BackgroundTransparency = 1 local SaveCurrentBtn = Instance.new("TextButton") SaveCurrentBtn.Parent = SaveActionFrame SaveCurrentBtn.Size = UDim2.new(0.5, -2, 1, 0) SaveCurrentBtn.BackgroundColor3 = Color3.fromRGB(50, 120, 50) SaveCurrentBtn.Font = Enum.Font.SourceSansBold SaveCurrentBtn.Text = "SAVE CURRENT" SaveCurrentBtn.TextColor3 = Color3.fromRGB(255, 255, 255) SaveCurrentBtn.TextSize = 10 styleCorner(SaveCurrentBtn, 4) local ClearSlotBtn = Instance.new("TextButton") ClearSlotBtn.Parent = SaveActionFrame ClearSlotBtn.Size = UDim2.new(0.5, -2, 1, 0) ClearSlotBtn.Position = UDim2.new(0.5, 2, 0, 0) ClearSlotBtn.BackgroundColor3 = Color3.fromRGB(120, 50, 50) ClearSlotBtn.Font = Enum.Font.SourceSansBold ClearSlotBtn.Text = "CLEAR SLOT" ClearSlotBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ClearSlotBtn.TextSize = 10 styleCorner(ClearSlotBtn, 4) local SavesScroll = Instance.new("ScrollingFrame") SavesScroll.Parent = SavesFrame SavesScroll.BackgroundTransparency = 1 SavesScroll.Position = UDim2.new(0, 5, 0, 65) SavesScroll.Size = UDim2.new(1, -10, 1, -70) SavesScroll.CanvasSize = UDim2.new(0, 0, 0, 0) SavesScroll.ScrollBarThickness = 4 local SavesLayout = Instance.new("UIListLayout") SavesLayout.Parent = SavesScroll SavesLayout.SortOrder = Enum.SortOrder.LayoutOrder SavesLayout.Padding = UDim.new(0, 4) SavesLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() SavesScroll.CanvasSize = UDim2.new(0, 0, 0, SavesLayout.AbsoluteContentSize.Y) end) local ListFrame = Instance.new("Frame") ListFrame.Name = "ListFrame" ListFrame.Parent = ScreenGui ListFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) ListFrame.Position = UDim2.new(0.05, 0, 0.3, 0) ListFrame.Size = UDim2.new(0, 200, 0, 320) ListFrame.Active = true ListFrame.Draggable = true styleCorner(ListFrame, 8) local ListTitle = Instance.new("TextLabel") ListTitle.Parent = ListFrame ListTitle.Size = UDim2.new(1, 0, 0, 35) ListTitle.BackgroundTransparency = 1 ListTitle.Font = Enum.Font.SourceSansBold ListTitle.Text = "PLAYER LIST" ListTitle.TextColor3 = Color3.fromRGB(240, 240, 240) ListTitle.TextSize = 16 local PlayerScroll = Instance.new("ScrollingFrame") PlayerScroll.Parent = ListFrame PlayerScroll.BackgroundTransparency = 1 PlayerScroll.Position = UDim2.new(0, 5, 0, 40) PlayerScroll.Size = UDim2.new(1, -10, 1, -45) PlayerScroll.CanvasSize = UDim2.new(0, 0, 0, 0) PlayerScroll.ScrollBarThickness = 4 local PlayerLayout = Instance.new("UIListLayout") PlayerLayout.Parent = PlayerScroll PlayerLayout.SortOrder = Enum.SortOrder.Name PlayerLayout.Padding = UDim.new(0, 5) PlayerLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() PlayerScroll.CanvasSize = UDim2.new(0, 0, 0, PlayerLayout.AbsoluteContentSize.Y) end) local DetailFrame = Instance.new("Frame") DetailFrame.Name = "DetailFrame" DetailFrame.Parent = ScreenGui DetailFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) DetailFrame.Position = UDim2.new(0.05, 210, 0.3, 0) DetailFrame.Size = UDim2.new(0, 290, 0, 320) DetailFrame.Visible = false DetailFrame.Active = true DetailFrame.Draggable = true styleCorner(DetailFrame, 8) local UserLabel = Instance.new("TextLabel") UserLabel.Parent = DetailFrame UserLabel.Size = UDim2.new(1, -130, 0, 35) UserLabel.Position = UDim2.new(0, 10, 0, 0) UserLabel.BackgroundTransparency = 1 UserLabel.Font = Enum.Font.SourceSansBold UserLabel.Text = "Username's Data" UserLabel.TextColor3 = Color3.fromRGB(255, 255, 255) UserLabel.TextSize = 15 UserLabel.TextXAlignment = Enum.TextXAlignment.Left local SearchBar = Instance.new("TextBox") SearchBar.Name = "SearchBar" SearchBar.Parent = DetailFrame SearchBar.Size = UDim2.new(1, -10, 0, 25) SearchBar.Position = UDim2.new(0, 5, 0, 35) SearchBar.BackgroundColor3 = Color3.fromRGB(25, 25, 25) SearchBar.BorderSizePixel = 0 SearchBar.Font = Enum.Font.SourceSans SearchBar.PlaceholderText = "Search item or slot name..." SearchBar.Text = "" SearchBar.TextColor3 = Color3.fromRGB(255, 255, 255) SearchBar.PlaceholderColor3 = Color3.fromRGB(120, 120, 120) SearchBar.TextSize = 14 SearchBar.TextXAlignment = Enum.TextXAlignment.Left styleCorner(SearchBar, 4) local UIPadding = Instance.new("UIPadding") UIPadding.PaddingLeft = UDim.new(0, 8) UIPadding.Parent = SearchBar local ItemScroll = Instance.new("ScrollingFrame") ItemScroll.Parent = DetailFrame ItemScroll.BackgroundTransparency = 1 ItemScroll.Position = UDim2.new(0, 5, 0, 65) ItemScroll.Size = UDim2.new(1, -10, 1, -70) ItemScroll.CanvasSize = UDim2.new(0, 0, 0, 0) ItemScroll.ScrollBarThickness = 4 local ItemLayout = Instance.new("UIListLayout") ItemLayout.Parent = ItemScroll ItemLayout.SortOrder = Enum.SortOrder.LayoutOrder ItemLayout.Padding = UDim.new(0, 4) ItemLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() ItemScroll.CanvasSize = UDim2.new(0, 0, 0, ItemLayout.AbsoluteContentSize.Y) end) local CloseBtn = Instance.new("TextButton") CloseBtn.Parent = DetailFrame CloseBtn.Position = UDim2.new(1, -25, 0, 8) CloseBtn.Size = UDim2.new(0, 18, 0, 18) CloseBtn.BackgroundColor3 = Color3.fromRGB(150, 50, 50) CloseBtn.Font = Enum.Font.SourceSansBold CloseBtn.Text = "X" CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255) CloseBtn.TextSize = 11 styleCorner(CloseBtn, 9) local SwitchBtn = Instance.new("TextButton") SwitchBtn.Parent = DetailFrame SwitchBtn.Position = UDim2.new(1, -115, 0, 6) SwitchBtn.Size = UDim2.new(0, 85, 0, 22) SwitchBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) SwitchBtn.Font = Enum.Font.SourceSansBold SwitchBtn.Text = "SWITCH MODE" SwitchBtn.TextColor3 = Color3.fromRGB(255, 255, 255) SwitchBtn.TextSize = 11 styleCorner(SwitchBtn, 4) local function isFiltered(itemName) if string.find(itemName, "Tool") then return true end local badSuffixes = {"XY", "XZ", "YZ", "X", "Y", "Z"} for _, suffix in ipairs(badSuffixes) do if string.sub(itemName, -string.len(suffix)) == suffix then return true end end return false end local function getInventoryTemplateData(itemName) local localPlayer = Players.LocalPlayer if not localPlayer then return "", "" end local playerGui = localPlayer:FindFirstChildOfClass("PlayerGui") if playerGui then local blocksFrame = playerGui:FindFirstChild("BuildGui") and playerGui.BuildGui:FindFirstChild("InventoryFrame") and playerGui.BuildGui.InventoryFrame:FindFirstChild("ScrollingFrame") and playerGui.BuildGui.InventoryFrame.ScrollingFrame:FindFirstChild("BlocksFrame") if blocksFrame then local visualTemplate = blocksFrame:FindFirstChild(itemName) if visualTemplate then local typeIconId = "" local frameImageId = "" if visualTemplate:FindFirstChild("TypeIcon") and visualTemplate.TypeIcon:IsA("ImageLabel") then typeIconId = visualTemplate.TypeIcon.Image end if visualTemplate:IsA("ImageButton") then frameImageId = visualTemplate.Image end return typeIconId, frameImageId end end end return "", "" end local function updateLabelStyle(rowFrame, valueLabel, imagesList, value) local num = tonumber(value) or 0 valueLabel.TextStrokeTransparency = 1 rainbowElements[valueLabel] = nil shakingFrames[rowFrame] = nil for _, img in ipairs(imagesList) do rainbowElements[img] = nil end rowFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) if num >= 10000000 then rainbowElements[valueLabel] = "Text" shakingFrames[rowFrame] = true for _, img in ipairs(imagesList) do rainbowElements[img] = "Image" end elseif num < 10 then valueLabel.TextColor3 = Color3.fromRGB(0, 255, 100) elseif num >= 10 and num < 100 then valueLabel.TextColor3 = Color3.fromRGB(255, 220, 0) elseif num >= 100 and num < 1000 then valueLabel.TextColor3 = Color3.fromRGB(255, 50, 50) elseif num >= 1000 and num < 10000 then valueLabel.TextColor3 = Color3.fromRGB(180, 50, 255) elseif num >= 10000 and num < 100000 then valueLabel.TextColor3 = Color3.fromRGB(255, 120, 0) valueLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) valueLabel.TextStrokeTransparency = 0 elseif num >= 100000 and num < 1000000 then valueLabel.TextColor3 = Color3.fromRGB(0, 0, 0) valueLabel.TextStrokeColor3 = Color3.fromRGB(255, 255, 255) valueLabel.TextStrokeTransparency = 0 else rainbowElements[valueLabel] = "Text" end end task.spawn(function() local rng = Random.new() while task.wait() do local hue = (tick() % 1.5) / 1.5 local rainbowColor = Color3.fromHSV(hue, 0.85, 1) for element, mode in pairs(rainbowElements) do if element and element.Parent then if mode == "Text" then element.TextColor3 = rainbowColor elseif mode == "Image" then element.ImageColor3 = rainbowColor end end end for frame, isActive in pairs(shakingFrames) do if frame and frame.Parent then local offsetX = rng:NextNumber(-1.5, 1.5) local offsetY = rng:NextNumber(-1.5, 1.5) frame.Position = UDim2.new(0, offsetX, 0, offsetY) end end end end) local function updatePlayerDataDisplays(player, titleLabel, countLabel) rainbowElements[titleLabel] = nil titleLabel.TextStrokeTransparency = 1 local dataFolder = player:FindFirstChild("Data") if not dataFolder then countLabel.Text = "[Items: 0]" titleLabel.Text = "[No Data]" titleLabel.TextColor3 = Color3.fromRGB(150, 150, 150) return end local totalItems = 0 for _, child in ipairs(dataFolder:GetChildren()) do if child:IsA("ValueBase") and not string.find(string.lower(child.Name), "gold") then totalItems = totalItems + (tonumber(child.Value) or 0) end end countLabel.Text = string.format("[Items: %s]", string.format("%.0f", totalItems):reverse():gsub("(%d%d%d)","%1,"):reverse():gsub("^,","")) if totalItems < 100 then titleLabel.Text = "Starter" titleLabel.TextColor3 = Color3.fromRGB(160, 160, 160) elseif totalItems >= 100 and totalItems < 1000 then titleLabel.Text = "Little Pro" titleLabel.TextColor3 = Color3.fromRGB(0, 230, 100) elseif totalItems >= 1000 and totalItems < 5000 then titleLabel.Text = "Pro" titleLabel.TextColor3 = Color3.fromRGB(255, 230, 0) elseif totalItems >= 5000 and totalItems < 20000 then titleLabel.Text = "Very Pro" titleLabel.TextColor3 = Color3.fromRGB(255, 50, 50) elseif totalItems >= 20000 and totalItems < 100000 then titleLabel.Text = "Serious Pro" titleLabel.TextColor3 = Color3.fromRGB(170, 50, 255) elseif totalItems >= 100000 and totalItems < 1000000 then titleLabel.Text = "OG" titleLabel.TextColor3 = Color3.fromRGB(255, 120, 0) titleLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) titleLabel.TextStrokeTransparency = 0 elseif totalItems >= 1000000 and totalItems < 10000000 then titleLabel.Text = "Hacker" titleLabel.TextColor3 = Color3.fromRGB(0, 255, 100) titleLabel.TextStrokeColor3 = Color3.fromRGB(255, 255, 255) titleLabel.TextStrokeTransparency = 0 elseif totalItems >= 10000000 then titleLabel.Text = "GOD" rainbowElements[titleLabel] = "Text" end end local function setupRankTracking(player, titleLabel, countLabel) if playerTitleConnections[player.Name] then for _, c in ipairs(playerTitleConnections[player.Name]) do c:Disconnect() end end playerTitleConnections[player.Name] = {} local function watchDataFolder() local dataFolder = player:FindFirstChild("Data") if dataFolder then local function hookItems() updatePlayerDataDisplays(player, titleLabel, countLabel) for _, item in ipairs(dataFolder:GetChildren()) do if item:IsA("ValueBase") then local ev = item.Changed:Connect(function() updatePlayerDataDisplays(player, titleLabel, countLabel) end) table.insert(playerTitleConnections[player.Name], ev) end end end hookItems() local chAdded = dataFolder.ChildAdded:Connect(function() task.wait(0.1) hookItems() end) table.insert(playerTitleConnections[player.Name], chAdded) end end watchDataFolder() local folderAdded = player.ChildAdded:Connect(function(child) if child.Name == "Data" then watchDataFolder() end end) table.insert(playerTitleConnections[player.Name], folderAdded) end local function clearInventoryConnections() for _, connection in ipairs(liveConnections) do connection:Disconnect() end liveConnections = {} for frame, _ in pairs(shakingFrames) do shakingFrames[frame] = nil end for _, child in ipairs(ItemScroll:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end end local function filterVisibleItems() local searchText = string.lower(SearchBar.Text) for _, child in ipairs(ItemScroll:GetChildren()) do if child:IsA("Frame") then local targetNameLabel = child:FindFirstChild("ItemNameLabel") if targetNameLabel then local labelText = string.lower(targetNameLabel.Text) if string.find(labelText, searchText) then child.Visible = true else child.Visible = false end end end end end SearchBar:GetPropertyChangedSignal("Text"):Connect(filterVisibleItems) CloseBtn.MouseButton1Click:Connect(function() DetailFrame.Visible = false clearInventoryConnections() activeTargetPlayer = nil isViewingSnapshot = false activeSnapshotData = nil SearchBar.Text = "" end) local function loadPlayerDataDisplay(targetPlayer) clearInventoryConnections() activeTargetPlayer = targetPlayer isViewingSnapshot = false activeSnapshotData = nil DetailFrame.Visible = true if currentMode == "Data" then UserLabel.Text = targetPlayer.Name .. "'s Data" local dataFolder = targetPlayer:WaitForChild("Data", 5) if not dataFolder then return end local function renderItemRow(item) if not item:IsA("ValueBase") then return end if isFiltered(item.Name) then return end local ContainerFrame = Instance.new("Frame") ContainerFrame.Name = item.Name ContainerFrame.Parent = ItemScroll ContainerFrame.Size = UDim2.new(1, 0, 0, 32) ContainerFrame.BackgroundTransparency = 1 local RowFrame = Instance.new("Frame") RowFrame.Name = "RowFrame" RowFrame.Parent = ContainerFrame RowFrame.Size = UDim2.new(1, 0, 1, 0) RowFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) styleCorner(RowFrame, 4) local typeIconAsset, frameButtonAsset = getInventoryTemplateData(item.Name) local ButtonDecal = Instance.new("ImageLabel") ButtonDecal.Parent = RowFrame ButtonDecal.Size = UDim2.new(0, 24, 0, 24) ButtonDecal.Position = UDim2.new(0, 6, 0, 4) ButtonDecal.BackgroundTransparency = 1 ButtonDecal.Image = frameButtonAsset ~= "" and frameButtonAsset or "rbxassetid://12328114032" local TypeDecal = Instance.new("ImageLabel") TypeDecal.Parent = RowFrame TypeDecal.Size = UDim2.new(0, 24, 0, 24) TypeDecal.Position = UDim2.new(0, 34, 0, 4) TypeDecal.BackgroundTransparency = 1 TypeDecal.Image = typeIconAsset ~= "" and typeIconAsset or "rbxassetid://12328114032" local NameLabel = Instance.new("TextLabel") NameLabel.Name = "ItemNameLabel" NameLabel.Parent = RowFrame NameLabel.Size = UDim2.new(0.5, -65, 1, 0) NameLabel.Position = UDim2.new(0, 65, 0, 0) NameLabel.BackgroundTransparency = 1 NameLabel.Font = Enum.Font.SourceSans NameLabel.Text = item.Name NameLabel.TextColor3 = Color3.fromRGB(220, 220, 220) NameLabel.TextSize = 14 NameLabel.TextXAlignment = Enum.TextXAlignment.Left local ValueLabel = Instance.new("TextLabel") ValueLabel.Parent = RowFrame ValueLabel.Size = UDim2.new(0.4, -10, 1, 0) ValueLabel.Position = UDim2.new(0.6, 0, 0, 0) ValueLabel.BackgroundTransparency = 1 ValueLabel.Font = Enum.Font.SourceSansBold ValueLabel.Text = tostring(item.Value) ValueLabel.TextSize = 14 ValueLabel.TextXAlignment = Enum.TextXAlignment.Right local monitoredImages = {ButtonDecal, TypeDecal} updateLabelStyle(RowFrame, ValueLabel, monitoredImages, item.Value) local changeEvent = item.Changed:Connect(function(newValue) ValueLabel.Text = tostring(newValue) updateLabelStyle(RowFrame, ValueLabel, monitoredImages, newValue) end) table.insert(liveConnections, changeEvent) local searchText = string.lower(SearchBar.Text) if searchText ~= "" and not string.find(string.lower(item.Name), searchText) then ContainerFrame.Visible = false end end for _, item in ipairs(dataFolder:GetChildren()) do renderItemRow(item) end local childAddedEvent = dataFolder.ChildAdded:Connect(function(newItem) renderItemRow(newItem) end) table.insert(liveConnections, childAddedEvent) elseif currentMode == "OtherData" then UserLabel.Text = targetPlayer.Name .. "'s Slots" local otherDataFolder = targetPlayer:WaitForChild("OtherData", 5) if not otherDataFolder then return end local function renderSlotRow(item) if not string.match(item.Name, "^NameOfSlot%d*$") then return end local numStr = string.match(item.Name, "%d+$") local numValue = numStr and tonumber(numStr) or 1 local ContainerFrame = Instance.new("Frame") ContainerFrame.Name = item.Name ContainerFrame.Parent = ItemScroll ContainerFrame.Size = UDim2.new(1, 0, 0, 32) ContainerFrame.BackgroundTransparency = 1 ContainerFrame.LayoutOrder = numValue local RowFrame = Instance.new("Frame") RowFrame.Name = "RowFrame" RowFrame.Parent = ContainerFrame RowFrame.Size = UDim2.new(1, 0, 1, 0) RowFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) styleCorner(RowFrame, 4) local dynamicDisplayName = "Slot Name" if numValue > 1 then dynamicDisplayName = "Slot Name " .. tostring(numValue) end local NameLabel = Instance.new("TextLabel") NameLabel.Name = "ItemNameLabel" NameLabel.Parent = RowFrame NameLabel.Size = UDim2.new(0.5, 0, 1, 0) NameLabel.Position = UDim2.new(0, 10, 0, 0) NameLabel.BackgroundTransparency = 1 NameLabel.Font = Enum.Font.SourceSans NameLabel.Text = dynamicDisplayName NameLabel.TextColor3 = Color3.fromRGB(220, 220, 220) NameLabel.TextSize = 14 NameLabel.TextXAlignment = Enum.TextXAlignment.Left local ValueLabel = Instance.new("TextLabel") ValueLabel.Parent = RowFrame ValueLabel.Size = UDim2.new(0.5, -10, 1, 0) ValueLabel.Position = UDim2.new(0.5, 0, 0, 0) ValueLabel.BackgroundTransparency = 1 ValueLabel.Font = Enum.Font.SourceSansBold ValueLabel.Text = tostring(item.Value) ValueLabel.TextSize = 14 ValueLabel.TextXAlignment = Enum.TextXAlignment.Right updateLabelStyle(RowFrame, ValueLabel, {}, item.Value) local changeEvent = item.Changed:Connect(function(newValue) ValueLabel.Text = tostring(newValue) updateLabelStyle(RowFrame, ValueLabel, {}, newValue) end) table.insert(liveConnections, changeEvent) local searchText = string.lower(SearchBar.Text) if searchText ~= "" and not string.find(string.lower(dynamicDisplayName), searchText) then ContainerFrame.Visible = false end end for _, item in ipairs(otherDataFolder:GetChildren()) do renderSlotRow(item) end local childAddedEvent = otherDataFolder.ChildAdded:Connect(function(newItem) renderSlotRow(newItem) end) table.insert(liveConnections, childAddedEvent) end end local function loadSnapshotDataDisplay(snapshotData) clearInventoryConnections() isViewingSnapshot = true activeSnapshotData = snapshotData DetailFrame.Visible = true if currentMode == "Data" then UserLabel.Text = "[Saved] " .. snapshotData.Username .. "'s Data" local itemsList = snapshotData.Data or {} for itemName, itemValue in pairs(itemsList) do local ContainerFrame = Instance.new("Frame") ContainerFrame.Name = itemName ContainerFrame.Parent = ItemScroll ContainerFrame.Size = UDim2.new(1, 0, 0, 32) ContainerFrame.BackgroundTransparency = 1 local RowFrame = Instance.new("Frame") RowFrame.Name = "RowFrame" RowFrame.Parent = ContainerFrame RowFrame.Size = UDim2.new(1, 0, 1, 0) RowFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) styleCorner(RowFrame, 4) local typeIconAsset, frameButtonAsset = getInventoryTemplateData(itemName) local ButtonDecal = Instance.new("ImageLabel") ButtonDecal.Parent = RowFrame ButtonDecal.Size = UDim2.new(0, 24, 0, 24) ButtonDecal.Position = UDim2.new(0, 6, 0, 4) ButtonDecal.BackgroundTransparency = 1 ButtonDecal.Image = frameButtonAsset ~= "" and frameButtonAsset or "rbxassetid://12328114032" local TypeDecal = Instance.new("ImageLabel") TypeDecal.Parent = RowFrame TypeDecal.Size = UDim2.new(0, 24, 0, 24) TypeDecal.Position = UDim2.new(0, 34, 0, 4) TypeDecal.BackgroundTransparency = 1 TypeDecal.Image = typeIconAsset ~= "" and typeIconAsset or "rbxassetid://12328114032" local NameLabel = Instance.new("TextLabel") NameLabel.Name = "ItemNameLabel" NameLabel.Parent = RowFrame NameLabel.Size = UDim2.new(0.5, -65, 1, 0) NameLabel.Position = UDim2.new(0, 65, 0, 0) NameLabel.BackgroundTransparency = 1 NameLabel.Font = Enum.Font.SourceSans NameLabel.Text = itemName NameLabel.TextColor3 = Color3.fromRGB(220, 220, 220) NameLabel.TextSize = 14 NameLabel.TextXAlignment = Enum.TextXAlignment.Left local ValueLabel = Instance.new("TextLabel") ValueLabel.Parent = RowFrame ValueLabel.Size = UDim2.new(0.4, -10, 1, 0) ValueLabel.Position = UDim2.new(0.6, 0, 0, 0) ValueLabel.BackgroundTransparency = 1 ValueLabel.Font = Enum.Font.SourceSansBold ValueLabel.Text = tostring(itemValue) ValueLabel.TextSize = 14 ValueLabel.TextXAlignment = Enum.TextXAlignment.Right updateLabelStyle(RowFrame, ValueLabel, {ButtonDecal, TypeDecal}, itemValue) local searchText = string.lower(SearchBar.Text) if searchText ~= "" and not string.find(string.lower(itemName), searchText) then ContainerFrame.Visible = false end end elseif currentMode == "OtherData" then UserLabel.Text = "[Saved] " .. snapshotData.Username .. "'s Slots" local slotsList = snapshotData.OtherData or {} for slotName, slotValue in pairs(slotsList) do local numStr = string.match(slotName, "%d+$") local numValue = numStr and tonumber(numStr) or 1 local ContainerFrame = Instance.new("Frame") ContainerFrame.Name = slotName ContainerFrame.Parent = ItemScroll ContainerFrame.Size = UDim2.new(1, 0, 0, 32) ContainerFrame.BackgroundTransparency = 1 ContainerFrame.LayoutOrder = numValue local RowFrame = Instance.new("Frame") RowFrame.Name = "RowFrame" RowFrame.Parent = ContainerFrame RowFrame.Size = UDim2.new(1, 0, 1, 0) RowFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) styleCorner(RowFrame, 4) local dynamicDisplayName = "Slot Name" if numValue > 1 then dynamicDisplayName = "Slot Name " .. tostring(numValue) end local NameLabel = Instance.new("TextLabel") NameLabel.Name = "ItemNameLabel" NameLabel.Parent = RowFrame NameLabel.Size = UDim2.new(0.5, 0, 1, 0) NameLabel.Position = UDim2.new(0, 10, 0, 0) NameLabel.BackgroundTransparency = 1 NameLabel.Font = Enum.Font.SourceSans NameLabel.Text = dynamicDisplayName NameLabel.TextColor3 = Color3.fromRGB(220, 220, 220) NameLabel.TextSize = 14 NameLabel.TextXAlignment = Enum.TextXAlignment.Left local ValueLabel = Instance.new("TextLabel") ValueLabel.Parent = RowFrame ValueLabel.Size = UDim2.new(0.5, -10, 1, 0) ValueLabel.Position = UDim2.new(0.5, 0, 0, 0) ValueLabel.BackgroundTransparency = 1 ValueLabel.Font = Enum.Font.SourceSansBold ValueLabel.Text = tostring(slotValue) ValueLabel.TextSize = 14 ValueLabel.TextXAlignment = Enum.TextXAlignment.Right updateLabelStyle(RowFrame, ValueLabel, {}, slotValue) local searchText = string.lower(SearchBar.Text) if searchText ~= "" and not string.find(string.lower(dynamicDisplayName), searchText) then ContainerFrame.Visible = false end end end end SwitchBtn.MouseButton1Click:Connect(function() if currentMode == "Data" then currentMode = "OtherData" else currentMode = "Data" end if isViewingSnapshot and activeSnapshotData then loadSnapshotDataDisplay(activeSnapshotData) elseif activeTargetPlayer then loadPlayerDataDisplay(activeTargetPlayer) end end) local function addPlayerButton(player) if PlayerScroll:FindFirstChild(player.Name) then return end local Container = Instance.new("Frame") Container.Name = player.Name Container.Parent = PlayerScroll Container.Size = UDim2.new(1, 0, 0, 52) Container.BackgroundColor3 = Color3.fromRGB(45, 45, 45) styleCorner(Container, 4) local Btn = Instance.new("TextButton") Btn.Size = UDim2.new(1, 0, 1, 0) Btn.BackgroundTransparency = 1 Btn.Text = "" Btn.Parent = Container local CountLabel = Instance.new("TextLabel") CountLabel.Parent = Container CountLabel.Size = UDim2.new(1, -10, 0, 15) CountLabel.Position = UDim2.new(0, 8, 0, 4) CountLabel.BackgroundTransparency = 1 CountLabel.Font = Enum.Font.SourceSansBold CountLabel.Text = "[Items: Calculating...]" CountLabel.TextColor3 = Color3.fromRGB(180, 180, 180) CountLabel.TextSize = 11 CountLabel.TextXAlignment = Enum.TextXAlignment.Left local NameLabel = Instance.new("TextLabel") NameLabel.Parent = Container NameLabel.Size = UDim2.new(1, -10, 0, 16) NameLabel.Position = UDim2.new(0, 8, 0, 18) NameLabel.BackgroundTransparency = 1 NameLabel.Font = Enum.Font.SourceSansBold NameLabel.Text = player.Name NameLabel.TextColor3 = Color3.fromRGB(255, 255, 255) NameLabel.TextSize = 13 NameLabel.TextXAlignment = Enum.TextXAlignment.Left local TitleLabel = Instance.new("TextLabel") TitleLabel.Name = "RankTitle" TitleLabel.Parent = Container TitleLabel.Size = UDim2.new(1, -10, 0, 15) TitleLabel.Position = UDim2.new(0, 8, 0, 33) TitleLabel.BackgroundTransparency = 1 TitleLabel.Font = Enum.Font.SourceSansBold TitleLabel.Text = "Calculating..." TitleLabel.TextColor3 = Color3.fromRGB(150, 150, 150) TitleLabel.TextSize = 12 TitleLabel.TextXAlignment = Enum.TextXAlignment.Left Btn.MouseButton1Click:Connect(function() loadPlayerDataDisplay(player) end) setupRankTracking(player, TitleLabel, CountLabel) end local function removePlayerButton(player) local Frame = PlayerScroll:FindFirstChild(player.Name) if Frame then Frame:Destroy() end if playerTitleConnections[player.Name] then for _, c in ipairs(playerTitleConnections[player.Name]) do c:Disconnect() end playerTitleConnections[player.Name] = nil end if activeTargetPlayer == player and not isViewingSnapshot then DetailFrame.Visible = false clearInventoryConnections() activeTargetPlayer = nil SearchBar.Text = "" end end local activeSelectedSlotIndex = nil local initializedSlots = {} -- HARD DRIVE SYSTEM REGISTRY local function secureWriteStorage(fileName, payloadString) pcall(function() if writefile then writefile(fileName .. ".txt", payloadString) end end) end local function secureReadStorage(fileName) local success, content = pcall(function() if readfile and isfile and isfile(fileName .. ".txt") then return readfile(fileName .. ".txt") end end) return success and content or nil end local function loadFullSlotSystemRegistry() for index = 1, 20 do local SlotCardFrame = Instance.new("Frame") SlotCardFrame.Name = "Slot" .. tostring(index) SlotCardFrame.Parent = SavesScroll SlotCardFrame.Size = UDim2.new(1, 0, 0, 30) SlotCardFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) SlotCardFrame.LayoutOrder = index styleCorner(SlotCardFrame, 4) local SelectionButton = Instance.new("TextButton") SelectionButton.Size = UDim2.new(1, 0, 1, 0) SelectionButton.BackgroundTransparency = 1 SelectionButton.Font = Enum.Font.SourceSansBold SelectionButton.Text = "Slot " .. tostring(index) .. ": [Empty]" SelectionButton.TextColor3 = Color3.fromRGB(160, 160, 160) SelectionButton.TextSize = 11 SelectionButton.Parent = SlotCardFrame initializedSlots[index] = {Frame = SlotCardFrame, Button = SelectionButton, LoadedData = nil} local encryptedPayload = secureReadStorage("Tracker_SaveSlot_" .. tostring(index)) if encryptedPayload and encryptedPayload ~= "" then pcall(function() local parsedJson = HttpService:JSONDecode(encryptedPayload) if parsedJson and parsedJson.Username then initializedSlots[index].LoadedData = parsedJson SelectionButton.Text = "Slot " .. tostring(index) .. ": " .. parsedJson.Username SelectionButton.TextColor3 = Color3.fromRGB(100, 200, 255) end end) end SelectionButton.MouseButton1Click:Connect(function() if activeSelectedSlotIndex and initializedSlots[activeSelectedSlotIndex] then initializedSlots[activeSelectedSlotIndex].Frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) end activeSelectedSlotIndex = index SlotCardFrame.BackgroundColor3 = Color3.fromRGB(70, 70, 120) if initializedSlots[index].LoadedData then loadSnapshotDataDisplay(initializedSlots[index].LoadedData) end end) end end SaveCurrentBtn.MouseButton1Click:Connect(function() if not activeSelectedSlotIndex then return end if isViewingSnapshot or not activeTargetPlayer then return end local primaryDataFolder = activeTargetPlayer:FindFirstChild("Data") local alternativeDataFolder = activeTargetPlayer:FindFirstChild("OtherData") if not primaryDataFolder and not alternativeDataFolder then return end local capturedPayloadSnapshot = { Username = activeTargetPlayer.Name, Data = {}, OtherData = {} } if primaryDataFolder then for _, child in ipairs(primaryDataFolder:GetChildren()) do if child:IsA("ValueBase") and not isFiltered(child.Name) then capturedPayloadSnapshot.Data[child.Name] = child.Value end end end if alternativeDataFolder then for _, child in ipairs(alternativeDataFolder:GetChildren()) do if child:IsA("ValueBase") and string.match(child.Name, "^NameOfSlot%d*$") then capturedPayloadSnapshot.OtherData[child.Name] = child.Value end end end local serializedString = HttpService:JSONEncode(capturedPayloadSnapshot) secureWriteStorage("Tracker_SaveSlot_" .. tostring(activeSelectedSlotIndex), serializedString) initializedSlots[activeSelectedSlotIndex].LoadedData = capturedPayloadSnapshot initializedSlots[activeSelectedSlotIndex].Button.Text = "Slot " .. tostring(activeSelectedSlotIndex) .. ": " .. activeTargetPlayer.Name initializedSlots[activeSelectedSlotIndex].Button.TextColor3 = Color3.fromRGB(100, 200, 255) loadSnapshotDataDisplay(capturedPayloadSnapshot) end) ClearSlotBtn.MouseButton1Click:Connect(function() if not activeSelectedSlotIndex then return end pcall(function() if delfile and isfile and isfile("Tracker_SaveSlot_" .. tostring(activeSelectedSlotIndex) .. ".txt") then delfile("Tracker_SaveSlot_" .. tostring(activeSelectedSlotIndex) .. ".txt") else secureWriteStorage("Tracker_SaveSlot_" .. tostring(activeSelectedSlotIndex), "") end end) initializedSlots[activeSelectedSlotIndex].LoadedData = nil initializedSlots[activeSelectedSlotIndex].Button.Text = "Slot " .. tostring(activeSelectedSlotIndex) .. ": [Empty]" initializedSlots[activeSelectedSlotIndex].Button.TextColor3 = Color3.fromRGB(160, 160, 160) if isViewingSnapshot then DetailFrame.Visible = false clearInventoryConnections() isViewingSnapshot = false activeSnapshotData = nil SearchBar.Text = "" end end) loadFullSlotSystemRegistry() for _, p in ipairs(Players:GetPlayers()) do addPlayerButton(p) end Players.PlayerAdded:Connect(addPlayerButton) Players.PlayerRemoving:Connect(removePlayerButton)