Run it
Copy the script and paste it into your executor.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CollectionService = :()
RunService = :()
player = Players.LocalPlayer
HitEvent = ReplicatedStorage:()
AUTO_PLAY =
HIT_WINDOW =
alreadyHit = {}
validDirections = {
Left = ,
Down = ,
Up = ,
Right =
}
(note)
alreadyHit[note]
note note.Parent
direction = note:()
validDirections[direction]
(, direction)
alreadyHit[note] =
HitEvent:(note, direction)
.(, ()
alreadyHit[note] =
)
()
AUTO_PLAY
now = :()
_, note (CollectionService:())
note.Parent
hitTime = note:()
(hitTime) ==
difference = hitTime - now
.(difference) <= HIT_WINDOW
(note)
RunService.Heartbeat:(checkNotes)
ReplicatedStorage = :()
CollectionService = :()
HitEvent = ReplicatedStorage:()
VALID_DIRECTIONS = {
Left = ,
Down = ,
Up = ,
Right =
}
HIT_WINDOW =
HitEvent.OnServerEvent:((player, note, direction)
note
note:()
CollectionService:(note, )
VALID_DIRECTIONS[direction]
noteDirection = note:()
hitTime = note:()
noteDirection ~= direction
(hitTime) ~=
currentTime = :()
.(currentTime - hitTime) > HIT_WINDOW
(player.Name .. , direction)
note:()
)In testing so try it out

Universal