local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Parent = player:WaitForChild("PlayerGui")
local markers = {}
local trackedHerbs = {}
local function createMarker(herbName)
local marker = Instance.new("Frame")
marker.Name = "HerbMarker_" .. herbName
marker.BackgroundTransparency = 1
marker.Size = UDim2.new(0, 50, 0, 50)
marker.ZIndex = 10
marker.AnchorPoint = Vector2.new(0.5, 0.5)
local outline = Instance.new("Frame")
outline.Size = UDim2.new(1, 0, 1, 0)
outline.BackgroundTransparency = 1
outline.BorderSizePixel = 3
outline.BorderColor3 = Color3.new(1, 0, 0)
outline.BorderMode = Enum.BorderMode.Outline
outline.Parent = marker
local crosshairX = Instance.new("Frame")
crosshairX.Size = UDim2.new(1, 0, 0, 2)
crosshairX.Position = UDim2.new(0, 0, 0.5, -1)
crosshairX.BackgroundColor3 = Color3.new(1, 0, 0)
crosshairX.BorderSizePixel = 0
crosshairX.Parent = marker
local crosshairY = Instance.new("Frame")
crosshairY.Size = UDim2.new(0, 2, 1, 0)
crosshairY.Position = UDim2.new(0.5, -1, 0, 0)
crosshairY.BackgroundColor3 = Color3.new(1, 0, 0)
crosshairY.BorderSizePixel = 0
crosshairY.Parent = marker
local label = Instance.new("TextLabel")
label.Size = UDim2.new(2, 0, 0, 20)
label.Position = UDim2.new(0.5, 0, 1, 5)
label.AnchorPoint = Vector2.new(0.5, 0)
label.BackgroundTransparency = 1
label.Text = herbName
label.TextColor3 = Color3.new(1, 0, 0)
label.TextStrokeColor3 = Color3.new(0, 0, 0)
label.TextStrokeTransparency = 0
label.TextSize = 14
label.Font = Enum.Font.GothamBold
label.Parent = marker
marker.Parent = ScreenGui
return marker
end
local function updateMarkers()
local character = player.Character
if not character then
for _, marker in pairs(markers) do
if marker then
marker.Visible = false
end
end
trackedHerbs = {}
return
end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local herbsContainer = workspace:FindFirstChild("Herbs")
if not herbsContainer then
for _, marker in pairs(markers) do
if marker then
marker.Visible = false
end
end
trackedHerbs = {}
return
end
local currentHerbs = {}
local markerIndex = 1
for _, herb in ipairs(herbsContainer:GetDescendants()) do
if herb:IsA("ProximityPrompt") and herb.Parent then
local herbPart = herb.Parent
local herbId = herbPart:GetFullName()
currentHerbs[herbId] = true
if not trackedHerbs[herbId] then
trackedHerbs[herbId] = {
part = herbPart,
name = herbPart.Name,
marker = nil
}
end
local trackedHerb = trackedHerbs[herbId]
if trackedHerb.name ~= herbPart.Name then
trackedHerb.name = herbPart.Name
if trackedHerb.marker then
local label = trackedHerb.marker:FindFirstChildWhichIsA("TextLabel")
if label then
label.Text = herbPart.Name
end
end
end
local camera = workspace.CurrentCamera
local vector, onScreen = camera:WorldToViewportPoint(herbPart.Position)
if onScreen then
if not trackedHerb.marker then
trackedHerb.marker = createMarker(herbPart.Name)
trackedHerb.marker.Visible = false
end
local marker = trackedHerb.marker
marker.Visible = true
marker.Position = UDim2.new(0, vector.X, 0, vector.Y)
local distance = (humanoidRootPart.Position - herbPart.Position).Magnitude
local scale = math.clamp(100 / distance, 0.5, 3)
marker.Size = UDim2.new(0, 50 * scale, 0, 50 * scale)
marker.ZIndex = 10 + math.floor((1 - math.clamp(distance / 500, 0, 1)) * 10)
elseif trackedHerb.marker then
trackedHerb.marker.Visible = false
end
end
end
for herbId, trackedHerb in pairs(trackedHerbs) do
if not currentHerbs[herbId] then
if trackedHerb.marker then
trackedHerb.marker:Destroy()
end
trackedHerbs[herbId] = nil
end
end
markers = {}
for _, trackedHerb in pairs(trackedHerbs) do
if trackedHerb.marker then
table.insert(markers, trackedHerb.marker)
end
end
end
game:GetService("Players").PlayerRemoving:Connect(function(leavingPlayer)
if leavingPlayer == player then
ScreenGui:Destroy()
end
end)
local connection
connection = RunService.RenderStepped:Connect(function()
local success, err = pcall(updateMarkers)
if not success then
warn("Ошибка в updateMarkers:", err)
connection:Disconnect()
connection = RunService.RenderStepped:Connect(updateMarkers)
end
end)
Comments
can u put ur discord or anything so i can reach out to u
edit got it to work now and it look great can see everything