View difference between Paste ID: qeDtBYpD and J4SZ8VC7
SHOW: | | - or go back to the newest paste.
1
--- [[ Simple Time Rewind ]] ---
2-
-- by fo43123
2+
-- by fo43123, edited by dinsfire34
3
-- original: https://pastebin.com/J4SZ8VC7
4-
local me = game.Players.LocalPlayer
4+
5-
local mouse = me:GetMouse()
5+
local mePlayer = game.Players.LocalPlayer
6-
local char = me.Character
6+
local meChar = game.workspace.LocalPlayer
7
local mouse = mePlayer:GetMouse()
8
local char = meChar
9
local hum = char:FindFirstChild('Humanoid')
10
local hd = char:FindFirstChild('Head')
11
local ts = char:FindFirstChild('Torso') or char:FindFirstChild('UpperTorso')
12
local ra = char:FindFirstChild('Right Arm') or char:FindFirstChild('RightUpperArm')
13
local la = char:FindFirstChild('Left Arm') or char:FindFirstChild('LeftUpperArm')
14
local rl = char:FindFirstChild('Right Leg') or char:FindFirstChild('RightUpperLeg')
15
local ll = char:FindFirstChild('Left Leg') or char:FindFirstChild('LeftUpperLeg')
16
local root = char:FindFirstChild('HumanoidRootPart')
17
local rj = root:FindFirstChild('RootJoint')
18
local rs = ts:FindFirstChild('Right Shoulder')
19
local ls = ts:FindFirstChild('Left Shoulder')
20
local rh = ts:FindFirstChild('Right Hip')
21
local lh = ts:FindFirstChild('Left Hip')
22
local nk = ts:FindFirstChild('Neck')
23
local anim = char:FindFirstChild('Animate')
24
local base = workspace:FindFirstChild('Baseplate') or workspace:FindFirstChild('Base')
25
local cantimerewind = true
26
local cooldown = false
27
local selfrewind = true
28
local cc = workspace.CurrentCamera
29
local cos = math.cos
30
local sin = math.sin
31
local rad = math.rad
32
local rand = math.random
33
local cfn = CFrame.new
34
local cfa = CFrame.Angles
35
local v3 = Vector3.new
36
local str = string
37
local past = {}
38
local lastpast = {}
39
local sine = 0
40
local rewind = Instance.new('Sound', hd)
41
local onrewind = Instance.new('Sound', workspace.CurrentCamera)
42
onrewind.Looped = true
43
onrewind.Volume = 10
44
onrewind.SoundId = 'rbxassetid://2061143306'
45
rewind.SoundId = 'rbxassetid://864569342'
46
rewind.Name = 'trewind'
47
rewind.Volume = 1
48
rewind.PlaybackSpeed = 1.25
49
hum.WalkSpeed = 23
50-
print([[
50+
51-
	-- // Moves
51+
52-
	R - Rewind
52+
53-
	]])
53+
54
ArtificialHB.Name = 'Heartbeat'
55
script:WaitForChild('Heartbeat')
56
57
frame = 1 / 60
58
tf = 0
59
allowframeloss = false
60
tossremainder = false
61
lastframe = tick()
62
script.Heartbeat:Fire()
63
64
game:GetService('RunService').Heartbeat:connect(function(s, p)
65
	tf = tf + s
66
	if tf >= frame then
67
		if allowframeloss then
68
			script.Heartbeat:Fire()
69
			lastframe = tick()
70
		else
71
			for i = 1, math.floor(tf / frame) do
72
				script.Heartbeat:Fire()
73
			end
74
			lastframe = tick()
75
		end
76
		if tossremainder then
77
			tf = 0
78
		else
79
			tf = tf - frame * math.floor(tf / frame)
80
		end
81
	end
82
end)
83
84
function swait(t)
85
	if t == 0 or t == nil then
86
		script.Heartbeat.Event:Wait()
87
	else
88
		for i = 0, t do
89
			script.Heartbeat.Event:Wait()
90
		end
91
	end
92
end
93
94
function sound(id, parent, vol, pitch, timepos)
95
	local s = Instance.new('Sound')
96
	s.Parent = parent
97
	s.SoundId = id
98
	s.Volume = vol
99
	s.PlaybackSpeed = pitch
100
	s.TimePosition = timepos
101
	s:Play()
102
	game.Debris:AddItem(s, s.PlaybackSpeed + 5)
103
end
104
105
function camshake(duration, intensity)
106
	coroutine.wrap(function()
107
		for i = 0, duration*60 do
108
			hum.CameraOffset = v3(rand(-(intensity*10),(intensity*10))/10, rand(-(intensity*10),(intensity*10))/10, rand(-(intensity*10), (intensity*10))/10)
109
			swait()
110
		end
111
		hum.CameraOffset = v3(0, 0, 0)
112
	end)()
113
end
114
115
function readyrewind()
116
	cantimerewind = false
117
	cooldown = true
118
	onrewind:Play()
119
	for i,v in pairs(workspace:GetDescendants()) do
120
		if v:IsA('BasePart') then
121
			local lastpos = v.CFrame
122
			table.insert(past, {part = v, change = lastpos})
123
		end
124
		if v.Parent then
