
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer
local CurrentCharacter = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
LocalPlayer.CharacterAdded:Connect(function(character)
CurrentCharacter = character
end)
-- GUI (TOP RIGHT)
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local Toggle = Instance.new("TextButton")
Toggle.Size = UDim2.new(0, 120, 0, 40)
Toggle.Position = UDim2.new(1, -130, 0, 10)
Toggle.AnchorPoint = Vector2.new(0, 0)
Toggle.Text = "Reverse: OFF"
Toggle.Parent = ScreenGui
-- State
local recording = true
local reversing = false
local recorded = {}
local properties = {}
local tracked = {}
local lastCFrames = {}
local initialBuffered = {}
local destroyConnections = {}
local timeAccumulators = {}
-- HUMANOID
local humanoidRecorded = {}
local humanoidTracked = {}
local humanoidLast = {}
local humanoidInitialBuffered = {}
local humanoidAccumulators = {}
-- EXTRA RECORDING
local visualRecorded = {}
local lightingRecorded = {}
local visualTracked = {}
-- EXISTENCE
local bornAtStart = {}
local allTrackedParts = {}
-- Replication loop timer
local replicationTimer = 0
local REPLICATION_INTERVAL = 11
-- SETTINGS
local RECORD_INTERVAL = 1 / 60
local function isValidPart(part)
if not part:IsA("BasePart") then return false end
if CurrentCharacter and part:IsDescendantOf(CurrentCharacter) then return false end
return true
end
local function isHumanoid(obj)
return obj:IsA("Humanoid")
end
local function isVisual(obj)
return obj:IsA("Decal") or obj:IsA("Texture")
end
local function cleanupPart(part)
local conn = destroyConnections[part]
if conn then
conn:Disconnect()
destroyConnections[part] = nil
end
recorded[part] = nil
properties[part] = nil
tracked[part] = nil
timeAccumulators[part] = nil
lastCFrames[part] = nil
initialBuffered[part] = nil
bornAtStart[part] = nil
end
local function trackPart(part, fromInitialScan)
if tracked[part] then return end
if not isValidPart(part) then return end
tracked[part] = true
recorded[part] = {}
timeAccumulators[part] = 0
lastCFrames[part] = part.CFrame
initialBuffered[part] = false
bornAtStart[part] = fromInitialScan and true or false
properties[part] = {
Anchored = part.Anchored,
Transparency = part.Transparency
}
destroyConnections[part] = part.Destroying:Connect(function()
cleanupPart(part)
end)
end
local function trackHumanoid(h)
if humanoidTracked[h] then return end
if not isHumanoid(h) then return end
humanoidTracked[h] = true
humanoidRecorded[h] = {}
humanoidAccumulators[h] = 0
humanoidLast[h] = {
Health = h.Health,
WalkSpeed = h.WalkSpeed,
JumpPower = h.JumpPower
}
humanoidInitialBuffered[h] = false
end
local function trackVisual(obj)
if visualTracked[obj] then return end
if not isVisual(obj) then return end
visualTracked[obj] = true
visualRecorded[obj] = {}
end
-- Initial scan
for _, v in ipairs(Workspace:GetDescendants()) do
trackPart(v, true)
trackHumanoid(v)
trackVisual(v)
end
Workspace.DescendantAdded:Connect(function(v)
trackPart(v, false)
trackHumanoid(v)
trackVisual(v)
end)
Workspace.DescendantRemoving:Connect(function(obj)
if tracked[obj] then
cleanupPart(obj)
end
if humanoidTracked[obj] then
humanoidTracked[obj] = nil
humanoidRecorded[obj] = nil
humanoidAccumulators[obj] = nil
humanoidLast[obj] = nil
humanoidInitialBuffered[obj] = nil
end
if visualTracked[obj] then
visualTracked[obj] = nil
visualRecorded[obj] = nil
end
end)
local function clearFuture()
for part in pairs(recorded) do
recorded[part] = {}
initialBuffered[part] = false
end
for h in pairs(humanoidRecorded) do
humanoidRecorded[h] = {}
humanoidInitialBuffered[h] = false
end
for obj in pairs(visualRecorded) do
visualRecorded[obj] = {}
end
lightingRecorded = {}
end
local function resetAccumulators()
for part in pairs(timeAccumulators) do
timeAccumulators[part] = 0
end
for h in pairs(humanoidAccumulators) do
humanoidAccumulators[h] = 0
end
end
local function applySnapshot(part, data)
part.CFrame = data.CFrame
part.Color = data.Color
part.Material = data.Material
part.Transparency = data.Transparency
part.Reflectance = data.Reflectance
end
local function autoStopIfFinished()
if not reversing then return end
local hasData = false
for _, frames in pairs(recorded) do
if #frames > 0 then
hasData = true
break
end
end
if not hasData then
for _, frames in pairs(humanoidRecorded) do
if #frames > 0 then
hasData = true
break
end
end
end
if not hasData then
for _, frames in pairs(visualRecorded) do
if #frames > 0 then
hasData = true
break
end
end
end
if not hasData and #lightingRecorded > 0 then
hasData = true
end
if not hasData then
reversing = false
recording = true
Toggle.Text = "Reverse: OFF"
settings().Network.IncomingReplicationLag = 0
for part, prop in pairs(properties) do
if part and part.Parent then
part.Anchored = prop.Anchored
part.Transparency = prop.Transparency
end
end
clearFuture()
end
end
RunService.Heartbeat:Connect(function(dt)
local doRecord = recording
local doReverse = reversing
if doReverse then
replicationTimer += dt
if replicationTimer >= REPLICATION_INTERVAL then
replicationTimer = 0
settings().Network.IncomingReplicationLag = math.huge
end
end
-- PARTS
for part in pairs(tracked) do
if not part or not part.Parent or not part:IsDescendantOf(Workspace) then
cleanupPart(part)
else
local acc = (timeAccumulators[part] or 0) + dt
local frames = recorded[part]
if doRecord then
while acc >= RECORD_INTERVAL do
acc -= RECORD_INTERVAL
local current = part.CFrame
local last = lastCFrames[part]
if not initialBuffered[part] then
local data = {
CFrame = current,
Color = part.Color,
Material = part.Material,
Transparency = part.Transparency,
Reflectance = part.Reflectance,
Duration = RECORD_INTERVAL
}
frames[#frames + 1] = data
frames[#frames + 1] = data
initialBuffered[part] = true
else
if current ~= last then
lastCFrames[part] = current
frames[#frames + 1] = {
CFrame = current,
Color = part.Color,
Material = part.Material,
Transparency = part.Transparency,
Reflectance = part.Reflectance,
Duration = RECORD_INTERVAL
}
else
if #frames > 0 then
frames[#frames].Duration += RECORD_INTERVAL
end
end
end
end
elseif doReverse then
while acc > 0 and #frames > 0 do
local lastIndex = #frames
local data = frames[lastIndex]
local duration = data.Duration or RECORD_INTERVAL
if acc >= duration then
acc -= duration
applySnapshot(part, data)
frames[lastIndex] = nil
else
applySnapshot(part, data)
break
end
end
if #frames == 0 and bornAtStart[part] == false and part and part.Parent then
part.Transparency = 1
end
end
timeAccumulators[part] = acc
end
end
-- HUMANOIDS
for h in pairs(humanoidTracked) do
if h and h.Parent then
local acc = (humanoidAccumulators[h] or 0) + dt
local frames = humanoidRecorded[h]
if doRecord then
while acc >= RECORD_INTERVAL do
acc -= RECORD_INTERVAL
local current = {
Health = h.Health,
WalkSpeed = h.WalkSpeed,
JumpPower = h.JumpPower
}
local last = humanoidLast[h]
if not humanoidInitialBuffered[h] then
local data = {
Health = current.Health,
WalkSpeed = current.WalkSpeed,
JumpPower = current.JumpPower,
Duration = RECORD_INTERVAL
}
frames[#frames + 1] = data
frames[#frames + 1] = data
humanoidInitialBuffered[h] = true
else
if current.Health ~= last.Health
or current.WalkSpeed ~= last.WalkSpeed
or current.JumpPower ~= last.JumpPower then
humanoidLast[h] = current
frames[#frames + 1] = {
Health = current.Health,
WalkSpeed = current.WalkSpeed,
JumpPower = current.JumpPower,
Duration = RECORD_INTERVAL
}
else
if #frames > 0 then
frames[#frames].Duration += RECORD_INTERVAL
end
end
end
end
elseif doReverse then
while acc > 0 and #frames > 0 do
local lastIndex = #frames
local data = frames[lastIndex]
local duration = data.Duration or RECORD_INTERVAL
if acc >= duration then
acc -= duration
h.Health = data.Health
h.WalkSpeed = data.WalkSpeed
h.JumpPower = data.JumpPower
frames[lastIndex] = nil
else
h.Health = data.Health
h.WalkSpeed = data.WalkSpeed
h.JumpPower = data.JumpPower
break
end
end
end
humanoidAccumulators[h] = acc
end
end
-- VISUAL
for obj in pairs(visualTracked) do
local frames = visualRecorded[obj]
if obj and obj.Parent then
if doRecord then
frames[#frames + 1] = {
Texture = obj.Texture,
Transparency = obj.Transparency
}
elseif doReverse and #frames > 0 then
local data = frames[#frames]
obj.Texture = data.Texture
obj.Transparency = data.Transparency
frames[#frames] = nil
end
end
end
-- LIGHTING
if doRecord then
lightingRecorded[#lightingRecorded + 1] = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart,
Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient
}
elseif doReverse and #lightingRecorded > 0 then
local 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] = nil
end
autoStopIfFinished()
end)
Toggle.MouseButton1Click:Connect(function()
reversing = not reversing
recording = not reversing
resetAccumulators()
replicationTimer = 0
if reversing then
Toggle.Text = "Reverse: ON"
settings().Network.IncomingReplicationLag = math.huge
for part in pairs(properties) do
if part and part.Parent then
part.Anchored = true
end
end
else
Toggle.Text = "Reverse: OFF"
settings().Network.IncomingReplicationLag = 0
for part, prop in pairs(properties) do
if part and part.Parent then
part.Anchored = prop.Anchored
part.Transparency = prop.Transparency
end
end
clearFuture()
end
end)
Workspace.FallenPartsDestroyHeight = -math.hugeNo comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

