Загрузка данных
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)