local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local function createDelayedMirror(character) if not character or not character:IsA("Model") then return end local mirrorName = "DelayedMirror_" .. character.Name if workspace:FindFirstChild(mirrorName) then return end local rootPart = character:FindFirstChild("HumanoidRootPart") or character:WaitForChild("HumanoidRootPart", 5) if not rootPart then return end character.Archivable = true local mirrorModel = character:Clone() character.Archivable = false mirrorModel.Name = mirrorName for _, descendant in ipairs(mirrorModel:GetDescendants()) do if descendant:IsA("BasePart") then descendant.Anchored = true descendant.CanCollide = false descendant.CanQuery = false descendant.CanTouch = false descendant.CastShadow = false descendant.Transparency = 0.4 descendant.Color = Color3.fromRGB(0, 160, 255) descendant.Material = Enum.Material.SmoothPlastic elseif descendant:IsA("Script") or descendant:IsA("LocalScript") or descendant:IsA("ModuleScript") or descendant:IsA("Humanoid") or descendant:IsA("Accessory") or descendant:IsA("Hood") or descendant:IsA("Hat") or descendant:IsA("BillboardGui") or descendant:IsA("SurfaceGui") or descendant:IsA("SpecialMesh") or descendant:IsA("Texture") or descendant:IsA("Decal") then descendant:Destroy() end end mirrorModel.Parent = workspace local partPairs = {} local characterDescendants = character:GetDescendants() for i = 1, #characterDescendants do local realPart = characterDescendants[i] if realPart:IsA("BasePart") then local mirrorPart = mirrorModel:FindFirstChild(realPart.Name) if mirrorPart and mirrorPart:IsA("BasePart") then partPairs[#partPairs + 1] = {real = realPart, mirror = mirrorPart} end end end local positionBuffer = {} local bufferCount = 0 local connection connection = RunService.RenderStepped:Connect(function() if not character.Parent or not mirrorModel.Parent then mirrorModel:Destroy() connection:Disconnect() return end local currentTime = tick() local ping = LocalPlayer:GetNetworkPing() or 0.1 local currentFrameData = {} for i = 1, #partPairs do local pair = partPairs[i] if pair.real.Parent then currentFrameData[pair.mirror] = pair.real.CFrame end end bufferCount += 1 positionBuffer[bufferCount] = {time = currentTime, data = currentFrameData} local targetTime = currentTime - ping while bufferCount > 2 and positionBuffer[2].time < targetTime do table.remove(positionBuffer, 1) bufferCount -= 1 end local frameToApply = positionBuffer[1] if frameToApply and frameToApply.data then for mirrorPart, cframe in pairs(frameToApply.data) do if mirrorPart.Parent then mirrorPart.CFrame = cframe end end end end) end if LocalPlayer.Character then task.spawn(createDelayedMirror, LocalPlayer.Character) end LocalPlayer.CharacterAdded:Connect(function(char) task.spawn(createDelayedMirror, char) end)