Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
Workspace = :()
Lighting = :()
LocalPlayer = Players.LocalPlayer
CurrentCharacter = LocalPlayer.Character LocalPlayer.CharacterAdded:()
LocalPlayer.CharacterAdded:((character)
CurrentCharacter = character
)
ScreenGui = .()
ScreenGui.ResetOnSpawn =
ScreenGui.Parent = LocalPlayer:()
Toggle = .()
Toggle.Size = .(, , , )
Toggle.Position = .(, -, , )
Toggle.AnchorPoint = .(, )
Toggle.Text =
Toggle.Parent = ScreenGui
recording =
reversing =
recorded = {}
properties = {}
tracked = {}
lastCFrames = {}
initialBuffered = {}
destroyConnections = {}
timeAccumulators = {}
humanoidRecorded = {}
humanoidTracked = {}
humanoidLast = {}
humanoidInitialBuffered = {}
humanoidAccumulators = {}
visualRecorded = {}
lightingRecorded = {}
visualTracked = {}
bornAtStart = {}
allTrackedParts = {}
replicationTimer =
REPLICATION_INTERVAL =
RECORD_INTERVAL = /
(part)
part:()
CurrentCharacter part:(CurrentCharacter)
(obj)
obj:()
(obj)
obj:() obj:()
(part)
conn = destroyConnections[part]
conn
conn:()
destroyConnections[part] =
recorded[part] =
properties[part] =
tracked[part] =
timeAccumulators[part] =
lastCFrames[part] =
initialBuffered[part] =
bornAtStart[part] =
(part, fromInitialScan)
tracked[part]
(part)
tracked[part] =
recorded[part] = {}
timeAccumulators[part] =
lastCFrames[part] = part.CFrame
initialBuffered[part] =
bornAtStart[part] = fromInitialScan
properties[part] = {
Anchored = part.Anchored,
Transparency = part.Transparency
}
destroyConnections[part] = part.Destroying:(()
(part)
)
(h)
humanoidTracked[h]
(h)
humanoidTracked[h] =
humanoidRecorded[h] = {}
humanoidAccumulators[h] =
humanoidLast[h] = {
Health = h.Health,
WalkSpeed = h.WalkSpeed,
JumpPower = h.JumpPower
}
humanoidInitialBuffered[h] =
(obj)
visualTracked[obj]
(obj)
visualTracked[obj] =
visualRecorded[obj] = {}
_, v (Workspace:())
(v, )
(v)
(v)
Workspace.DescendantAdded:((v)
(v, )
(v)
(v)
)
Workspace.DescendantRemoving:((obj)
tracked[obj]
(obj)
humanoidTracked[obj]
humanoidTracked[obj] =
humanoidRecorded[obj] =
humanoidAccumulators[obj] =
humanoidLast[obj] =
humanoidInitialBuffered[obj] =
visualTracked[obj]
visualTracked[obj] =
visualRecorded[obj] =
)
()
part (recorded)
recorded[part] = {}
initialBuffered[part] =
h (humanoidRecorded)
humanoidRecorded[h] = {}
humanoidInitialBuffered[h] =
obj (visualRecorded)
visualRecorded[obj] = {}
lightingRecorded = {}
()
part (timeAccumulators)
timeAccumulators[part] =
h (humanoidAccumulators)
humanoidAccumulators[h] =
(part, data)
part.CFrame = data.CFrame
part.Color = data.Color
part.Material = data.Material
part.Transparency = data.Transparency
part.Reflectance = data.Reflectance
()
reversing
hasData =
_, frames (recorded)
#frames >
hasData =
hasData
_, frames (humanoidRecorded)
#frames >
hasData =
hasData
_, frames (visualRecorded)
#frames >
hasData =
hasData #lightingRecorded >
hasData =
hasData
reversing =
recording =
Toggle.Text =
().Network.IncomingReplicationLag =
part, prop (properties)
part part.Parent
part.Anchored = prop.Anchored
part.Transparency = prop.Transparency
()
RunService.Heartbeat:((dt)
doRecord = recording
doReverse = reversing
doReverse
replicationTimer += dt
replicationTimer >= REPLICATION_INTERVAL
replicationTimer =
().Network.IncomingReplicationLag = .huge
part (tracked)
part part.Parent part:(Workspace)
(part)
acc = (timeAccumulators[part] ) + dt
frames = recorded[part]
doRecord
acc >= RECORD_INTERVAL
acc -= RECORD_INTERVAL
current = part.CFrame
last = lastCFrames[part]
initialBuffered[part]
data = {
= current,
Color = part.Color,
Material = part.Material,
Transparency = part.Transparency,
Reflectance = part.Reflectance,
Duration = RECORD_INTERVAL
}
frames[#frames + ] = data
frames[#frames + ] = data
initialBuffered[part] =
current ~= last
lastCFrames[part] = current
frames[#frames + ] = {
= current,
Color = part.Color,
Material = part.Material,
Transparency = part.Transparency,
Reflectance = part.Reflectance,
Duration = RECORD_INTERVAL
}
#frames >
frames[#frames].Duration += RECORD_INTERVAL
doReverse
acc > #frames >
lastIndex = #frames
data = frames[lastIndex]
duration = data.Duration RECORD_INTERVAL
acc >= duration
acc -= duration
(part, data)
frames[lastIndex] =
(part, data)
#frames == bornAtStart[part] == part part.Parent
part.Transparency =
timeAccumulators[part] = acc
h (humanoidTracked)
h h.Parent
acc = (humanoidAccumulators[h] ) + dt
frames = humanoidRecorded[h]
doRecord
acc >= RECORD_INTERVAL
acc -= RECORD_INTERVAL
current = {
Health = h.Health,
WalkSpeed = h.WalkSpeed,
JumpPower = h.JumpPower
}
last = humanoidLast[h]
humanoidInitialBuffered[h]
data = {
Health = current.Health,
WalkSpeed = current.WalkSpeed,
JumpPower = current.JumpPower,
Duration = RECORD_INTERVAL
}
frames[#frames + ] = data
frames[#frames + ] = data
humanoidInitialBuffered[h] =
current.Health ~= last.Health
current.WalkSpeed ~= last.WalkSpeed
current.JumpPower ~= last.JumpPower
humanoidLast[h] = current
frames[#frames + ] = {
Health = current.Health,
WalkSpeed = current.WalkSpeed,
JumpPower = current.JumpPower,
Duration = RECORD_INTERVAL
}
#frames >
frames[#frames].Duration += RECORD_INTERVAL
doReverse
acc > #frames >
lastIndex = #frames
data = frames[lastIndex]
duration = data.Duration RECORD_INTERVAL
acc >= duration
acc -= duration
h.Health = data.Health
h.WalkSpeed = data.WalkSpeed
h.JumpPower = data.JumpPower
frames[lastIndex] =
h.Health = data.Health
h.WalkSpeed = data.WalkSpeed
h.JumpPower = data.JumpPower
humanoidAccumulators[h] = acc
obj (visualTracked)
frames = visualRecorded[obj]
obj obj.Parent
doRecord
frames[#frames + ] = {
Texture = obj.Texture,
Transparency = obj.Transparency
}
doReverse #frames >
data = frames[#frames]
obj.Texture = data.Texture
obj.Transparency = data.Transparency
frames[#frames] =
doRecord
lightingRecorded[#lightingRecorded + ] = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart,
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient
}
doReverse #lightingRecorded >
data = lightingRecorded[#lightingRecorded]
Lighting.Brightness = data.Brightness
Lighting.ClockTime = data.ClockTime
Lighting.FogEnd = data.FogEnd
Lighting.FogStart = data.FogStart
Lighting.Ambient = data.Ambient
Lighting.OutdoorAmbient = data.OutdoorAmbient
lightingRecorded[#lightingRecorded] =
()
)
Toggle.MouseButton1Click:(()
reversing = reversing
recording = reversing
()
replicationTimer =
reversing
Toggle.Text =
().Network.IncomingReplicationLag = .huge
part (properties)
part part.Parent
part.Anchored =
Toggle.Text =
().Network.IncomingReplicationLag =
part, prop (properties)
part part.Parent
part.Anchored = prop.Anchored
part.Transparency = prop.Transparency
()
)
Workspace.FallenPartsDestroyHeight = -.huge
Universal