
Key RequiredUniversal

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)



yooo tutorial?