View difference between Paste ID: Tf7yjpZT and S40QuHtX
SHOW: | | - or go back to the newest paste.
1
-- .offset (how close the hats are to you)
2
-- .mode (different modes up to 11)
3
-- .speed (how fast the hats move)
4
--Reanimate
5
loadstring(game:HttpGet("https://pastebin.com/raw/YBMWtriH"))()
6
 
7
lol = getcustomasset or getsynasset
8
getgenv().LoadLibrary = function(lib) return loadstring(game:HttpGet("https://raw.githubusercontent.com/Roblox/Core-Scripts/master/CoreScriptsRoot/Libraries/" .. lib .. ".lua"))() end
9
10
local plr = game.Players.LocalPlayer;
11
local chr = plr.Character;
12
local hum = chr.Humanoid;
13
local mov = {};
14
local mov2 = {};
15
16
--[[Network]]
17
coroutine.resume(coroutine.create(function()
18
	settings().Physics.AllowSleep = false;
19
	game.RunService.RenderStepped:Connect(function()
20
		for i, v in pairs(game.Players:GetPlayers()) do
21
			if v ~= plr then
22
				v.MaximumSimulationRadius = 0.1;
23
				v.SimulationRadius = 0;
24
			else
25
				v.MaximumSimulationRadius = math.pow(math.huge, math.huge);
26
				v.SimulationRadius = math.pow(math.huge, 2);
27
			end
28
		end
29
	end)
30
end))
31
32
function ftp(str)
33
    local pt = {};
34
    if str ~= 'me' and str ~= 'random' then
35
        for i, v in pairs(game.Players:GetPlayers()) do
36
            if v.Name:lower():find(str:lower()) then
37
                table.insert(pt, v);
38
            end
39
        end
40
    elseif str == 'me' then
41
        table.insert(pt, plr);
42
	elseif str == 'random' then
