BillboardGui
ClickDetector
BillboardGui
Enabled = false
BillboardGui
TextLabel
Sound
lua local activeHint = nil -- Текущая активная подсказка local defaultOffset = Vector3.new(0, 5, 0) -- Смещение подсказки по умолчанию -- Функция для управления подсказками local function toggleHint(object) -- Скрываем активную подсказку if activeHint then activeHint.Enabled = false activeHint = nil end -- Показываем новую подсказку local billboardGui = object:FindFirstChildOfClass("BillboardGui") local sound = object:FindFirstChildOfClass("Sound") if billboardGui then -- Определяем размер объекта local sizeOffset = Vector3.new(0, object.Size.Y / 2, 0) -- Смещение на половину высоты объекта billboardGui.StudsOffset = defaultOffset + sizeOffset billboardGui.Enabled = true activeHint = billboardGui -- Включение звука if sound then sound:Play() end -- Автоматическое закрытие через 10 секунд task.delay(10, function() if activeHint == billboardGui then billboardGui.Enabled = false activeHint = nil end end) else warn("BillboardGui не найден у объекта:", object.Name) end end -- Подключение событий для всех объектов local function setupObject(object) local clickDetector = object:FindFirstChild("ClickDetector") if not clickDetector then return end -- Проверяем, есть ли у объекта свойство Size (например, для Part) if not object:IsA("BasePart") then warn("Объект не поддерживает подсказки, так как он не является BasePart:", object.Name) return end clickDetector.MouseClick:Connect(function(player) toggleHint(object) end) end -- Настройка объектов в рабочей области for _, object in pairs(workspace:GetDescendants()) do setupObject(object) end -- Подключение новых объектов workspace.DescendantAdded:Connect(function(object) setupObject(object) end)
Size.Y
Part
BillboardGui.StudsOffset
defaultOffset
Sound
defaultOffset
task.delay