local Players = game:GetService("Players") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local image_1 = "rbxassetid://97400151750630" local image_2 = "rbxassetid://85921451267692" local sound_id = "rbxassetid://93659353012510" local sound_time = 5 local image_1_time = 2.5 local image_2_time = 2.5 local image_size = 0.83 local sound_volume = 10 local image_1_shake = 15 local image_1_rotate = 15 local image_1_zoom_min = 1 local image_1_zoom_max = 1.15 local image_2_shake = 15 local image_2_rotate = 15 local image_2_zoom_min = 1 local image_2_zoom_max = 1.15 local red_fade_time = 15 local oldGui = playerGui:FindFirstChild("jumpscaregui") if oldGui then oldGui:Destroy() end local gui = Instance.new("ScreenGui") gui.Name = "jumpscaregui" gui.IgnoreGuiInset = true gui.ResetOnSpawn = false gui.DisplayOrder = 999999 gui.Parent = playerGui local black = Instance.new("Frame") black.Name = "BlackBackground" black.Size = UDim2.new(1, 0, 1, 0) black.Position = UDim2.new(0, 0, 0, 0) black.BackgroundColor3 = Color3.fromRGB(0, 0, 0) black.BorderSizePixel = 0 black.ZIndex = 1 black.Parent = gui local image = Instance.new("ImageLabel") image.Name = "JumpscareImage" image.AnchorPoint = Vector2.new(0.5, 0.5) image.Size = UDim2.new(image_size, 0, image_size, 0) image.Position = UDim2.new(0.5, 0, 0.5, 0) image.BackgroundTransparency = 1 image.BorderSizePixel = 0 image.ScaleType = Enum.ScaleType.Stretch image.ZIndex = 2 image.Parent = gui local redShadow = Instance.new("Frame") redShadow.Name = "Image2RedShadow" redShadow.Size = UDim2.new(1, 0, 1, 0) redShadow.Position = UDim2.new(0, 0, 0, 0) redShadow.BackgroundColor3 = Color3.fromRGB(255, 0, 0) redShadow.BackgroundTransparency = 1 redShadow.BorderSizePixel = 0 redShadow.ZIndex = 3 redShadow.Parent = gui local sound = Instance.new("Sound") sound.Name = "JumpscareSound" sound.SoundId = sound_id sound.Volume = sound_volume sound.Parent = gui local finished = false local function stopJumpscare() if finished then return end finished = true sound:Stop() if gui and gui.Parent then gui:Destroy() end end image.Image = image_1 sound:Play() task.delay(sound_time, function() stopJumpscare() end) task.spawn(function() local start1 = os.clock() while os.clock() - start1 < image_1_time do if finished or not gui.Parent then return end image.Position = UDim2.new( 0.5, math.random(-image_1_shake, image_1_shake), 0.5, math.random(-image_1_shake, image_1_shake) ) image.Rotation = math.random( -image_1_rotate, image_1_rotate ) local zoom = math.random( math.floor(image_1_zoom_min * 100), math.floor(image_1_zoom_max * 100) ) / 100 image.Size = UDim2.new( image_size * zoom, 0, image_size * zoom, 0 ) task.wait(0.02) end if finished or not gui.Parent then return end image.Image = image_2 redShadow.BackgroundTransparency = 1 local start2 = os.clock() local redStart = os.clock() while os.clock() - start2 < image_2_time do if finished or not gui.Parent then return end image.Position = UDim2.new( 0.5, math.random(-image_2_shake, image_2_shake), 0.5, math.random(-image_2_shake, image_2_shake) ) image.Rotation = math.random( -image_2_rotate, image_2_rotate ) local zoom2 = math.random( math.floor(image_2_zoom_min * 100), math.floor(image_2_zoom_max * 100) ) / 100 image.Size = UDim2.new( image_size * zoom2, 0, image_size * zoom2, 0 ) local redElapsed = os.clock() - redStart local progress = math.clamp( redElapsed / red_fade_time, 0, 1 ) redShadow.BackgroundTransparency = 1 - progress task.wait(0.02) end if finished or not gui.Parent then return end image.Rotation = 0 image.Size = UDim2.new( image_size, 0, image_size, 0 ) image.Position = UDim2.new( 0.5, 0, 0.5, 0 ) redShadow.BackgroundTransparency = 1 end)