Загрузка данных


local jacket = script.Parent
local isCollected = false

local function scareEvent(player)
    local character = player.Character
    if not character then return end
    
    local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
    local camera = workspace.CurrentCamera
    
    if humanoidRootPart then
        -- 1. РЕЗКИЙ ПОВОРОТ КАМЕРЫ НАЗАД (на 180 градусов)
        -- Берем текущее положение персонажа и разворачиваем камеру в обратную сторону
        local currentCFrame = camera.CFrame
        -- Поворачиваем камеру назад по оси Y (yaw) на 180 градусов (math.pi радиан)
        camera.CFrame = currentCFrame * CFrame.Angles(0, math.pi, 0)
    end

    -- 2. ЗВУК ШАГОВ ЗА СПИНОЙ
    -- Создаем временный объект Sound прямо в корне персонажа или в мире
    local sound = Instance.new("Sound")
    -- Стандартный звук шагов из Roblox (можно позже заменить на свой ID аудио)
    sound.SoundId = "rbxassetid://9114221327" -- или другой id звука шагов/шороха
    sound.Volume = 2 -- Делаем погромче, чтобы напугать
    sound.Parent = humanoidRootPart
    
    sound:Play()
    
    -- Удаляем звук после того, как он проиграл
    sound.Ended:Connect(function()
        sound:Destroy()
    end)
end

-- Функция создания интерфейса выбора (оставляем с прошлого раза)
local function showChoiceGui(player)
    local playerGui = player:FindFirstChild("PlayerGui")
    if not playerGui then return end
    if playerGui:FindFirstChild("DetectiveChoiceGui") then return end

    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "DetectiveChoiceGui"
    screenGui.ResetOnSpawn = false
    screenGui.Parent = playerGui

    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(0, 400, 0, 200)
    frame.Position = UDim2.new(0.5, -200, 0.5, -100)
    frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    frame.BorderSizePixel = 2
    frame.BorderColor3 = Color3.fromRGB(80, 80, 80)
    frame.Parent = screenGui

    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, 0, 0, 60)
    title.BackgroundTransparency = 1
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.TextScaled = true
    title.Text = "Ты нашел куртку Джереми. Сзади послышался хруст веток... Что делаем?"
    title.Parent = frame

    local btnBushes = Instance.new("TextButton")
    btnBushes.Size = UDim2.new(0.9, 0, 0, 45)
    btnBushes.Position = UDim2.new(0.05, 0, 0.4, 0)
    btnBushes.BackgroundColor3 = Color3.fromRGB(50, 150, 50)
    btnBushes.TextColor3 = Color3.fromRGB(255, 255, 255)
    btnBushes.TextScaled = true
    btnBushes.Text = "Осмотреть кусты"
    btnBushes.Parent = frame

    local btnBack = Instance.new("TextButton")
    btnBack.Size = UDim2.new(0.9, 0, 0, 45)
    btnBack.Position = UDim2.new(0.05, 0, 0.7, 0)
    btnBack.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
    btnBack.TextColor3 = Color3.fromRGB(255, 255, 255)
    btnBack.TextScaled = true
    btnBack.Text = "Вернуться к Дэвиду"
    btnBack.Parent = frame

    btnBushes.MouseButton1Click:Connect(function()
        print("Игрок выбрал: осмотреть кусты!")
        screenGui:Destroy()
    end)

    btnBack.MouseButton1Click:Connect(function()
        print("Игрок выбрал: вернуться к Дэвиду.")
        screenGui:Destroy()
    end)
end

-- Обработка касания куртки
local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildOfClass("Humanoid")
    
    if humanoid and not isCollected then
        isCollected = true
        
        local player = game:GetService("Players"):GetPlayerFromCharacter(character)
        if player then
            -- Запускаем скрипт испуга (звук + разворот камеры)
            scareEvent(player)
            -- Показываем меню выбора
            showChoiceGui(player)
        end
        
        -- Убираем куртку из мира
        jacket.Transparency = 1
        jacket.CanTouch = false
        task.wait(1)
        jacket:Destroy()
    end
end

jacket.Touched:Connect(onTouch)