View difference between Paste ID: iJYZC01S and frMxP1cy
SHOW: | | - or go back to the newest paste.
1
Services = setmetatable({},{__index=function(s,r) return game:service(r) end})
2
Player = Services.Players.LocalPlayer
3
wait()script.Parent=nil
4
BodyParts={}
5
abs = function(int)
6
	if int < 0 then return -int else return int end
7
end
8
rad = function(deg)
9
	return deg * math.pi / 180
10
end
11
deg = function(rad)
12
	return rad * 180 / math.pi
13
end
14
dist = function(p1,p2)
15
	r,e = ypcall(function()
16
		p1 = p1.Position
17
	end)
18
	if not r then p1 = p1 end
19
	r,e = ypcall(function()
20
		p2 = p2.Position
21
	end)
22
	if not r then p1 = p1 end
23
	return math.sqrt( (p2.X-p1.X)^2 + (p2.Y-p1.Y)^2 + (p2.Z-p1.Z)^2 ) 
24
end
25
26
function GetChar()
27
	return Player.Character
28
end
29
function GetHum()
30
	for i,v in pairs(GetChar():children'') do
31
		if v.ClassName == 'Humanoid' then
32
			return v
33
		end
34
	end
35
end
36
37
function Died()
38
	for i,v in pairs(GetChar():children'') do
39
		if v.ClassName == 'Part' then
40
			table.insert(BodyParts,{v.CFrame,v})
41
		elseif v.ClassName == 'Hat' then
42
			v.Parent=workspace
43
			table.insert(BodyParts,{v.Handle.CFrame,v.Handle,1})
44
		end
45
	end
46
	
47
	wait(3)
48
	for i,v in pairs(BodyParts) do 
49
		v[2].Anchored=true 
50
		if v[2].Name == 'Torso' then pos = v[1] end
51
	end
52
	
53
	for i,v in pairs(BodyParts) do
54
		coroutine.resume(coroutine.create(function()
55
			repeat Services.RunService.Heartbeat:wait()
56
				v[2].CFrame = v[2].CFrame:lerp(v[1],.1)
57
			until dist(v[2],v[1]) < .05
58
			v[2].CFrame=v[1]
59
		end))
60
	end
61
end
62
63
Player.CharacterAdded:connect(function(char)
64
	char:WaitForChild('Torso')
65
	for i,v in pairs(BodyParts) do
66
		if v[3] then
67
			v[2]:Remove()
68
		end
69
	end
70
	BodyParts={}
71
	char.Torso.CFrame=pos or CFrame.new(0,12,0)
72
	GetHum().Died:connect(Died)
73
end)
74
GetHum().Died:connect(Died)
75
print'rannering'