SHOW:
|
|
- or go back to the newest paste.
1 | -- Decompiled by Blyat | |
2 | -- Fixed by Bad | |
3 | ||
4 | local c = {} | |
5 | local n = Instance.new | |
6 | local t = type | |
7 | local ud = "userdata" | |
8 | c.Part = function(self, P, s) | |
9 | ||
10 | local p = n("Part", P) | |
11 | p.formFactor = "Custom" | |
12 | if t(s) == ud then | |
13 | p.Size = s | |
14 | else | |
15 | if t(s) == "table" then | |
16 | p.Size = Vector3.new(s[1], s[2], s[3]) | |
17 | end | |
18 | end | |
19 | p:BreakJoints() | |
20 | return p | |
21 | end | |
22 | ||
23 | c.Part3 = function(self, P, s) | |
24 | ||
25 | local p = c:Part(P, s) | |
26 | local m = n("SpecialMesh", p) | |
27 | m.MeshId = "rbxassetid://9856898" | |
28 | m.TextureId = "rbxassetid://48358980" | |
29 | p.Changed:connect(function() | |
30 | ||
31 | m.Scale = p.Size * 2 | |
32 | end | |
33 | ) | |
34 | return p, m | |
35 | end | |
36 | ||
37 | Player = game:GetService("Players").LocalPlayer | |
38 | pcall(function() | |
39 | ||
40 | Player.PlayerGui.G:Destroy() | |
41 | end | |
42 | ) | |
43 | HSVtoRGB = function(h, s, v) | |
44 | ||
45 | local c = v * s | |
46 | local x = c * (1 - math.abs(h / 60 % 2 - 1)) | |
47 | local m = v - c | |
48 | local r = 0 | |
49 | local g = 0 | |
50 | local b = 0 | |
51 | if h >= 0 and h < 60 then | |
52 | r = c | |
53 | g = x | |
54 | else | |
55 | if h >= 60 and h < 120 then | |
56 | r = x | |
57 | g = c | |
58 | else | |
59 | if h >= 120 and h < 180 then | |
60 | g = c | |
61 | b = x | |
62 | else | |
63 | if h >= 180 and h < 240 then | |
64 | g = x | |
65 | b = c | |
66 | else | |
67 | if h >= 240 and h < 300 then | |
68 | r = x | |
69 | b = c | |
70 | else | |
71 | if h >= 300 and h < 360 then | |
72 | r = c | |
73 | b = x | |
74 | end | |
75 | end | |
76 | end | |
77 | end | |
78 | end | |
79 | end | |
80 | r = r + m | |
81 | g = g + m | |
82 | b = b + m | |
83 | return r, g, b | |
84 | end | |
85 | ||
86 | Screen = Instance.new("ScreenGui", Player.PlayerGui) | |
87 | Screen.Name = "G" | |
88 | TextLabel = function(Pa, S, Po, Color) | |
89 | ||
90 | local T = Instance.new("TextLabel", Pa) | |
91 | T.Size = S | |
92 | T.Position = Po | |
93 | T.BackgroundColor3 = Color | |
94 | T.Text = "" | |
95 | T.BorderSizePixel = 0 | |
96 | return T | |
97 | end | |
98 | ||
99 | TextButton = function(Pa, S, Po, Color) | |
100 | ||
101 | local T = Instance.new("TextButton", Pa) | |
102 | T.Size = S | |
103 | T.Position = Po | |
104 | T.BackgroundColor3 = Color | |
105 | T.BorderColor3 = Color | |
106 | T.Text = "" | |
107 | return T | |
108 | end | |
109 | ||
110 | TextBox = function(Pa, S, Po, Color) | |
111 | ||
112 | local T = Instance.new("TextBox", Pa) | |
113 | T.Size = S | |
114 | T.Position = Po | |
115 | T.BackgroundColor3 = Color | |
116 | T.BorderColor3 = Color | |
117 | T.Text = "" | |
118 | return T | |
119 | end | |
120 | ||
121 | Frame = function(Pa, S, Po) | |
122 | ||
123 | local T = Instance.new("Frame", Pa) | |
124 | T.Size = S | |
125 | T.Position = Po | |
126 | T.BackgroundColor3 = Color3.new(1, 1, 1) | |
127 | T.BorderSizePixel = 0 | |
128 | return T | |
129 | end | |
130 | ||
131 | local BarScreen = Frame(Screen, UDim2.new(0.15, 0, 2, 0), UDim2.new(0.888, 0, -1, 0)) | |
132 | BarScreen.BackgroundTransparency = 0.5 | |
133 | local WS = Frame(Screen, UDim2.new(0.172, 0, 0.335, 0), UDim2.new(0.715, 0, 0.665, 0)) | |
134 | local TStick = 3 | |
135 | local WantedColor = Color3.new(0.5, 0.5, 0.8) | |
136 | local MStick = {} | |
137 | local Angles = { | |
138 | {185, 0, 0} | |
139 | , | |
140 | {0, 1, 0} | |
141 | , | |
142 | {0, 0, 0} | |
143 | , | |
144 | {0, 0, 0} | |
145 | , | |
146 | {0, 0, 0} | |
147 | , | |
148 | {0, 0, 0} | |
149 | , | |
150 | {0, 0, 0} | |
151 | } | |
152 | reVisible = function(Number) | |
153 | ||
154 | for i = 1, 7 do | |
155 | if Number < i then | |
156 | MStick[i].Visible = false | |
157 | else | |
158 | if i <= Number then | |
159 | MStick[i].Visible = true | |
160 | end | |
161 | end | |
162 | end | |
163 | end | |
164 | ||
165 | CreateGeometry = function() | |
166 | ||
167 | Centre = Player.Character.Torso.CFrame | |
168 | pcall(function() | |
169 | ||
170 | Player.Character["Geometry" .. Player.Name]:Destroy() | |
171 | end | |
172 | ) | |
173 | local Boss = Instance.new("Model", Player.Character) | |
174 | Boss.Name = "Geometry" .. Player.Name | |
175 | local OldPart, FirstPart = nil, nil | |
176 | local Parts = {} | |
177 | local MyAngles = {} | |
178 | local ModifyAngle = {} | |
179 | local MyCentre = Centre * CFrame.new(0, -3, 0) | |
180 | local MyParent = Boss | |
181 | for i,v in pairs(Angles) do | |
182 | table.insert(MyAngles, i, {}) | |
183 | MyAngles[i][1] = v[1] | |
184 | MyAngles[i][2] = v[2] | |
185 | MyAngles[i][3] = v[3] | |
186 | end | |
187 | for i = 1, TStick do | |
188 | local Part = Instance.new("Part", MyParent) | |
189 | table.insert(Parts, i, Part) | |
190 | Part.FormFactor = "Custom" | |
191 | Part.CanCollide = false | |
192 | Part.Anchored = true | |
193 | Part.Size = Vector3.new(0.1, 0.1, 5) | |
194 | if OldPart == nil then | |
195 | Part.CFrame = MyCentre | |
196 | FirstPart = Part | |
197 | else | |
198 | Part.CFrame = OldPart.CFrame + OldPart.CFrame.lookVector * Part.Size.Z / 2 | |
199 | end | |
200 | OldPart = Part | |
201 | Part.CFrame = Part.CFrame + Part.CFrame.lookVector * Part.Size.Z / 2 | |
202 | end | |
203 | local ReachMax = false | |
204 | for i = 1, #Parts do | |
205 | table.insert(ModifyAngle, i, {0, 0, 0}) | |
206 | end | |
207 | local OldPos = Parts[#Parts].CFrame + Parts[#Parts].CFrame.lookVector * Parts[#Parts].Size.Z / 2 | |
208 | local co = 0 | |
209 | repeat | |
210 | local StopTry = false | |
211 | for i,v in pairs(ModifyAngle) do | |
212 | v[1] = v[1] + MyAngles[i][1] | |
213 | v[2] = v[2] + MyAngles[i][2] | |
214 | v[3] = v[3] + MyAngles[i][3] | |
215 | if i == 1 then | |
216 | Parts[i].CFrame = MyCentre * CFrame.Angles(math.rad(v[1]), math.rad(v[2]), math.rad(v[3])) | |
217 | else | |
218 | Parts[i].CFrame = Parts[i - 1].CFrame + Parts[i - 1].CFrame.lookVector * Parts[i - 1].Size.Z / 2 | |
219 | Parts[i].CFrame = Parts[i].CFrame * CFrame.Angles(math.rad(v[1]), math.rad(v[2]), math.rad(v[3])) | |
220 | end | |
221 | Parts[i].CFrame = Parts[i].CFrame + Parts[i].CFrame.lookVector * Parts[i].Size.Z / 2 | |
222 | local NewPos = Parts[#Parts].CFrame + Parts[#Parts].CFrame.lookVector * Parts[#Parts].Size.Z / 2 | |
223 | local L, M = c:Part3(MyParent, {0.1, 0.1, (NewPos.p - OldPos.p).magnitude}) | |
224 | local R, G, B = HSVtoRGB(co % 360, 1, 1) | |
225 | L.FormFactor = "Custom" | |
226 | L.TopSurface = "Smooth" | |
227 | L.BottomSurface = "Smooth" | |
228 | L.CanCollide = true | |
229 | L.Anchored = true | |
230 | L.CFrame = NewPos:lerp(OldPos, 0.3) | |
231 | L.CFrame = CFrame.new(NewPos.p, OldPos.p) | |
232 | L.CFrame = L.CFrame + L.CFrame.lookVector * ((NewPos.p - OldPos.p).magnitude / 2) | |
233 | M.VertexColor = Vector3.new(R, G, B) | |
234 | OldPos = NewPos | |
235 | if v[1] % 360 == 0 and v[2] % 360 == 0 and v[3] % 360 == 0 and not StopTry then | |
236 | ReachMax = true | |
237 | else | |
238 | if v[1] % 360 ~= 0 or v[2] % 360 ~= 0 or v[3] % 360 ~= 0 then | |
239 | ReachMax = false | |
240 | StopTry = true | |
241 | end | |
242 | end | |
243 | end | |
244 | wait() | |
245 | co = co + 1 | |
246 | until ReachMax | |
247 | for i,v in pairs(Parts) do | |
248 | v:Destroy() | |
249 | end | |
250 | end | |
251 | ||
252 | for i = 1, 7 do | |
253 | do | |
254 | local Label = TextLabel(WS, UDim2.new(0.1, 0, 0.075, 0), UDim2.new(0.05, 0, 0.05 + (i - 1) * 0.085, 0), WantedColor) | |
255 | do | |
256 | Label.Text = "S" .. i | |
257 | local X = TextBox(Label, UDim2.new(1, 0, 1, 0), UDim2.new(1), WantedColor) | |
258 | X.BorderSizePixel = 0 | |
259 | X.Changed:connect(function() | |
260 | ||
261 | Angles[i][1] = tonumber(X.Text) | |
262 | end | |
263 | ) | |
264 | local Y = TextBox(Label, UDim2.new(1, 0, 1, 0), UDim2.new(2.02), WantedColor) | |
265 | Y.BorderSizePixel = 0 | |
266 | Y.Changed:connect(function() | |
267 | ||
268 | Angles[i][2] = tonumber(Y.Text) | |
269 | end | |
270 | ) | |
271 | local Z = TextBox(Label, UDim2.new(1, 0, 1, 0), UDim2.new(3.05), WantedColor) | |
272 | Z.BorderSizePixel = 0 | |
273 | Z.Changed:connect(function() | |
274 | ||
275 | Angles[i][3] = tonumber(Z.Text) | |
276 | end | |
277 | ) | |
278 | X.Text = Angles[i][1] | |
279 | Y.Text = Angles[i][2] | |
280 | Z.Text = Angles[i][3] | |
281 | if TStick < i then | |
282 | Label.Visible = false | |
283 | end | |
284 | table.insert(MStick, i, Label) | |
285 | end | |
286 | end | |
287 | end | |
288 | local IncStick = TextButton(WS, UDim2.new(0.055, 0, 0.05, 0), UDim2.new(0.9, 0, 0.05, 0), WantedColor) | |
289 | IncStick.Text = "^" | |
290 | local DecStick = TextButton(WS, UDim2.new(0.055, 0, 0.049, 0), UDim2.new(0.9, 0, 0.1, 0), WantedColor) | |
291 | DecStick.Text = "v" | |
292 | local ShoStick = TextBox(WS, UDim2.new(0.3, 0, 0.1, 0), UDim2.new(0.6, 0, 0.05, 0), WantedColor) | |
293 | ShoStick.Text = TStick | |
294 | IncStick.MouseButton1Click:connect(function() | |
295 | ||
296 | if TStick == 7 then | |
297 | return | |
298 | end | |
299 | TStick = TStick + 1 | |
300 | ShoStick.Text = TStick | |
301 | reVisible(TStick) | |
302 | end | |
303 | ) | |
304 | DecStick.MouseButton1Click:connect(function() | |
305 | ||
306 | if TStick == 1 then | |
307 | return | |
308 | end | |
309 | TStick = TStick - 1 | |
310 | ShoStick.Text = TStick | |
311 | reVisible(TStick) | |
312 | end | |
313 | ) | |
314 | ShoStick.Changed:connect(function() | |
315 | ||
316 | if tonumber(ShoStick.Text) < 1 then | |
317 | TStick = 1 | |
318 | reVisible(TStick) | |
319 | else | |
320 | if tonumber(ShoStick.Text) > 7 then | |
321 | TStick = 7 | |
322 | reVisible(TStick) | |
323 | else | |
324 | ShoStick.Text = TStick | |
325 | end | |
326 | end | |
327 | ShoStick.Text = TStick | |
328 | end | |
329 | ) | |
330 | local Generate = TextButton(WS, UDim2.new(0.8, 0, 0.2, 0), UDim2.new(0.1, 0, 0.7, 0), WantedColor) | |
331 | Generate.Text = "Generate" | |
332 | Generate.MouseButton1Click:connect(function() | |
333 | ||
334 | CreateGeometry() | |
335 | end | |
336 | ) |