125
			local lastparent2 = v.Parent
126
			table.insert(lastpast, {part2 = v, change4 = lastparent2})
127
		end
128
		if v:IsA('Camera') then
129
			local lastcam = v.CFrame
130
			table.insert(past, {cam = v, change3 = lastcam})
131
		end
132
		if v:IsA('Sound') then
133
			if v ~= rewind then
134
				local lastsongpos = v.TimePosition
135
				table.insert(past, {sound = v, pchange = lastsongpos})
136
			end
137
		end
138
		if v:IsA('Humanoid') then
139
			local lasthp = v.Health
140
			local always = lasthp
141
			table.insert(past, {health = v, hchange = lasthp})
142
		end
143
	end
144
	newpast = workspace.DescendantAdded:Connect(function(v)
145
		if v:IsA('BasePart') then
146
			local lastpos = v.CFrame
147
			local lastparent = v.Parent
148
			table.insert(past, {part = v, change = lastpos, change4 = lastparent})
149
		end
150
		if v.Parent then
151
			local lastparent2 = v.Parent
152
			table.insert(lastpast, {part2 = v, change4 = lastparent2})
153
		end
154
		if v:IsA('Camera') then
155
			local lastcampos = v.CFrame
156
			table.insert(past, {cam = v, change3 = lastcampos})
157
		end
158
		if v:IsA('Sound') then
159
			if v ~= rewind then
160
				local lastsongpos = v.TimePosition
161
				table.insert(past, {sound = v, pchange = lastsongpos})
162
			end
163
		end
164
		if v:IsA('Humanoid') then
165
			local lasthp = v.Health
166
			local always = lasthp
167
			table.insert(past, {health = v, hchange = lasthp})
168
		end
169
	end)
170
end
171
172
function timerewind()
173
	if cooldown then
174
	rewind:Play()
175
	sine = 0
176
	onrewind:Stop()
177
	coroutine.wrap(function()
178
	local cce = Instance.new('ColorCorrectionEffect', game.Lighting)
179
	local blur = Instance.new('BlurEffect', game.Lighting)
180
	local effect2 = Instance.new('Part', effects)
181
	local effect3 = Instance.new('Part', effects)
182
	effect3.Shape = 'Ball'
183
	effect3.Material = 'ForceField'
184
	effect3.Anchored = true
185
	effect3.CanCollide = false
186
	effect3.Name = 'eff3'
187
	effect3.BrickColor = BrickColor.new('Really red')
188
	effect3.Size = v3(30, 30, 30)
189
	effect3.Transparency = 0
190
	effect2.CastShadow = false
191
	effect2.Shape = 'Ball'
192
	effect2.BrickColor = BrickColor.new('Bright red')
193
	effect2.Material = 'ForceField'
194
	effect2.Name = 'eff2'
195
	effect2.Anchored = true
196
	effect2.CanCollide = false
197
	effect2.Size = v3(50, 50, 50)
198
	effect2.Transparency = 0
199
	cantimerewind = true
200
	for i,v in pairs(past) do
201
		pcall(function()
202
			v.part.CFrame = v.change
203
		end)
204
		pcall(function()
205
		   	v.cam.CFrame = v.change3
206
		end)
207
		pcall(function()
208
			v.sound.TimePosition = v.pchange
209
		end)
210
		pcall(function()
211
			v.health.Health = v.hchange
212
		end)
213
	end
214
	for i,v in pairs(lastpast) do
215
		pcall(function()
216
			v.part2.Parent = v.change4
217
		end)
218
	end
219
	pcall(function()
220
		newpast:Disconnect()
221
	end)
222
	coroutine.wrap(function()
223
		for i = 1, 1000 do
224
			effect2.CFrame = ts.CFrame
225
			effect3.CFrame = ts.CFrame
226
			blur.Size = v3(blur.Size, 0, 0):lerp(v3(0, 0, 0), .010).X
227
			cce.TintColor = cce.TintColor:lerp(Color3.fromRGB(255, 0, 0), 0.050)
228
			effect2.Transparency = effect2.Transparency + 0.020
229
			effect3.Transparency = effect3.Transparency + 0.020
230
			effect2.Size = effect2.Size:lerp(v3(0, 0, 0), 0.050)
231
			effect3.Size = effect3.Size:lerp(v3(0, 0, 0), 0.030)
232
			if effect2.Transparency >= 1 then
233
				effect2:Destroy()
234
			end
235
			if effect3.Transparency >= 1 then
236
				effect3:Destroy()
237
			end
238
			swait()
239
		end
240
	end)()
241
	wait(1)
242
	blur:Destroy()
243
	cce:Destroy()
244
	end)()
245
	wait(1.5) -- cooldown
246
	past = {}
247
	cooldown = false
248
	end
249
end
250
251
mouse.KeyDown:connect(function(key)
252
	if str.lower(key) == 'r' and cantimerewind and cooldown == false then
253
		readyrewind()
254
	elseif str.lower(key) == 'r' and cantimerewind == false and cooldown then
255
		timerewind()
256
	end
257
end)
258
259
hum.HealthChanged:connect(function()
260
	if selfrewind then
261
		cooldown = true
262
		cantimerewind = false
263
		timerewind()
264
	end
265
end)