--[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/client.lua?s=68db0f08558791c27b8a47b6"))() end) end) --[[rscripts:analytics:end]] _G.ItemESPSettings = _G.ItemESPSettings or { ["enabled"] = true, ["max_distance"] = 500, ["text_color"] = Color3.fromRGB(255, 255, 0), ["text_size"] = 12 } local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local CoreGui = game:GetService("CoreGui") local ItemESPObjects = {} local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "ItemESP" ScreenGui.Parent = CoreGui local function createItemESP(item) local esp = {} esp.name = Instance.new("TextLabel") esp.name.Size = UDim2.fromOffset(200, 20) esp.name.BackgroundTransparency = 1 esp.name.TextColor3 = Color3.fromRGB(255, 255, 0) esp.name.TextStrokeTransparency = 0 esp.name.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) esp.name.Font = Enum.Font.Code esp.name.TextSize = 12 esp.name.TextXAlignment = Enum.TextXAlignment.Center esp.name.Visible = false esp.name.Parent = ScreenGui ItemESPObjects[item] = esp end local function updateItemESP() if not _G.ItemESPSettings.enabled then for _, esp in pairs(ItemESPObjects) do esp.name.Visible = false end return end for item, esp in pairs(ItemESPObjects) do if not item or not item.Parent or not item.Parent.Parent then esp.name:Destroy() ItemESPObjects[item] = nil end end for item, esp in pairs(ItemESPObjects) do if item and item.Parent and item.Parent.Parent then local itemPos if item:IsA("Model") then if item.PrimaryPart then itemPos = item.PrimaryPart.Position elseif item:FindFirstChildOfClass("BasePart") then itemPos = item:FindFirstChildOfClass("BasePart").Position end elseif item:IsA("BasePart") then itemPos = item.Position end if itemPos and LocalPlayer.Character and LocalPlayer.Character.HumanoidRootPart then local distance = (LocalPlayer.Character.HumanoidRootPart.Position - itemPos).Magnitude if distance <= _G.ItemESPSettings.max_distance then local vector, onScreen = Camera:WorldToViewportPoint(itemPos) if onScreen then esp.name.Text = item.Name .. " [" .. math.floor(distance) .. "m]" esp.name.Position = UDim2.fromOffset(vector.X - 100, vector.Y - 10) esp.name.TextColor3 = _G.ItemESPSettings.text_color esp.name.TextSize = _G.ItemESPSettings.text_size esp.name.Visible = true else esp.name.Visible = false end else esp.name.Visible = false end else esp.name.Visible = false end else esp.name.Visible = false end end end local function scanAllItems() local itemsFolder = workspace:FindFirstChild("Items") if itemsFolder then for _, item in pairs(itemsFolder:GetChildren()) do if (item:IsA("Model") or item:IsA("BasePart")) and not ItemESPObjects[item] then createItemESP(item) end end end local charactersFolder = workspace:FindFirstChild("Characters") if charactersFolder then for _, item in pairs(charactersFolder:GetChildren()) do if (item:IsA("Model") or item:IsA("BasePart")) and not ItemESPObjects[item] then createItemESP(item) end end end end scanAllItems() RunService.Heartbeat:Connect(updateItemESP)