43
		table.insert(pt, game.Players:GetPlayers()[math.random(1, #game.Players:GetPlayers())]);
44
    end
45
    return pt;
46
end
47
48
for _, v in pairs(hum:GetAccessories()) do
49
	local b = v.Handle;
50
	b.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0);
51
	b.CanCollide = false;
52
	b:BreakJoints();
53
	for _, k in pairs(v:GetChildren()) do
54
		if not k:IsA'SpecialMesh' and not k:IsA'Part' then
55
			k:Destroy();
56
		end
57
	end
58
	local still = Instance.new('BodyAngularVelocity', b);
59
	still.MaxTorque = Vector3.new(math.huge, math.huge, math.huge);
60
	still.AngularVelocity = Vector3.new(0, 0, 0);
61
	local align = Instance.new('AlignPosition', b);
62
	align.MaxForce = 1000000;
63
	align.MaxVelocity = math.huge;
64
	align.RigidityEnabled = false;
65
	align.ApplyAtCenterOfMass = true;
66
	align.Responsiveness = 200;
67
	local a0 = Instance.new('Attachment', b);
68
	local a1 = Instance.new('Attachment', chr.Head);
69
	align.Attachment0 = a0;
70
	align.Attachment1 = a1;
71
	table.insert(mov, a1);
72
	table.insert(mov2, still);
73
end
74
75
local par = {};
76
for _, v in pairs(mov) do
77
	local parr = Instance.new('Part', workspace);
78
	parr.Anchored = true;
79
	parr.Size = Vector3.new(1, 1, 1);
80
	parr.Transparency = 1;
81
	parr.CanCollide = false;
82
	table.insert(par, parr);
83
end
84
85
local rotx = 0;
86
local rotz = math.pi / 2;
87
local height = 0;
88
local heighti = 1;
89
local offset = 10;
90
local speed = 0.5;
91
local mode = 4;
92
local angular = Vector3.new(0, 0, 0);
93
local l = 1;
94
game['Run Service'].RenderStepped:Connect(function()
95
	rotx = rotx + speed / 100;
96
	rotz = rotz + speed / 100;
97
	l = (l >= 360 and 1 or l + speed);
98
	
99
	for i, v in pairs(par) do
100
		v.CFrame = CFrame.new(chr.HumanoidRootPart.Position) * CFrame.fromEulerAnglesXYZ(0, math.rad(l + (360 / #par) * i + speed), 0) * CFrame.new(offset, 0, 0);
101
	end
102
	
103
	if heighti == 1 then
104
		height = height + speed / 100;
105
	elseif heighti == 2 then
106
		height = height - speed / 100;
107
	end
108
	if height > 2 then
109
		heighti = 2;
110
	end
111
	if height < -1 then
112
		heighti = 1;
113
	end
114
	
115
	if mode == 1 then
116
		for _, v in pairs(mov) do
117
			v.Position = Vector3.new(math.sin(rotx) * offset, 0, math.sin(rotz) * offset);
118
		end
119
	elseif mode == 2 then
120
		for _, v in pairs(mov) do
121
			v.Position = Vector3.new(offset, height, offset);
122
		end
123
	elseif mode == 3 then
124
		for _, v in pairs(mov) do
125
			v.Position = Vector3.new(math.sin(rotx) * offset, height, math.sin(rotz) * offset);
126
		end
127
	elseif mode == 4 then
128
		for i, v in pairs(mov) do
129
			v.Position = Vector3.new(chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).X, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Y, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Z);
130
		end
131
	elseif mode == 5 then
132
		for i, v in pairs(mov) do
133
			v.Position = Vector3.new((math.sin(rotx)) * offset, height, (math.cos(rotz) - i) * offset);
134
		end
135
	elseif mode == 6 then
136
		for i, v in pairs(mov) do
137
			v.Position = Vector3.new((math.sin(rotx)) * offset, height, (math.tan(rotz) - i) * offset);
138
		end
139
	elseif mode == 7 then
140
		for i, v in pairs(mov) do
141
			v.Position = Vector3.new(math.cos(rotx * i) * offset, 0, math.cos(rotz * i) * offset);
142
		end
143
	elseif mode == 8 then
144
	    for i, v in pairs(mov) do
145
			v.Position = Vector3.new(math.sin(rotx) * i * offset, 0, math.sin(rotz) * i * offset);
146
		end
147
	elseif mode == 9 then
148
		pcall(function()
149
			local so = nil;
150
			for k, b in pairs(chr:GetChildren()) do
151
				if b:IsA'Tool' then
152
					for h, j in pairs(b:GetDescendants()) do
153
						if j:IsA'Sound' then
154
							so = j;
155
						end
156
					end
157
				end
158
			end
159
			if so ~= nil then
160
				offset = so.PlaybackLoudness / 35;
161
				speed = so.PlaybackLoudness / 500;
162
				angular = Vector3.new(0, so.PlaybackLoudness / 75, 0);
163
			end
164
		end)
165
		for i, v in pairs(mov) do
166
			v.Position = Vector3.new(chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).X, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Y, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Z);
167
		end
168
	elseif mode == 10 then
169
		offset = height * 15;
170
		for i, v in pairs(mov) do
171
			v.Position = Vector3.new(chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).X, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Y, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Z);
172
		end
173
	elseif mode == 11 then
174
		for i, v in pairs(mov) do
175
			v.Position = Vector3.new(chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(plr:GetMouse().Hit.p)).X, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(plr:GetMouse().Hit.p)).Y, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(plr:GetMouse().Hit.p)).Z) + Vector3.new(chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).X, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Y, chr.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(par[i].Position)).Z);
176
		end
177
	end
178
	for _, v in pairs(mov2) do
179
		v.AngularVelocity = angular;
180
	end
181
end)
182
game.Players.LocalPlayer.Chatted:Connect(function(c)
183
	if c:split(' ')[1] == '.orbit' then
184
		for _, v in pairs(mov) do
185
			chr = ftp(c:split(' ')[2])[1].Character;
186
			v.Parent = ftp(c:split(' ')[2])[1].Character.HumanoidRootPart;
187
		end
188
	end
189
	if c:split(' ')[1] == '.speed' then
190
		speed = tonumber(c:split(' ')[2]);
191
	end
192
	if c:split(' ')[1] == '.mode' then
193
		mode = tonumber(c:split(' ')[2]);
194
	end
195
	if c:split(' ')[1] == '.offset' then
196
		offset = tonumber(c:split(' ')[2]);
197
	end
198-
for i,v in next, game:GetService("Players").LocalPlayer.Character:GetDescendants() do
198+
199-
    if v:IsA("BasePart") and v.Name ~="HumanoidRootPart" then 
199+
200-
    game:GetService("RunService").Heartbeat:connect(function()
200+
201-
    v.Velocity = Vector3.new(-30,0,0)
201+
end)