· 8 years ago · Aug 26, 2018, 01:50 AM
1--Made by 1ndrew "Steamed Hams"
2
3if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
4local Player,Mouse,mouse,UserInputService,ContextActionService = owner
5do
6 print("FE Compatibility code by Mokiros")
7 script.Parent = Player.Character
8
9 --RemoteEvent for communicating
10 local Event = Instance.new("RemoteEvent")
11 Event.Name = "UserInput_Event"
12
13 --Fake event to make stuff like Mouse.KeyDown work
14 local function fakeEvent()
15 local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
16 t.connect = t.Connect
17 return t
18 end
19
20 --Creating fake input objects with fake variables
21 local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
22 local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
23 local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
24 CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
25 end}
26 --Merged 2 functions into one by checking amount of arguments
27 CAS.UnbindAction = CAS.BindAction
28
29 --This function will trigger the events that have been :Connect()'ed
30 local function te(self,ev,...)
31 local t = m[ev]
32 if t and t._fakeEvent and t.Function then
33 t.Function(...)
34 end
35 end
36 m.TrigEvent = te
37 UIS.TrigEvent = te
38
39 Event.OnServerEvent:Connect(function(plr,io)
40 if plr~=Player then return end
41 if io.isMouse then
42 m.Target = io.Target
43 m.Hit = io.Hit
44 else
45 local b = io.UserInputState == Enum.UserInputState.Begin
46 if io.UserInputType == Enum.UserInputType.MouseButton1 then
47 return m:TrigEvent(b and "Button1Down" or "Button1Up")
48 end
49 for _,t in pairs(CAS.Actions) do
50 for _,k in pairs(t.Keys) do
51 if k==io.KeyCode then
52 t.Function(t.Name,io.UserInputState,io)
53 end
54 end
55 end
56 m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
57 UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
58 end
59 end)
60 Event.Parent = NLS([==[
61 local Player = game:GetService("Players").LocalPlayer
62 local Event = script:WaitForChild("UserInput_Event")
63
64 local UIS = game:GetService("UserInputService")
65 local input = function(io,a)
66 if a then return end
67 --Since InputObject is a client-side instance, we create and pass table instead
68 Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
69 end
70 UIS.InputBegan:Connect(input)
71 UIS.InputEnded:Connect(input)
72
73 local Mouse = Player:GetMouse()
74 local h,t
75 --Give the server mouse data 30 times every second, but only if the values changed
76 --If player is not moving their mouse, client won't fire events
77 while wait(1/30) do
78 if h~=Mouse.Hit or t~=Mouse.Target then
79 h,t=Mouse.Hit,Mouse.Target
80 Event:FireServer({isMouse=true,Target=t,Hit=h})
81 end
82 end]==],Player.Character)
83 Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
84end
85
86function sandbox(var,func)
87 local env = getfenv(func)
88 local newenv = setmetatable({},{
89 __index = function(self,k)
90 if k=="script" then
91 return var
92 else
93 return env[k]
94 end
95 end,
96 })
97 setfenv(func,newenv)
98 return func
99end
100cors = {}
101mas = Instance.new("Model",game:GetService("Lighting"))
102Tool0 = Instance.new("Tool")
103Part1 = Instance.new("Part")
104CylinderMesh2 = Instance.new("CylinderMesh")
105Part3 = Instance.new("Part")
106CylinderMesh4 = Instance.new("CylinderMesh")
107Part5 = Instance.new("Part")
108CylinderMesh6 = Instance.new("CylinderMesh")
109Part7 = Instance.new("Part")
110CylinderMesh8 = Instance.new("CylinderMesh")
111Part9 = Instance.new("Part")
112CylinderMesh10 = Instance.new("CylinderMesh")
113Part11 = Instance.new("Part")
114CylinderMesh12 = Instance.new("CylinderMesh")
115Part13 = Instance.new("Part")
116SpecialMesh14 = Instance.new("SpecialMesh")
117Part15 = Instance.new("Part")
118CylinderMesh16 = Instance.new("CylinderMesh")
119Part17 = Instance.new("Part")
120Part18 = Instance.new("Part")
121PointLight19 = Instance.new("PointLight")
122BillboardGui20 = Instance.new("BillboardGui")
123ImageLabel21 = Instance.new("ImageLabel")
124CylinderMesh22 = Instance.new("CylinderMesh")
125Part23 = Instance.new("Part")
126Sound24 = Instance.new("Sound")
127Sound25 = Instance.new("Sound")
128Part26 = Instance.new("Part")
129CylinderMesh27 = Instance.new("CylinderMesh")
130Part28 = Instance.new("Part")
131SpecialMesh29 = Instance.new("SpecialMesh")
132Part30 = Instance.new("Part")
133SpecialMesh31 = Instance.new("SpecialMesh")
134Decal32 = Instance.new("Decal")
135Decal33 = Instance.new("Decal")
136Part34 = Instance.new("Part")
137SpecialMesh35 = Instance.new("SpecialMesh")
138Part36 = Instance.new("Part")
139SpecialMesh37 = Instance.new("SpecialMesh")
140Part38 = Instance.new("Part")
141CylinderMesh39 = Instance.new("CylinderMesh")
142Part40 = Instance.new("Part")
143CylinderMesh41 = Instance.new("CylinderMesh")
144Part42 = Instance.new("Part")
145CylinderMesh43 = Instance.new("CylinderMesh")
146Part44 = Instance.new("Part")
147SpecialMesh45 = Instance.new("SpecialMesh")
148Part46 = Instance.new("Part")
149CylinderMesh47 = Instance.new("CylinderMesh")
150Part48 = Instance.new("Part")
151SpecialMesh49 = Instance.new("SpecialMesh")
152Decal50 = Instance.new("Decal")
153Decal51 = Instance.new("Decal")
154Part52 = Instance.new("Part")
155SpecialMesh53 = Instance.new("SpecialMesh")
156Part54 = Instance.new("Part")
157SpecialMesh55 = Instance.new("SpecialMesh")
158Part56 = Instance.new("Part")
159CylinderMesh57 = Instance.new("CylinderMesh")
160Part58 = Instance.new("Part")
161CylinderMesh59 = Instance.new("CylinderMesh")
162Part60 = Instance.new("Part")
163SpecialMesh61 = Instance.new("SpecialMesh")
164Part62 = Instance.new("Part")
165CylinderMesh63 = Instance.new("CylinderMesh")
166Part64 = Instance.new("Part")
167CylinderMesh65 = Instance.new("CylinderMesh")
168Part66 = Instance.new("Part")
169SpecialMesh67 = Instance.new("SpecialMesh")
170Part68 = Instance.new("Part")
171SpecialMesh69 = Instance.new("SpecialMesh")
172Part70 = Instance.new("Part")
173CylinderMesh71 = Instance.new("CylinderMesh")
174Part72 = Instance.new("Part")
175SpecialMesh73 = Instance.new("SpecialMesh")
176Part74 = Instance.new("Part")
177CylinderMesh75 = Instance.new("CylinderMesh")
178Part76 = Instance.new("Part")
179CylinderMesh77 = Instance.new("CylinderMesh")
180Part78 = Instance.new("Part")
181CylinderMesh79 = Instance.new("CylinderMesh")
182Part80 = Instance.new("Part")
183CylinderMesh81 = Instance.new("CylinderMesh")
184Part82 = Instance.new("Part")
185CylinderMesh83 = Instance.new("CylinderMesh")
186Part84 = Instance.new("Part")
187CylinderMesh85 = Instance.new("CylinderMesh")
188Part86 = Instance.new("Part")
189CylinderMesh87 = Instance.new("CylinderMesh")
190Decal88 = Instance.new("Decal")
191Decal89 = Instance.new("Decal")
192Part90 = Instance.new("Part")
193SpecialMesh91 = Instance.new("SpecialMesh")
194Part92 = Instance.new("Part")
195SpecialMesh93 = Instance.new("SpecialMesh")
196Part94 = Instance.new("Part")
197CylinderMesh95 = Instance.new("CylinderMesh")
198Part96 = Instance.new("Part")
199SpecialMesh97 = Instance.new("SpecialMesh")
200Part98 = Instance.new("Part")
201SpecialMesh99 = Instance.new("SpecialMesh")
202Part100 = Instance.new("Part")
203CylinderMesh101 = Instance.new("CylinderMesh")
204Part102 = Instance.new("Part")
205CylinderMesh103 = Instance.new("CylinderMesh")
206Decal104 = Instance.new("Decal")
207Part105 = Instance.new("Part")
208CylinderMesh106 = Instance.new("CylinderMesh")
209Part107 = Instance.new("Part")
210CylinderMesh108 = Instance.new("CylinderMesh")
211Part109 = Instance.new("Part")
212CylinderMesh110 = Instance.new("CylinderMesh")
213Part111 = Instance.new("Part")
214CylinderMesh112 = Instance.new("CylinderMesh")
215Part113 = Instance.new("Part")
216CylinderMesh114 = Instance.new("CylinderMesh")
217Part115 = Instance.new("Part")
218CylinderMesh116 = Instance.new("CylinderMesh")
219Decal117 = Instance.new("Decal")
220Part118 = Instance.new("Part")
221CylinderMesh119 = Instance.new("CylinderMesh")
222Decal120 = Instance.new("Decal")
223Part121 = Instance.new("Part")
224CylinderMesh122 = Instance.new("CylinderMesh")
225Part123 = Instance.new("Part")
226CylinderMesh124 = Instance.new("CylinderMesh")
227Decal125 = Instance.new("Decal")
228Decal126 = Instance.new("Decal")
229Part127 = Instance.new("Part")
230SpecialMesh128 = Instance.new("SpecialMesh")
231Part129 = Instance.new("Part")
232CylinderMesh130 = Instance.new("CylinderMesh")
233Part131 = Instance.new("Part")
234CylinderMesh132 = Instance.new("CylinderMesh")
235Decal133 = Instance.new("Decal")
236Part134 = Instance.new("Part")
237CylinderMesh135 = Instance.new("CylinderMesh")
238Part136 = Instance.new("Part")
239CylinderMesh137 = Instance.new("CylinderMesh")
240Part138 = Instance.new("Part")
241SpecialMesh139 = Instance.new("SpecialMesh")
242Part140 = Instance.new("Part")
243SpecialMesh141 = Instance.new("SpecialMesh")
244Part142 = Instance.new("Part")
245CylinderMesh143 = Instance.new("CylinderMesh")
246Part144 = Instance.new("Part")
247CylinderMesh145 = Instance.new("CylinderMesh")
248Part146 = Instance.new("Part")
249SpecialMesh147 = Instance.new("SpecialMesh")
250Part148 = Instance.new("Part")
251CylinderMesh149 = Instance.new("CylinderMesh")
252Part150 = Instance.new("Part")
253CylinderMesh151 = Instance.new("CylinderMesh")
254Part152 = Instance.new("Part")
255CylinderMesh153 = Instance.new("CylinderMesh")
256Part154 = Instance.new("Part")
257CylinderMesh155 = Instance.new("CylinderMesh")
258Part156 = Instance.new("Part")
259SpecialMesh157 = Instance.new("SpecialMesh")
260Part158 = Instance.new("Part")
261SpecialMesh159 = Instance.new("SpecialMesh")
262Part160 = Instance.new("Part")
263CylinderMesh161 = Instance.new("CylinderMesh")
264Part162 = Instance.new("Part")
265SpecialMesh163 = Instance.new("SpecialMesh")
266Part164 = Instance.new("Part")
267CylinderMesh165 = Instance.new("CylinderMesh")
268Part166 = Instance.new("Part")
269CylinderMesh167 = Instance.new("CylinderMesh")
270Part168 = Instance.new("Part")
271SpecialMesh169 = Instance.new("SpecialMesh")
272Part170 = Instance.new("Part")
273SpecialMesh171 = Instance.new("SpecialMesh")
274Part172 = Instance.new("Part")
275SpecialMesh173 = Instance.new("SpecialMesh")
276Part174 = Instance.new("Part")
277SpecialMesh175 = Instance.new("SpecialMesh")
278Part176 = Instance.new("Part")
279CylinderMesh177 = Instance.new("CylinderMesh")
280Part178 = Instance.new("Part")
281SpecialMesh179 = Instance.new("SpecialMesh")
282Part180 = Instance.new("Part")
283CylinderMesh181 = Instance.new("CylinderMesh")
284Part182 = Instance.new("Part")
285CylinderMesh183 = Instance.new("CylinderMesh")
286Part184 = Instance.new("Part")
287SpecialMesh185 = Instance.new("SpecialMesh")
288Part186 = Instance.new("Part")
289SpecialMesh187 = Instance.new("SpecialMesh")
290IntValue188 = Instance.new("IntValue")
291IntValue189 = Instance.new("IntValue")
292IntValue190 = Instance.new("IntValue")
293IntValue191 = Instance.new("IntValue")
294IntValue192 = Instance.new("IntValue")
295Script193 = Instance.new("Script")
296ObjectValue194 = Instance.new("ObjectValue")
297RemoteFunction195 = Instance.new("RemoteFunction")
298RemoteFunction196 = Instance.new("RemoteFunction")
299RemoteFunction197 = Instance.new("RemoteFunction")
300RemoteEvent198 = Instance.new("RemoteEvent")
301RemoteFunction199 = Instance.new("RemoteFunction")
302RemoteFunction200 = Instance.new("RemoteFunction")
303RemoteFunction201 = Instance.new("RemoteFunction")
304LocalScript202 = Instance.new("LocalScript")
305IntValue203 = Instance.new("IntValue")
306RemoteEvent204 = Instance.new("RemoteEvent")
307RemoteEvent205 = Instance.new("RemoteEvent")
308RemoteEvent206 = Instance.new("RemoteEvent")
309RemoteEvent207 = Instance.new("RemoteEvent")
310LocalScript208 = Instance.new("LocalScript")
311IntValue209 = Instance.new("IntValue")
312Folder210 = Instance.new("Folder")
313ScreenGui211 = Instance.new("ScreenGui")
314ImageLabel212 = Instance.new("ImageLabel")
315NumberValue213 = Instance.new("NumberValue")
316Frame214 = Instance.new("Frame")
317ImageLabel215 = Instance.new("ImageLabel")
318TextLabel216 = Instance.new("TextLabel")
319Frame217 = Instance.new("Frame")
320TextLabel218 = Instance.new("TextLabel")
321Frame219 = Instance.new("Frame")
322TextLabel220 = Instance.new("TextLabel")
323Frame221 = Instance.new("Frame")
324TextLabel222 = Instance.new("TextLabel")
325Frame223 = Instance.new("Frame")
326TextLabel224 = Instance.new("TextLabel")
327Frame225 = Instance.new("Frame")
328Frame226 = Instance.new("Frame")
329TextLabel227 = Instance.new("TextLabel")
330TextLabel228 = Instance.new("TextLabel")
331TextLabel229 = Instance.new("TextLabel")
332TextLabel230 = Instance.new("TextLabel")
333TextLabel231 = Instance.new("TextLabel")
334Frame232 = Instance.new("Frame")
335TextLabel233 = Instance.new("TextLabel")
336TextLabel234 = Instance.new("TextLabel")
337TextLabel235 = Instance.new("TextLabel")
338Frame236 = Instance.new("Frame")
339TextLabel237 = Instance.new("TextLabel")
340Frame238 = Instance.new("Frame")
341Frame239 = Instance.new("Frame")
342Frame240 = Instance.new("Frame")
343Frame241 = Instance.new("Frame")
344Frame242 = Instance.new("Frame")
345Frame243 = Instance.new("Frame")
346Frame244 = Instance.new("Frame")
347Frame245 = Instance.new("Frame")
348Frame246 = Instance.new("Frame")
349Frame247 = Instance.new("Frame")
350Frame248 = Instance.new("Frame")
351Frame249 = Instance.new("Frame")
352Frame250 = Instance.new("Frame")
353Frame251 = Instance.new("Frame")
354Frame252 = Instance.new("Frame")
355Frame253 = Instance.new("Frame")
356Frame254 = Instance.new("Frame")
357Frame255 = Instance.new("Frame")
358Frame256 = Instance.new("Frame")
359Frame257 = Instance.new("Frame")
360Frame258 = Instance.new("Frame")
361Frame259 = Instance.new("Frame")
362Frame260 = Instance.new("Frame")
363Frame261 = Instance.new("Frame")
364Frame262 = Instance.new("Frame")
365Frame263 = Instance.new("Frame")
366TextLabel264 = Instance.new("TextLabel")
367TextLabel265 = Instance.new("TextLabel")
368Frame266 = Instance.new("Frame")
369Frame267 = Instance.new("Frame")
370ImageLabel268 = Instance.new("ImageLabel")
371TextLabel269 = Instance.new("TextLabel")
372TextLabel270 = Instance.new("TextLabel")
373Frame271 = Instance.new("Frame")
374ImageLabel272 = Instance.new("ImageLabel")
375TextLabel273 = Instance.new("TextLabel")
376TextLabel274 = Instance.new("TextLabel")
377Frame275 = Instance.new("Frame")
378TextLabel276 = Instance.new("TextLabel")
379TextLabel277 = Instance.new("TextLabel")
380TextLabel278 = Instance.new("TextLabel")
381Frame279 = Instance.new("Frame")
382Frame280 = Instance.new("Frame")
383ImageLabel281 = Instance.new("ImageLabel")
384ImageLabel282 = Instance.new("ImageLabel")
385Frame283 = Instance.new("Frame")
386TextLabel284 = Instance.new("TextLabel")
387Frame285 = Instance.new("Frame")
388ImageLabel286 = Instance.new("ImageLabel")
389ImageLabel287 = Instance.new("ImageLabel")
390Frame288 = Instance.new("Frame")
391Frame289 = Instance.new("Frame")
392LocalScript290 = Instance.new("LocalScript")
393TextLabel291 = Instance.new("TextLabel")
394Part292 = Instance.new("Part")
395SpecialMesh293 = Instance.new("SpecialMesh")
396Weld294 = Instance.new("Weld")
397Weld295 = Instance.new("Weld")
398Weld296 = Instance.new("Weld")
399Weld297 = Instance.new("Weld")
400Weld298 = Instance.new("Weld")
401Weld299 = Instance.new("Weld")
402Weld300 = Instance.new("Weld")
403Weld301 = Instance.new("Weld")
404Weld302 = Instance.new("Weld")
405Weld303 = Instance.new("Weld")
406Weld304 = Instance.new("Weld")
407Weld305 = Instance.new("Weld")
408Weld306 = Instance.new("Weld")
409Weld307 = Instance.new("Weld")
410Weld308 = Instance.new("Weld")
411Weld309 = Instance.new("Weld")
412Weld310 = Instance.new("Weld")
413Weld311 = Instance.new("Weld")
414Weld312 = Instance.new("Weld")
415Weld313 = Instance.new("Weld")
416Weld314 = Instance.new("Weld")
417Weld315 = Instance.new("Weld")
418Weld316 = Instance.new("Weld")
419Weld317 = Instance.new("Weld")
420Weld318 = Instance.new("Weld")
421Weld319 = Instance.new("Weld")
422Weld320 = Instance.new("Weld")
423Weld321 = Instance.new("Weld")
424Weld322 = Instance.new("Weld")
425Weld323 = Instance.new("Weld")
426Weld324 = Instance.new("Weld")
427Weld325 = Instance.new("Weld")
428Weld326 = Instance.new("Weld")
429Weld327 = Instance.new("Weld")
430Weld328 = Instance.new("Weld")
431Weld329 = Instance.new("Weld")
432Weld330 = Instance.new("Weld")
433Weld331 = Instance.new("Weld")
434Weld332 = Instance.new("Weld")
435Weld333 = Instance.new("Weld")
436Weld334 = Instance.new("Weld")
437Weld335 = Instance.new("Weld")
438Weld336 = Instance.new("Weld")
439Weld337 = Instance.new("Weld")
440Weld338 = Instance.new("Weld")
441Weld339 = Instance.new("Weld")
442Weld340 = Instance.new("Weld")
443Weld341 = Instance.new("Weld")
444Weld342 = Instance.new("Weld")
445Weld343 = Instance.new("Weld")
446Weld344 = Instance.new("Weld")
447Weld345 = Instance.new("Weld")
448Weld346 = Instance.new("Weld")
449Weld347 = Instance.new("Weld")
450Weld348 = Instance.new("Weld")
451Weld349 = Instance.new("Weld")
452Weld350 = Instance.new("Weld")
453Weld351 = Instance.new("Weld")
454Weld352 = Instance.new("Weld")
455Weld353 = Instance.new("Weld")
456Weld354 = Instance.new("Weld")
457Weld355 = Instance.new("Weld")
458Weld356 = Instance.new("Weld")
459Weld357 = Instance.new("Weld")
460Weld358 = Instance.new("Weld")
461Weld359 = Instance.new("Weld")
462Weld360 = Instance.new("Weld")
463Weld361 = Instance.new("Weld")
464Weld362 = Instance.new("Weld")
465Weld363 = Instance.new("Weld")
466Weld364 = Instance.new("Weld")
467Weld365 = Instance.new("Weld")
468Weld366 = Instance.new("Weld")
469Part367 = Instance.new("Part")
470Sound368 = Instance.new("Sound")
471Sound369 = Instance.new("Sound")
472Part370 = Instance.new("Part")
473Sound371 = Instance.new("Sound")
474Sound372 = Instance.new("Sound")
475Model373 = Instance.new("Model")
476Part374 = Instance.new("Part")
477Decal375 = Instance.new("Decal")
478Part376 = Instance.new("Part")
479Decal377 = Instance.new("Decal")
480Motor378 = Instance.new("Motor")
481Motor379 = Instance.new("Motor")
482Motor380 = Instance.new("Motor")
483Motor381 = Instance.new("Motor")
484Motor382 = Instance.new("Motor")
485Part383 = Instance.new("Part")
486Part384 = Instance.new("Part")
487Part385 = Instance.new("Part")
488Part386 = Instance.new("Part")
489SpecialMesh387 = Instance.new("SpecialMesh")
490Decal388 = Instance.new("Decal")
491Decal389 = Instance.new("Decal")
492Humanoid390 = Instance.new("Humanoid")
493Script391 = Instance.new("Script")
494Shirt392 = Instance.new("Shirt")
495Pants393 = Instance.new("Pants")
496Part394 = Instance.new("Part")
497Tool0.Name = "Steamer"
498Tool0.Parent = mas
499Part1.Parent = Tool0
500Part1.Material = Enum.Material.SmoothPlastic
501Part1.Transparency = 1
502Part1.Rotation = Vector3.new(-60, 0, 165)
503Part1.Anchored = true
504Part1.CanCollide = false
505Part1.FormFactor = Enum.FormFactor.Custom
506Part1.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
507Part1.CFrame = CFrame.new(1435.38062, 48.6328773, -1311.01868, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496)
508Part1.BottomSurface = Enum.SurfaceType.Smooth
509Part1.TopSurface = Enum.SurfaceType.Smooth
510Part1.Position = Vector3.new(1435.38062, 48.6328773, -1311.01868)
511Part1.Orientation = Vector3.new(-60, 0, 165)
512CylinderMesh2.Parent = Part1
513CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
514CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
515Part3.Parent = Tool0
516Part3.Material = Enum.Material.SmoothPlastic
517Part3.BrickColor = BrickColor.new("Nougat")
518Part3.Transparency = 1
519Part3.Rotation = Vector3.new(180, 0, 90)
520Part3.Anchored = true
521Part3.CanCollide = false
522Part3.FormFactor = Enum.FormFactor.Custom
523Part3.Size = Vector3.new(0.39847663, 0.339129031, 0.423911244)
524Part3.CFrame = CFrame.new(1434.30396, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
525Part3.BottomSurface = Enum.SurfaceType.Smooth
526Part3.TopSurface = Enum.SurfaceType.Smooth
527Part3.Color = Color3.new(0.8, 0.556863, 0.411765)
528Part3.Position = Vector3.new(1434.30396, 48.923233, -1310.87183)
529Part3.Orientation = Vector3.new(0, -180, -90)
530Part3.Color = Color3.new(0.8, 0.556863, 0.411765)
531CylinderMesh4.Parent = Part3
532Part5.Parent = Tool0
533Part5.Material = Enum.Material.SmoothPlastic
534Part5.BrickColor = BrickColor.new("Dark stone grey")
535Part5.Transparency = 1
536Part5.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993)
537Part5.Anchored = true
538Part5.CanCollide = false
539Part5.FormFactor = Enum.FormFactor.Custom
540Part5.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
541Part5.CFrame = CFrame.new(1435.09131, 49.0662308, -1311.1488, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559)
542Part5.BottomSurface = Enum.SurfaceType.Smooth
543Part5.TopSurface = Enum.SurfaceType.Smooth
544Part5.Color = Color3.new(0.388235, 0.372549, 0.384314)
545Part5.Position = Vector3.new(1435.09131, 49.0662308, -1311.1488)
546Part5.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986)
547Part5.Color = Color3.new(0.388235, 0.372549, 0.384314)
548CylinderMesh6.Parent = Part5
549CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
550CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
551Part7.Parent = Tool0
552Part7.Material = Enum.Material.SmoothPlastic
553Part7.BrickColor = BrickColor.new("Black")
554Part7.Transparency = 1
555Part7.Rotation = Vector3.new(-105, 75, 90)
556Part7.Anchored = true
557Part7.CanCollide = false
558Part7.FormFactor = Enum.FormFactor.Custom
559Part7.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
560Part7.CFrame = CFrame.new(1434.85657, 49.1090851, -1311.08801, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676)
561Part7.BottomSurface = Enum.SurfaceType.Smooth
562Part7.TopSurface = Enum.SurfaceType.Smooth
563Part7.Color = Color3.new(0.105882, 0.164706, 0.207843)
564Part7.Position = Vector3.new(1434.85657, 49.1090851, -1311.08801)
565Part7.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5)
566Part7.Color = Color3.new(0.105882, 0.164706, 0.207843)
567CylinderMesh8.Parent = Part7
568CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
569CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
570Part9.Parent = Tool0
571Part9.Material = Enum.Material.SmoothPlastic
572Part9.BrickColor = BrickColor.new("Dark stone grey")
573Part9.Transparency = 1
574Part9.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002)
575Part9.Anchored = true
576Part9.CanCollide = false
577Part9.FormFactor = Enum.FormFactor.Custom
578Part9.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
579Part9.CFrame = CFrame.new(1435.07556, 49.067543, -1310.66211, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203)
580Part9.BottomSurface = Enum.SurfaceType.Smooth
581Part9.TopSurface = Enum.SurfaceType.Smooth
582Part9.Color = Color3.new(0.388235, 0.372549, 0.384314)
583Part9.Position = Vector3.new(1435.07556, 49.067543, -1310.66211)
584Part9.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002)
585Part9.Color = Color3.new(0.388235, 0.372549, 0.384314)
586CylinderMesh10.Parent = Part9
587CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
588CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
589Part11.Parent = Tool0
590Part11.Material = Enum.Material.SmoothPlastic
591Part11.BrickColor = BrickColor.new("Dark stone grey")
592Part11.Transparency = 1
593Part11.Rotation = Vector3.new(180, 0, 90)
594Part11.Anchored = true
595Part11.CanCollide = false
596Part11.FormFactor = Enum.FormFactor.Custom
597Part11.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
598Part11.CFrame = CFrame.new(1433.61292, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
599Part11.BottomSurface = Enum.SurfaceType.Smooth
600Part11.TopSurface = Enum.SurfaceType.Smooth
601Part11.Color = Color3.new(0.388235, 0.372549, 0.384314)
602Part11.Position = Vector3.new(1433.61292, 48.9232292, -1310.87183)
603Part11.Orientation = Vector3.new(0, -180, -90)
604Part11.Color = Color3.new(0.388235, 0.372549, 0.384314)
605CylinderMesh12.Parent = Part11
606CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139)
607CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139)
608Part13.Parent = Tool0
609Part13.Material = Enum.Material.SmoothPlastic
610Part13.BrickColor = BrickColor.new("Really black")
611Part13.Transparency = 1
612Part13.Rotation = Vector3.new(0, 90, 0)
613Part13.Anchored = true
614Part13.CanCollide = false
615Part13.FormFactor = Enum.FormFactor.Custom
616Part13.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
617Part13.CFrame = CFrame.new(1436.875, 48.5038071, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
618Part13.BackSurface = Enum.SurfaceType.SmoothNoOutlines
619Part13.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
620Part13.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
621Part13.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
622Part13.RightSurface = Enum.SurfaceType.SmoothNoOutlines
623Part13.TopSurface = Enum.SurfaceType.SmoothNoOutlines
624Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
625Part13.Position = Vector3.new(1436.875, 48.5038071, -1310.87622)
626Part13.Orientation = Vector3.new(0, 90, 0)
627Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
628SpecialMesh14.Parent = Part13
629SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545)
630SpecialMesh14.MeshType = Enum.MeshType.Brick
631SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545)
632Part15.Parent = Tool0
633Part15.Material = Enum.Material.SmoothPlastic
634Part15.BrickColor = BrickColor.new("Brick yellow")
635Part15.Transparency = 1
636Part15.Rotation = Vector3.new(-60, 0, 135)
637Part15.Anchored = true
638Part15.CanCollide = false
639Part15.FormFactor = Enum.FormFactor.Custom
640Part15.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
641Part15.CFrame = CFrame.new(1435.32275, 48.6293831, -1311.01672, -0.707099199, -0.707114458, 1.28547924e-06, 0.353550076, -0.353540927, 0.866031885, -0.612383127, 0.612370908, 0.499988824)
642Part15.BottomSurface = Enum.SurfaceType.Smooth
643Part15.TopSurface = Enum.SurfaceType.Smooth
644Part15.Color = Color3.new(0.843137, 0.772549, 0.603922)
645Part15.Position = Vector3.new(1435.32275, 48.6293831, -1311.01672)
646Part15.Orientation = Vector3.new(-60, 0, 135)
647Part15.Color = Color3.new(0.843137, 0.772549, 0.603922)
648CylinderMesh16.Parent = Part15
649CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277)
650CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277)
651Part17.Name = "AimPart"
652Part17.Parent = Tool0
653Part17.Material = Enum.Material.SmoothPlastic
654Part17.Transparency = 1
655Part17.Rotation = Vector3.new(90, 87.8300018, -90)
656Part17.Anchored = true
657Part17.CanCollide = false
658Part17.FormFactor = Enum.FormFactor.Custom
659Part17.Size = Vector3.new(0.300000012, 0.200000003, 0.200000003)
660Part17.CFrame = CFrame.new(1436.29102, 49.267807, -1310.8728, 0, 0.0378389955, 0.99928385, 0, 0.99928385, -0.0378389955, -1, 0, 0)
661Part17.BottomSurface = Enum.SurfaceType.Smooth
662Part17.TopSurface = Enum.SurfaceType.Smooth
663Part17.Position = Vector3.new(1436.29102, 49.267807, -1310.8728)
664Part17.Orientation = Vector3.new(2.16999984, 90, 0)
665Part18.Name = "Main"
666Part18.Parent = Tool0
667Part18.Material = Enum.Material.SmoothPlastic
668Part18.BrickColor = BrickColor.new("Really black")
669Part18.Transparency = 1
670Part18.Rotation = Vector3.new(0, 0, 90)
671Part18.Anchored = true
672Part18.CanCollide = false
673Part18.FormFactor = Enum.FormFactor.Custom
674Part18.Size = Vector3.new(0.25, 0.25, 0.25)
675Part18.CFrame = CFrame.new(1433.32568, 48.9478035, -1310.8728, 0, -1, 0, 1, 0, -0, 0, 0, 1)
676Part18.BottomSurface = Enum.SurfaceType.Smooth
677Part18.TopSurface = Enum.SurfaceType.Smooth
678Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
679Part18.Position = Vector3.new(1433.32568, 48.9478035, -1310.8728)
680Part18.Orientation = Vector3.new(0, 0, 90)
681Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
682PointLight19.Name = "FlashFX"
683PointLight19.Parent = Part18
684PointLight19.Color = Color3.new(0.211765, 1, 0.054902)
685PointLight19.Enabled = false
686PointLight19.Brightness = 10
687PointLight19.Range = 6
688PointLight19.Shadows = true
689PointLight19.Color = Color3.new(0.211765, 1, 0.054902)
690BillboardGui20.Name = "FlashGui"
691BillboardGui20.Parent = Part18
692BillboardGui20.Size = UDim2.new(1.10000002, 0, 1.10000002, 0)
693BillboardGui20.Enabled = false
694ImageLabel21.Name = "Label"
695ImageLabel21.Parent = BillboardGui20
696ImageLabel21.Transparency = 1
697ImageLabel21.Size = UDim2.new(1, 0, 1, 0)
698ImageLabel21.BackgroundTransparency = 1
699ImageLabel21.Image = "http://www.roblox.com/asset/?id=192664810"
700ImageLabel21.ImageColor3 = Color3.new(0, 1, 0.00392157)
701CylinderMesh22.Parent = Part18
702CylinderMesh22.Offset = Vector3.new(0, -0.248999998, 0)
703CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024)
704CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024)
705Part23.Name = "Handle"
706Part23.Parent = Tool0
707Part23.Material = Enum.Material.SmoothPlastic
708Part23.Transparency = 1
709Part23.Rotation = Vector3.new(0, 90, 0)
710Part23.Anchored = true
711Part23.CanCollide = false
712Part23.FormFactor = Enum.FormFactor.Custom
713Part23.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
714Part23.CFrame = CFrame.new(1435.87061, 48.4373131, -1310.86279, 0, 0, 1, 0, 1, -0, -1, 0, 0)
715Part23.BottomSurface = Enum.SurfaceType.Smooth
716Part23.TopSurface = Enum.SurfaceType.Smooth
717Part23.Position = Vector3.new(1435.87061, 48.4373131, -1310.86279)
718Part23.Orientation = Vector3.new(0, 90, 0)
719Sound24.Name = "FireSound"
720Sound24.Parent = Part23
721Sound24.Pitch = 0.20000000298023
722Sound24.SoundId = "rbxassetid://823426534"
723Sound24.Volume = 10
724Sound25.Name = "ReloadSound"
725Sound25.Parent = Part23
726Sound25.Pitch = 0.20000000298023
727Sound25.SoundId = "rbxassetid://811242564"
728Sound25.Volume = 10
729Part26.Parent = Tool0
730Part26.Material = Enum.Material.SmoothPlastic
731Part26.BrickColor = BrickColor.new("Nougat")
732Part26.Transparency = 1
733Part26.Rotation = Vector3.new(180, 0, 90)
734Part26.Anchored = true
735Part26.CanCollide = false
736Part26.FormFactor = Enum.FormFactor.Custom
737Part26.Size = Vector3.new(0.27978155, 0.822387338, 0.423911244)
738Part26.CFrame = CFrame.new(1435.18982, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
739Part26.BottomSurface = Enum.SurfaceType.Smooth
740Part26.TopSurface = Enum.SurfaceType.Smooth
741Part26.Color = Color3.new(0.8, 0.556863, 0.411765)
742Part26.Position = Vector3.new(1435.18982, 48.9232292, -1310.87183)
743Part26.Orientation = Vector3.new(0, -180, -90)
744Part26.Color = Color3.new(0.8, 0.556863, 0.411765)
745CylinderMesh27.Parent = Part26
746Part28.Name = "Smooth Block Model"
747Part28.Parent = Tool0
748Part28.Material = Enum.Material.SmoothPlastic
749Part28.BrickColor = BrickColor.new("Dark stone grey")
750Part28.Transparency = 1
751Part28.Rotation = Vector3.new(-90, -15, -90)
752Part28.Anchored = true
753Part28.CanCollide = false
754Part28.FormFactor = Enum.FormFactor.Custom
755Part28.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
756Part28.CFrame = CFrame.new(1435.97473, 48.6492271, -1310.87183, 0, 0.965925872, -0.258818984, 0, 0.258818984, 0.965925872, 1, 0, 0)
757Part28.BackSurface = Enum.SurfaceType.SmoothNoOutlines
758Part28.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
759Part28.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
760Part28.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
761Part28.RightSurface = Enum.SurfaceType.SmoothNoOutlines
762Part28.TopSurface = Enum.SurfaceType.SmoothNoOutlines
763Part28.Color = Color3.new(0.388235, 0.372549, 0.384314)
764Part28.Position = Vector3.new(1435.97473, 48.6492271, -1310.87183)
765Part28.Orientation = Vector3.new(-75, -90, 0)
766Part28.Color = Color3.new(0.388235, 0.372549, 0.384314)
767SpecialMesh29.Parent = Part28
768SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893)
769SpecialMesh29.MeshType = Enum.MeshType.Wedge
770SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893)
771Part30.Name = "Mag"
772Part30.Parent = Tool0
773Part30.Material = Enum.Material.SmoothPlastic
774Part30.BrickColor = BrickColor.new("Dark stone grey")
775Part30.Transparency = 1
776Part30.Rotation = Vector3.new(0, 90, 0)
777Part30.Anchored = true
778Part30.CanCollide = false
779Part30.FormFactor = Enum.FormFactor.Custom
780Part30.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
781Part30.CFrame = CFrame.new(1435.36523, 48.273735, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
782Part30.BottomSurface = Enum.SurfaceType.Smooth
783Part30.TopSurface = Enum.SurfaceType.Smooth
784Part30.Color = Color3.new(0.388235, 0.372549, 0.384314)
785Part30.Position = Vector3.new(1435.36523, 48.273735, -1310.88025)
786Part30.Orientation = Vector3.new(0, 90, 0)
787Part30.Color = Color3.new(0.388235, 0.372549, 0.384314)
788SpecialMesh31.Parent = Part30
789SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093)
790SpecialMesh31.MeshType = Enum.MeshType.Brick
791SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093)
792Decal32.Parent = Part30
793Decal32.Texture = "http://www.roblox.com/asset/?id=2276240"
794Decal32.Face = Enum.NormalId.Right
795Decal33.Parent = Part30
796Decal33.Texture = "http://www.roblox.com/asset/?id=2276240"
797Decal33.Face = Enum.NormalId.Left
798Part34.Name = "Mag"
799Part34.Parent = Tool0
800Part34.Material = Enum.Material.SmoothPlastic
801Part34.BrickColor = BrickColor.new("Dark stone grey")
802Part34.Transparency = 1
803Part34.Rotation = Vector3.new(0, 90, 0)
804Part34.Anchored = true
805Part34.CanCollide = false
806Part34.FormFactor = Enum.FormFactor.Custom
807Part34.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
808Part34.CFrame = CFrame.new(1435.31006, 48.3118896, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
809Part34.BottomSurface = Enum.SurfaceType.Smooth
810Part34.TopSurface = Enum.SurfaceType.Smooth
811Part34.Color = Color3.new(0.388235, 0.372549, 0.384314)
812Part34.Position = Vector3.new(1435.31006, 48.3118896, -1310.88025)
813Part34.Orientation = Vector3.new(0, 90, 0)
814Part34.Color = Color3.new(0.388235, 0.372549, 0.384314)
815SpecialMesh35.Parent = Part34
816SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
817SpecialMesh35.MeshType = Enum.MeshType.Brick
818SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
819Part36.Name = "Mag"
820Part36.Parent = Tool0
821Part36.Material = Enum.Material.SmoothPlastic
822Part36.BrickColor = BrickColor.new("Dark stone grey")
823Part36.Transparency = 1
824Part36.Rotation = Vector3.new(0, 90, 0)
825Part36.Anchored = true
826Part36.CanCollide = false
827Part36.FormFactor = Enum.FormFactor.Custom
828Part36.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
829Part36.CFrame = CFrame.new(1435.42041, 48.3114662, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
830Part36.BottomSurface = Enum.SurfaceType.Smooth
831Part36.TopSurface = Enum.SurfaceType.Smooth
832Part36.Color = Color3.new(0.388235, 0.372549, 0.384314)
833Part36.Position = Vector3.new(1435.42041, 48.3114662, -1310.88025)
834Part36.Orientation = Vector3.new(0, 90, 0)
835Part36.Color = Color3.new(0.388235, 0.372549, 0.384314)
836SpecialMesh37.Parent = Part36
837SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
838SpecialMesh37.MeshType = Enum.MeshType.Brick
839SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
840Part38.Name = "Mag"
841Part38.Parent = Tool0
842Part38.Material = Enum.Material.SmoothPlastic
843Part38.BrickColor = BrickColor.new("Cool yellow")
844Part38.Transparency = 1
845Part38.Rotation = Vector3.new(0, 90, 0)
846Part38.Anchored = true
847Part38.CanCollide = false
848Part38.FormFactor = Enum.FormFactor.Custom
849Part38.Size = Vector3.new(1, 1, 1)
850Part38.CFrame = CFrame.new(1435.36523, 48.3523445, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
851Part38.BottomSurface = Enum.SurfaceType.Smooth
852Part38.TopSurface = Enum.SurfaceType.Smooth
853Part38.Color = Color3.new(0.992157, 0.917647, 0.552941)
854Part38.Position = Vector3.new(1435.36523, 48.3523445, -1310.88025)
855Part38.Orientation = Vector3.new(0, 90, 0)
856Part38.Color = Color3.new(0.992157, 0.917647, 0.552941)
857CylinderMesh39.Parent = Part38
858CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233)
859CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233)
860Part40.Name = "Mag"
861Part40.Parent = Tool0
862Part40.Material = Enum.Material.SmoothPlastic
863Part40.BrickColor = BrickColor.new("Dark stone grey")
864Part40.Transparency = 1
865Part40.Rotation = Vector3.new(0, 90, 0)
866Part40.Anchored = true
867Part40.CanCollide = false
868Part40.FormFactor = Enum.FormFactor.Custom
869Part40.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
870Part40.CFrame = CFrame.new(1435.36523, 48.373539, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
871Part40.BottomSurface = Enum.SurfaceType.Smooth
872Part40.TopSurface = Enum.SurfaceType.Smooth
873Part40.Color = Color3.new(0.388235, 0.372549, 0.384314)
874Part40.Position = Vector3.new(1435.36523, 48.373539, -1310.88025)
875Part40.Orientation = Vector3.new(0, 90, 0)
876Part40.Color = Color3.new(0.388235, 0.372549, 0.384314)
877CylinderMesh41.Parent = Part40
878CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793)
879CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793)
880Part42.Name = "Mag"
881Part42.Parent = Tool0
882Part42.Material = Enum.Material.SmoothPlastic
883Part42.BrickColor = BrickColor.new("Bright red")
884Part42.Transparency = 1
885Part42.Rotation = Vector3.new(0, 90, 0)
886Part42.Anchored = true
887Part42.CanCollide = false
888Part42.FormFactor = Enum.FormFactor.Custom
889Part42.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
890Part42.CFrame = CFrame.new(1435.36523, 48.3438797, -1310.88013, 0, 0, 1, 0, 1, -0, -1, 0, 0)
891Part42.BottomSurface = Enum.SurfaceType.Smooth
892Part42.TopSurface = Enum.SurfaceType.Smooth
893Part42.Color = Color3.new(0.768628, 0.156863, 0.109804)
894Part42.Position = Vector3.new(1435.36523, 48.3438797, -1310.88013)
895Part42.Orientation = Vector3.new(0, 90, 0)
896Part42.Color = Color3.new(0.768628, 0.156863, 0.109804)
897CylinderMesh43.Parent = Part42
898CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052)
899CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052)
900Part44.Name = "Mag"
901Part44.Parent = Tool0
902Part44.Material = Enum.Material.SmoothPlastic
903Part44.BrickColor = BrickColor.new("Dark stone grey")
904Part44.Transparency = 1
905Part44.Rotation = Vector3.new(90, 0, -90)
906Part44.Anchored = true
907Part44.CanCollide = false
908Part44.FormFactor = Enum.FormFactor.Custom
909Part44.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
910Part44.CFrame = CFrame.new(1435.36548, 48.474556, -1310.88025, 0, 1, 0, 0, 0, -1, -1, 0, 0)
911Part44.BottomSurface = Enum.SurfaceType.Smooth
912Part44.TopSurface = Enum.SurfaceType.Smooth
913Part44.Color = Color3.new(0.388235, 0.372549, 0.384314)
914Part44.Position = Vector3.new(1435.36548, 48.474556, -1310.88025)
915Part44.Orientation = Vector3.new(90, 90, 0)
916Part44.Color = Color3.new(0.388235, 0.372549, 0.384314)
917SpecialMesh45.Parent = Part44
918SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345)
919SpecialMesh45.MeshType = Enum.MeshType.Sphere
920SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345)
921Part46.Name = "Mag"
922Part46.Parent = Tool0
923Part46.Material = Enum.Material.SmoothPlastic
924Part46.BrickColor = BrickColor.new("Dark stone grey")
925Part46.Transparency = 1
926Part46.Rotation = Vector3.new(0, 90, 0)
927Part46.Anchored = true
928Part46.CanCollide = false
929Part46.FormFactor = Enum.FormFactor.Custom
930Part46.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
931Part46.CFrame = CFrame.new(1435.36523, 48.4667969, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
932Part46.BottomSurface = Enum.SurfaceType.Smooth
933Part46.TopSurface = Enum.SurfaceType.Smooth
934Part46.Color = Color3.new(0.388235, 0.372549, 0.384314)
935Part46.Position = Vector3.new(1435.36523, 48.4667969, -1310.88025)
936Part46.Orientation = Vector3.new(0, 90, 0)
937Part46.Color = Color3.new(0.388235, 0.372549, 0.384314)
938CylinderMesh47.Parent = Part46
939CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793)
940CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793)
941Part48.Name = "Mag"
942Part48.Parent = Tool0
943Part48.Material = Enum.Material.SmoothPlastic
944Part48.BrickColor = BrickColor.new("Dark stone grey")
945Part48.Transparency = 1
946Part48.Rotation = Vector3.new(0, 90, 0)
947Part48.Anchored = true
948Part48.CanCollide = false
949Part48.FormFactor = Enum.FormFactor.Custom
950Part48.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
951Part48.CFrame = CFrame.new(1435.36108, 48.4771957, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
952Part48.BottomSurface = Enum.SurfaceType.Smooth
953Part48.TopSurface = Enum.SurfaceType.Smooth
954Part48.Color = Color3.new(0.388235, 0.372549, 0.384314)
955Part48.Position = Vector3.new(1435.36108, 48.4771957, -1310.87622)
956Part48.Orientation = Vector3.new(0, 90, 0)
957Part48.Color = Color3.new(0.388235, 0.372549, 0.384314)
958SpecialMesh49.Parent = Part48
959SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614)
960SpecialMesh49.MeshType = Enum.MeshType.Brick
961SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614)
962Decal50.Parent = Part48
963Decal50.Texture = "http://www.roblox.com/asset/?id=2276263"
964Decal50.Face = Enum.NormalId.Right
965Decal51.Parent = Part48
966Decal51.Texture = "http://www.roblox.com/asset/?id=2276263"
967Decal51.Face = Enum.NormalId.Left
968Part52.Parent = Tool0
969Part52.Material = Enum.Material.SmoothPlastic
970Part52.BrickColor = BrickColor.new("Dark stone grey")
971Part52.Transparency = 1
972Part52.Rotation = Vector3.new(-90, 0, 90)
973Part52.Anchored = true
974Part52.CanCollide = false
975Part52.FormFactor = Enum.FormFactor.Custom
976Part52.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
977Part52.CFrame = CFrame.new(1435.20679, 48.6519432, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
978Part52.BottomSurface = Enum.SurfaceType.Smooth
979Part52.TopSurface = Enum.SurfaceType.Smooth
980Part52.Color = Color3.new(0.388235, 0.372549, 0.384314)
981Part52.Position = Vector3.new(1435.20679, 48.6519432, -1310.87183)
982Part52.Orientation = Vector3.new(-90, 90, 0)
983Part52.Color = Color3.new(0.388235, 0.372549, 0.384314)
984SpecialMesh53.Parent = Part52
985SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873)
986SpecialMesh53.MeshType = Enum.MeshType.Brick
987SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873)
988Part54.Parent = Tool0
989Part54.Material = Enum.Material.SmoothPlastic
990Part54.BrickColor = BrickColor.new("Dark stone grey")
991Part54.Transparency = 1
992Part54.Rotation = Vector3.new(0, 90, 0)
993Part54.Anchored = true
994Part54.CanCollide = false
995Part54.FormFactor = Enum.FormFactor.Custom
996Part54.Size = Vector3.new(1, 1, 1)
997Part54.CFrame = CFrame.new(1436.06531, 48.6182861, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
998Part54.BackSurface = Enum.SurfaceType.SmoothNoOutlines
999Part54.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1000Part54.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1001Part54.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1002Part54.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1003Part54.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1004Part54.Color = Color3.new(0.388235, 0.372549, 0.384314)
1005Part54.Position = Vector3.new(1436.06531, 48.6182861, -1310.87183)
1006Part54.Orientation = Vector3.new(0, 90, 0)
1007Part54.Color = Color3.new(0.388235, 0.372549, 0.384314)
1008SpecialMesh55.Parent = Part54
1009SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057)
1010SpecialMesh55.MeshType = Enum.MeshType.Brick
1011SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057)
1012Part56.Parent = Tool0
1013Part56.Material = Enum.Material.SmoothPlastic
1014Part56.BrickColor = BrickColor.new("Dark stone grey")
1015Part56.Transparency = 1
1016Part56.Rotation = Vector3.new(180, 0, 90)
1017Part56.Anchored = true
1018Part56.CanCollide = false
1019Part56.FormFactor = Enum.FormFactor.Custom
1020Part56.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1021Part56.CFrame = CFrame.new(1433.85034, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1022Part56.BottomSurface = Enum.SurfaceType.Smooth
1023Part56.TopSurface = Enum.SurfaceType.Smooth
1024Part56.Color = Color3.new(0.388235, 0.372549, 0.384314)
1025Part56.Position = Vector3.new(1433.85034, 48.923233, -1310.87183)
1026Part56.Orientation = Vector3.new(0, -180, -90)
1027Part56.Color = Color3.new(0.388235, 0.372549, 0.384314)
1028CylinderMesh57.Parent = Part56
1029CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
1030CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
1031Part58.Parent = Tool0
1032Part58.Material = Enum.Material.SmoothPlastic
1033Part58.BrickColor = BrickColor.new("Dark stone grey")
1034Part58.Transparency = 1
1035Part58.Rotation = Vector3.new(180, 0, 90)
1036Part58.Anchored = true
1037Part58.CanCollide = false
1038Part58.FormFactor = Enum.FormFactor.Custom
1039Part58.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
1040Part58.CFrame = CFrame.new(1435.21533, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1041Part58.BottomSurface = Enum.SurfaceType.Smooth
1042Part58.TopSurface = Enum.SurfaceType.Smooth
1043Part58.Color = Color3.new(0.388235, 0.372549, 0.384314)
1044Part58.Position = Vector3.new(1435.21533, 48.9020348, -1310.87183)
1045Part58.Orientation = Vector3.new(0, -180, -90)
1046Part58.Color = Color3.new(0.388235, 0.372549, 0.384314)
1047CylinderMesh59.Parent = Part58
1048CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1049CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1050Part60.Parent = Tool0
1051Part60.Material = Enum.Material.SmoothPlastic
1052Part60.BrickColor = BrickColor.new("Dark stone grey")
1053Part60.Transparency = 1
1054Part60.Rotation = Vector3.new(90, 75, -90)
1055Part60.Anchored = true
1056Part60.CanCollide = false
1057Part60.FormFactor = Enum.FormFactor.Custom
1058Part60.Size = Vector3.new(1, 1, 1)
1059Part60.CFrame = CFrame.new(1436.37439, 48.852356, -1310.87183, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0)
1060Part60.BottomSurface = Enum.SurfaceType.Smooth
1061Part60.TopSurface = Enum.SurfaceType.Smooth
1062Part60.Color = Color3.new(0.388235, 0.372549, 0.384314)
1063Part60.Position = Vector3.new(1436.37439, 48.852356, -1310.87183)
1064Part60.Orientation = Vector3.new(15, 90, 0)
1065Part60.Color = Color3.new(0.388235, 0.372549, 0.384314)
1066SpecialMesh61.Parent = Part60
1067SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325)
1068SpecialMesh61.MeshType = Enum.MeshType.Brick
1069SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325)
1070Part62.Parent = Tool0
1071Part62.Material = Enum.Material.SmoothPlastic
1072Part62.BrickColor = BrickColor.new("Medium green")
1073Part62.Reflectance = 0.40000000596046
1074Part62.Transparency = 1
1075Part62.Rotation = Vector3.new(-90, 0, -90)
1076Part62.Anchored = true
1077Part62.CanCollide = false
1078Part62.FormFactor = Enum.FormFactor.Custom
1079Part62.Size = Vector3.new(1, 1, 1)
1080Part62.CFrame = CFrame.new(1436.0885, 48.923233, -1310.96509, 0, 1, 0, 0, 0, 1, 1, 0, 0)
1081Part62.BottomSurface = Enum.SurfaceType.Smooth
1082Part62.TopSurface = Enum.SurfaceType.Smooth
1083Part62.Color = Color3.new(0.631373, 0.768628, 0.54902)
1084Part62.Position = Vector3.new(1436.0885, 48.923233, -1310.96509)
1085Part62.Orientation = Vector3.new(-90, -90, 0)
1086Part62.Color = Color3.new(0.631373, 0.768628, 0.54902)
1087CylinderMesh63.Parent = Part62
1088CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157)
1089CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157)
1090Part64.Parent = Tool0
1091Part64.Material = Enum.Material.SmoothPlastic
1092Part64.BrickColor = BrickColor.new("Dark stone grey")
1093Part64.Transparency = 1
1094Part64.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989)
1095Part64.Anchored = true
1096Part64.CanCollide = false
1097Part64.FormFactor = Enum.FormFactor.Custom
1098Part64.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1099Part64.CFrame = CFrame.new(1434.84216, 49.1045074, -1310.66235, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933)
1100Part64.BottomSurface = Enum.SurfaceType.Smooth
1101Part64.TopSurface = Enum.SurfaceType.Smooth
1102Part64.Color = Color3.new(0.388235, 0.372549, 0.384314)
1103Part64.Position = Vector3.new(1434.84216, 49.1045074, -1310.66235)
1104Part64.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999)
1105Part64.Color = Color3.new(0.388235, 0.372549, 0.384314)
1106CylinderMesh65.Parent = Part64
1107CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1108CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1109Part66.Parent = Tool0
1110Part66.Material = Enum.Material.SmoothPlastic
1111Part66.BrickColor = BrickColor.new("Dark stone grey")
1112Part66.Transparency = 1
1113Part66.Rotation = Vector3.new(-90, 0, 90)
1114Part66.Anchored = true
1115Part66.CanCollide = false
1116Part66.FormFactor = Enum.FormFactor.Custom
1117Part66.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1118Part66.CFrame = CFrame.new(1435.35938, 48.60532, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1119Part66.BottomSurface = Enum.SurfaceType.Smooth
1120Part66.TopSurface = Enum.SurfaceType.Smooth
1121Part66.Color = Color3.new(0.388235, 0.372549, 0.384314)
1122Part66.Position = Vector3.new(1435.35938, 48.60532, -1310.87183)
1123Part66.Orientation = Vector3.new(-90, 90, 0)
1124Part66.Color = Color3.new(0.388235, 0.372549, 0.384314)
1125SpecialMesh67.Parent = Part66
1126SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163)
1127SpecialMesh67.MeshType = Enum.MeshType.Brick
1128SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163)
1129Part68.Parent = Tool0
1130Part68.Material = Enum.Material.SmoothPlastic
1131Part68.BrickColor = BrickColor.new("Dark stone grey")
1132Part68.Transparency = 1
1133Part68.Rotation = Vector3.new(0, 90, 0)
1134Part68.Anchored = true
1135Part68.CanCollide = false
1136Part68.FormFactor = Enum.FormFactor.Custom
1137Part68.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1138Part68.CFrame = CFrame.new(1436.875, 48.6733971, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1139Part68.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1140Part68.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1141Part68.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1142Part68.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1143Part68.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1144Part68.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1145Part68.Color = Color3.new(0.388235, 0.372549, 0.384314)
1146Part68.Position = Vector3.new(1436.875, 48.6733971, -1310.87622)
1147Part68.Orientation = Vector3.new(0, 90, 0)
1148Part68.Color = Color3.new(0.388235, 0.372549, 0.384314)
1149SpecialMesh69.Parent = Part68
1150SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1151SpecialMesh69.MeshType = Enum.MeshType.Brick
1152SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1153Part70.Parent = Tool0
1154Part70.Material = Enum.Material.SmoothPlastic
1155Part70.BrickColor = BrickColor.new("Black")
1156Part70.Transparency = 1
1157Part70.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994)
1158Part70.Anchored = true
1159Part70.CanCollide = false
1160Part70.FormFactor = Enum.FormFactor.Custom
1161Part70.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1162Part70.CFrame = CFrame.new(1435.48877, 48.9965515, -1310.62427, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352)
1163Part70.BottomSurface = Enum.SurfaceType.Smooth
1164Part70.TopSurface = Enum.SurfaceType.Smooth
1165Part70.Color = Color3.new(0.105882, 0.164706, 0.207843)
1166Part70.Position = Vector3.new(1435.48877, 48.9965515, -1310.62427)
1167Part70.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001)
1168Part70.Color = Color3.new(0.105882, 0.164706, 0.207843)
1169CylinderMesh71.Parent = Part70
1170CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
1171CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
1172Part72.Parent = Tool0
1173Part72.Material = Enum.Material.SmoothPlastic
1174Part72.BrickColor = BrickColor.new("Black")
1175Part72.Transparency = 1
1176Part72.Rotation = Vector3.new(90, 0, 90)
1177Part72.Anchored = true
1178Part72.CanCollide = false
1179Part72.FormFactor = Enum.FormFactor.Custom
1180Part72.Size = Vector3.new(1, 1, 1)
1181Part72.CFrame = CFrame.new(1435.60107, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, -1, 1, 0, 0)
1182Part72.BottomSurface = Enum.SurfaceType.Smooth
1183Part72.TopSurface = Enum.SurfaceType.Smooth
1184Part72.Color = Color3.new(0.105882, 0.164706, 0.207843)
1185Part72.Position = Vector3.new(1435.60107, 48.9062729, -1310.87183)
1186Part72.Orientation = Vector3.new(90, -90, 0)
1187Part72.Color = Color3.new(0.105882, 0.164706, 0.207843)
1188SpecialMesh73.Parent = Part72
1189SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498)
1190SpecialMesh73.MeshType = Enum.MeshType.Sphere
1191SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498)
1192Part74.Parent = Tool0
1193Part74.Material = Enum.Material.SmoothPlastic
1194Part74.Transparency = 1
1195Part74.Rotation = Vector3.new(-90, -30, -90)
1196Part74.Anchored = true
1197Part74.CanCollide = false
1198Part74.FormFactor = Enum.FormFactor.Custom
1199Part74.Size = Vector3.new(1, 1, 1)
1200Part74.CFrame = CFrame.new(1436.73303, 48.074337, -1310.87183, 0, 0.866025388, -0.500000238, 0, 0.500000238, 0.866025388, 1, 0, 0)
1201Part74.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1202Part74.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1203Part74.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1204Part74.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1205Part74.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1206Part74.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1207Part74.Position = Vector3.new(1436.73303, 48.074337, -1310.87183)
1208Part74.Orientation = Vector3.new(-60, -90, 0)
1209CylinderMesh75.Parent = Part74
1210CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157)
1211CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157)
1212Part76.Parent = Tool0
1213Part76.Material = Enum.Material.SmoothPlastic
1214Part76.BrickColor = BrickColor.new("Brick yellow")
1215Part76.Transparency = 1
1216Part76.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999)
1217Part76.Anchored = true
1218Part76.CanCollide = false
1219Part76.FormFactor = Enum.FormFactor.Custom
1220Part76.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1221Part76.CFrame = CFrame.new(1435.48877, 48.7422256, -1311.07788, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272)
1222Part76.BottomSurface = Enum.SurfaceType.Smooth
1223Part76.TopSurface = Enum.SurfaceType.Smooth
1224Part76.Color = Color3.new(0.843137, 0.772549, 0.603922)
1225Part76.Position = Vector3.new(1435.48877, 48.7422256, -1311.07788)
1226Part76.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002)
1227Part76.Color = Color3.new(0.843137, 0.772549, 0.603922)
1228CylinderMesh77.Parent = Part76
1229CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277)
1230CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277)
1231Part78.Parent = Tool0
1232Part78.Material = Enum.Material.SmoothPlastic
1233Part78.BrickColor = BrickColor.new("Dark stone grey")
1234Part78.Transparency = 1
1235Part78.Rotation = Vector3.new(180, 0, 90)
1236Part78.Anchored = true
1237Part78.CanCollide = false
1238Part78.FormFactor = Enum.FormFactor.Custom
1239Part78.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
1240Part78.CFrame = CFrame.new(1434.98645, 48.9189987, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1241Part78.BottomSurface = Enum.SurfaceType.Smooth
1242Part78.TopSurface = Enum.SurfaceType.Smooth
1243Part78.Color = Color3.new(0.388235, 0.372549, 0.384314)
1244Part78.Position = Vector3.new(1434.98645, 48.9189987, -1310.87183)
1245Part78.Orientation = Vector3.new(0, -180, -90)
1246Part78.Color = Color3.new(0.388235, 0.372549, 0.384314)
1247CylinderMesh79.Parent = Part78
1248CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888)
1249CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888)
1250Part80.Parent = Tool0
1251Part80.Material = Enum.Material.SmoothPlastic
1252Part80.BrickColor = BrickColor.new("Brick yellow")
1253Part80.Transparency = 1
1254Part80.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995)
1255Part80.Anchored = true
1256Part80.CanCollide = false
1257Part80.FormFactor = Enum.FormFactor.Custom
1258Part80.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1259Part80.CFrame = CFrame.new(1435.44849, 48.841629, -1311.05676, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105)
1260Part80.BottomSurface = Enum.SurfaceType.Smooth
1261Part80.TopSurface = Enum.SurfaceType.Smooth
1262Part80.Color = Color3.new(0.843137, 0.772549, 0.603922)
1263Part80.Position = Vector3.new(1435.44849, 48.841629, -1311.05676)
1264Part80.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996)
1265Part80.Color = Color3.new(0.843137, 0.772549, 0.603922)
1266CylinderMesh81.Parent = Part80
1267CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277)
1268CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277)
1269Part82.Parent = Tool0
1270Part82.Material = Enum.Material.SmoothPlastic
1271Part82.BrickColor = BrickColor.new("Dark stone grey")
1272Part82.Transparency = 1
1273Part82.Rotation = Vector3.new(-90, 75, 90)
1274Part82.Anchored = true
1275Part82.CanCollide = false
1276Part82.FormFactor = Enum.FormFactor.Custom
1277Part82.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1278Part82.CFrame = CFrame.new(1435.99597, 48.211853, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
1279Part82.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1280Part82.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1281Part82.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1282Part82.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1283Part82.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1284Part82.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1285Part82.Color = Color3.new(0.388235, 0.372549, 0.384314)
1286Part82.Position = Vector3.new(1435.99597, 48.211853, -1310.87183)
1287Part82.Orientation = Vector3.new(-15, 90, 0)
1288Part82.Color = Color3.new(0.388235, 0.372549, 0.384314)
1289CylinderMesh83.Parent = Part82
1290CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034)
1291CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034)
1292Part84.Parent = Tool0
1293Part84.Material = Enum.Material.SmoothPlastic
1294Part84.BrickColor = BrickColor.new("Dark stone grey")
1295Part84.Transparency = 1
1296Part84.Rotation = Vector3.new(180, 0, 90)
1297Part84.Anchored = true
1298Part84.CanCollide = false
1299Part84.FormFactor = Enum.FormFactor.Custom
1300Part84.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1301Part84.CFrame = CFrame.new(1433.5498, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1302Part84.BottomSurface = Enum.SurfaceType.Smooth
1303Part84.TopSurface = Enum.SurfaceType.Smooth
1304Part84.Color = Color3.new(0.388235, 0.372549, 0.384314)
1305Part84.Position = Vector3.new(1433.5498, 48.9232292, -1310.87183)
1306Part84.Orientation = Vector3.new(0, -180, -90)
1307Part84.Color = Color3.new(0.388235, 0.372549, 0.384314)
1308CylinderMesh85.Parent = Part84
1309CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712)
1310CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712)
1311Part86.Parent = Tool0
1312Part86.Material = Enum.Material.SmoothPlastic
1313Part86.BrickColor = BrickColor.new("Dark stone grey")
1314Part86.Transparency = 1
1315Part86.Rotation = Vector3.new(90, 90, 0)
1316Part86.Anchored = true
1317Part86.CanCollide = false
1318Part86.FormFactor = Enum.FormFactor.Custom
1319Part86.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1320Part86.CFrame = CFrame.new(1434.89648, 48.9697227, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1321Part86.BottomSurface = Enum.SurfaceType.Smooth
1322Part86.TopSurface = Enum.SurfaceType.Smooth
1323Part86.Color = Color3.new(0.388235, 0.372549, 0.384314)
1324Part86.Position = Vector3.new(1434.89648, 48.9697227, -1310.87622)
1325Part86.Orientation = Vector3.new(0, 90, 90)
1326Part86.Color = Color3.new(0.388235, 0.372549, 0.384314)
1327CylinderMesh87.Parent = Part86
1328CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1329CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1330Decal88.Parent = Part86
1331Decal88.Texture = "http://www.roblox.com/asset/?id=78474663"
1332Decal88.Face = Enum.NormalId.Bottom
1333Decal89.Parent = Part86
1334Decal89.Texture = "http://www.roblox.com/asset/?id=78474663"
1335Decal89.Face = Enum.NormalId.Top
1336Part90.Parent = Tool0
1337Part90.Material = Enum.Material.SmoothPlastic
1338Part90.BrickColor = BrickColor.new("Dark stone grey")
1339Part90.Transparency = 1
1340Part90.Rotation = Vector3.new(-90, 60, 90)
1341Part90.Anchored = true
1342Part90.CanCollide = false
1343Part90.FormFactor = Enum.FormFactor.Custom
1344Part90.Size = Vector3.new(1, 1, 1)
1345Part90.CFrame = CFrame.new(1436.48157, 48.7061806, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0)
1346Part90.BottomSurface = Enum.SurfaceType.Smooth
1347Part90.TopSurface = Enum.SurfaceType.Smooth
1348Part90.Color = Color3.new(0.388235, 0.372549, 0.384314)
1349Part90.Position = Vector3.new(1436.48157, 48.7061806, -1310.87183)
1350Part90.Orientation = Vector3.new(-30, 90, 0)
1351Part90.Color = Color3.new(0.388235, 0.372549, 0.384314)
1352SpecialMesh91.Parent = Part90
1353SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896)
1354SpecialMesh91.MeshType = Enum.MeshType.Brick
1355SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896)
1356Part92.Parent = Tool0
1357Part92.Material = Enum.Material.SmoothPlastic
1358Part92.BrickColor = BrickColor.new("Black")
1359Part92.Transparency = 1
1360Part92.Rotation = Vector3.new(-90, 0, 90)
1361Part92.Anchored = true
1362Part92.CanCollide = false
1363Part92.FormFactor = Enum.FormFactor.Custom
1364Part92.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1365Part92.CFrame = CFrame.new(1434.32935, 48.9232292, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1366Part92.BottomSurface = Enum.SurfaceType.Smooth
1367Part92.TopSurface = Enum.SurfaceType.Smooth
1368Part92.Color = Color3.new(0.105882, 0.164706, 0.207843)
1369Part92.Position = Vector3.new(1434.32935, 48.9232292, -1310.87183)
1370Part92.Orientation = Vector3.new(-90, 90, 0)
1371Part92.Color = Color3.new(0.105882, 0.164706, 0.207843)
1372SpecialMesh93.Parent = Part92
1373SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133)
1374SpecialMesh93.MeshType = Enum.MeshType.Brick
1375SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133)
1376Part94.Parent = Tool0
1377Part94.Material = Enum.Material.SmoothPlastic
1378Part94.BrickColor = BrickColor.new("Black")
1379Part94.Transparency = 1
1380Part94.Rotation = Vector3.new(180, 0, 90)
1381Part94.Anchored = true
1382Part94.CanCollide = false
1383Part94.FormFactor = Enum.FormFactor.Custom
1384Part94.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1385Part94.CFrame = CFrame.new(1434.4989, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1386Part94.BottomSurface = Enum.SurfaceType.Smooth
1387Part94.TopSurface = Enum.SurfaceType.Smooth
1388Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
1389Part94.Position = Vector3.new(1434.4989, 48.9062729, -1310.87183)
1390Part94.Orientation = Vector3.new(0, -180, -90)
1391Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
1392CylinderMesh95.Parent = Part94
1393CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533)
1394CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533)
1395Part96.Parent = Tool0
1396Part96.Material = Enum.Material.SmoothPlastic
1397Part96.BrickColor = BrickColor.new("Dark stone grey")
1398Part96.Transparency = 1
1399Part96.Rotation = Vector3.new(0, 90, 0)
1400Part96.Anchored = true
1401Part96.CanCollide = false
1402Part96.FormFactor = Enum.FormFactor.Custom
1403Part96.Size = Vector3.new(1, 1, 1)
1404Part96.CFrame = CFrame.new(1436.85803, 48.7793694, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1405Part96.BottomSurface = Enum.SurfaceType.Smooth
1406Part96.TopSurface = Enum.SurfaceType.Smooth
1407Part96.Color = Color3.new(0.388235, 0.372549, 0.384314)
1408Part96.Position = Vector3.new(1436.85803, 48.7793694, -1310.87183)
1409Part96.Orientation = Vector3.new(0, 90, 0)
1410Part96.Color = Color3.new(0.388235, 0.372549, 0.384314)
1411SpecialMesh97.Parent = Part96
1412SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693)
1413SpecialMesh97.MeshType = Enum.MeshType.Brick
1414SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693)
1415Part98.Parent = Tool0
1416Part98.Material = Enum.Material.SmoothPlastic
1417Part98.BrickColor = BrickColor.new("Dark stone grey")
1418Part98.Transparency = 1
1419Part98.Rotation = Vector3.new(-90, 75, 90)
1420Part98.Anchored = true
1421Part98.CanCollide = false
1422Part98.FormFactor = Enum.FormFactor.Custom
1423Part98.Size = Vector3.new(1, 1, 1)
1424Part98.CFrame = CFrame.new(1437.1134, 48.5151291, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
1425Part98.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1426Part98.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1427Part98.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1428Part98.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1429Part98.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1430Part98.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1431Part98.Color = Color3.new(0.388235, 0.372549, 0.384314)
1432Part98.Position = Vector3.new(1437.1134, 48.5151291, -1310.87183)
1433Part98.Orientation = Vector3.new(-15, 90, 0)
1434Part98.Color = Color3.new(0.388235, 0.372549, 0.384314)
1435SpecialMesh99.Parent = Part98
1436SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796)
1437SpecialMesh99.MeshType = Enum.MeshType.Brick
1438SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796)
1439Part100.Parent = Tool0
1440Part100.Material = Enum.Material.SmoothPlastic
1441Part100.BrickColor = BrickColor.new("Medium green")
1442Part100.Reflectance = 0.40000000596046
1443Part100.Transparency = 1
1444Part100.Rotation = Vector3.new(-90, 30, -90)
1445Part100.Anchored = true
1446Part100.CanCollide = false
1447Part100.FormFactor = Enum.FormFactor.Custom
1448Part100.Size = Vector3.new(1, 1, 1)
1449Part100.CFrame = CFrame.new(1436.54248, 48.8766403, -1310.96448, 0, 0.866027117, 0.499997079, 0, -0.49999705, 0.866027176, 1, 0, 0)
1450Part100.BottomSurface = Enum.SurfaceType.Smooth
1451Part100.TopSurface = Enum.SurfaceType.Smooth
1452Part100.Color = Color3.new(0.631373, 0.768628, 0.54902)
1453Part100.Position = Vector3.new(1436.54248, 48.8766403, -1310.96448)
1454Part100.Orientation = Vector3.new(-60, 90, 180)
1455Part100.Color = Color3.new(0.631373, 0.768628, 0.54902)
1456CylinderMesh101.Parent = Part100
1457CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157)
1458CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157)
1459Part102.Parent = Tool0
1460Part102.Material = Enum.Material.SmoothPlastic
1461Part102.BrickColor = BrickColor.new("Dark stone grey")
1462Part102.Transparency = 1
1463Part102.Rotation = Vector3.new(-90, -90, 0)
1464Part102.Anchored = true
1465Part102.CanCollide = false
1466Part102.FormFactor = Enum.FormFactor.Custom
1467Part102.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1468Part102.CFrame = CFrame.new(1435.24072, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1469Part102.BottomSurface = Enum.SurfaceType.Smooth
1470Part102.TopSurface = Enum.SurfaceType.Smooth
1471Part102.Color = Color3.new(0.388235, 0.372549, 0.384314)
1472Part102.Position = Vector3.new(1435.24072, 48.6010742, -1310.87183)
1473Part102.Orientation = Vector3.new(0, -90, 90)
1474Part102.Color = Color3.new(0.388235, 0.372549, 0.384314)
1475CylinderMesh103.Parent = Part102
1476CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1477CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1478Decal104.Parent = Part102
1479Decal104.Texture = "http://www.roblox.com/asset/?id=78474663"
1480Decal104.Face = Enum.NormalId.Bottom
1481Part105.Parent = Tool0
1482Part105.Material = Enum.Material.SmoothPlastic
1483Part105.BrickColor = BrickColor.new("Black")
1484Part105.Transparency = 1
1485Part105.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989)
1486Part105.Anchored = true
1487Part105.CanCollide = false
1488Part105.FormFactor = Enum.FormFactor.Custom
1489Part105.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1490Part105.CFrame = CFrame.new(1434.84009, 49.1090317, -1310.6604, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933)
1491Part105.BottomSurface = Enum.SurfaceType.Smooth
1492Part105.TopSurface = Enum.SurfaceType.Smooth
1493Part105.Color = Color3.new(0.105882, 0.164706, 0.207843)
1494Part105.Position = Vector3.new(1434.84009, 49.1090317, -1310.6604)
1495Part105.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999)
1496Part105.Color = Color3.new(0.105882, 0.164706, 0.207843)
1497CylinderMesh106.Parent = Part105
1498CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
1499CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
1500Part107.Parent = Tool0
1501Part107.Material = Enum.Material.SmoothPlastic
1502Part107.BrickColor = BrickColor.new("Dark stone grey")
1503Part107.Transparency = 1
1504Part107.Rotation = Vector3.new(180, 0, 90)
1505Part107.Anchored = true
1506Part107.CanCollide = false
1507Part107.FormFactor = Enum.FormFactor.Custom
1508Part107.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
1509Part107.CFrame = CFrame.new(1435.56287, 48.897789, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1510Part107.BottomSurface = Enum.SurfaceType.Smooth
1511Part107.TopSurface = Enum.SurfaceType.Smooth
1512Part107.Color = Color3.new(0.388235, 0.372549, 0.384314)
1513Part107.Position = Vector3.new(1435.56287, 48.897789, -1310.87183)
1514Part107.Orientation = Vector3.new(0, -180, -90)
1515Part107.Color = Color3.new(0.388235, 0.372549, 0.384314)
1516CylinderMesh108.Parent = Part107
1517CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1518CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1519Part109.Parent = Tool0
1520Part109.Material = Enum.Material.SmoothPlastic
1521Part109.BrickColor = BrickColor.new("Black")
1522Part109.Transparency = 1
1523Part109.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993)
1524Part109.Anchored = true
1525Part109.CanCollide = false
1526Part109.FormFactor = Enum.FormFactor.Custom
1527Part109.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1528Part109.CFrame = CFrame.new(1435.08655, 49.0373726, -1311.1228, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559)
1529Part109.BottomSurface = Enum.SurfaceType.Smooth
1530Part109.TopSurface = Enum.SurfaceType.Smooth
1531Part109.Color = Color3.new(0.105882, 0.164706, 0.207843)
1532Part109.Position = Vector3.new(1435.08655, 49.0373726, -1311.1228)
1533Part109.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986)
1534Part109.Color = Color3.new(0.105882, 0.164706, 0.207843)
1535CylinderMesh110.Parent = Part109
1536CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277)
1537CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277)
1538Part111.Parent = Tool0
1539Part111.Material = Enum.Material.SmoothPlastic
1540Part111.BrickColor = BrickColor.new("Nougat")
1541Part111.Transparency = 1
1542Part111.Rotation = Vector3.new(180, 0, 90)
1543Part111.Anchored = true
1544Part111.CanCollide = false
1545Part111.FormFactor = Enum.FormFactor.Custom
1546Part111.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1547Part111.CFrame = CFrame.new(1435.56287, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1548Part111.BottomSurface = Enum.SurfaceType.Smooth
1549Part111.TopSurface = Enum.SurfaceType.Smooth
1550Part111.Color = Color3.new(0.8, 0.556863, 0.411765)
1551Part111.Position = Vector3.new(1435.56287, 48.9020348, -1310.87183)
1552Part111.Orientation = Vector3.new(0, -180, -90)
1553Part111.Color = Color3.new(0.8, 0.556863, 0.411765)
1554CylinderMesh112.Parent = Part111
1555CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098)
1556CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098)
1557Part113.Parent = Tool0
1558Part113.Material = Enum.Material.SmoothPlastic
1559Part113.BrickColor = BrickColor.new("Brick yellow")
1560Part113.Transparency = 1
1561Part113.Rotation = Vector3.new(-60, 0, 165)
1562Part113.Anchored = true
1563Part113.CanCollide = false
1564Part113.FormFactor = Enum.FormFactor.Custom
1565Part113.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1566Part113.CFrame = CFrame.new(1435.49927, 48.6328773, -1311.01025, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496)
1567Part113.BottomSurface = Enum.SurfaceType.Smooth
1568Part113.TopSurface = Enum.SurfaceType.Smooth
1569Part113.Color = Color3.new(0.843137, 0.772549, 0.603922)
1570Part113.Position = Vector3.new(1435.49927, 48.6328773, -1311.01025)
1571Part113.Orientation = Vector3.new(-60, 0, 165)
1572Part113.Color = Color3.new(0.843137, 0.772549, 0.603922)
1573CylinderMesh114.Parent = Part113
1574CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
1575CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
1576Part115.Parent = Tool0
1577Part115.Material = Enum.Material.SmoothPlastic
1578Part115.BrickColor = BrickColor.new("Dark stone grey")
1579Part115.Transparency = 1
1580Part115.Rotation = Vector3.new(90, 90, 0)
1581Part115.Anchored = true
1582Part115.CanCollide = false
1583Part115.FormFactor = Enum.FormFactor.Custom
1584Part115.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1585Part115.CFrame = CFrame.new(1435.43909, 48.8383217, -1310.84216, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1586Part115.BottomSurface = Enum.SurfaceType.Smooth
1587Part115.TopSurface = Enum.SurfaceType.Smooth
1588Part115.Color = Color3.new(0.388235, 0.372549, 0.384314)
1589Part115.Position = Vector3.new(1435.43909, 48.8383217, -1310.84216)
1590Part115.Orientation = Vector3.new(0, 90, 90)
1591Part115.Color = Color3.new(0.388235, 0.372549, 0.384314)
1592CylinderMesh116.Parent = Part115
1593CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215)
1594CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215)
1595Decal117.Parent = Part115
1596Decal117.Texture = "http://www.roblox.com/asset/?id=78474663"
1597Decal117.Face = Enum.NormalId.Top
1598Part118.Parent = Tool0
1599Part118.Material = Enum.Material.SmoothPlastic
1600Part118.BrickColor = BrickColor.new("Dark stone grey")
1601Part118.Transparency = 1
1602Part118.Rotation = Vector3.new(-90, -90, 0)
1603Part118.Anchored = true
1604Part118.CanCollide = false
1605Part118.FormFactor = Enum.FormFactor.Custom
1606Part118.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1607Part118.CFrame = CFrame.new(1435.35938, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1608Part118.BottomSurface = Enum.SurfaceType.Smooth
1609Part118.TopSurface = Enum.SurfaceType.Smooth
1610Part118.Color = Color3.new(0.388235, 0.372549, 0.384314)
1611Part118.Position = Vector3.new(1435.35938, 48.6010742, -1310.87183)
1612Part118.Orientation = Vector3.new(0, -90, 90)
1613Part118.Color = Color3.new(0.388235, 0.372549, 0.384314)
1614CylinderMesh119.Parent = Part118
1615CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1616CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1617Decal120.Parent = Part118
1618Decal120.Texture = "http://www.roblox.com/asset/?id=78474663"
1619Decal120.Face = Enum.NormalId.Bottom
1620Part121.Parent = Tool0
1621Part121.Material = Enum.Material.SmoothPlastic
1622Part121.BrickColor = BrickColor.new("Dark stone grey")
1623Part121.Transparency = 1
1624Part121.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994)
1625Part121.Anchored = true
1626Part121.CanCollide = false
1627Part121.FormFactor = Enum.FormFactor.Custom
1628Part121.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1629Part121.CFrame = CFrame.new(1435.49548, 49.0076942, -1310.61987, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352)
1630Part121.BottomSurface = Enum.SurfaceType.Smooth
1631Part121.TopSurface = Enum.SurfaceType.Smooth
1632Part121.Color = Color3.new(0.388235, 0.372549, 0.384314)
1633Part121.Position = Vector3.new(1435.49548, 49.0076942, -1310.61987)
1634Part121.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001)
1635Part121.Color = Color3.new(0.388235, 0.372549, 0.384314)
1636CylinderMesh122.Parent = Part121
1637CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1638CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1639Part123.Parent = Tool0
1640Part123.Material = Enum.Material.SmoothPlastic
1641Part123.BrickColor = BrickColor.new("Dark stone grey")
1642Part123.Transparency = 1
1643Part123.Rotation = Vector3.new(90, 90, 0)
1644Part123.Anchored = true
1645Part123.CanCollide = false
1646Part123.FormFactor = Enum.FormFactor.Custom
1647Part123.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1648Part123.CFrame = CFrame.new(1435.07629, 48.9167862, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1649Part123.BottomSurface = Enum.SurfaceType.Smooth
1650Part123.TopSurface = Enum.SurfaceType.Smooth
1651Part123.Color = Color3.new(0.388235, 0.372549, 0.384314)
1652Part123.Position = Vector3.new(1435.07629, 48.9167862, -1310.87622)
1653Part123.Orientation = Vector3.new(0, 90, 90)
1654Part123.Color = Color3.new(0.388235, 0.372549, 0.384314)
1655CylinderMesh124.Parent = Part123
1656CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1657CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1658Decal125.Parent = Part123
1659Decal125.Texture = "http://www.roblox.com/asset/?id=78474663"
1660Decal125.Face = Enum.NormalId.Bottom
1661Decal126.Parent = Part123
1662Decal126.Texture = "http://www.roblox.com/asset/?id=78474663"
1663Decal126.Face = Enum.NormalId.Top
1664Part127.Parent = Tool0
1665Part127.Material = Enum.Material.SmoothPlastic
1666Part127.BrickColor = BrickColor.new("Dark stone grey")
1667Part127.Transparency = 1
1668Part127.Rotation = Vector3.new(0, 90, 0)
1669Part127.Anchored = true
1670Part127.CanCollide = false
1671Part127.FormFactor = Enum.FormFactor.Custom
1672Part127.Size = Vector3.new(1, 1, 1)
1673Part127.CFrame = CFrame.new(1436.00879, 48.9263649, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1674Part127.BottomSurface = Enum.SurfaceType.Smooth
1675Part127.TopSurface = Enum.SurfaceType.Smooth
1676Part127.Color = Color3.new(0.388235, 0.372549, 0.384314)
1677Part127.Position = Vector3.new(1436.00879, 48.9263649, -1310.87183)
1678Part127.Orientation = Vector3.new(0, 90, 0)
1679Part127.Color = Color3.new(0.388235, 0.372549, 0.384314)
1680SpecialMesh128.Parent = Part127
1681SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248)
1682SpecialMesh128.MeshType = Enum.MeshType.Brick
1683SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248)
1684Part129.Parent = Tool0
1685Part129.Material = Enum.Material.SmoothPlastic
1686Part129.BrickColor = BrickColor.new("Nougat")
1687Part129.Transparency = 1
1688Part129.Rotation = Vector3.new(180, 0, 90)
1689Part129.Anchored = true
1690Part129.CanCollide = false
1691Part129.FormFactor = Enum.FormFactor.Custom
1692Part129.Size = Vector3.new(1, 1, 1)
1693Part129.CFrame = CFrame.new(1435.26624, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1694Part129.BottomSurface = Enum.SurfaceType.Smooth
1695Part129.TopSurface = Enum.SurfaceType.Smooth
1696Part129.Color = Color3.new(0.8, 0.556863, 0.411765)
1697Part129.Position = Vector3.new(1435.26624, 48.9020348, -1310.87183)
1698Part129.Orientation = Vector3.new(0, -180, -90)
1699Part129.Color = Color3.new(0.8, 0.556863, 0.411765)
1700CylinderMesh130.Parent = Part129
1701CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722)
1702CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722)
1703Part131.Parent = Tool0
1704Part131.Material = Enum.Material.SmoothPlastic
1705Part131.BrickColor = BrickColor.new("Dark stone grey")
1706Part131.Transparency = 1
1707Part131.Rotation = Vector3.new(-90, -90, 0)
1708Part131.Anchored = true
1709Part131.CanCollide = false
1710Part131.FormFactor = Enum.FormFactor.Custom
1711Part131.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1712Part131.CFrame = CFrame.new(1435.47815, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1713Part131.BottomSurface = Enum.SurfaceType.Smooth
1714Part131.TopSurface = Enum.SurfaceType.Smooth
1715Part131.Color = Color3.new(0.388235, 0.372549, 0.384314)
1716Part131.Position = Vector3.new(1435.47815, 48.6010742, -1310.87183)
1717Part131.Orientation = Vector3.new(0, -90, 90)
1718Part131.Color = Color3.new(0.388235, 0.372549, 0.384314)
1719CylinderMesh132.Parent = Part131
1720CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1721CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1722Decal133.Parent = Part131
1723Decal133.Texture = "http://www.roblox.com/asset/?id=78474663"
1724Decal133.Face = Enum.NormalId.Bottom
1725Part134.Parent = Tool0
1726Part134.Material = Enum.Material.SmoothPlastic
1727Part134.Transparency = 1
1728Part134.Rotation = Vector3.new(-90, 60, 90)
1729Part134.Anchored = true
1730Part134.CanCollide = false
1731Part134.FormFactor = Enum.FormFactor.Custom
1732Part134.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1733Part134.CFrame = CFrame.new(1436.03064, 48.1612701, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0)
1734Part134.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1735Part134.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1736Part134.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1737Part134.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1738Part134.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1739Part134.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1740Part134.Position = Vector3.new(1436.03064, 48.1612701, -1310.87183)
1741Part134.Orientation = Vector3.new(-30, 90, 0)
1742CylinderMesh135.Parent = Part134
1743CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1744CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1745Part136.Parent = Tool0
1746Part136.Material = Enum.Material.SmoothPlastic
1747Part136.Transparency = 1
1748Part136.Rotation = Vector3.new(0, 90, 0)
1749Part136.Anchored = true
1750Part136.CanCollide = false
1751Part136.FormFactor = Enum.FormFactor.Custom
1752Part136.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1753Part136.CFrame = CFrame.new(1435.36523, 48.5261421, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1754Part136.BottomSurface = Enum.SurfaceType.Smooth
1755Part136.TopSurface = Enum.SurfaceType.Smooth
1756Part136.Position = Vector3.new(1435.36523, 48.5261421, -1310.88025)
1757Part136.Orientation = Vector3.new(0, 90, 0)
1758CylinderMesh137.Parent = Part136
1759CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341)
1760CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341)
1761Part138.Parent = Tool0
1762Part138.Material = Enum.Material.SmoothPlastic
1763Part138.BrickColor = BrickColor.new("Dark stone grey")
1764Part138.Transparency = 1
1765Part138.Rotation = Vector3.new(90, 45, -90)
1766Part138.Anchored = true
1767Part138.CanCollide = false
1768Part138.FormFactor = Enum.FormFactor.Custom
1769Part138.Size = Vector3.new(1, 1, 1)
1770Part138.CFrame = CFrame.new(1436.54016, 48.4395027, -1310.87183, 0, 0.707106829, 0.707106829, 0, 0.707106829, -0.707106829, -1, 0, 0)
1771Part138.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1772Part138.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1773Part138.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1774Part138.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1775Part138.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1776Part138.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1777Part138.Color = Color3.new(0.388235, 0.372549, 0.384314)
1778Part138.Position = Vector3.new(1436.54016, 48.4395027, -1310.87183)
1779Part138.Orientation = Vector3.new(45, 90, 0)
1780Part138.Color = Color3.new(0.388235, 0.372549, 0.384314)
1781SpecialMesh139.Parent = Part138
1782SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
1783SpecialMesh139.MeshType = Enum.MeshType.Brick
1784SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
1785Part140.Parent = Tool0
1786Part140.Material = Enum.Material.SmoothPlastic
1787Part140.BrickColor = BrickColor.new("Dark stone grey")
1788Part140.Transparency = 1
1789Part140.Rotation = Vector3.new(0, 90, 0)
1790Part140.Anchored = true
1791Part140.CanCollide = false
1792Part140.FormFactor = Enum.FormFactor.Custom
1793Part140.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1794Part140.CFrame = CFrame.new(1436.87463, 48.5038033, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1795Part140.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1796Part140.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1797Part140.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1798Part140.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1799Part140.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1800Part140.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1801Part140.Color = Color3.new(0.388235, 0.372549, 0.384314)
1802Part140.Position = Vector3.new(1436.87463, 48.5038033, -1310.87622)
1803Part140.Orientation = Vector3.new(0, 90, 0)
1804Part140.Color = Color3.new(0.388235, 0.372549, 0.384314)
1805SpecialMesh141.Parent = Part140
1806SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203)
1807SpecialMesh141.MeshType = Enum.MeshType.Brick
1808SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203)
1809Part142.Parent = Tool0
1810Part142.Material = Enum.Material.SmoothPlastic
1811Part142.BrickColor = BrickColor.new("Lime green")
1812Part142.Reflectance = 0.40000000596046
1813Part142.Transparency = 1
1814Part142.Rotation = Vector3.new(180, 0, 90)
1815Part142.Anchored = true
1816Part142.CanCollide = false
1817Part142.FormFactor = Enum.FormFactor.Custom
1818Part142.Size = Vector3.new(0.228912294, 0.534128368, 0.423911244)
1819Part142.CFrame = CFrame.new(1433.87573, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1820Part142.BottomSurface = Enum.SurfaceType.Smooth
1821Part142.TopSurface = Enum.SurfaceType.Smooth
1822Part142.Color = Color3.new(0, 1, 0)
1823Part142.Position = Vector3.new(1433.87573, 48.923233, -1310.87183)
1824Part142.Orientation = Vector3.new(0, -180, -90)
1825Part142.Color = Color3.new(0, 1, 0)
1826CylinderMesh143.Parent = Part142
1827Part144.Parent = Tool0
1828Part144.Material = Enum.Material.SmoothPlastic
1829Part144.Transparency = 1
1830Part144.Rotation = Vector3.new(-90, 0, 90)
1831Part144.Anchored = true
1832Part144.CanCollide = false
1833Part144.FormFactor = Enum.FormFactor.Custom
1834Part144.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1835Part144.CFrame = CFrame.new(1436.42542, 48.0573769, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1836Part144.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1837Part144.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1838Part144.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1839Part144.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1840Part144.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1841Part144.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1842Part144.Position = Vector3.new(1436.42542, 48.0573769, -1310.87183)
1843Part144.Orientation = Vector3.new(-90, 90, 0)
1844CylinderMesh145.Parent = Part144
1845CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524)
1846CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524)
1847Part146.Parent = Tool0
1848Part146.Material = Enum.Material.SmoothPlastic
1849Part146.BrickColor = BrickColor.new("Dark stone grey")
1850Part146.Transparency = 1
1851Part146.Rotation = Vector3.new(0, 90, 0)
1852Part146.Anchored = true
1853Part146.CanCollide = false
1854Part146.FormFactor = Enum.FormFactor.Custom
1855Part146.Size = Vector3.new(1, 1, 1)
1856Part146.CFrame = CFrame.new(1436.98523, 48.2367706, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1857Part146.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1858Part146.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1859Part146.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1860Part146.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1861Part146.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1862Part146.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1863Part146.Color = Color3.new(0.388235, 0.372549, 0.384314)
1864Part146.Position = Vector3.new(1436.98523, 48.2367706, -1310.87183)
1865Part146.Orientation = Vector3.new(0, 90, 0)
1866Part146.Color = Color3.new(0.388235, 0.372549, 0.384314)
1867SpecialMesh147.Parent = Part146
1868SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039)
1869SpecialMesh147.MeshType = Enum.MeshType.Brick
1870SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039)
1871Part148.Parent = Tool0
1872Part148.Material = Enum.Material.SmoothPlastic
1873Part148.Transparency = 1
1874Part148.Rotation = Vector3.new(-90, -60, -90)
1875Part148.Anchored = true
1876Part148.CanCollide = false
1877Part148.FormFactor = Enum.FormFactor.Custom
1878Part148.Size = Vector3.new(1, 1, 1)
1879Part148.CFrame = CFrame.new(1436.81775, 48.1568336, -1310.87183, 0, 0.499998987, -0.866025984, 0, 0.866025984, 0.499998987, 1, 0, 0)
1880Part148.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1881Part148.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1882Part148.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1883Part148.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1884Part148.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1885Part148.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1886Part148.Position = Vector3.new(1436.81775, 48.1568336, -1310.87183)
1887Part148.Orientation = Vector3.new(-30, -90, 0)
1888CylinderMesh149.Parent = Part148
1889CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157)
1890CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157)
1891Part150.Parent = Tool0
1892Part150.Material = Enum.Material.SmoothPlastic
1893Part150.BrickColor = BrickColor.new("Brick yellow")
1894Part150.Transparency = 1
1895Part150.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995)
1896Part150.Anchored = true
1897Part150.CanCollide = false
1898Part150.FormFactor = Enum.FormFactor.Custom
1899Part150.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1900Part150.CFrame = CFrame.new(1435.27368, 48.9770622, -1311.07397, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105)
1901Part150.BottomSurface = Enum.SurfaceType.Smooth
1902Part150.TopSurface = Enum.SurfaceType.Smooth
1903Part150.Color = Color3.new(0.843137, 0.772549, 0.603922)
1904Part150.Position = Vector3.new(1435.27368, 48.9770622, -1311.07397)
1905Part150.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996)
1906Part150.Color = Color3.new(0.843137, 0.772549, 0.603922)
1907CylinderMesh151.Parent = Part150
1908CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277)
1909CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277)
1910Part152.Parent = Tool0
1911Part152.Material = Enum.Material.SmoothPlastic
1912Part152.BrickColor = BrickColor.new("Medium green")
1913Part152.Reflectance = 0.40000000596046
1914Part152.Transparency = 1
1915Part152.Rotation = Vector3.new(-90, 30, -105)
1916Part152.Anchored = true
1917Part152.CanCollide = false
1918Part152.FormFactor = Enum.FormFactor.Custom
1919Part152.Size = Vector3.new(1, 1, 1)
1920Part152.CFrame = CFrame.new(1436.76379, 48.7488365, -1310.92346, -0.224138901, 0.836518228, 0.499998987, 0.129404947, -0.482963115, 0.866025984, 0.965927541, 0.258812487, 1.22192728e-06)
1921Part152.BottomSurface = Enum.SurfaceType.Smooth
1922Part152.TopSurface = Enum.SurfaceType.Smooth
1923Part152.Color = Color3.new(0.631373, 0.768628, 0.54902)
1924Part152.Position = Vector3.new(1436.76379, 48.7488365, -1310.92346)
1925Part152.Orientation = Vector3.new(-60, 90, 165)
1926Part152.Color = Color3.new(0.631373, 0.768628, 0.54902)
1927CylinderMesh153.Parent = Part152
1928CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157)
1929CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157)
1930Part154.Parent = Tool0
1931Part154.Material = Enum.Material.SmoothPlastic
1932Part154.BrickColor = BrickColor.new("Dark stone grey")
1933Part154.Transparency = 1
1934Part154.Rotation = Vector3.new(-105, 75, 90)
1935Part154.Anchored = true
1936Part154.CanCollide = false
1937Part154.FormFactor = Enum.FormFactor.Custom
1938Part154.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1939Part154.CFrame = CFrame.new(1434.85571, 49.1141472, -1311.08923, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676)
1940Part154.BottomSurface = Enum.SurfaceType.Smooth
1941Part154.TopSurface = Enum.SurfaceType.Smooth
1942Part154.Color = Color3.new(0.388235, 0.372549, 0.384314)
1943Part154.Position = Vector3.new(1434.85571, 49.1141472, -1311.08923)
1944Part154.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5)
1945Part154.Color = Color3.new(0.388235, 0.372549, 0.384314)
1946CylinderMesh155.Parent = Part154
1947CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1948CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1949Part156.Parent = Tool0
1950Part156.Material = Enum.Material.SmoothPlastic
1951Part156.BrickColor = BrickColor.new("Dark stone grey")
1952Part156.Transparency = 1
1953Part156.Rotation = Vector3.new(90, 90, 0)
1954Part156.Anchored = true
1955Part156.CanCollide = false
1956Part156.FormFactor = Enum.FormFactor.Custom
1957Part156.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1958Part156.CFrame = CFrame.new(1433.8822, 48.9214859, -1310.87183, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1959Part156.BottomSurface = Enum.SurfaceType.Smooth
1960Part156.TopSurface = Enum.SurfaceType.Smooth
1961Part156.Color = Color3.new(0.388235, 0.372549, 0.384314)
1962Part156.Position = Vector3.new(1433.8822, 48.9214859, -1310.87183)
1963Part156.Orientation = Vector3.new(0, 90, 90)
1964Part156.Color = Color3.new(0.388235, 0.372549, 0.384314)
1965SpecialMesh157.Parent = Part156
1966SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728)
1967SpecialMesh157.MeshType = Enum.MeshType.Brick
1968SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728)
1969Part158.Parent = Tool0
1970Part158.Material = Enum.Material.SmoothPlastic
1971Part158.Transparency = 1
1972Part158.Rotation = Vector3.new(-90, 0, 90)
1973Part158.Anchored = true
1974Part158.CanCollide = false
1975Part158.FormFactor = Enum.FormFactor.Custom
1976Part158.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1977Part158.CFrame = CFrame.new(1434.66418, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1978Part158.BottomSurface = Enum.SurfaceType.Smooth
1979Part158.TopSurface = Enum.SurfaceType.Smooth
1980Part158.Position = Vector3.new(1434.66418, 48.9062729, -1310.87183)
1981Part158.Orientation = Vector3.new(-90, 90, 0)
1982SpecialMesh159.Parent = Part158
1983SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449)
1984SpecialMesh159.MeshType = Enum.MeshType.Brick
1985SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449)
1986Part160.Parent = Tool0
1987Part160.Material = Enum.Material.SmoothPlastic
1988Part160.Transparency = 1
1989Part160.Rotation = Vector3.new(-90, 30, 90)
1990Part160.Anchored = true
1991Part160.CanCollide = false
1992Part160.FormFactor = Enum.FormFactor.Custom
1993Part160.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1994Part160.CFrame = CFrame.new(1436.1012, 48.0875969, -1310.87183, 0, -0.866025388, 0.500000238, 0, 0.500000238, 0.866025388, -1, 0, 0)
1995Part160.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1996Part160.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1997Part160.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1998Part160.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1999Part160.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2000Part160.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2001Part160.Position = Vector3.new(1436.1012, 48.0875969, -1310.87183)
2002Part160.Orientation = Vector3.new(-60, 90, 0)
2003CylinderMesh161.Parent = Part160
2004CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
2005CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
2006Part162.Parent = Tool0
2007Part162.Material = Enum.Material.SmoothPlastic
2008Part162.BrickColor = BrickColor.new("Dark stone grey")
2009Part162.Transparency = 1
2010Part162.Rotation = Vector3.new(0, 90, 0)
2011Part162.Anchored = true
2012Part162.CanCollide = false
2013Part162.FormFactor = Enum.FormFactor.Custom
2014Part162.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
2015Part162.CFrame = CFrame.new(1436.875, 48.33424, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
2016Part162.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2017Part162.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2018Part162.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2019Part162.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2020Part162.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2021Part162.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2022Part162.Color = Color3.new(0.388235, 0.372549, 0.384314)
2023Part162.Position = Vector3.new(1436.875, 48.33424, -1310.87622)
2024Part162.Orientation = Vector3.new(0, 90, 0)
2025Part162.Color = Color3.new(0.388235, 0.372549, 0.384314)
2026SpecialMesh163.Parent = Part162
2027SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
2028SpecialMesh163.MeshType = Enum.MeshType.Brick
2029SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
2030Part164.Parent = Tool0
2031Part164.Material = Enum.Material.SmoothPlastic
2032Part164.BrickColor = BrickColor.new("Dark stone grey")
2033Part164.Transparency = 1
2034Part164.Rotation = Vector3.new(180, 0, 90)
2035Part164.Anchored = true
2036Part164.CanCollide = false
2037Part164.FormFactor = Enum.FormFactor.Custom
2038Part164.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2039Part164.CFrame = CFrame.new(1435.66467, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
2040Part164.BottomSurface = Enum.SurfaceType.Smooth
2041Part164.TopSurface = Enum.SurfaceType.Smooth
2042Part164.Color = Color3.new(0.388235, 0.372549, 0.384314)
2043Part164.Position = Vector3.new(1435.66467, 48.9020348, -1310.87183)
2044Part164.Orientation = Vector3.new(0, -180, -90)
2045Part164.Color = Color3.new(0.388235, 0.372549, 0.384314)
2046CylinderMesh165.Parent = Part164
2047CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958)
2048CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958)
2049Part166.Parent = Tool0
2050Part166.Material = Enum.Material.SmoothPlastic
2051Part166.BrickColor = BrickColor.new("Brick yellow")
2052Part166.Transparency = 1
2053Part166.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999)
2054Part166.Anchored = true
2055Part166.CanCollide = false
2056Part166.FormFactor = Enum.FormFactor.Custom
2057Part166.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
2058Part166.CFrame = CFrame.new(1435.34644, 48.8009377, -1311.09277, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272)
2059Part166.BottomSurface = Enum.SurfaceType.Smooth
2060Part166.TopSurface = Enum.SurfaceType.Smooth
2061Part166.Color = Color3.new(0.843137, 0.772549, 0.603922)
2062Part166.Position = Vector3.new(1435.34644, 48.8009377, -1311.09277)
2063Part166.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002)
2064Part166.Color = Color3.new(0.843137, 0.772549, 0.603922)
2065CylinderMesh167.Parent = Part166
2066CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277)
2067CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277)
2068Part168.Name = "Smooth Block Model"
2069Part168.Parent = Tool0
2070Part168.Material = Enum.Material.SmoothPlastic
2071Part168.BrickColor = BrickColor.new("Dark stone grey")
2072Part168.Transparency = 1
2073Part168.Rotation = Vector3.new(90, 15, 90)
2074Part168.Anchored = true
2075Part168.CanCollide = false
2076Part168.FormFactor = Enum.FormFactor.Custom
2077Part168.Size = Vector3.new(1, 1, 1)
2078Part168.CFrame = CFrame.new(1435.82715, 48.8071632, -1310.87183, 0, -0.965925872, 0.258818984, 0, -0.258818984, -0.965925872, 1, 0, 0)
2079Part168.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2080Part168.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2081Part168.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2082Part168.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2083Part168.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2084Part168.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2085Part168.Color = Color3.new(0.388235, 0.372549, 0.384314)
2086Part168.Position = Vector3.new(1435.82715, 48.8071632, -1310.87183)
2087Part168.Orientation = Vector3.new(75, 90, 180)
2088Part168.Color = Color3.new(0.388235, 0.372549, 0.384314)
2089SpecialMesh169.Parent = Part168
2090SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213)
2091SpecialMesh169.MeshType = Enum.MeshType.Wedge
2092SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213)
2093Part170.Name = "Smooth Block Model"
2094Part170.Parent = Tool0
2095Part170.Material = Enum.Material.SmoothPlastic
2096Part170.BrickColor = BrickColor.new("Dark stone grey")
2097Part170.Transparency = 1
2098Part170.Rotation = Vector3.new(-90, -15, 90)
2099Part170.Anchored = true
2100Part170.CanCollide = false
2101Part170.FormFactor = Enum.FormFactor.Custom
2102Part170.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
2103Part170.CFrame = CFrame.new(1435.77759, 48.6315002, -1310.87183, 0, -0.965925872, -0.258818984, 0, -0.258818984, 0.965925872, -1, 0, 0)
2104Part170.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2105Part170.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2106Part170.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2107Part170.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2108Part170.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2109Part170.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2110Part170.Color = Color3.new(0.388235, 0.372549, 0.384314)
2111Part170.Position = Vector3.new(1435.77759, 48.6315002, -1310.87183)
2112Part170.Orientation = Vector3.new(-75, -90, 180)
2113Part170.Color = Color3.new(0.388235, 0.372549, 0.384314)
2114SpecialMesh171.Parent = Part170
2115SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101)
2116SpecialMesh171.MeshType = Enum.MeshType.Wedge
2117SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101)
2118Part172.Parent = Tool0
2119Part172.Material = Enum.Material.SmoothPlastic
2120Part172.BrickColor = BrickColor.new("Dark stone grey")
2121Part172.Transparency = 1
2122Part172.Rotation = Vector3.new(-90, 0, 90)
2123Part172.Anchored = true
2124Part172.CanCollide = false
2125Part172.FormFactor = Enum.FormFactor.Custom
2126Part172.Size = Vector3.new(1, 1, 1)
2127Part172.CFrame = CFrame.new(1436.74353, 48.5165329, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2128Part172.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2129Part172.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2130Part172.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2131Part172.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2132Part172.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2133Part172.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2134Part172.Color = Color3.new(0.388235, 0.372549, 0.384314)
2135Part172.Position = Vector3.new(1436.74353, 48.5165329, -1310.87183)
2136Part172.Orientation = Vector3.new(-90, 90, 0)
2137Part172.Color = Color3.new(0.388235, 0.372549, 0.384314)
2138SpecialMesh173.Parent = Part172
2139SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
2140SpecialMesh173.MeshType = Enum.MeshType.Brick
2141SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
2142Part174.Parent = Tool0
2143Part174.Material = Enum.Material.SmoothPlastic
2144Part174.Transparency = 1
2145Part174.Rotation = Vector3.new(90, 75, -90)
2146Part174.Anchored = true
2147Part174.CanCollide = false
2148Part174.FormFactor = Enum.FormFactor.Custom
2149Part174.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
2150Part174.CFrame = CFrame.new(1435.75964, 48.5609169, -1310.87622, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0)
2151Part174.BottomSurface = Enum.SurfaceType.Smooth
2152Part174.TopSurface = Enum.SurfaceType.Smooth
2153Part174.Position = Vector3.new(1435.75964, 48.5609169, -1310.87622)
2154Part174.Orientation = Vector3.new(15, 90, 0)
2155SpecialMesh175.Parent = Part174
2156SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546)
2157SpecialMesh175.MeshType = Enum.MeshType.Brick
2158SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546)
2159Part176.Parent = Tool0
2160Part176.Material = Enum.Material.SmoothPlastic
2161Part176.BrickColor = BrickColor.new("Nougat")
2162Part176.Transparency = 1
2163Part176.Rotation = Vector3.new(180, 0, 90)
2164Part176.Anchored = true
2165Part176.CanCollide = false
2166Part176.FormFactor = Enum.FormFactor.Custom
2167Part176.Size = Vector3.new(0.415433139, 0.313694388, 0.423911244)
2168Part176.CFrame = CFrame.new(1434.67273, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
2169Part176.BottomSurface = Enum.SurfaceType.Smooth
2170Part176.TopSurface = Enum.SurfaceType.Smooth
2171Part176.Color = Color3.new(0.8, 0.556863, 0.411765)
2172Part176.Position = Vector3.new(1434.67273, 48.9062729, -1310.87183)
2173Part176.Orientation = Vector3.new(0, -180, -90)
2174Part176.Color = Color3.new(0.8, 0.556863, 0.411765)
2175CylinderMesh177.Parent = Part176
2176Part178.Parent = Tool0
2177Part178.Material = Enum.Material.SmoothPlastic
2178Part178.BrickColor = BrickColor.new("Brick yellow")
2179Part178.Transparency = 1
2180Part178.Rotation = Vector3.new(-90, 0, 90)
2181Part178.Anchored = true
2182Part178.CanCollide = false
2183Part178.FormFactor = Enum.FormFactor.Custom
2184Part178.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2185Part178.CFrame = CFrame.new(1434.84229, 48.626503, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2186Part178.BottomSurface = Enum.SurfaceType.Smooth
2187Part178.TopSurface = Enum.SurfaceType.Smooth
2188Part178.Color = Color3.new(0.843137, 0.772549, 0.603922)
2189Part178.Position = Vector3.new(1434.84229, 48.626503, -1310.87183)
2190Part178.Orientation = Vector3.new(-90, 90, 0)
2191Part178.Color = Color3.new(0.843137, 0.772549, 0.603922)
2192SpecialMesh179.Parent = Part178
2193SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133)
2194SpecialMesh179.MeshType = Enum.MeshType.Brick
2195SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133)
2196Part180.Parent = Tool0
2197Part180.Material = Enum.Material.SmoothPlastic
2198Part180.BrickColor = BrickColor.new("Black")
2199Part180.Transparency = 1
2200Part180.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002)
2201Part180.Anchored = true
2202Part180.CanCollide = false
2203Part180.FormFactor = Enum.FormFactor.Custom
2204Part180.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
2205Part180.CFrame = CFrame.new(1435.07532, 49.0545235, -1310.66675, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203)
2206Part180.BottomSurface = Enum.SurfaceType.Smooth
2207Part180.TopSurface = Enum.SurfaceType.Smooth
2208Part180.Color = Color3.new(0.105882, 0.164706, 0.207843)
2209Part180.Position = Vector3.new(1435.07532, 49.0545235, -1310.66675)
2210Part180.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002)
2211Part180.Color = Color3.new(0.105882, 0.164706, 0.207843)
2212CylinderMesh181.Parent = Part180
2213CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
2214CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
2215Part182.Parent = Tool0
2216Part182.Material = Enum.Material.SmoothPlastic
2217Part182.BrickColor = BrickColor.new("Dark stone grey")
2218Part182.Transparency = 1
2219Part182.Rotation = Vector3.new(180, 0, 90)
2220Part182.Anchored = true
2221Part182.CanCollide = false
2222Part182.FormFactor = Enum.FormFactor.Custom
2223Part182.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
2224Part182.CFrame = CFrame.new(1433.90967, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
2225Part182.BottomSurface = Enum.SurfaceType.Smooth
2226Part182.TopSurface = Enum.SurfaceType.Smooth
2227Part182.Color = Color3.new(0.388235, 0.372549, 0.384314)
2228Part182.Position = Vector3.new(1433.90967, 48.9232292, -1310.87183)
2229Part182.Orientation = Vector3.new(0, -180, -90)
2230Part182.Color = Color3.new(0.388235, 0.372549, 0.384314)
2231CylinderMesh183.Parent = Part182
2232CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
2233CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
2234Part184.Parent = Tool0
2235Part184.Material = Enum.Material.SmoothPlastic
2236Part184.BrickColor = BrickColor.new("Dark stone grey")
2237Part184.Transparency = 1
2238Part184.Rotation = Vector3.new(-90, 75, 90)
2239Part184.Anchored = true
2240Part184.CanCollide = false
2241Part184.FormFactor = Enum.FormFactor.Custom
2242Part184.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2243Part184.CFrame = CFrame.new(1435.92761, 48.4653969, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
2244Part184.BottomSurface = Enum.SurfaceType.Smooth
2245Part184.TopSurface = Enum.SurfaceType.Smooth
2246Part184.Color = Color3.new(0.388235, 0.372549, 0.384314)
2247Part184.Position = Vector3.new(1435.92761, 48.4653969, -1310.87183)
2248Part184.Orientation = Vector3.new(-15, 90, 0)
2249Part184.Color = Color3.new(0.388235, 0.372549, 0.384314)
2250SpecialMesh185.Parent = Part184
2251SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268)
2252SpecialMesh185.MeshType = Enum.MeshType.Brick
2253SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268)
2254Part186.Parent = Tool0
2255Part186.Material = Enum.Material.SmoothPlastic
2256Part186.Transparency = 1
2257Part186.Rotation = Vector3.new(-90, 0, 90)
2258Part186.Anchored = true
2259Part186.CanCollide = false
2260Part186.FormFactor = Enum.FormFactor.Custom
2261Part186.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2262Part186.CFrame = CFrame.new(1434.48193, 49.1648102, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2263Part186.BottomSurface = Enum.SurfaceType.Smooth
2264Part186.TopSurface = Enum.SurfaceType.Smooth
2265Part186.Position = Vector3.new(1434.48193, 49.1648102, -1310.87183)
2266Part186.Orientation = Vector3.new(-90, 90, 0)
2267SpecialMesh187.Parent = Part186
2268SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816)
2269SpecialMesh187.MeshType = Enum.MeshType.Brick
2270SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816)
2271IntValue188.Name = "Ammo"
2272IntValue188.Parent = Tool0
2273IntValue188.Value = 25
2274IntValue189.Name = "ClipSize"
2275IntValue189.Parent = Tool0
2276IntValue189.Value = 25
2277IntValue190.Name = "LethalGrenades"
2278IntValue190.Parent = Tool0
2279IntValue190.Value = 15
2280IntValue191.Name = "StoredAmmo"
2281IntValue191.Parent = Tool0
2282IntValue191.Value = 400
2283IntValue192.Name = "TacticalGrenades"
2284IntValue192.Parent = Tool0
2285IntValue192.Value = 15
2286Script193.Name = "serverMain"
2287Script193.Parent = Tool0
2288table.insert(cors,sandbox(Script193,function()
2289local Plyr = script:WaitForChild("Plyr")
2290
2291local Gun = script.Parent
2292local Handle = Gun:WaitForChild("Handle")
2293
2294local V3 = Vector3.new
2295local CF, CFANG = CFrame.new, CFrame.Angles
2296
2297local RAD = math.rad
2298
2299local numLerp = function(A, B, Alpha)
2300 return A + (B - A) * Alpha
2301end
2302
2303local inList = function(Element, List)
2304 for _, v in pairs(List) do
2305 if v == Element then
2306 return true
2307 end
2308 end
2309 return false
2310end
2311
2312local getObject = function(Model, Class, Name)
2313 for _, v in pairs(Model:GetChildren()) do
2314 if v:IsA(Class) and v.Name == Name then
2315 return v
2316 end
2317 end
2318 return nil
2319end
2320
2321----------------------------------------------------------------------
2322--------------------[ IGNORE MODEL HANDLING ]-------------------------
2323----------------------------------------------------------------------
2324
2325wait(math.random(0, 20) / 40) --This is to prevent more than one ignoreModel from being created
2326
2327if _G.ignoreCode then --If the ignoreCode already exists, then the script creates the ignoreModel
2328 --[[
2329 The purpose of this is so that every gun in a game that uses this gun kit will share one ignoreModel. That way,
2330 bullet trails, bullet holes, and other fake arms will be ignored by the gun which makes the bullets more likely to
2331 hit a character part
2332 --]]
2333 if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
2334 local ignoreModel = Instance.new("Model")
2335 ignoreModel.Name = "ignoreModel_".._G.ignoreCode
2336 ignoreModel.Parent = game.Workspace
2337
2338 local grenadeFolder = Instance.new("Model")
2339 grenadeFolder.Name = "grenadeFolder"
2340 grenadeFolder.Parent = ignoreModel
2341
2342 spawn(function()
2343 while true do
2344 ignoreModel.Parent = game.Workspace
2345 grenadeFolder.Parent = ignoreModel
2346 wait(1 / 20)
2347 end
2348 end)
2349 end
2350
2351 script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
2352else
2353 --[[
2354 If there isn't already an ignoreCode, then this creates one. The purpose of it being random is so that if there is
2355 an ignoreModel for something else in the game, the script won't end up placing the ignored objects in that ignoreModel
2356 --]]
2357 _G.ignoreCode = math.random(1, 1e4)
2358
2359 if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
2360 local ignoreModel = Instance.new("Model")
2361 ignoreModel.Name = "ignoreModel_".._G.ignoreCode
2362 ignoreModel.Parent = game.Workspace
2363
2364 local grenadeFolder = Instance.new("Model")
2365 grenadeFolder.Name = "grenadeFolder"
2366 grenadeFolder.Parent = ignoreModel
2367
2368 spawn(function()
2369 while true do
2370 ignoreModel.Parent = game.Workspace
2371 grenadeFolder.Parent = ignoreModel
2372 wait(1 / 20)
2373 end
2374 end)
2375 end
2376
2377 script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
2378end
2379
2380spawn(function()
2381 --[[
2382 This function deletes any Player Folders that were left in the ignoreModel because the player left the game without
2383 deselecting the Gun first
2384 --]]
2385 repeat wait() until _G.ignoreCode
2386 local ignoreModel = game.Workspace:WaitForChild("ignoreModel_".._G.ignoreCode)
2387 while true do
2388 for _, gunIgnore in pairs(ignoreModel:GetChildren()) do
2389 if gunIgnore.Name ~= "grenadeFolder" then
2390 if (not game.Players:FindFirstChild(gunIgnore.Name:sub(11))) then
2391 gunIgnore:Destroy()
2392 end
2393 end
2394 end
2395 wait(1 / 20)
2396 end
2397end)
2398
2399----------------------------------------------------------------------
2400--------------------[ RESET CAMERA ]----------------------------------
2401----------------------------------------------------------------------
2402
2403Gun.ChildRemoved:connect(function(Child)
2404 if Child == Handle and Plyr.Value then
2405 local ignoreCode = Gun:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value
2406 local resetCam = script:WaitForChild("resetCam")
2407 resetCam:WaitForChild("ignoreCode").Value = ignoreCode
2408 resetCam.Parent = Plyr.Value.PlayerGui
2409 end
2410end)
2411
2412----------------------------------------------------------------------
2413--------------------[ GET WELD CFRAMES ]------------------------------
2414----------------------------------------------------------------------
2415
2416for _, v in pairs(Gun:GetChildren()) do
2417 if v:IsA("BasePart") and v ~= Handle then
2418 if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
2419 if (not v:FindFirstChild("weldCF")) then
2420 local weldCF = Instance.new("CFrameValue")
2421 weldCF.Name = "weldCF"
2422 weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame)
2423 weldCF.Parent = v
2424 end
2425 if string.sub(v.Name, 1, 3) == "Mag" then
2426 if (not v:FindFirstChild("magTrans")) then
2427 local magTrans = Instance.new("NumberValue")
2428 magTrans.Name = "magTrans"
2429 magTrans.Value = v.Transparency
2430 magTrans.Parent = v
2431 end
2432 end
2433 v.Anchored = true
2434 v.CanCollide = false
2435 end
2436end
2437Handle.Anchored = false
2438Handle.CanCollide = true
2439
2440----------------------------------------------------------------------
2441--------------------[ GUNSETUP HANDLING ]-----------------------------
2442----------------------------------------------------------------------
2443
2444local gunSetup = script:WaitForChild("gunSetup")
2445function gunSetup.OnServerInvoke(Player, Vars)
2446
2447 --------------------[ CREATING IGNORE MODELS ]--------------------------------
2448
2449 local gunIgnore = Instance.new("Model")
2450 gunIgnore.Name = "gunIgnore_"..Player.Name
2451 gunIgnore.Parent = Vars.ignoreModel
2452
2453 --------------------[ MODIFYING THE PLAYER ]----------------------------------
2454
2455 Vars.Humanoid.AutoRotate = false
2456
2457 Vars.Shoulders.Right.Part1 = nil
2458 Vars.Shoulders.Left.Part1 = nil
2459
2460 local playerFolder = Instance.new("Model")
2461 playerFolder.Name = "playerFolder"
2462 playerFolder.Parent = gunIgnore
2463
2464 local headBase = Instance.new("Part")
2465 headBase.Transparency = 1
2466 headBase.Name = "headBase"
2467 headBase.CanCollide = false
2468 headBase.FormFactor = Enum.FormFactor.Custom
2469 headBase.Size = V3(0.2, 0.2, 0.2)
2470 headBase.BottomSurface = Enum.SurfaceType.Smooth
2471 headBase.TopSurface = Enum.SurfaceType.Smooth
2472 headBase.Parent = playerFolder
2473
2474 local headWeld = Instance.new("Weld")
2475 headWeld.Part0 = Vars.Torso
2476 headWeld.Part1 = headBase
2477 headWeld.C0 = CF(0, 1.5, 0)
2478 headWeld.Parent = Vars.Torso
2479
2480 local headWeld2 = Instance.new("Weld")
2481 headWeld2.Part0 = headBase
2482 headWeld2.Part1 = Vars.Head
2483 headWeld2.Parent = headBase
2484
2485 local animBase = Instance.new("Part")
2486 animBase.Transparency = 1
2487 animBase.Name = "animBase"
2488 animBase.CanCollide = false
2489 animBase.FormFactor = Enum.FormFactor.Custom
2490 animBase.Size = V3(0.2, 0.2, 0.2)
2491 animBase.BottomSurface = Enum.SurfaceType.Smooth
2492 animBase.TopSurface = Enum.SurfaceType.Smooth
2493 animBase.Parent = playerFolder
2494
2495 local animWeld = Instance.new("Weld")
2496 animWeld.Part0 = animBase
2497 animWeld.Part1 = headBase
2498 animWeld.Parent = animBase
2499
2500 local armBase = Instance.new("Part")
2501 armBase.Transparency = 1
2502 armBase.Name = "ArmBase"
2503 armBase.CanCollide = false
2504 armBase.FormFactor = Enum.FormFactor.Custom
2505 armBase.Size = V3(0.2, 0.2, 0.2)
2506 armBase.BottomSurface = Enum.SurfaceType.Smooth
2507 armBase.TopSurface = Enum.SurfaceType.Smooth
2508 armBase.Parent = playerFolder
2509
2510 local ABWeld = Instance.new("Weld")
2511 ABWeld.Part0 = armBase
2512 ABWeld.Part1 = animBase
2513 ABWeld.Parent = armBase
2514
2515 local LArmBase = Instance.new("Part")
2516 LArmBase.Transparency = 1
2517 LArmBase.Name = "LArmBase"
2518 LArmBase.CanCollide = false
2519 LArmBase.FormFactor = Enum.FormFactor.Custom
2520 LArmBase.Size = V3(0.2, 0.2, 0.2)
2521 LArmBase.BottomSurface = Enum.SurfaceType.Smooth
2522 LArmBase.TopSurface = Enum.SurfaceType.Smooth
2523 LArmBase.Parent = playerFolder
2524
2525 local RArmBase = Instance.new("Part")
2526 RArmBase.Transparency = 1
2527 RArmBase.Name = "RArmBase"
2528 RArmBase.CanCollide = false
2529 RArmBase.FormFactor = Enum.FormFactor.Custom
2530 RArmBase.Size = V3(0.2, 0.2, 0.2)
2531 RArmBase.BottomSurface = Enum.SurfaceType.Smooth
2532 RArmBase.TopSurface = Enum.SurfaceType.Smooth
2533 RArmBase.Parent = playerFolder
2534
2535 local LWeld = Instance.new("Weld")
2536 LWeld.Name = "LWeld"
2537 LWeld.Part0 = armBase
2538 LWeld.Part1 = LArmBase
2539 LWeld.C0 = Vars.armC0[1]
2540 LWeld.C1 = Vars.leftArmC1
2541 LWeld.Parent = armBase
2542
2543 local RWeld = Instance.new("Weld")
2544 RWeld.Name = "RWeld"
2545 RWeld.Part0 = armBase
2546 RWeld.Part1 = RArmBase
2547 RWeld.C0 = Vars.armC0[2]
2548 RWeld.C1 = Vars.rightArmC1
2549 RWeld.Parent = armBase
2550
2551 local LWeld2 = Instance.new("Weld")
2552 LWeld2.Name = "LWeld"
2553 LWeld2.Part0 = LArmBase
2554 LWeld2.Part1 = Vars.LArm
2555 LWeld2.Parent = LArmBase
2556
2557 local RWeld2 = Instance.new("Weld")
2558 RWeld2.Name = "RWeld"
2559 RWeld2.Part0 = RArmBase
2560 RWeld2.Part1 = Vars.RArm
2561 RWeld2.Parent = RArmBase
2562
2563 local LLegWeld = Instance.new("Weld")
2564 LLegWeld.Name = "LLegWeld"
2565 LLegWeld.Part0 = Vars.Torso
2566 LLegWeld.Part1 = nil
2567 LLegWeld.C0 = CF(-0.5, -2, 0)
2568 LLegWeld.Parent = Vars.Torso
2569
2570 local RLegWeld = Instance.new("Weld")
2571 RLegWeld.Name = "RLegWeld"
2572 RLegWeld.Part0 = Vars.Torso
2573 RLegWeld.Part1 = nil
2574 RLegWeld.C0 = CF(0.5, -2, 0)
2575 RLegWeld.Parent = Vars.Torso
2576
2577 for _, Tab in pairs(Vars.gunParts) do
2578 Tab.Obj.Anchored = false
2579 local Weld = Instance.new("Weld")
2580 Weld.Name = "mainWeld"
2581 Weld.Part0 = Vars.Handle
2582 Weld.Part1 = Tab.Obj
2583 Weld.C0 = Tab.Obj.weldCF.Value
2584 Weld.Parent = Vars.Handle
2585 Tab.Weld = Weld
2586 end
2587
2588 return gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, Vars.gunParts
2589end
2590
2591----------------------------------------------------------------------
2592--------------------[ TWEENJOINT HANDLING ]---------------------------
2593----------------------------------------------------------------------
2594
2595local createTweenIndicator = script:WaitForChild("createTweenIndicator")
2596function createTweenIndicator.OnServerInvoke(_, Joint, newCode)
2597 local tweenIndicator = nil
2598 if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
2599 tweenIndicator = Instance.new("IntValue")
2600 tweenIndicator.Name = "tweenCode"
2601 tweenIndicator.Value = newCode
2602 tweenIndicator.Parent = Joint
2603 else
2604 tweenIndicator = Joint.tweenCode
2605 tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
2606 end
2607 return tweenIndicator
2608end
2609
2610local lerpCF = script:WaitForChild("lerpCF")
2611function lerpCF.OnServerInvoke(_, Joint, Prop, startCF, endCF, Alpha)
2612 spawn(function()
2613 Joint[Prop] = startCF:lerp(endCF, Alpha)
2614 end)
2615end
2616
2617local deleteTweenIndicator = script:WaitForChild("deleteTweenIndicator")
2618function deleteTweenIndicator.OnServerInvoke(_, tweenIndicator, newCode)
2619 if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
2620 tweenIndicator:Destroy()
2621 end
2622end
2623
2624----------------------------------------------------------------------
2625--------------------[ BULLET IMPACT HANDLING ]------------------------
2626----------------------------------------------------------------------
2627
2628local createBulletImpact = script:WaitForChild("createBulletImpact")
2629createBulletImpact.OnServerEvent:connect(function(_, H, P, N, D, humanoidFound, gunIgnore, S)
2630 local surfaceCF = CF(P, P + N)
2631 ----------------------------------------------------------------------------------
2632 --Creating the bullet hole--------------------------------------------------------
2633 ----------------------------------------------------------------------------------
2634 if S.bulletHoles and (not humanoidFound) then
2635 local Hole = Instance.new("Part")
2636 Hole.Transparency = 1
2637 Hole.Anchored = true
2638 Hole.CanCollide = false
2639 Hole.FormFactor = "Custom"
2640 Hole.Size = V3(1, 1, 0.2)
2641 Hole.TopSurface = 0
2642 Hole.BottomSurface = 0
2643 local Mesh = Instance.new("BlockMesh")
2644 Mesh.Offset = V3(0, 0, -0.05)
2645 Mesh.Scale = V3(S.holeSettings.Size, S.holeSettings.Size, 0)
2646 Mesh.Parent = Hole
2647 local Decal = Instance.new("Decal")
2648 Decal.Face = Enum.NormalId.Front
2649 Decal.Texture = S.holeSettings.Texture
2650 Decal.Parent = Hole
2651 Hole.Parent = gunIgnore
2652 Hole.CFrame = surfaceCF
2653 if (not H.Anchored) then
2654 local Weld = Instance.new("Weld", Hole)
2655 Weld.Part0 = H
2656 Weld.Part1 = Hole
2657 Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2658 Hole.Anchored = false
2659 end
2660 delay(S.holeSettings.visibleTime, function()
2661 if S.holeSettings.disappearTime > 0 then
2662 local t0 = tick()
2663 while true do
2664 local Alpha = math.min((tick() - t0) / S.holeSettings.disappearTime, 1)
2665 Decal.Transparency = numLerp(0, 1, Alpha)
2666 if Alpha == 1 then break end
2667 wait()
2668 end
2669 Hole:Destroy()
2670 else
2671 Hole:Destroy()
2672 end
2673 end)
2674 end
2675 ----------------------------------------------------------------------------------
2676 --Creating the spark effect-------------------------------------------------------
2677 ----------------------------------------------------------------------------------
2678 if S.bulletSparks and (not humanoidFound) and inList(H.Material, S.sparkSettings.Materials) then
2679 local Sparks = Instance.new("Part")
2680 Sparks.Transparency = 1
2681 Sparks.Anchored = true
2682 Sparks.CanCollide = false
2683 Sparks.FormFactor = "Custom"
2684 Sparks.Size = V3(1, 1, 1)
2685 Sparks.TopSurface = 0
2686 Sparks.BottomSurface = 0
2687
2688 local Particles = nil
2689 if S.customSparks then
2690 Particles = getObject(game.ServerStorage, "ParticleEmitter", "bulletSpark"):Clone()
2691 else
2692 Particles = Instance.new("ParticleEmitter")
2693 Particles.Color = ColorSequence.new(S.sparkSettings.Color.Start, S.sparkSettings.Color.End)
2694 Particles.LightEmission = 1
2695 Particles.Size = NumberSequence.new(
2696 {
2697 NumberSequenceKeypoint.new(0, S.sparkSettings.Size, 0.25);
2698 NumberSequenceKeypoint.new(1, 0);
2699 }
2700 )
2701 Particles.Texture = S.sparkSettings.Texture
2702 Particles.Transparency = NumberSequence.new(0)
2703 Particles.Acceleration = V3(0, -196.2, 0)
2704 Particles.EmissionDirection = Enum.NormalId.Front
2705 Particles.Lifetime = NumberRange.new(S.sparkSettings.Lifetime - 0.05, S.sparkSettings.Lifetime + 0.05)
2706 Particles.Rate = S.sparkSettings.Rate
2707 Particles.Rotation = NumberRange.new(0, 360)
2708 Particles.Speed = NumberRange.new(S.sparkSettings.Speed - 5, S.sparkSettings.Speed + 5)
2709 Particles.VelocitySpread = S.sparkSettings.Spread
2710 end
2711 Particles.Parent = Sparks
2712
2713 Sparks.Parent = gunIgnore
2714 Sparks.CFrame = surfaceCF
2715 if (not H.Anchored) then
2716 local Weld = Instance.new("Weld", Sparks)
2717 Weld.Part0 = H
2718 Weld.Part1 = Sparks
2719 Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2720 Sparks.Anchored = false
2721 end
2722 delay(0.1, function()
2723 Particles.Enabled = false
2724 wait(Particles.Lifetime.Max)
2725 Sparks:Destroy()
2726 end)
2727 end
2728 ----------------------------------------------------------------------------------
2729 --Creating the smoke effect-------------------------------------------------------
2730 ----------------------------------------------------------------------------------
2731 if S.bulletSmoke and (not humanoidFound) then
2732 local Smoke = Instance.new("Part")
2733 Smoke.Transparency = 1
2734 Smoke.Anchored = true
2735 Smoke.CanCollide = false
2736 Smoke.FormFactor = "Custom"
2737 Smoke.Size = V3(1, 1, 1)
2738 Smoke.TopSurface = 0
2739 Smoke.BottomSurface = 0
2740
2741 local Particles = Instance.new("ParticleEmitter")
2742 Particles.Color = ColorSequence.new(S.smokeSettings.objColor and H.Color or S.smokeSettings.Color)
2743 Particles.LightEmission = 0
2744 Particles.Size = NumberSequence.new(
2745 {
2746 NumberSequenceKeypoint.new(0, S.smokeSettings.Size.Start);
2747 NumberSequenceKeypoint.new(1, S.smokeSettings.Size.End);
2748 }
2749 )
2750 Particles.Texture = S.smokeSettings.Texture
2751 Particles.Transparency = NumberSequence.new(
2752 {
2753 NumberSequenceKeypoint.new(0, S.smokeSettings.startTransparency);
2754 NumberSequenceKeypoint.new(0.5, 0.75 * S.smokeSettings.startTransparency + 0.25);
2755 NumberSequenceKeypoint.new(1, 1);
2756 }
2757 )
2758 Particles.Acceleration = V3(0, -196.2, 0)
2759 Particles.EmissionDirection = Enum.NormalId.Front
2760 Particles.Lifetime = NumberRange.new(S.smokeSettings.Lifetime - 0.05, S.smokeSettings.Lifetime + 0.05)
2761 Particles.Rate = S.smokeSettings.Rate
2762 Particles.Rotation = NumberRange.new(0, 360)
2763 Particles.RotSpeed = NumberRange.new(10)
2764 Particles.Speed = NumberRange.new(S.smokeSettings.Speed - 5, S.smokeSettings.Speed + 5)
2765 Particles.VelocitySpread = S.smokeSettings.Spread
2766 Particles.Parent = Smoke
2767
2768 Smoke.Parent = gunIgnore
2769 Smoke.CFrame = surfaceCF
2770 if (not H.Anchored) then
2771 local Weld = Instance.new("Weld", Smoke)
2772 Weld.Part0 = H
2773 Weld.Part1 = Smoke
2774 Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2775 Smoke.Anchored = false
2776 end
2777 delay(0.1, function()
2778 Particles.Enabled = false
2779 wait(S.smokeSettings.Lifetime + 0.05)
2780 Smoke:Destroy()
2781 end)
2782 end
2783end)
2784
2785----------------------------------------------------------------------
2786--------------------[ SHOCKWAVE HANDLING ]----------------------------
2787----------------------------------------------------------------------
2788
2789local createShockwave = script:WaitForChild("createShockwave")
2790createShockwave.OnServerEvent:connect(function(_, Center, Radius, gunIgnore, S)
2791 local Shockwave = Instance.new("Part")
2792 Shockwave.BrickColor = S.shockwaveSettings.Color
2793 Shockwave.Material = Enum.Material.SmoothPlastic
2794 Shockwave.Name = "Shockwave"
2795 Shockwave.Anchored = true
2796 Shockwave.CanCollide = false
2797 Shockwave.FormFactor = Enum.FormFactor.Symmetric
2798 Shockwave.Size = V3(1, 1, 1)
2799 Shockwave.BottomSurface = Enum.SurfaceType.Smooth
2800 Shockwave.TopSurface = Enum.SurfaceType.Smooth
2801 local Mesh = Instance.new("SpecialMesh")
2802 Mesh.MeshType = Enum.MeshType.Sphere
2803 Mesh.Scale = V3()
2804 Mesh.Parent = Shockwave
2805 Shockwave.Parent = gunIgnore
2806 Shockwave.CFrame = CF(Center)
2807 spawn(function()
2808 local t0 = tick()
2809 while true do
2810 local Alpha = math.min((tick() - t0) / S.shockwaveSettings.Duration, 1)
2811 local Scale = 2 * Radius * Alpha
2812 Mesh.Scale = V3(Scale, Scale, Scale)
2813 Shockwave.Transparency = Alpha
2814 if Alpha == 1 then break end
2815 wait()
2816 end
2817 Shockwave:Destroy()
2818 end)
2819end)
2820
2821----------------------------------------------------------------------
2822--------------------[ BLOOD HANDLING ]--------------------------------
2823----------------------------------------------------------------------
2824
2825local createBlood = script:WaitForChild("createBlood")
2826createBlood.OnServerEvent:connect(function(_, H, P, D, gunIgnore, S)
2827 local bloodCF = CF(P, P + D) * CFANG(RAD(-90), 0, 0)
2828 local Blood = Instance.new("Part")
2829 Blood.Transparency = 1
2830 Blood.Anchored = true
2831 Blood.CanCollide = false
2832 Blood.FormFactor = "Custom"
2833 Blood.Size = V3(0.2, 1, 0.2)
2834 Blood.TopSurface = 0
2835 Blood.BottomSurface = 0
2836
2837 local Particles = Instance.new("ParticleEmitter")
2838 Particles.Color = ColorSequence.new(S.bloodSettings.Color)
2839 Particles.LightEmission = 0
2840 Particles.Size = NumberSequence.new(S.bloodSettings.Size)
2841 Particles.Texture = S.bloodSettings.Texture
2842 Particles.Transparency = NumberSequence.new(
2843 {
2844 NumberSequenceKeypoint.new(0, S.bloodSettings.startTransparency);
2845 NumberSequenceKeypoint.new(1, 1);
2846 }
2847 )
2848 Particles.EmissionDirection = Enum.NormalId.Top
2849 Particles.Lifetime = NumberRange.new(S.bloodSettings.Lifetime - 0.05, S.bloodSettings.Lifetime + 0.05)
2850 Particles.Rate = S.bloodSettings.Rate
2851 Particles.Rotation = NumberRange.new(0, 90)
2852 Particles.Speed = NumberRange.new(S.bloodSettings.Speed)
2853 Particles.VelocitySpread = S.bloodSettings.Spread
2854 Particles.Parent = Blood
2855
2856 Blood.Parent = gunIgnore
2857 Blood.CFrame = bloodCF
2858 if (not H.Anchored) then
2859 local Weld = Instance.new("Weld", Blood)
2860 Weld.Part0 = H
2861 Weld.Part1 = Blood
2862 Weld.C0 = H.CFrame:toObjectSpace(bloodCF)
2863 Blood.Anchored = false
2864 end
2865 delay(0.15, function()
2866 Particles.Enabled = false
2867 wait(S.bloodSettings.Lifetime + 0.05)
2868 Blood:Destroy()
2869 end)
2870end)
2871
2872----------------------------------------------------------------------
2873--------------------[ TRAIL HANDLING ]--------------------------------
2874----------------------------------------------------------------------
2875
2876local createTrail = script:WaitForChild("createTrail")
2877createTrail.OnServerEvent:connect(function(_, Origin, P, gunIgnore, S)
2878 local Trail = Instance.new("Part")
2879 Trail.BrickColor = S.trailSettings.Color
2880 Trail.Transparency = S.trailSettings.Transparency
2881 Trail.Anchored = true
2882 Trail.CanCollide = false
2883 Trail.Size = V3(1, 1, 1)
2884 local Mesh = Instance.new("CylinderMesh")
2885 Mesh.Offset = V3(0, -(P - Origin).magnitude / 2, 0)
2886 Mesh.Scale = V3(S.trailSettings.Thickness, (P - Origin).magnitude, S.trailSettings.Thickness)
2887 Mesh.Parent = Trail
2888 Trail.Parent = gunIgnore
2889 Trail.CFrame = CF(Origin, P) * CFANG(RAD(90), 0, 0)
2890 delay(S.trailSettings.visibleTime, function()
2891 if S.trailSettings.disappearTime > 0 then
2892 local t0 = tick()
2893 while true do
2894 local Alpha = math.min((tick() - t0) / S.trailSettings.disappearTime, 1)
2895 Trail.Transparency = numLerp(S.trailSettings.Transparency, 1, Alpha)
2896 if Alpha == 1 then break end
2897 wait()
2898 end
2899 Trail:Destroy()
2900 else
2901 Trail:Destroy()
2902 end
2903 end)
2904end)
2905end))
2906ObjectValue194.Name = "Plyr"
2907ObjectValue194.Parent = Script193
2908RemoteFunction195.Name = "getWeldCF"
2909RemoteFunction195.Parent = Script193
2910RemoteFunction196.Name = "gunSetup"
2911RemoteFunction196.Parent = Script193
2912RemoteFunction197.Name = "tweenJoint"
2913RemoteFunction197.Parent = Script193
2914RemoteEvent198.Name = "onRenderStep"
2915RemoteEvent198.Parent = Script193
2916RemoteFunction199.Name = "createTweenIndicator"
2917RemoteFunction199.Parent = Script193
2918RemoteFunction200.Name = "deleteTweenIndicator"
2919RemoteFunction200.Parent = Script193
2920RemoteFunction201.Name = "lerpCF"
2921RemoteFunction201.Parent = Script193
2922LocalScript202.Name = "resetCam"
2923LocalScript202.Parent = Script193
2924table.insert(cors,sandbox(LocalScript202,function()
2925repeat wait() until game.Players.LocalPlayer.Character
2926
2927local Player = game.Players.LocalPlayer
2928local Char = Player.Character
2929local Humanoid = Char:WaitForChild("Humanoid")
2930
2931local Cam = game.Workspace.CurrentCamera
2932local UIS = game:GetService("UserInputService")
2933
2934local ignoreCode = script:WaitForChild("ignoreCode")
2935repeat wait() until ignoreCode.Value ~= 0
2936local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
2937local gunIgnore = ignoreModel:FindFirstChild("gunIgnore_"..Player.Name)
2938
2939Cam.FieldOfView = 70
2940Cam.CameraType = Enum.CameraType.Custom
2941Cam:ClearAllChildren()
2942
2943UIS.MouseBehavior = Enum.MouseBehavior.Default
2944UIS.MouseIconEnabled = true
2945
2946Player.CameraMode = Enum.CameraMode.Classic
2947
2948Humanoid.WalkSpeed = 16
2949Humanoid.AutoRotate = true
2950
2951if gunIgnore then gunIgnore:Destroy() end
2952end))
2953IntValue203.Name = "ignoreCode"
2954IntValue203.Parent = LocalScript202
2955RemoteEvent204.Name = "createBulletImpact"
2956RemoteEvent204.Parent = Script193
2957RemoteEvent205.Name = "createShockwave"
2958RemoteEvent205.Parent = Script193
2959RemoteEvent206.Name = "createBlood"
2960RemoteEvent206.Parent = Script193
2961RemoteEvent207.Name = "createTrail"
2962RemoteEvent207.Parent = Script193
2963LocalScript208.Name = "clientMain"
2964LocalScript208.Parent = Tool0
2965table.insert(cors,sandbox(LocalScript208,function()
2966--[[
2967Kit By TurboFusion
2968Remake By MuYhEt & Xander521
2969--]]
2970--------------------------------------------------------------------------------------
2971--------------------[ CHARACTER LOADING ]---------------------------------------------
2972--------------------------------------------------------------------------------------
2973
2974repeat wait() until game.Players.LocalPlayer.Character
2975repeat wait() until game.Players.LocalPlayer.Character:IsDescendantOf(game.Workspace)
2976wait(1 / 20)
2977
2978--------------------------------------------------------------------------------------
2979--------------------[ IGNORE MODEL ]--------------------------------------------------
2980--------------------------------------------------------------------------------------
2981
2982local ignoreCode = script:WaitForChild("ignoreCode")
2983
2984repeat wait() until ignoreCode.Value ~= 0
2985
2986local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
2987
2988local grenadeFolder = ignoreModel:WaitForChild("grenadeFolder")
2989
2990--------------------------------------------------------------------------------------
2991--------------------[ CONSTANTS ]-----------------------------------------------------
2992--------------------------------------------------------------------------------------
2993
2994local Gun = script.Parent
2995local serverMain = Gun:WaitForChild("serverMain")
2996local Handle = Gun:WaitForChild("Handle")
2997local AimPart = Gun:WaitForChild("AimPart")
2998local Main = Gun:WaitForChild("Main")
2999
3000local Ammo = Gun:WaitForChild("Ammo")
3001local ClipSize = Gun:WaitForChild("ClipSize")
3002local StoredAmmo = Gun:WaitForChild("StoredAmmo")
3003
3004local createTweenIndicator = serverMain:WaitForChild("createTweenIndicator")
3005local deleteTweenIndicator = serverMain:WaitForChild("deleteTweenIndicator")
3006local getWeldCF = serverMain:WaitForChild("getWeldCF")
3007local gunSetup = serverMain:WaitForChild("gunSetup")
3008local lerpCF = serverMain:WaitForChild("lerpCF")
3009local createBlood = serverMain:WaitForChild("createBlood")
3010local createBulletImpact = serverMain:WaitForChild("createBulletImpact")
3011local createShockwave = serverMain:WaitForChild("createShockwave")
3012local createTrail = serverMain:WaitForChild("createTrail")
3013
3014local Particle = {}
3015function Particle.new(Prop)
3016 ----------[ CONSTANTS ]--------------------
3017
3018 local Cam = workspace.CurrentCamera
3019 local rayIgnore = Prop.rayIgnore or {} --If the property doesn't exist, then set it to it's default
3020 local Color = Prop.Color or Color3.new(1, 1, 1)
3021 local Length = Prop.Length or 1
3022 local Width = Prop.Width or 1
3023 local p0 = Prop.p0 or error("Particle.new requires a p0 (origin position) property!", 0) --Give an error message if you don't this
3024 local v0 = Prop.v0 or error("Particle.new requires a v0 (initial velocity) property!", 0)
3025 local a0 = Prop.a0 or error("Particle.new requires an a0 (initial acceleration) property!", 0)
3026
3027 ----------[ VARIABLES ]--------------------
3028
3029 local Deleted = false
3030 local p = p0 --Set the position, velocity, and acceleration as the intial conditions
3031 local v = v0
3032 local a = a0
3033 local t = 0
3034
3035 ----------[ FUNCTIONS ]--------------------
3036
3037 local function worldWidthToScreenWidth(Width, Depth) --A function I made that gives you a screen width given a world width and depth
3038 local Center = Cam.CoordinateFrame * CFrame.new(0, 0, -Depth)
3039 local wp1 = (Center * CFrame.new(0, Width / 2, 0)).p
3040 local wp2 = (Center * CFrame.new(0, -Width / 2, 0)).p
3041 local sp1 = Cam:WorldToScreenPoint(wp1) --Use the WorldToScreenPoint method of the camera to get the screen width from the world width
3042 local sp2 = Cam:WorldToScreenPoint(wp2)
3043 return (sp1 - sp2).magnitude
3044 end
3045
3046 ----------[ MAIN PROGRAM ]-----------------
3047
3048 local Container = Instance.new("Frame")
3049 Container.BackgroundTransparency = 1
3050 Container.Position = UDim2.new()
3051 Container.Size = UDim2.new()
3052 local Line = Instance.new("Frame")
3053 Line.BackgroundColor3 = Color
3054 Line.BorderSizePixel = 0
3055 Line.Position = UDim2.new()
3056 Line.Size = UDim2.new()
3057 Line.Parent = Container
3058
3059 return setmetatable(
3060 {
3061 delete = function() --This function safely removes the particle
3062 Container:Destroy()
3063 Deleted = true
3064 end
3065 },
3066 {
3067 __index = function(_, Index)
3068 if Index == "p" or Index == "position" then --Return the world position of the particle
3069 return (Deleted and nil or p)
3070 elseif Index == "v" or Index == "velocity" then --Return the world velocity of the particle
3071 return (Deleted and nil or v)
3072 elseif Index == "obj" or Index == "object" then --Return the particle frame itself
3073 return (Deleted and nil or Container)
3074 else
3075 error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is called
3076 end
3077 end;
3078
3079 __newindex = function(_, Index, Value)
3080 if Index == "t" or Index == "time" and (not Deleted) then --Render the particle given a time value
3081 t = Value
3082 p = p0 + (v0 * t) + (0.5 * a0 * t * t) --update the position given the time
3083 v = v0 + (a0 * t) --update the velocity given the time
3084
3085 local testRay1 = Ray.new(Cam.CoordinateFrame.p, (p + (v.unit * Length) / 2) - Cam.CoordinateFrame.p)
3086 local testRay2 = Ray.new(Cam.CoordinateFrame.p, (p - (v.unit * Length) / 2) - Cam.CoordinateFrame.p)
3087 local H1, _ = workspace:FindPartOnRayWithIgnoreList(testRay1, rayIgnore)
3088 local H2, _ = workspace:FindPartOnRayWithIgnoreList(testRay2, rayIgnore)
3089
3090 if H1 and H2 then
3091 Line.Visible = false
3092 else
3093 local face1 = Cam:WorldToScreenPoint(p + (v.unit * Length) / 2) --Get the 2 endpoints of the particle in screen space
3094 local face2 = Cam:WorldToScreenPoint(p - (v.unit * Length) / 2)
3095 local Center, isVisible = Cam:WorldToScreenPoint(p) --Get the center of the particle in screen space
3096
3097 local screenLength = (face1 - face2).magnitude
3098 local screenWidth = worldWidthToScreenWidth(Width, Center.Z)
3099 local Ang = math.atan2(face1.Y - face2.Y, face1.X - face2.X) --Get the angle the particle needs to be at in order to line up
3100
3101 Line.Position = UDim2.new(0, 0, 0, -screenWidth / 2)
3102 Line.Size = UDim2.new(1, 0, 0, screenWidth)
3103 Line.Visible = isVisible --Make the particle invisible if the world point isn't on screen
3104
3105 Container.Position = UDim2.new(
3106 0,
3107 face2.X + (math.cos(Ang) - 1) * screenLength / 2, --Yay trig!
3108 0,
3109 face2.Y + math.sin(Ang) * screenLength / 2
3110 )
3111 Container.Size = UDim2.new(0, screenLength, 0, 0)
3112 Container.Rotation = math.deg(Ang)
3113 end
3114 else
3115 error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is being changed
3116 end
3117 end
3118 }
3119 )
3120end
3121local Spring = {}
3122function Spring.new(Initial)
3123 local t0 = tick()
3124 local p0 = Initial or 0
3125 local v0 = Initial and Vector3.new() or 0
3126 local t = Initial or 0
3127 local d = 1
3128 local s = 1
3129
3130 local function positionVelocity(Tick)
3131 local x = Tick - t0
3132 local c0 = p0 - t
3133 if s == 0 then
3134 return p0, 0
3135 elseif d < 1 then
3136 local c = math.sqrt(1 - d ^ 2)
3137 local c1 = (v0 / s + d * c0) / c
3138 local co = math.cos(c * s * x)
3139 local si = math.sin(c * s * x)
3140 local e = math.exp(d * s * x)
3141 local p = t + (c0 * co + c1 * si) / e
3142 local v = s * ((c * c1 - d * c0) * co - (c * c0 + d * c1) * si) / e
3143 return p, v
3144 else
3145 local c1 = v0 / s + c0
3146 local e = math.exp(s * x)
3147 local p = t + (c0 + c1 * s * x) / e
3148 local v = s * (c1 - c0 - c1 * s * x) / e
3149 return p, v
3150 end
3151 end
3152
3153 return setmetatable(
3154 {
3155 accelerate = function(_, acceleration)
3156 local T = tick()
3157 local p, v = positionVelocity(T)
3158 p0 = p
3159 v0 = v + acceleration
3160 t0 = T
3161 end;
3162 },
3163 {
3164 __index = function(_, index)
3165 if index == "value" or index == "position" or index == "p" then
3166 local p, v = positionVelocity(tick())
3167 return p
3168 elseif index == "velocity" or index == "v" then
3169 local p, v = positionVelocity(tick())
3170 return v
3171 elseif index == "acceleration" or index == "a" then
3172 local x = tick() - t0
3173 local c0 = p0 - t
3174 if s == 0 then
3175 return 0
3176 elseif d < 1 then
3177 local c = math.sqrt(1 - d ^ 2)
3178 local c1 = (v0 / s + d * c0) / c
3179 local cs = (c0 * d ^ 2 - 2 * c * d * c1 - c0 * c ^ 2) * math.cos(c * s * x)
3180 local sn = (c1 * d ^ 2 + 2 * c * d * c0 - c1 * c ^ 2) * math.sin(c * s * x)
3181 return s ^ 2 *(cs + sn) / math.exp(d * s * x)
3182 else
3183 local c1 = v0 / s + c0
3184 return s ^ 2 * (c0 - 2 * c1 + c1 * s * x) / math.exp(s * x)
3185 end
3186 elseif index == "target" or index == "t" then
3187 return t
3188 elseif index == "damper" or index == "d" then
3189 return d
3190 elseif index == "speed" or index == "s" then
3191 return s
3192 elseif index == "magnitude" or index == "m" then
3193 local p, v = positionVelocity(tick())
3194 return p.magnitude
3195 else
3196 error(index.." is not a valid member of spring", 0)
3197 end
3198 end;
3199
3200 __newindex = function(_, index, value)
3201 local T = tick()
3202 if index == "value" or index == "position" or index == "p" then
3203 local p, v = positionVelocity(T)
3204 p0, v0 = value, v
3205 elseif index == "velocity" or index == "v" then
3206 local p, v = positionVelocity(T)
3207 p0, v0 = p, value
3208 elseif index == "acceleration" or index == "a" then
3209 local p, v = positionVelocity(T)
3210 p0, v0 = p, v + value
3211 elseif index == "target" or index == "t" then
3212 p0, v0 = positionVelocity(T)
3213 t = value
3214 elseif index == "damper" or index == "d" then
3215 p0, v0 = positionVelocity(T)
3216 d = value < 0 and 0 or value < 1 and value or 1
3217 elseif index == "speed" or index == "s" then
3218 p0, v0 = positionVelocity(T)
3219 s = value < 0 and 0 or value
3220 else
3221 error(index.." is not a valid member of spring", 0)
3222 end
3223 t0 = T
3224 end;
3225 }
3226 )
3227end
3228local Anims = {
3229
3230 Reload = function(S) --This is the main reload animation. The parameter S contains all the variables and functions that are necessary for this animation
3231 --[[
3232 FUNCTION LIST_
3233
3234 S.tweenJoint(Joint, newC0, newC1, Alpha, Duration) --This function tweens a joint to a given C0 and C1. The Alpha parameter is function
3235 that returns a number between 0 and 1 given an argument of a number between 0 and 90. The Duration is how fast the joint tweens. NOTE,
3236 you can put nil as an argument for the newC0 or newC1 parameter and the function won't tween that specific property of the weld. This
3237 is useful if you only want to mess with the C0 or C1 property of a weld.
3238
3239 S.makeMagInvisible() --This function makes the mag invisible so it looks like the mag was removed
3240
3241 S.makeMagVisible() --This function makes the mag visible again at whatever the previous transparency of the mag parts were
3242
3243 S.isMagVisible() --This function returns a true or false value based on whether or not the mag is visible. This can be used to tell if
3244 the animation was stopped midway and where to restart the animation
3245
3246 S.isMagEmpty() --This function returns a true or false value based on whether or not the mag is empty, meaning the ammo is 0. This can be
3247 used to decide if a chambering animation should play after the reload animation
3248
3249 S.setNewMag() --This function sets the newMag variable in the clientMain to true which basically lets the script know that a new mag was
3250 put into the gun. This is used so that if the reload animation is broken after the new mag was put in but before the chambering animation
3251 then the script will simply play the chambering animation instead of putting in another mag
3252
3253 S.isNewMag() --This function returns a true or false value based on whether or not the mag that is currently attached to the gun is a new
3254 mag. In order for it to be a new mag, it needs to have full ammo. Once you fire, the mag becomes an old mag
3255
3256 S.createMag(Key) --This functions clones the Mag and puts it in a table with a Key parameter so you can access the mag in a separate
3257 function and it returns a Model containing the Mag and a table that contains the original mag bricks and the corresponding clone. NOTE,
3258 the mag bricks will be made non can collide
3259
3260 S.getMag(Key) --This function gets a Mag from the mag table given a Key argument and it returns the model that the mag is contained in
3261 and the brick that all the other mag parts are welded to
3262
3263 S.attachGripToHead() --This function detaches the grip from the right arm and attaches it to the Head. This is so you can make reload
3264 animations that require using the right arm to manipulate the gun in any way. The C0 of the grip is changed so the gun stays in the
3265 position that it was in before you detached the grip from the right arm.
3266
3267 S.attachGripToArm() --This function detaches the grip from the Head and attaches it to the Arm. The C0 of the grip is changed so the gun
3268 stays in the position that it was in before you detached the grip from the head
3269
3270 S.Sine(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return the
3271 sine of that number, which is a number between 0 and 1, which is used to tween a Joint with a Sine movement
3272
3273 S.Linear(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return
3274 the number / 90, which is a number between 0 and 1, which is used to a tween a Joint with a Linear movement
3275
3276 VARIABLE LIST_
3277
3278 S.Handle --This variable is the Handle of gun
3279
3280 S.LArm --This variable is the left arm
3281
3282 S.RArm --This variable is the right arm
3283
3284 S.LWeld --This variable is the left arm weld which is attached to the animBase
3285
3286 S.RWeld --This variable is the right arm weld which is attached to the animBase
3287
3288 S.LC0 --This variable is the cframe of the left arm joint with respect to the torso
3289
3290 S.RC0 --This variable is the cframe of the right arm joint with respect to the torso
3291
3292 S.Grip --This variable is the Grip weld which is attached to right arm
3293
3294 S.gunIgnore --This variable is the gun ignore model which contains the fake arms and bullets and other stuff
3295
3296 S.Cam --This variable is the player camera
3297
3298 S.CF --This variable is the shortened form of CFrame.new which you can use instead of CFrame.new
3299
3300 S.CFANG --This variable is the shortened form of CFrame.Angles which you can use instead of CFrame.Angles
3301
3302 S.V3 --This variable is the shortened form of Vector3.new which you can use instead of Vector3.new
3303
3304 S.RAD --This variable is the shortened form of math.rad which you can use instead of math.rad
3305
3306 S.reloadTimeLoaded --This variable is the reload time for when the gun is loaded which you can use to modify how fast the reload
3307 animation runs
3308
3309 S.reloadTimeEmpty --This variable is the reload time for when the gun is empty which you can use to modify how fast the reload
3310 animation runs
3311 --]]
3312
3313 local W1 = nil
3314 local W2 = nil
3315 local animSpeed = S.isMagEmpty() and S.reloadTimeEmpty / 1.3 or S.reloadTimeLoaded / 0.9
3316 return {
3317 function()
3318 if (not S.isNewMag()) then
3319 if S.isMagVisible() then
3320 local Mag1, magTable1 = S.createMag("Mag1")
3321
3322 Mag1.Parent = S.gunIgnore
3323
3324 W1 = Instance.new("Weld")
3325 W1.Part0 = magTable1[1].magClone
3326 W1.Part1 = S.Handle
3327 W1.C0 = magTable1[1].Original.CFrame:toObjectSpace(S.Handle.CFrame)
3328 W1.Parent = magTable1[1].magClone
3329
3330 S.tweenJoint(S.LWeld, nil, S.CF(-0.9, 2, -1.1) * S.CFANG(S.RAD(-15), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed)
3331 S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.31) * S.CFANG(S.RAD(-12), 0, S.RAD(25)), S.Sine, 0.2 * animSpeed)
3332 S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.1 * animSpeed)
3333 wait(0.2 * animSpeed)
3334 end
3335 end
3336 end;
3337
3338 function()
3339 if (not S.isNewMag()) then
3340 if S.isMagVisible() then
3341 S.makeMagInvisible()
3342 W1:Destroy()
3343 local Mag1, magTable1 = S.getMag("Mag1")
3344 magTable1[1].magClone.Velocity = S.Handle.Velocity + S.Handle.CFrame:vectorToWorldSpace(S.V3(0, -1, 0)) * 20
3345
3346 S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.5) * S.CFANG(S.RAD(-20), S.RAD(10), S.RAD(25)), S.Sine, 0.25 * animSpeed)
3347 S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3348 else
3349 S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3350 S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3351 end
3352
3353 S.tweenJoint(S.LWeld, nil, S.CF(0, 0.5, 0) * S.CFANG(S.RAD(95), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed)
3354
3355 wait(0.25 * animSpeed)
3356 end
3357 end;
3358
3359 function()
3360 if (not S.isNewMag()) then
3361 local Mag1, magTable1 = S.getMag("Mag1")
3362 if Mag1 then Mag1:Destroy() end
3363
3364 local Mag2, magTable2 = S.createMag("Mag2")
3365
3366 Mag2.Parent = S.gunIgnore
3367
3368 local LArmCF = S.LWeld.Part0.CFrame * S.LWeld.C0 * (S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60))):inverse()
3369 local RArmCF = S.RWeld.Part0.CFrame * S.RWeld.C0 * (S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25))):inverse()
3370 local handleOffsetCF = S.RArm.CFrame:toObjectSpace(S.RArm.CFrame * S.Grip.C0 * (S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10))):inverse())
3371 local originalMagOffsetCF = S.Handle.CFrame:toObjectSpace(magTable2[1].Original.CFrame)
3372 local newMagC0 = LArmCF:toObjectSpace(RArmCF * handleOffsetCF * originalMagOffsetCF)
3373
3374 W2 = Instance.new("Weld")
3375 W2.Part0 = S.LArm
3376 W2.Part1 = magTable2[1].magClone
3377 W2.C0 = newMagC0
3378 W2.Parent = magTable2[1].magClone
3379
3380 S.tweenJoint(S.LWeld, nil, S.CF(0.55, 1, -2.4) * S.CFANG(S.RAD(-20), S.RAD(20), S.RAD(-60)), S.Sine, 0.2 * animSpeed)--0.25
3381 S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3382 S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3383 wait(0.2 * animSpeed)
3384 end
3385 end;
3386
3387 function()
3388 if (not S.isNewMag()) then
3389 S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed)
3390 S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25
3391 S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3392
3393 wait(0.2 * animSpeed)
3394 end
3395 end;
3396
3397 function()
3398 if (not S.isNewMag()) then
3399 local Mag1, _ = S.getMag("Mag1")
3400 local Mag2, _ = S.getMag("Mag2")
3401 S.makeMagVisible()
3402 S.setNewMag()
3403 if Mag1 then Mag1:Destroy() end
3404 Mag2:Destroy()
3405 end
3406 end;
3407
3408 function()
3409 if S.isMagEmpty() then
3410 if S.isNewMag() then
3411 S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed)
3412 S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25
3413 S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3414 end
3415 S.tweenJoint(S.LWeld, nil, S.CF(0, 1.3, -0.55) * S.CFANG(S.RAD(-26), 0, 0), S.Sine, 0.2 * animSpeed)
3416
3417 wait(0.2 * animSpeed)
3418 end
3419 end;
3420
3421 function()
3422 if S.isMagEmpty() then
3423 S.tweenJoint(S.LWeld, nil, S.CF(0.4, 1.6, -0.55) * S.CFANG(S.RAD(-23), 0, S.RAD(-60)), S.Sine, 0.1 * animSpeed)
3424
3425 wait(0.05 * animSpeed)
3426 end
3427 end;
3428
3429 function()
3430 if S.isMagEmpty() then
3431 S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(20)), S.Sine, 0.05 * animSpeed)
3432
3433 wait(0.15 * animSpeed)
3434 end
3435 end;
3436 }
3437 end;
3438
3439 Cocking = function(S)
3440
3441 end;
3442
3443 Crawling = function(X, moveDirection, moveSpeed) --This is the animation for when you're crawling
3444 --[[
3445 The moveDirection gives you the angle at which your character is moving with respect to the way you're facing. So if you're
3446 moving to the right and you're facing forward then the moveDirection will give you an angle of -90. If you're moving backward
3447 and you're facing forward then the moveDirection will give you an angle of 180. I use this angle to adjust the crawling animation
3448 so that you're arms move in the direction that you're moving so it looks more realistic rather than the arms constantly moving forward
3449
3450 The moveVelocity gives you how fast you're moving in the X-Z plane. It doesn't take your Y-velocity into account so if you're falling your
3451 moveVelocity will still be how fast you're moving horizontally. You can use this to adjust how fast the crawling animation runs so if you're
3452 moving really slow the animation will play slower
3453 --]]
3454 return {
3455 leftArm = CFrame.Angles( --This is what the cframe of the right arm will be when you're crawling
3456 0,
3457 math.rad(90),
3458 math.rad(-10)
3459 ) * CFrame.new(
3460 math.sin(moveDirection) * (math.sin(X * 6) / 4) - 0.2,
3461 math.cos(moveDirection) * (math.sin(X * 6) / 2) - 0.1,
3462 math.max(math.cos(X * 6) / 4, 0) - 0.1
3463 ) * CFrame.Angles(
3464 -math.max(math.cos(X * 6) / 4, 0),
3465 0,
3466 0
3467 );
3468 leftLeg = CFrame.new( --This is what the cframe of the left leg will be when you're crawling
3469 math.sin(moveDirection) * (-math.sin(X * 6) / 4) - 0.2,
3470 math.cos(moveDirection) * (math.sin(X * 6) / 2) + 0.3,
3471 math.max(math.cos(X * 6) / 4, 0) - 0.1
3472 ):inverse() * CFrame.Angles(
3473 0,
3474 0,
3475 -math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6))
3476 );
3477 rightArm = CFrame.Angles( --This is what the cframe of the left arm will be when you're crawling
3478 0,
3479 math.rad(-5),
3480 math.rad(10)
3481 ) * CFrame.new(
3482 math.sin(moveDirection) * (-math.sin(X * 6) / 4) + 0.2,
3483 math.cos(moveDirection) * (-math.sin(X * 6) / 5) - 0.2,
3484 math.max(math.cos((X + math.rad(30)) * 6) / 10, 0) - 0.1
3485 ) * CFrame.Angles(
3486 -math.max(math.cos((X + math.rad(30)) * 6) / 10, 0),
3487 0,
3488 0
3489 );
3490 rightLeg = CFrame.new( --This is what the cframe of the right leg will be when you're crawling
3491 math.sin(moveDirection) * (math.sin(X * 6) / 4) + 0.2,
3492 math.cos(moveDirection) * (-math.sin(X * 6) / 2) + 0.3,
3493 math.max(math.cos((X + math.rad(30)) * 6) / 4, 0) - 0.1
3494 ):inverse() * CFrame.Angles(
3495 0,
3496 0,
3497 math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6))
3498 );
3499 Grip = CFrame.Angles( --This is what the cframe of the grip will be when you're crawling
3500 math.max(math.cos((X + math.rad(30)) * 6) / 7, 0),
3501 math.rad(5),
3502 0
3503 );
3504 Camera = 1.5 * math.rad(math.cos((X + math.rad(30)) * 6)) + math.rad(0.5); --This is what the roll of the camera will be when you're crawling
3505 }
3506 end;
3507
3508 Idling = { --This table holds the Idling animations
3509
3510 unAimed = function(X) --This is the animation when the gun is not aimed
3511 return {
3512 Pos = Vector3.new(
3513 math.sin(X / 2) / 70, --Side to Side motion
3514 math.sin(X * 5 / 4) / 70, --Up and Down motion
3515 math.sin(X * 3 / 4) / 70 --Forward and backward motion
3516 );
3517 Rot = Vector3.new(
3518 0, --Pitch rotation
3519 0, --Yaw rotation
3520 0 --Roll rotation
3521 );
3522 }
3523 end;
3524
3525 Aimed = function(X) --This is the animation when the gun is aimed
3526 return {
3527 Pos = Vector3.new(
3528 math.sin(X * 3 / 8) / 140,
3529 math.sin(X * 15 / 16) / 140,
3530 0
3531 );
3532 Rot = Vector3.new(
3533 0,
3534 0,
3535 0
3536 );
3537 }
3538 end;
3539
3540 };
3541
3542 Walking = { --This table holds the Walking animations
3543
3544 unAimed = function(X) --This is the animation when the gun is not aimed
3545 return {
3546 Pos = Vector3.new(
3547 4 * math.sin(X * 4.5) / 50,
3548 1.5 * math.sin(X * 9) / 50,
3549 0
3550 );
3551 Rot = Vector3.new(
3552 0,
3553 0,
3554 math.rad(math.sin(X * 4.5)) * 2
3555 );
3556 }
3557 end;
3558
3559 Aimed = function(X) --This is the animation when the gun is aimed
3560 return {
3561 Pos = Vector3.new(
3562 2 * math.sin(X * 3) / 150,
3563 0.75 * math.sin(X * 6) / 150,
3564 0
3565 );
3566 Rot = Vector3.new(
3567 0,
3568 0,
3569 math.rad(math.sin(X * 3)) / 3
3570 );
3571 }
3572 end;
3573
3574 };
3575
3576 Running = function(X) --This is the animation when the player is running
3577 return {
3578 Pos = Vector3.new(
3579 4 * math.sin(X * 4.5 * 1.5) / 30,
3580 1.5 * math.sin(X * 9 * 1.5) / 40 + 0.2,
3581 0
3582 );
3583 Rot = Vector3.new(
3584 0,
3585 -math.rad(math.sin(X * 4.5 * 1.5)) * 5 + math.rad(3),
3586 math.rad(math.sin(X * 4.5 * 1.5)) * 5
3587 );
3588 }
3589 end;
3590
3591}
3592local Plugins = {
3593
3594 KeyDown = {
3595 { --This is a plugin for a toggleable laser
3596 Key = "v"; --This is the key you press to activate the plugin
3597 Description = "Toggle Laser"; --This is what the description of the key will be in the controls
3598 Plugin = function() --This is the actual plugin function
3599 local Laser = Gun:WaitForChild("Laser") --These few lines wait for the necessary bricks/models
3600 local Handle = Gun:WaitForChild("Handle")
3601 local ignoreCode = Gun.clientMain:WaitForChild("ignoreCode")
3602 local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
3603
3604 local PlyrName = game.Players:GetPlayerFromCharacter(Gun.Parent).Name
3605 local playerFolder = ignoreModel:WaitForChild("gunIgnore_"..PlyrName)
3606
3607 local RS = game:GetService("RunService")
3608
3609 local function createLaserDot() --This function creates the red laser dot
3610 local laserDot = Instance.new("Part")
3611 laserDot.Transparency = 1
3612 laserDot.Name = "laserDot"
3613 laserDot.Anchored = true
3614 laserDot.CanCollide = false
3615 laserDot.FormFactor = Enum.FormFactor.Custom
3616 laserDot.Size = Vector3.new(0.25, 0.25, 1)
3617
3618 local laserGui = Instance.new("SurfaceGui")
3619 laserGui.CanvasSize = Vector2.new(100, 100)
3620 laserGui.Parent = laserDot
3621
3622 local laserImage = Instance.new("ImageLabel")
3623 laserImage.BackgroundTransparency = 1
3624 laserImage.Size = UDim2.new(1, 0, 1, 0)
3625 laserImage.Image = "http://www.roblox.com/asset/?id=131394739"
3626 laserImage.Parent = laserGui
3627
3628 --[[local laserLight = Instance.new("SurfaceLight")
3629 laserLight.Angle = 180
3630 laserLight.Brightness = math.huge
3631 laserLight.Color = Color3.new(1, 0, 0)
3632 laserLight.Face = Enum.NormalId.Back
3633 laserLight.Range = 5
3634 laserLight.Shadows = true
3635 laserLight.Parent = laserDot]]
3636
3637 return laserDot
3638 end
3639
3640 local function getHitSurfaceCFrame(Pos, Obj) --This function returns the proper cframe based on the face that the position is on
3641 local surfaceCF = {
3642 {"Back", Obj.CFrame * CFrame.new(0, 0, Obj.Size.z)};
3643 {"Bottom", Obj.CFrame * CFrame.new(0, -Obj.Size.y, 0)};
3644 {"Front", Obj.CFrame * CFrame.new(0, 0, -Obj.Size.z)};
3645 {"Left", Obj.CFrame * CFrame.new(-Obj.Size.x, 0, 0)};
3646 {"Right", Obj.CFrame * CFrame.new(Obj.Size.x, 0, 0)};
3647 {"Top", Obj.CFrame * CFrame.new(0, Obj.Size.y, 0)}
3648 }
3649 local closestDist = math.huge
3650 local closestSurface = nil
3651 for _,v in pairs(surfaceCF) do
3652 local surfaceDist = (Pos - v[2].p).magnitude
3653 if surfaceDist < closestDist then
3654 closestDist = surfaceDist
3655 closestSurface = v
3656 end
3657 end
3658
3659 local surfaceDir = CFrame.new(Obj.CFrame.p, closestSurface[2].p)
3660 local surfaceDist = surfaceDir.lookVector * ((Obj.CFrame.p - closestSurface[2].p).magnitude / 2 - 0.25)
3661 local surfaceOffset = Pos - closestSurface[2].p + surfaceDist
3662 local surfaceCFrame = surfaceDir + surfaceDist + surfaceOffset
3663
3664 return surfaceCFrame
3665 end
3666
3667 local laserDot = createLaserDot() --The code is cleaner when the laser creating code is in a function
3668
3669 Laser.Transparency = (Laser.Transparency == 1 and 0 or 1) --Toggles the laser on or off
3670
3671 while math.floor(Laser.Transparency) == 0 do --This loop will keep running as long as the laser is visible
3672 if (not game.Players:GetPlayerFromCharacter(Gun.Parent)) then break end --This checks if the gun is a child of the character
3673
3674 local newRay = Ray.new(Laser.Position, Handle.CFrame.lookVector * 999)
3675 local H, P = game.Workspace:FindPartOnRay(newRay, ignoreModel)
3676
3677 local Distance = (P - Laser.Position).magnitude
3678 Laser.Mesh.Offset = Vector3.new(0, Distance / 2, 0)
3679 Laser.Mesh.Scale = Vector3.new(0.075, Distance / 0.2, 0.075)
3680
3681 if H then
3682 laserDot.CFrame = getHitSurfaceCFrame(P, H) --If the laser hits a part then position the dot on the part
3683 laserDot.Parent = playerFolder
3684 else
3685 laserDot.Parent = nil --If the laser doesn't hit a part then temporarily remove the laser dor
3686 end
3687
3688 RS.RenderStepped:wait()
3689 end
3690
3691 laserDot:Destroy() --These lines reset the laser if the laser is transparent or the gun was deselected
3692 Laser.Transparency = 1
3693 Laser.Mesh.Offset = Vector3.new()
3694 Laser.Mesh.Scale = Vector3.new(0.075, 0, 0.075)
3695 end;
3696 };
3697
3698 { --This is a plugin for a toggleable flashlight
3699 Key = "z";
3700 Description = "Toggle Flashlight";
3701 Plugin = function()
3702 local Flashlight = Gun:WaitForChild("Flashlight")
3703 if Flashlight then
3704 for _, Light in pairs(Flashlight:GetChildren()) do
3705 if Light.Name == "Light" then
3706 Light.Enabled = (not Light.Enabled)
3707 end
3708 end
3709 end
3710 end
3711 };
3712 };
3713
3714 KeyUp = {
3715
3716 };
3717
3718 Firing = {
3719 Plugin = function()
3720 --Put code here
3721 end;
3722 };
3723
3724 Aimed = {
3725 Plugin = function()
3726 --Put code here
3727 end;
3728 };
3729
3730 UnAimed = {
3731 Plugin = function()
3732 --Put code here
3733 end;
3734 };
3735
3736 OnEquipped = {
3737 Plugin = function()
3738 --Put code here
3739 end
3740 };
3741
3742 OnUnEquipped = {
3743 Plugin = function()
3744 --Put code here
3745 end
3746 };
3747
3748}
3749local S = {
3750
3751
3752 gunType = { --[[These are the 5 gun types you can have. Set whichever ones you want to true. (NOTE: Semi and Auto can't both be
3753 true, and Burst and Auto can't both be true)]]
3754 Semi = true; --Set this true if you want the gun to be semi-automatic. (Pistols, Snipers, etc)
3755 Auto = false; --Set this true if you want the gun to be fully automatic. (Assault Rifles, Submachine guns, machine guns, etc)
3756 Burst = false; --Set this true if you want the gun to be burst fire. (Battle rifles, assault rifles, etc)
3757 Shot = true; --Set this true if you want the gun to be a shotgun. (NOTE: Shot and auto can both be true)
3758 Explosive = true; --Set this true if you want the projectiles to be explosive. (Rocket launchers, grenade launchers, etc)
3759 };
3760
3761 selectFire = true; --This is whether or not select fire is enabled
3762 selectFireSettings = {
3763 Animation = true; --This is whether or not there will be an animation for when you switch fire modes
3764 GUI = true; --This is whether or not a gui appears showing the fire being selected
3765 Modes = { --This the list of modes you can switch between
3766 Safety = true; --This mode doesn't allow any form of firing
3767 Semi = true; --This mode allows semi-automatic firing
3768 Burst = false; --This mode allows burst fire. The burst will be based on the burstSettings below
3769 Auto = false; --This mode allows fully automatic fire
3770 };
3771 animSpeed = 0.5; --This is how long it takes to switch fire if GUI or Animation is true. If neither are true, then switching will be instant
3772 };
3773
3774
3775 burstSettings = {
3776 fireRateBurst = true; --[[If this is true, then the burst time and wait will be adjusted so the bullet firing speed is the fire rate. If this
3777 is false, then the burst time and burst wait will be the values below]]
3778 Amount = 3; --This is how many bullets will be fired in one burst (if Burst is true)
3779 Time = 0.2; --This is how long it takes for a burst to complete
3780 Wait = 0.1; --This is how much time you have to wait before you can fire another burst
3781 };
3782
3783
3784 shotAmount = 8; --This is how many bullets will be fired in one shot (if Shot is true)
3785
3786
3787 explosionSettings = {
3788 Radius = 50; --This is the radius of the explosion when the bullet hits a target. (If Explosive is true)
3789 Pressure = 5e5; --This is the pressure of the explosion when the bullet hits the target
3790 Type = Enum.ExplosionType.NoCraters; --This is the type of explosion
3791 --[[
3792 (0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain
3793 (1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain
3794 (2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain
3795 --]]
3796 soundId = "rbxassetid://138499093"; --This is what the sound of the explosion will be
3797 soundPitch = 1; --This is what the pitch of the explosion sound will be
3798 soundVolume = 1; --This is what the volume of the explosion sound will be
3799 rayCastExplosions = true; --[[This is whether or not explosions will have raycasting. If this is true, humanoids behind walls
3800 won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: RangeBasedDamage has to be true in
3801 order for explosions to have raycasting)]]
3802 rangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion. If this
3803 is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object within
3804 the explosion's radius will have its joints broken]]
3805 };
3806
3807
3808 playerArms = true; --This is whether or not the fake arms will look like the Player's arms
3809 fakeArmSettings = {
3810 Transparency = 0; --This is the transparency of the fake arms
3811 armSize = Vector3.new(0.6, 2, 0.6); --This is the size of the fake player arms if playerArms is true
3812 characterMeshes = false; --This is whether or not the fake player arms will have the arm meshes if playerArms is true
3813 realBodyColor = true; --This is whether or not the color of the fake arm will be the color of the player's real arms
3814 Color = BrickColor.new("Pastel brown"); --This is what the color of the fake arms will be if realBodyColor is false
3815 };
3816
3817
3818 unAimedC1 = { --This table contains the CFrames of welds when the gun is not aimed
3819 leftArm = CFrame.new(-0.7, 1.6, -0.8) * CFrame.Angles(math.rad(-10), 0, math.rad(-30));
3820 rightArm = CFrame.new(0.4, 0.25, -0.3) * CFrame.Angles(0, 0, math.rad(25));
3821 Grip = CFrame.Angles(0, math.rad(25), 0);
3822 };
3823 aimedC1 = { --This table contains the CFrames of welds when the gun is aimed
3824 leftArm = CFrame.new(-0.1, 1, -0.3) * CFrame.Angles(math.rad(-10), 0, 0) * CFrame.Angles(0, 0, math.rad(-40));
3825 rightArm = CFrame.new(0.5, 0.3, 0.1) * CFrame.Angles(0, 0, math.rad(45));
3826 };
3827 runningC1 = { --This table contains the CFrames of welds when you're running
3828 leftArm = CFrame.new(-0.65, 0.85, -1) * CFrame.Angles(math.rad(1), math.rad(-8.5), math.rad(16));
3829 rightArm = CFrame.new(0.16, 1, -0.14) * CFrame.Angles(math.rad(15), math.rad(2), math.rad(50));
3830 Grip = CFrame.Angles(0, math.rad(-5), 0);
3831 };
3832
3833
3834 equipAnimation = true; --This is whether or not an equipping animation will play when you equip the gun
3835 equipSettings = {
3836 Time = 0.25; --This is how long it takes for the equip animation to play
3837 leftArmC1 = CFrame.new(0.2, 1.2, 0) * CFrame.Angles(math.rad(105), math.rad(-30), math.rad(90)); --This is the left arm C1 when you equip the gun
3838 rightArmC1 = CFrame.new(-0.5, 0.75, 0) * CFrame.Angles(math.rad(45), 0, math.rad(75)); --This is the right arm C1 when you equip the gun
3839 GripC1 = CFrame.new(); --This is the C1 of the grip when you equip the gun
3840 };
3841
3842
3843 stopAnimsOnFall = true; --This is whether or not the movement animation will stop when you're falling
3844 fallAnimation = true; --This is whether or not there will be animation for falling and landing
3845 fallSettings = {
3846 maxDist = 35; --This is the cut off fall distance for the landing animation. If you fall any farther it'll be treated as if you fell this distance
3847 landMultiplier = 1; --This is how far the arms go down and rotate when you land. The larger the number the bigger the effect of the animation
3848 fallMultiplier = 1; --This is how far the arms go up and rotate when you fall. The larger the number the bigger the effect of the animation
3849 aimEffect = 0.25; --[[This is how many times of an effect the falling and landing animation has when you're aimed. The smaller the number the lesser
3850 the effect]]
3851 };
3852
3853
3854 gunMomentum = true; --This is whether or not there will be a gun swaying animation for when you move your mouse around
3855 momentumSettings = {
3856 maxInput = 18; --This is the maximum mouse delta that will be used as input for the sway
3857 Speed = 20; --This is the speed of the gun momentum
3858 Damper = 0.5; --[[This is the dampening effect of the gun momentum. NOTE: This number must be between 0 and 1, 0 being forever swaying and 1 being
3859 instant dampening]]
3860 Amplitude = { --These are the amplitudes of the gun momentum
3861 unAimed = 5;
3862 Aimed = 1;
3863 }
3864 };
3865
3866
3867 cockingAnim = false; --This is whether or not a cocking animation will play between every shot (for shotguns and bolt action guns)
3868 movementAnims = true; --This is whether or not the player will have movement animations
3869
3870
3871 canADS = true; --This is whether or not the gun can ADS
3872 aimSettings = {
3873 Anim = true; --This is whether or not there is an animation for aiming down the sights
3874 Speed = 0.3; --This is how long the gun will take to fully aim down the sights
3875 FOV = 37; --This is the FOV that the Camera will have when the gun is fully aimed down
3876 holdToADS = true; --This is whether or not you have to hold the right mouse or the ADS key to ADS
3877 headTilt = math.rad(25); --This is what angle the head tilts at when you ADS
3878 };
3879
3880
3881 sensitivitySettings = {
3882 Default = 1; --This is what the sensitivity of the mouse will be when the gun is not aimed. 1 is the default
3883 Aim = 0.3; --[[This is what the sensitivity of the mouse will be when the gun is aimed. The smaller the MaxZoom,
3884 the smaller the sensitivity should be (i.e. Scoped guns should have a sensitivity of around 0.2 or less]]
3885
3886 scrollToChange = true; --This is whether or not scrolling the mouse changes the aim sensitivity
3887 Min = 0.05; --This is the lowest the sensitivity can be
3888 Max = 1; --This is the highest the sensitivity can be
3889 Increment = 0.05; --This is what the increment for the sensitivity is when you scroll
3890 };
3891
3892
3893 guiScope = false; --This is whether or not your Scope will be a gui instead of a normal sight
3894 scopeSettings = {
3895 Frequency = { --This is the how fast the camera sway is. The larger the number the faster the camera moves
3896 Idling = 0.7; --This is the frequency when you're idling
3897 Walking = 2; --This is the frequency when you're walking
3898 };
3899 Amplitude = { --This is the how wide the camera sway is. The larger the number the wider the sway
3900 Idling = 0.75; --This is the amplitude when you're idling
3901 Walking = 0.75; --This is the amplitude when you're walking
3902 };
3903 steadyTime = 8; --This is how long you can hold your breath to steady the scope
3904 breathTime = 5; --This is how long it takes to fully retake your breath
3905 camSwayOnBreath = 2.5; --This is what the cam sway multiplier will be when you start your retake your breath
3906 unSteadyOnFire = true; --This is whether or not the camera will become unsteady when you fire the gun
3907 };
3908
3909
3910 roundsPerMin = 100; --This is how many bullets per minute the gun will fire
3911
3912
3913 bulletSettings = {
3914 instantHit = true; --[[This is whether or not the bullet will hit a target instantly. If it is false, the bullet will travel at a
3915 specific speed till it hits a target]]
3916 Range = 870; --This is how far the bullet will travel in studs before it is no longer effective
3917 Velocity = 540; --This is how fast the bullet will travel in studs per second
3918 Acceleration = 196.2; --This is the bullet's acceleration downward (196.2 is normal roblox gravity)
3919 Color = BrickColor.new("Bright red"); --This is the color of the bullet
3920 Transparency = 0; --This is the transparency of the bullet
3921 Size = Vector3.new(0.1, 0.1, 5); --This is how big the bullet will look
3922 };
3923
3924
3925 damageSettings = {
3926 --[[The start and end damages are basically a representation of this: http://goo.gl/SiWaTj, which is a basically a graph showing the starting damage
3927 value for the gun at a distance percent from 0 to 100 and the ending damage value for the gun at a distance percent from 0 to 100. Before the bullet
3928 hits the starting distance percent, the damage is the starting damage. Once it goes past the starting distance percent, it steadily drops til it hits
3929 the ending damage. After the ending damage percent, it'll stay that damage.]]
3930 Start = {
3931 Damage = 170; --The starting damage
3932 Dist = 0.08; --[[A value between 0 and 1 which represents the distance percent. So if the bullet range is 1000 studs and this value is 0.5, then
3933 the damage will be the starting damage until the bullet travels 0.5*1000 studs or 500 studs]]
3934 };
3935 End = {
3936 Damage = 205; --The ending damage
3937 Dist = 0.5; --A value between 0 and 1 which represents the distance percent for the ending damage
3938 };
3939 Multipliers = { --[[These are the damage multipliers. There's a spread of +0.1. That means that if the multiplier is 1, the actual
3940 multiplier will range from 1 - 1.1]]
3941 Chest = 1; --This is what the damage will be multiplied by if the bullet hits the chest
3942 Head = 10; --This is what the damage will be multiplied by if the bullet hits the head or a hat
3943 Limbs = 1; --This is what the damage will be multiplied by if the bullet hits a limb (Arms or legs)
3944 };
3945 };
3946
3947
3948 AllowFriendlyFire = false; --This is whether or not you can damage teammates
3949 CanDamageNPCs = true; --This is whether or not you can damage NPC's (Zombies, fake players, anything with a humanoid)
3950
3951
3952 CanKnife = true; --This is whether or not you can knife
3953 AutoKnife = false; --This is whether or not the gun will automatically knife if an enemy is within a specific distance
3954 AutoKnifeDist = 4; --This is how many studs away an enemy has to be for the gun to auto knife
3955 KnifeMeshId = "http://www.roblox.com/asset/?id=121944778"; --This is the Mesh of the knife
3956 KnifeTextureId = "http://www.roblox.com/asset/?id=121944805"; --This is the Texture of the knife
3957 KnifeCooldown = 0.5; --This is how long you have to wait before you can knife again
3958 KnifeAnim = 1; --This is the type of knife animation
3959 --[[
3960 Type 1: An animation that swings a knife from the left of the body to the right of the body
3961 Type 2: An animation that stabs the knife forward from the center of the body
3962 --]]
3963
3964
3965 Throwables = true; --This is whether or not you have grenades
3966 TrajectoryAssist = true; --This is whether or not the script will show you the flight path of the grenade before you throw it
3967 DetonationTime = 2; --[[This is how long the grenade will wait to detonate (If DetonateOnHit is false, this is how long the
3968 grenade will wait after the pin is pulled. If true, this is how long the grenade will wait after it hits something]]
3969 TimerStartOnHit = false; --This is whether or not the timer will start when the grenade hits something
3970 GrenadeSize = Vector3.new(0.8, 0.8, 0.8); --This is the size of the grenade (Doesn't apply to throwing knives)
3971
3972
3973 LethalGrenadeColor = BrickColor.new("Bright green"); --This is the color of the lethal grenade
3974 GrenadeBlastRadius = 20; --This is the blast radius of the explosion (Doesn't apply to non-explosive grenades)
3975 GrenadeBlastPressure = 6e5; --This is what the blast pressure of the explosion (Doesn't apply to non-explosive grenades)
3976 GrenadeExplosionType = Enum.ExplosionType.NoCraters; --This is the type of explosion (Doesn't apply to non-explosive grenades)
3977 --[[
3978 (0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain
3979 (1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain
3980 (2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain
3981 --]]
3982 LethalAnimationTime = 1.5; --This is how long the throwing animation for the lethal will take
3983 LethalGrenadeDamage = 150; --This is max damage that the grenade will do
3984 LethalGrenadeThrowVelocity = 200; --This is the speed at which the lethal grenade is thrown
3985 GrenadeRayCastExplosions = true; --[[This is whether or not grenade explosions will have raycasting. If this is true, humanoids
3986 behind walls won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: GrenadeRangeBasedDamage
3987 has to be true in order for explosions to have raycasting)]]
3988 GrenadeRangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion.
3989 If this is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object
3990 within the explosion's radius will have its joints broken]]
3991 LethalGrenadeType = 4; --This is the lethal grenade type
3992 --[[
3993 Type 1: Frag grenade [An explosive grenade]
3994 Type 2: Sticky [An explosive grenade that sticks to a surface]
3995 Type 3: Throwing Knife [A throwable knife]
3996 Type 4: Molotov [A grenade that explodes in flames on impact]
3997 --]]
3998
3999 TacticalGrenadeColor = BrickColor.new("Brick yellow"); --This is the color of the lethal grenade
4000 TacticalAnimationTime = 1.5; --This how long the throwing animation for the tactical will take
4001 TacticalGrenadeThrowVelocity = 200; --This is the speed at which the tactical grenade is thrown
4002 GrenadeEffectRadius = 70; --[[This is the radius of the effect of the grenade. If the Grenade is a smoke, this is the radius of
4003 the smoke]]
4004 GrenadeEffectTime = 10; --[[This is the how long the grenade effect will last. If the grenade is a smoke, this is how long the
4005 smoke will linger]]
4006 TacticalGrenadeType = 1; --This is the tactical grenade type
4007 --[[
4008 Type 1: Smoke grenade [A grenade that creates a cloud of smoke]
4009 Type 2: Flashbang [A grenade that temporarily blinds and deafens players]
4010 --]]
4011
4012
4013 GrenadeTrail = true; --This is whether or not the grenade will have a trail
4014 GrenadeTrailColor = BrickColor.new("Black"); --This is the color of the grenade trail
4015 GrenadeTrailTransparency = 0.6; --This is the transparency of the trail
4016 GrenadeTrailThickness = 0.3; --This is the thickness of the trail
4017 GrenadeTrailVisibleTime = 0.2; --This is how long the trail will be visible for
4018 GrenadeTrailDisappearTime = 0.2; --This is how long it will take for the trail to disappear
4019
4020
4021 bulletTrail = true; --This is whether or not there will be a trail behind the bullet
4022 trailSettings = {
4023 Color = BrickColor.new("Lime green"); --This is the color of the bullet trail
4024 Transparency = 0.6; --This is the transparency of the trail
4025 Thickness = 0.2; --This is the thickness of the trail
4026 visibleTime = 0; --This is how long the trail will be visible for
4027 disappearTime = 0.5; --This is how long it will take for the trail to disappear
4028 };
4029
4030
4031 bulletHoles = true; --This is whether or not bullet holes will appear where you shot
4032 holeSettings = {
4033 Texture = "http://www.roblox.com/asset/?id=64291961"; --This is the texture of the bullet hole
4034 Size = 0.5; --This is how big the bullet hole will be in studs
4035 visibleTime = 3; --This is how long the bullet hole will be visible for
4036 disappearTime = 1; --This is how long it will take for the bullet hole to disappear
4037 };
4038
4039
4040 bulletSparks = true; --This is whether or not sparks will fly when a bullet hits a surface
4041 customSparks = false; --[[This is whether or not the script will use a user-created sparks. In order for the gun kit to use a user-created sparks,
4042 it has to be a particle emitter in the ServerStorage and it has to be called "bulletSpark"]]
4043 sparkSettings = { --These settings only apply if customSparks is false
4044 Color = {
4045 Start = Color3.new(1, 158 / 255, 24 / 255); --This is the start color of the sparks
4046 End = Color3.new(212 / 255, 242 / 255, 8 / 255); --This is the end color of the sparks
4047 };
4048 Size = 0.25; --This is the size of the sparks
4049 Texture = "http://www.roblox.com/asset/?id=311395391"; --This is the texture of the sparks
4050 Lifetime = 0.2; --This is the lifetime of each spark in seconds +-0.05 seconds
4051 Rate = 75; --This is the number of sparks that fly
4052 Speed = 25; --This is the speed at which the sparks fly +-5 studs/sec
4053 Spread = 45; --This is the angle in degrees at which the sparks spread out (0 means single line, 180 means all around)
4054 Materials = { --This is the list of the materials which cause bullet sparks. You can add or remove materials from this list
4055 Enum.Material.Plastic;
4056 Enum.Material.Slate;
4057 Enum.Material.Concrete;
4058 Enum.Material.CorrodedMetal;
4059 Enum.Material.DiamondPlate;
4060 Enum.Material.Foil;
4061 Enum.Material.Marble;
4062 Enum.Material.Granite;
4063 Enum.Material.Brick;
4064 Enum.Material.Pebble;
4065 Enum.Material.SmoothPlastic;
4066 Enum.Material.Metal;
4067 Enum.Material.Cobblestone;
4068 };
4069 };
4070
4071
4072 bulletSmoke = true; --This is whether or not smoke particles will fly when a bullet hits a surface
4073 smokeSettings = {
4074 objColor = true; --This is whether or not the smoke color will be the color of the object the bullet hit
4075 Color = Color3.new(0.5, 0.5, 0.5); --This is what the color of the smoke will be if objColor is false
4076 Size = {
4077 Start = 0.25; --This is what the starting size of the smoke will be
4078 End = 0.5; --This is what the ending size of the smoke will be
4079 };
4080 Texture = "http://www.roblox.com/asset/?id=244514423"; --This is what the texture of the smoke will be
4081 startTransparency = 0; --This is what the transparency of the particle starts at. It gradually goes to 1
4082 Lifetime = 0.2; --This is the lifetime of each smoke particle +-0.05 seconds
4083 Rate = 100; --This is the number of smoke particles that fly
4084 Speed = 35; --This is the speed at which the smoke particles fly +-5 studs/sec
4085 Spread = 15; --This is the angle in degrees at which the smoke particles spread out (0 means single line, 180 means all around)
4086 };
4087
4088
4089 bloodEffect = true; --This is whether or not blood particles will appear from the bullet exit position when a humanoid is shot
4090 bloodSettings = {
4091 Color = Color3.new(1, 0, 0); --This is what the color of the blood will be
4092 Size = 0.1; --This is what the size of the blood will be with an +-0.1
4093 Texture = "http://www.roblox.com/asset/?id=3419963"; --This is what the texture of the blood will be
4094 startTransparency = 0.125; --This is what the starting transparency of the blood will be +-0.125
4095 Lifetime = 0.1; --This is what the lifetime of each blood particle +-0.05 seconds
4096 Rate = 200; --This is the number of blood particles that appear
4097 Speed = 50; --This is the speed at which the blood particles fly
4098 Spread = 15; --This is the angle in degrees at which the blood particles spread out (0 means single line, 180 means all around)
4099 };
4100
4101
4102 bulletShockwave = true; --This is whether or not a shockwave will appear where you shot. (A sphere that appears when the bullet hits)
4103 shockwaveSettings = {
4104 Radius = 0.3; --This is the radius of the shockwave. (If the gun type is explosion, this radius will be the blast radius)
4105 Color = BrickColor.new("Light stone grey"); --This is the color of the shockwave
4106 Duration = 0.2; --This is how long the shockwave will take to disappear
4107 };
4108
4109
4110 penetrationSettings = {
4111 Dist = 0; --This is the maximum amount of studs a bullet can penetrate into a wall (that isn't ignored)
4112 transparencyThreshold = 1; --This is what the transparency of a wall has to be greater than or equal to in order to be ignored
4113 ignoreNonCanCollide = true; --This is whether or not the script should ignore non-cancollide parts
4114 ignoreCustom = {}; --This is a table of objects that will be ignored by the script. The object and it's descendants will be ignored
4115 };
4116
4117
4118 recoilSettings = {
4119 firstShotMultiplier = 2.4; --This is what the recoil multiplier for the first shot will be. The rest of the shots will be normal recoil
4120 aimedMultiplier = 0.5; --When you're aimed, this is what the recoil will be multiplied by
4121 camMultiplier = 2; --This is what the gun up recoil will be multiplied by to get you the cam recoil
4122 springSpeed = 15; --This is the what the speed of the gun's recoil spring will be. The lower it is the slower the gun sways around
4123 springDamper = 0.5; --This is a number between 0 and 1 that determines how quickly the spring will be dampened.
4124 Recoil = {
4125 Side = { --This is the side to side gun and camera recoil
4126 Left = -0.17;
4127 Right = 0.28;
4128 };
4129 Up = { --This is the up and down gun and camera recoil
4130 Min = 0.26;
4131 Max = 0.28;
4132 };
4133 Back = { --[[This is the kick back gun recoil. NOTE: The numbers below are the amount the gun moves back, so the gun will move back
4134 a value/2 amount of studs. So if the min is 0.25 and the max is 0.3, the gun will move back anywhere between 0.025 and 0.03 studs]]
4135 Min = 0.3;
4136 Max = 0.35;
4137 };
4138 Tilt = { --[[This is tilt camera recoil. NOTE: The numbers below are the amount of deca-degrees the camera tilts, so if the left is -1
4139 and the right is 1 then the gun will tilt anywhere between -10 degress and 10 degrees]]
4140 Left = -0.5;
4141 Right = 0.5;
4142 };
4143 }
4144 };
4145
4146
4147 spreadSettings = {
4148 Increase = 0.1; --This is what is added to the spread of the bullet every time you fire
4149 Decrease = 15; --This is what the spread of the bullet decreases by per second
4150
4151 --[[This spread values are how many degrees offset the bullets will travel from the center, so a spread of 1 would mean that the bullet's
4152 max spread in any direction is 1 degree from the center. The idling category is when you're not moving, and the moving category is when
4153 you're moving]]
4154 Aimed = {
4155 Stand = {
4156 Idling = 0.2;
4157 Moving = 0.4;
4158 };
4159 Crouch = {
4160 Idling = 0.15;
4161 Moving = 0.3;
4162 };
4163 Prone = {
4164 Idling = 0.1;
4165 Moving = 0.3;
4166 };
4167 };
4168 unAimed = {
4169 Stand = {
4170 Idling = 2;
4171 Moving = 2.5;
4172 };
4173 Crouch = {
4174 Idling = 1.5;
4175 Moving = 2;
4176 };
4177 Prone = {
4178 Idling = 1;
4179 Moving = 2;
4180 };
4181 };
4182 };
4183
4184
4185 reloadSettings = {
4186 Anim = true; --This is whether or not there is an animation for reloading
4187 Times = {
4188 Loaded = 3; --This is how long it takes to reload the gun if a bullet is already chambered
4189 Empty = 3; --This is how long it takes to reload the gun if a bullet isn't chambered
4190 };
4191 autoReload = true; --This is whether or not the gun will reload automatically when the ammo reaches 0
4192 magIsBullet = false; --This is whether or not the mag is the bullet itself. This is useful for guns with only 1 bullet per clip
4193 reloadWhileRunning = true; --This is whether or not you can reload while running
4194 };
4195
4196
4197 sprintTime = 15; --This is the maximum time you can sprint
4198 staminaCoolTime = 4; --This is how long it takes for your stamina to fully recharge
4199 canFireWhileRunning = false; --This is whether or not you can shoot while sprinting
4200
4201
4202 dolphinDive = true; --This is whether or not you can dolphin dive (Run and crouch at the same time to dive)
4203 diveSettings = {
4204 rechargeTime = 1; --This is how long you have to wait till you can dive or run again after you've dived
4205 Force = 350; --This is the multiplier for the dolphin dive force. The higher it is the farther you'll dive
4206 Angle = math.rad(30); --This is the angle in radians from the ground that you dive at
4207 };
4208
4209
4210 canChangeStance = true; --This is whether or not you can change stance. That means whether or not you can crouch or go prone
4211 stanceSettings = {
4212 Anim = true; --This is whether or not there is an animation for changing stance
4213 Speed = 0.3; --This is how quickly you change stance
4214 Stances = {
4215 Crouch = true; --This is whether or not you can crouch
4216 Prone = true; --This is whether or not you can go prone
4217 };
4218 standOnDeselect = true; --This is whether or not you stand up when you deselect the tool
4219 crawlAnimation = true; --This is whether or not you crawl while moving when you're prone
4220 };
4221
4222
4223 walkSpeeds = {
4224 Base = 14; --This is the base walkspeed
4225 Sprinting = 28; --This is the walkspeed when you're sprinting
4226 Aimed = 10; --[[This is the base walkspeed when the gun is aimed down. If you crouch or go prone, the speed will change
4227 based on the Aimed walkspeed to Base walkspeed ratio]]
4228 Crouched = 7; --This is the walkspeed when you're crouched
4229 Prone = 4; --This is the walkspeed when you're prone
4230 };
4231
4232
4233 --NOTE: For extra keys, go here: http://wiki.roblox.com/index.php?title=Taking_keyboard_input
4234 Keys = {
4235 lowerStance = "c"; --This is the key you press to lower your stance (Stand > Crouch > Prone)
4236 raiseStance = "x"; --This is the key you press to raise your stance (Prone > Crouch > Stand)
4237 selectFire = "e"; --This is the key you press to switch fire modes
4238 Reload = "r"; --This is the key you press to reload
4239 Sprint = string.char(48); --This is the key you press to sprint
4240 Knife = "f"; --This is the key you press to knife
4241 lethalGrenade = "g"; --This is the key you press to throw the lethal grenade
4242 tacticalGrenade = "t"; --This is the key you press to throw the tactical grenade
4243 ADS = "q"; --This is the key you press to ADS. If you want ADS to just be right mouse, then make this key ""
4244 scopeSteady = string.char(48); --This is the key you press to steady the scope
4245 };
4246
4247
4248}
4249
4250local Player = game.Players.LocalPlayer
4251local Char = Player.Character
4252local Humanoid = Char:WaitForChild("Humanoid")
4253local Torso = Char:WaitForChild("Torso")
4254local Head = Char:WaitForChild("Head")
4255local HRP = Char:WaitForChild("HumanoidRootPart")
4256local Root = HRP:WaitForChild("RootJoint")
4257
4258local Neck = Torso:WaitForChild("Neck")
4259
4260local LArm = Char:WaitForChild("Left Arm")
4261local RArm = Char:WaitForChild("Right Arm")
4262local LLeg = Char:WaitForChild("Left Leg")
4263local RLeg = Char:WaitForChild("Right Leg")
4264
4265local M2 = Player:GetMouse()
4266
4267local mainGUI = script:WaitForChild("mainGUI")
4268
4269local crossHair = mainGUI:WaitForChild("crossHair")
4270local HUD = mainGUI:WaitForChild("HUD")
4271local Scope = mainGUI:WaitForChild("Scope")
4272local fireSelect = mainGUI:WaitForChild("fireSelect")
4273local hitMarker = mainGUI:WaitForChild("hitMarker")
4274local Sens = mainGUI:WaitForChild("Sens")
4275
4276local crossA = crossHair:WaitForChild("A"):WaitForChild("Line")
4277local crossB = crossHair:WaitForChild("B"):WaitForChild("Line")
4278local crossC = crossHair:WaitForChild("C"):WaitForChild("Line")
4279local crossD = crossHair:WaitForChild("D"):WaitForChild("Line")
4280
4281local Controls = HUD:WaitForChild("Controls")
4282
4283local gunNameTitle = HUD:WaitForChild("gunName"):WaitForChild("Title")
4284
4285local scopeMain = Scope:WaitForChild("Main")
4286local scopeSteady = Scope:WaitForChild("Steady")
4287
4288local fireModes = fireSelect:WaitForChild("Modes")
4289
4290local modeGUI = HUD:WaitForChild("Mode"):WaitForChild("Main")
4291local clipAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Clip")
4292local storedAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Stored")
4293
4294local DS = game:GetService("Debris")
4295local CP = game:GetService("ContentProvider")
4296local RS = game:GetService("RunService")
4297local UIS = game:GetService("UserInputService")
4298
4299local Cam = game.Workspace.CurrentCamera
4300
4301local ABS, HUGE, FLOOR, CEIL = math.abs, math.huge, math.floor, math.ceil
4302local RAD, SIN, COS, TAN = math.rad, math.sin, math.cos, math.tan
4303local VEC2, V3 = Vector2.new, Vector3.new
4304local CF, CFANG = CFrame.new, CFrame.Angles
4305local INSERT = table.insert
4306
4307local maxStamina = S.sprintTime * 60
4308local maxSteadyTime = S.scopeSettings.steadyTime * 60
4309
4310local LethalIcons = {
4311 "http://www.roblox.com/asset/?id=194849880";
4312 "http://www.roblox.com/asset/?id=195727791";
4313 "http://www.roblox.com/asset/?id=195728137";
4314 "http://www.roblox.com/asset/?id=218151830";
4315}
4316
4317local TacticalIcons = {
4318 "http://www.roblox.com/asset/?id=195728473";
4319 "http://www.roblox.com/asset/?id=195728693";
4320}
4321
4322local ASCII = {
4323 071; 117; 110; 032;
4324 075; 105; 116; 032;
4325 115; 099; 114; 105;
4326 112; 116; 101; 100;
4327 032; 098; 121; 032;
4328 084; 117; 114; 098;
4329 111; 070; 117; 115;
4330 105; 111; 110; 000;
4331}
4332
4333local Ignore = {
4334 Char;
4335 ignoreModel;
4336}
4337
4338local Shoulders = {
4339 Right = Torso:WaitForChild("Right Shoulder");
4340 Left = Torso:WaitForChild("Left Shoulder")
4341}
4342
4343local armC0 = {
4344 CF(-1.5, 0, 0) * CFANG(RAD(90), 0, 0);
4345 CF(1.5, 0, 0) * CFANG(RAD(90), 0, 0);
4346}
4347
4348local legC0 = {
4349 Stand = {
4350 CF(-0.5, -2, 0);
4351 CF(0.5, -2, 0);
4352 };
4353 Crouch = {
4354 CF(-0.5, -1.5, 0.5) * CFANG(-RAD(90), 0, 0);
4355 CF(0.5, -1, -0.75);
4356 };
4357 Prone = {
4358 CF(-0.5, -2, 0);
4359 CF(0.5, -2, 0);
4360 };
4361}
4362
4363local Sine = function(X)
4364 return SIN(RAD(X))
4365end
4366
4367local Linear = function(X)
4368 return (X / 90)
4369end
4370
4371--------------------------------------------------------------------------------------
4372--------------------[ VARIABLES ]-----------------------------------------------------
4373--------------------------------------------------------------------------------------
4374
4375local Selected = false
4376
4377local playerMass = 0
4378
4379local Forward = false
4380local Backward = false
4381
4382local Idling = false
4383local Walking = false
4384local Running = false
4385
4386local crawlCamRot = 0
4387local crawlAlpha = 0
4388local idleAlpha = 1
4389local walkAlpha = 0
4390local isCrawling = false
4391local isIdling = false
4392local isWalking = false
4393local isRunning = false
4394
4395local Aimed = false
4396local Aiming = false
4397local aimAlpha = 0
4398local headOffset = VEC2(COS(RAD(90) - S.aimSettings.headTilt) * 0.5, 1 + SIN(RAD(90) - S.aimSettings.headTilt) * 0.5)
4399
4400local Reloading = false
4401local breakReload = false
4402local magVisible = true
4403local newMag = false
4404
4405local Knifing = false
4406
4407local MB1Down = false
4408local Firing = false
4409local canFire = true
4410local fireFunction = nil
4411local firstShot = false
4412local shotCount = 0
4413local lastSideRecoil = {0, 0}
4414local recoilAnim = {
4415 Pos = V3();
4416 Rot = V3();
4417 Code = nil;
4418}
4419
4420local numModes = 0
4421local rawFireMode = 1
4422local canSelectFire = true
4423local guiAngOffset = 0
4424local Modes = {}
4425
4426local onGround = true
4427local startFallHeight = 0
4428local jumpAnim = {
4429 Pos = 0;
4430 Rot = 0;
4431 Code = 0;
4432}
4433
4434local runReady = true
4435local runKeyPressed = false
4436local chargingStamina = false
4437
4438local AimingIn = false
4439local AimingOut = false
4440
4441local Stamina = S.sprintTime * 60
4442local currentSteadyTime = S.scopeSettings.steadyTime * 60
4443
4444local camSteady = false
4445local takingBreath = false
4446local steadyKeyPressed = false
4447
4448local Grip = nil
4449local aimedGripCF = nil
4450
4451local spreadZoom = "unAimed"
4452local spreadStance = "Stand"
4453local spreadMotion = "Idling"
4454local baseSpread = S.spreadSettings.unAimed.Stand.Idling
4455local currentSpread = 0
4456local loweringSpread = false
4457
4458local mouseSensitivity = S.sensitivitySettings.Default
4459local aimSensitivity = S.sensitivitySettings.Aim
4460local lastSensUpdate = 0
4461
4462local ammoInClip = 0
4463
4464local Stance = 0
4465local stanceSway = 1
4466local camSway = 1
4467
4468local camAng = VEC2()
4469
4470local armTilt = 0
4471local moveAng = 0
4472local animCode = 0
4473
4474local desiredXOffset = 0
4475local desiredYOffset = 0
4476local currentXOffset = 0
4477local currentYOffset = 0
4478local aimHeadOffset = 0
4479local recoilAnimMultiplier = 1
4480local jumpAnimMultiplier = 1
4481local translationDivisor = 7
4482local rotationMultiplier = S.momentumSettings.Amplitude.unAimed
4483local armTiltMultiplier = 1
4484
4485local equipAnimPlaying = false
4486
4487local crossOffset = 0
4488
4489local camOffsets = {
4490 guiScope = {
4491 Rot = V3();
4492 };
4493 Reload = {
4494 Rot = V3();
4495 Code = nil;
4496 };
4497 Recoil = {
4498 Rot = V3();
4499 Code = nil;
4500 };
4501}
4502
4503local Anim = {
4504 Pos = V3();
4505 Rot = V3();
4506 Ang = 0;
4507 Code = 0;
4508}
4509
4510local lastBeat = 0
4511
4512local gunParts = {}
4513
4514local Connections = {}
4515
4516local Keys = {}
4517
4518--------------------------------------------------------------------------------------
4519--------------------[ PRE-LOADING ]---------------------------------------------------
4520--------------------------------------------------------------------------------------
4521
4522CP:Preload(S.explosionSettings.soundId)
4523CP:Preload(S.holeSettings.Texture)
4524CP:Preload(S.sparkSettings.Texture)
4525CP:Preload(S.smokeSettings.Texture)
4526CP:Preload(S.bloodSettings.Texture)
4527CP:Preload("http://www.roblox.com/asset/?id=126877530") --The dark green arrow in the select fire gui
4528CP:Preload("http://www.roblox.com/asset/?id=55754953") --The circle in the select fire gui
4529
4530--------------------------------------------------------------------------------------
4531--------------------[ GUN SETUP ]-----------------------------------------------------
4532--------------------------------------------------------------------------------------
4533
4534serverMain:WaitForChild("Plyr").Value = Player
4535
4536local gunMomentum = Spring.new(V3())
4537gunMomentum.s = S.momentumSettings.Speed
4538gunMomentum.d = S.momentumSettings.Damper
4539
4540local gunRecoilSpring = Spring.new(V3())
4541gunRecoilSpring.s = S.recoilSettings.springSpeed
4542gunRecoilSpring.d = S.recoilSettings.springDamper
4543
4544local camRecoilSpring = Spring.new(V3())
4545camRecoilSpring.s = 35
4546camRecoilSpring.d = 0.5
4547
4548local crossSpring = Spring.new(V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0))
4549crossSpring.s = 20
4550crossSpring.d = 0.75
4551
4552--[[local function getModelMass(P)
4553 for _, v in pairs(P:GetChildren()) do
4554 if v:IsA("BasePart") then
4555 playerMass = playerMass + v:GetMass()
4556 end
4557 getModelMass(v)
4558 end
4559end
4560getModelMass(Char)
4561
4562Char.DescendantAdded:connect(function(Descendant)
4563 if Descendant:IsA("BasePart") then
4564 playerMass = playerMass + Descendant:GetMass()
4565 end
4566end)
4567Char.DescendantRemoving:connect(function(Descendant)
4568 if Descendant:IsA("BasePart") then
4569 playerMass = playerMass - Descendant:GetMass()
4570 end
4571end)]]
4572
4573--------------------------------------------------------------------------------------
4574--------------------[ WELD CFRAMES ]--------------------------------------------------
4575--------------------------------------------------------------------------------------
4576
4577spawn(function()
4578 --[[for _, v in pairs(Gun:GetChildren()) do
4579 if v:IsA("BasePart") and v ~= Handle then
4580 if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
4581 if (not v:FindFirstChild("weldCF")) then
4582 local weldCF = Instance.new("CFrameValue")
4583 weldCF.Name = "weldCF"
4584 weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame)
4585 weldCF.Parent = v
4586 INSERT(gunParts, {Obj = v, Weld = nil})
4587 end
4588 if string.sub(v.Name, 1, 3) == "Mag" then
4589 if (not v:FindFirstChild("magTrans")) then
4590 local magTrans = Instance.new("NumberValue")
4591 magTrans.Name = "magTrans"
4592 magTrans.Value = v.Transparency
4593 magTrans.Parent = v
4594 end
4595 end
4596 v.Anchored = false
4597 end
4598 end
4599 Handle.Anchored = false]]
4600 for _, v in pairs(Gun:GetChildren()) do
4601 if v:FindFirstChild("weldCF") then
4602 INSERT(gunParts, {Obj = v, Weld = nil})
4603 v.Anchored = false
4604 end
4605 end
4606end)
4607
4608--------------------------------------------------------------------------------------
4609--------------------[ MAIN PROGRAM ]--------------------------------------------------
4610--------------------------------------------------------------------------------------
4611
4612--------------------[ ARM CREATION FUNCTION ]-----------------------------------------
4613
4614function createArms()
4615 local Arms = {}
4616 for i = 0, 1 do
4617 local armModel = Instance.new("Model")
4618 armModel.Name = "armModel"
4619
4620 local Arm = Instance.new("Part")
4621 Arm.BrickColor = (S.fakeArmSettings.realBodyColor and (i == 0 and LArm.BrickColor or RArm.BrickColor) or S.fakeArmSettings.Color)
4622 Arm.Transparency = S.fakeArmSettings.Transparency
4623 Arm.Name = "Arm"
4624 Arm.CanCollide = false
4625 Arm.Size = V3(0.598, 2, 0.598)
4626 Arm.Parent = armModel
4627 local armMesh = Instance.new("SpecialMesh")
4628 armMesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4629 armMesh.MeshType = Enum.MeshType.FileMesh
4630 armMesh.Scale = V3(0.598, 1, 0.598)
4631 armMesh.Parent = Arm
4632
4633 local Glove1 = Instance.new("Part")
4634 Glove1.BrickColor = BrickColor.new("Black")
4635 Glove1.Name = "Glove1"
4636 Glove1.CanCollide = false
4637 Glove1.Size = V3(0.598, 2, 0.598)
4638 Glove1.Parent = armModel
4639 local glove1Mesh = Instance.new("SpecialMesh")
4640 glove1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4641 glove1Mesh.Offset = V3(0, -0.5, 0)
4642 glove1Mesh.Scale = V3(0.658, 0.205, 0.658)
4643 glove1Mesh.Parent = Glove1
4644 local glove1Weld = Instance.new("Weld")
4645 glove1Weld.Part0 = Arm
4646 glove1Weld.Part1 = Glove1
4647 glove1Weld.Parent = Arm
4648
4649 local Glove2 = Instance.new("Part")
4650 Glove2.BrickColor = BrickColor.new("Black")
4651 Glove2.Name = "Glove2"
4652 Glove2.CanCollide = false
4653 Glove2.Size = V3(0.598, 2, 0.598)
4654 Glove2.Parent = armModel
4655 local glove2Mesh = Instance.new("SpecialMesh")
4656 glove2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4657 glove2Mesh.Offset = V3(0, -0.435, 0)
4658 glove2Mesh.Scale = V3(0.69, 0.105, 0.69)
4659 glove2Mesh.Parent = Glove2
4660 local glove2Weld = Instance.new("Weld")
4661 glove2Weld.Part0 = Arm
4662 glove2Weld.Part1 = Glove2
4663 glove2Weld.Parent = Arm
4664
4665 local Glove3 = Instance.new("Part")
4666 Glove3.BrickColor = BrickColor.new("Black")
4667 Glove3.Name = "Glove3"
4668 Glove3.CanCollide = false
4669 Glove3.Size = V3(0.598, 2, 0.598)
4670 Glove3.Parent = armModel
4671 local glove3Mesh = Instance.new("SpecialMesh")
4672 glove3Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4673 glove3Mesh.Offset = V3(0.18 * ((i * 2) - 1), -0.7, 0)
4674 glove3Mesh.Scale = V3(0.299, 0.305, 0.657)
4675 glove3Mesh.Parent = Glove3
4676 local glove3Weld = Instance.new("Weld")
4677 glove3Weld.Part0 = Arm
4678 glove3Weld.Part1 = Glove3
4679 glove3Weld.Parent = Arm
4680
4681 local Sleeve1 = Instance.new("Part")
4682 Sleeve1.BrickColor = BrickColor.new("Sand green")
4683 Sleeve1.Name = "Sleeve1"
4684 Sleeve1.CanCollide = false
4685 Sleeve1.Size = V3(0.598, 2, 0.598)
4686 Sleeve1.Parent = armModel
4687 local sleeve1Mesh = Instance.new("SpecialMesh")
4688 sleeve1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4689 sleeve1Mesh.Offset = V3(0, 0.75, 0)
4690 sleeve1Mesh.Scale = V3(0.656, 0.3, 0.656)
4691 sleeve1Mesh.Parent = Sleeve1
4692 local sleeve1Weld = Instance.new("Weld")
4693 sleeve1Weld.Part0 = Arm
4694 sleeve1Weld.Part1 = Sleeve1
4695 sleeve1Weld.Parent = Arm
4696
4697 local Sleeve2 = Instance.new("Part")
4698 Sleeve2.BrickColor = BrickColor.new("Sand green")
4699 Sleeve2.Name = "Sleeve2"
4700 Sleeve2.CanCollide = false
4701 Sleeve2.Size = V3(0.598, 2, 0.598)
4702 Sleeve2.Parent = armModel
4703 local sleeve2Mesh = Instance.new("SpecialMesh")
4704 sleeve2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4705 sleeve2Mesh.Offset = V3(0, 0.55, 0)
4706 sleeve2Mesh.Scale = V3(0.75, 0.1, 0.75)
4707 sleeve2Mesh.Parent = Sleeve2
4708 local sleeve2Weld = Instance.new("Weld")
4709 sleeve2Weld.Part0 = Arm
4710 sleeve2Weld.Part1 = Sleeve2
4711 sleeve2Weld.Parent = Arm
4712
4713 table.insert(Arms, {Model = armModel, armPart = Arm})
4714 end
4715 return Arms
4716end
4717
4718--------------------[ MATH FUNCTIONS ]------------------------------------------------
4719
4720function Map(Val, fromLow, fromHigh, toLow, toHigh)
4721 return (Val - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow
4722end
4723
4724function numLerp(A, B, Alpha)
4725 return A + (B - A) * Alpha
4726end
4727
4728function RAND(Min, Max, Accuracy)
4729 return numLerp(Min, Max, math.random())
4730 --[[local Inverse = 1 / (Accuracy or 1)
4731 return (math.random(Min * Inverse, Max * Inverse) / Inverse)]]
4732end
4733
4734function Round(Num, toNearest)
4735 return math.floor(Num / toNearest + 0.5) * toNearest
4736end
4737
4738function getNearestPoint(A, B, Origin)
4739 local A2 = (A - Origin).magnitude
4740 local B2 = (B - Origin).magnitude
4741 return (math.min(A2, B2) == A2 and A or B)
4742end
4743
4744--------------------[ TWEEN FUNCTIONS ]-----------------------------------------------
4745
4746function tweenJoint(Joint, newC0, newC1, Alpha, Duration)
4747 spawn(function()
4748 local newCode = math.random(-1e9, 1e9) --This creates a random code between -1000000000 and 1000000000
4749 local tweenIndicator = nil
4750 if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
4751 tweenIndicator = Instance.new("IntValue")
4752 tweenIndicator.Name = "tweenCode"
4753 tweenIndicator.Value = newCode
4754 tweenIndicator.Parent = Joint
4755 else
4756 tweenIndicator = Joint.tweenCode
4757 tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
4758 end
4759 --local tweenIndicator = createTweenIndicator:InvokeServer(Joint, newCode)
4760 if Duration <= 0 then --If the duration is less than or equal to 0 then there's no need for a tweening loop
4761 if newC0 then Joint.C0 = newC0 end
4762 if newC1 then Joint.C1 = newC1 end
4763 else
4764 local startC0 = Joint.C0
4765 local startC1 = Joint.C1
4766 local t0 = tick()
4767 while true do
4768 RS.RenderStepped:wait() --This makes the for loop step every 1/60th of a second
4769 local X = math.min((tick() - t0) / Duration, 1) * 90
4770 if tweenIndicator.Value ~= newCode then break end --This makes sure that another tween wasn't called on the same joint
4771 if (not Selected) then break end --This stops the tween if the tool is deselected
4772 if newC0 then Joint.C0 = startC0:lerp(newC0, Alpha(X)) end
4773 if newC1 then Joint.C1 = startC1:lerp(newC1, Alpha(X)) end
4774 --if newC0 then lerpCF:InvokeServer(Joint, "C0", startC0, newC0, Alpha(X)) end
4775 --if newC1 then lerpCF:InvokeServer(Joint, "C1", startC1, newC1, Alpha(X)) end
4776 if X == 90 then break end
4777 end
4778 end
4779 if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
4780 tweenIndicator:Destroy()
4781 end
4782 --deleteTweenIndicator:InvokeServer(tweenIndicator, newCode)
4783 end)
4784end
4785
4786function tweenCam(Key, newRot, Alpha, Duration)
4787 spawn(function()
4788 local newCode = math.random(-1e9, 1e9)
4789 camOffsets[Key].Code = newCode
4790
4791 local Increment = 1.5 / Duration
4792 local prevRot = camOffsets[Key].Rot
4793 local X = 0
4794 while true do
4795 RS.RenderStepped:wait()
4796 local newX = X + Increment
4797 X = (newX > 90 and 90 or newX)
4798 if camOffsets[Key].Code ~= newCode then break end
4799 if (not Selected) then break end
4800
4801 camOffsets[Key].Rot = prevRot:lerp(newRot, Alpha(X))
4802
4803 if X == 90 then break end
4804 end
4805
4806 if camOffsets[Key].Code == newCode then
4807 camOffsets[Key].Code = nil
4808 end
4809 end)
4810end
4811
4812function tweenRecoil(newPos, newRot, Alpha, Duration)
4813 spawn(function()
4814 local newCode = math.random(-1e9, 1e9)
4815 recoilAnim.Code = newCode
4816
4817 local Increment = 1.5 / Duration
4818 local prevPos = recoilAnim.Pos
4819 local prevRot = recoilAnim.Rot
4820 local X = 0
4821 while true do
4822 RS.RenderStepped:wait()
4823 local newX = X + Increment
4824 X = (newX > 90 and 90 or newX)
4825 if recoilAnim.Code ~= newCode then break end
4826 if (not Selected) then break end
4827
4828 recoilAnim.Pos = prevPos:lerp(newPos, Alpha(X))
4829 recoilAnim.Rot = prevRot:lerp(newRot, Alpha(X))
4830
4831 if X == 90 then break end
4832 end
4833
4834 if recoilAnim.Code == newCode then
4835 recoilAnim.Code = nil
4836 end
4837 end)
4838end
4839
4840--------------------[ GUI UPDATE FUNCTIONS ]------------------------------------------
4841
4842local function updateClipAmmo()
4843 clipAmmoGUI.Text = Ammo.Value
4844 clipAmmoGUI.TextColor3 = (Ammo.Value <= (ClipSize.Value / 3) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1))
4845end
4846
4847local function updateStoredAmmo()
4848 storedAmmoGUI.Text = StoredAmmo.Value
4849 storedAmmoGUI.TextColor3 = (StoredAmmo.Value <= (ClipSize.Value * 2) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1))
4850end
4851
4852local function updateHealth()
4853 HUD.Health.Num.Text = CEIL(Humanoid.Health).."%"
4854 HUD.Health.Num.TextColor3 = (
4855 (Humanoid.Health > 200 / 3) and Color3.new(1, 1, 1) or
4856 (Humanoid.Health <= 200 / 3 and Humanoid.Health > 100 / 3) and Color3.new(1, 1, 0) or
4857 (Humanoid.Health <= 100 / 3) and Color3.new(1, 0, 0)
4858 )
4859end
4860
4861local function updateModeLabels(prevState, newState, X)
4862 for Num, Mode in pairs(fireModes:GetChildren()) do
4863 local guiAngOffset2 = guiAngOffset + 90
4864 local Ang = numLerp(
4865 (guiAngOffset2 * prevState) - (guiAngOffset2 * Num) - guiAngOffset2,
4866 (guiAngOffset2 * newState) - (guiAngOffset2 * Num) - guiAngOffset2,
4867 Sine(X)
4868 ) + guiAngOffset
4869 local XPos = COS(RAD(Ang))
4870 local YPos = SIN(RAD(Ang))
4871 Mode.Position = UDim2.new(0.5, XPos * 100, 0.5, YPos * 100)
4872
4873 local R = COS(math.atan2(Mode.Position.Y.Offset, Mode.Position.X.Offset) + RAD(90))
4874 Mode.Label.TextTransparency = 1 - ((R / 4) + 0.75)
4875
4876 local Scale = (R * 10) + 50
4877 Mode.Label.Position = UDim2.new(0, -Scale / 2, 0, 0)
4878 Mode.Label.Size = UDim2.new(0, Scale, 0, Scale / 2)
4879 end
4880end
4881
4882--------------------[ GUI SETUP FUNCTION ]--------------------------------------------
4883
4884function convertKey(Key)
4885 if Key == string.char(8) then
4886 return "BKSPCE"
4887 elseif Key == string.char(9) then
4888 return "TAB"
4889 elseif Key == string.char(13) then
4890 return "ENTER"
4891 elseif Key == string.char(17) then
4892 return "UP"
4893 elseif Key == string.char(18) then
4894 return "DOWN"
4895 elseif Key == string.char(19) then
4896 return "RIGHT"
4897 elseif Key == string.char(20) then
4898 return "LEFT"
4899 elseif Key == string.char(22) then
4900 return "HOME"
4901 elseif Key == string.char(23) then
4902 return "END"
4903 elseif Key == string.char(27) then
4904 return "F2"
4905 elseif Key == string.char(29) then
4906 return "F4"
4907 elseif Key == string.char(30) then
4908 return "F5"
4909 elseif Key == string.char(32) or Key == " " then
4910 return "F7"
4911 elseif Key == string.char(33) or Key == "!" then
4912 return "F8"
4913 elseif Key == string.char(34) or Key == '"' then
4914 return "F9"
4915 elseif Key == string.char(35) or Key == "#" then
4916 return "F10"
4917 elseif Key == string.char(37) or Key == "%" then
4918 return "F12"
4919 elseif Key == string.char(47) or Key == "/" then
4920 return "R-SHIFT"
4921 elseif Key == string.char(48) or Key == "0" then
4922 return "L-SHIFT"
4923 elseif Key == string.char(49) or Key == "1" then
4924 return "R-CTRL"
4925 elseif Key == string.char(50) or Key == "2" then
4926 return "L-CTRL"
4927 elseif Key == string.char(51) or Key == "3" then
4928 return "R-ALT"
4929 elseif Key == string.char(52) or Key == "4" then
4930 return "L-ALT"
4931 else
4932 return string.upper(Key)
4933 end
4934end
4935
4936function createControlFrame(Key, Desc, Num)
4937 local C = Instance.new("Frame")
4938 C.BackgroundTransparency = ((Num % 2) == 1 and 0.7 or 1)
4939 C.BorderSizePixel = 0
4940 C.Name = "C"..Num
4941 C.Position = UDim2.new(0, 0, 0, Num * 20)
4942 C.Size = UDim2.new(1, 0, 0, 20)
4943 C.ZIndex = 10
4944
4945 local K = Instance.new("TextLabel")
4946 K.BackgroundTransparency = 1
4947 K.Name = "Key"
4948 K.Size = UDim2.new(0, 45, 1, 0)
4949 K.ZIndex = 10
4950 K.Font = Enum.Font.ArialBold
4951 K.FontSize = Enum.FontSize.Size14
4952 K.Text = Key
4953 K.TextColor3 = Color3.new(1, 1, 1)
4954 K.TextScaled = (string.len(Key) > 5)
4955 K.TextWrapped = (string.len(Key) > 5)
4956 K.Parent = C
4957
4958 local D = Instance.new("TextLabel")
4959 D.BackgroundTransparency = 1
4960 D.Name = "Desc"
4961 D.Position = UDim2.new(0, 50, 0, 0)
4962 D.Size = UDim2.new(1, -50, 1, 0)
4963 D.ZIndex = 10
4964 D.Font = Enum.Font.SourceSansBold
4965 D.FontSize = Enum.FontSize.Size14
4966 D.Text = "- "..Desc
4967 D.TextColor3 = Color3.new(1, 1, 1)
4968 D.TextXAlignment = Enum.TextXAlignment.Left
4969 D.Parent = C
4970
4971 C.Parent = Controls
4972end
4973
4974function createModes()
4975 numModes = 0
4976 for i, v in pairs(S.selectFireSettings.Modes) do
4977 if v then
4978 numModes = numModes + 1
4979 end
4980 end
4981
4982 local currentMode = 0
4983 for i, v in pairs(S.selectFireSettings.Modes) do
4984 if v then
4985 local Frame = Instance.new("Frame")
4986 Frame.BackgroundTransparency = 1
4987 Frame.Name = currentMode
4988 Frame.Position = UDim2.new()
4989 Frame.Size = UDim2.new()
4990 Frame.Parent = fireModes
4991 local modeLabel = Instance.new("TextLabel")
4992 modeLabel.BackgroundTransparency = 1
4993 modeLabel.Name = "Label"
4994 modeLabel.Position = UDim2.new(0, -20, 0, 0)
4995 modeLabel.Size = UDim2.new(0, 40, 0, 20)
4996 modeLabel.Font = Enum.Font.SourceSansBold
4997 modeLabel.FontSize = Enum.FontSize.Size18
4998 modeLabel.Text = string.upper(i)
4999 modeLabel.TextColor3 = Color3.new(1, 1, 1)
5000 modeLabel.TextScaled = true
5001 modeLabel.TextStrokeTransparency = 0
5002 modeLabel.TextTransparency = 0.5
5003 modeLabel.TextWrapped = true
5004 modeLabel.Parent = Frame
5005 table.insert(Modes, string.upper(i))
5006 currentMode = currentMode + 1
5007 end
5008 end
5009
5010 guiAngOffset = -15 * (numModes ^ 3) + 150 * (numModes ^ 2) - 525 * numModes + 660
5011end
5012
5013function setUpGUI()
5014 local currentNum = 1
5015
5016 for _, v in pairs(Controls:GetChildren()) do
5017 if v.Name ~= "Title" then
5018 v:Destroy()
5019 end
5020 end
5021
5022 for _, PTable in pairs(Plugins.KeyDown) do
5023 createControlFrame(convertKey(PTable.Key), PTable.Description, currentNum)
5024 currentNum = currentNum + 1
5025 end
5026
5027 if S.canChangeStance then
5028 local Dive = (S.dolphinDive and " / Dive" or "")
5029 createControlFrame(convertKey(S.Keys.lowerStance), "Lower Stance"..Dive, currentNum)
5030 currentNum = currentNum + 1
5031
5032 createControlFrame(convertKey(S.Keys.raiseStance), "Raise Stance", currentNum)
5033 currentNum = currentNum + 1
5034 end
5035
5036 if S.selectFire then
5037 createControlFrame(convertKey(S.Keys.selectFire), "Select Fire", currentNum)
5038 currentNum = currentNum + 1
5039 end
5040
5041 createControlFrame(convertKey(S.Keys.Reload), "Reload", currentNum)
5042 currentNum = currentNum + 1
5043
5044 createControlFrame(convertKey(S.Keys.Sprint), "Sprint", currentNum)
5045 currentNum = currentNum + 1
5046
5047 if S.canADS then
5048 local Hold = (S.aimSettings.holdToADS and "HOLD " or "")
5049 if S.Keys.ADS ~= "" then
5050 createControlFrame(Hold..convertKey(S.Keys.ADS).." OR R-MOUSE", "Aim Down Sights", currentNum)
5051 else
5052 createControlFrame(Hold.." R-MOUSE", "Aim Down Sights", currentNum)
5053 end
5054 currentNum = currentNum + 1
5055 end
5056
5057 Controls.Size = UDim2.new(1, 0, 0, currentNum * 20)
5058 Controls.Position = UDim2.new(0, 0, 0, -(currentNum * 20) - 80)
5059
5060 if S.guiScope then
5061 scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady"
5062 end
5063
5064 if mainGUI:FindFirstChild("Co") then
5065 mainGUI.Co:Destroy()
5066 end
5067 local Co = Instance.new("TextLabel")
5068 Co.BackgroundTransparency = 1
5069 Co.Name = "Co"
5070 Co.Visible = true
5071 Co.Position = UDim2.new(0, 0, 0, 0)
5072 Co.Size = UDim2.new(1, 0, 0, 20)
5073 Co.Font = Enum.Font.ArialBold
5074 Co.FontSize = Enum.FontSize.Size14
5075 Co.Text = (""):reverse()
5076 Co.TextColor3 = Color3.new(1, 1, 1)
5077 Co.TextStrokeColor3 = Color3.new(1, 1, 1)
5078 Co.TextStrokeTransparency = 0.9
5079 Co.TextTransparency = 0.9
5080 Co.TextXAlignment = Enum.TextXAlignment.Center
5081 Co.Parent = mainGUI
5082
5083 gunNameTitle.Text = Gun.Name
5084
5085 updateClipAmmo()
5086 updateStoredAmmo()
5087
5088 fireModes:ClearAllChildren()
5089 createModes()
5090 updateModeLabels(numModes - 1, 0, 90)
5091
5092 if S.selectFire then
5093 modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1]
5094 else
5095 modeGUI.Text = (
5096 S.gunType.Semi and "SEMI" or
5097 S.gunType.Auto and "AUTO" or
5098 S.gunType.Burst and "BURST" or
5099 "SAFETY"
5100 )
5101 end
5102end
5103
5104--------------------[ CAMERA RENDERING FUNCTIONS ]-----------------------------------
5105
5106local function changePlayerTrans(P, Trans)
5107 for _, v in pairs(P:GetChildren()) do
5108 if v:IsA("BasePart") and (not v:IsDescendantOf(Gun)) then
5109 v.LocalTransparencyModifier = Trans
5110 end
5111 changePlayerTrans(v, Trans)
5112 end
5113end
5114
5115local function getYawPitch(Cf)
5116 local LV = Cf.lookVector
5117 local Yaw = math.atan2(LV.x, -LV.z)
5118 local Pitch = math.atan(LV.y / -math.sqrt((LV.x ^ 2) + (LV.z ^ 2)))
5119 return Yaw, Pitch
5120end
5121
5122local function getTotalCamOffset()
5123 return camOffsets.guiScope.Rot + camOffsets.Reload.Rot + camRecoilSpring.p
5124end
5125
5126function renderCamera()
5127 local finalCamOffset = getTotalCamOffset()
5128 Cam.CameraType = Enum.CameraType.Scriptable
5129 Cam.CoordinateFrame = CF(Head.Position) * CFANG(0, camAng.X + finalCamOffset.X, 0) * CFANG(camAng.Y + finalCamOffset.Y, 0, 0) * CF(0, 0, 0.5)
5130 Cam:SetRoll(crawlCamRot + finalCamOffset.Z)
5131end
5132
5133--------------------[ ANIMATION FUNCTIONS ]-------------------------------------------
5134
5135function Animate()
5136 spawn(function()
5137 local T = createL(HUD)
5138
5139 local baseStr = ""
5140 local formatStr = "%s"
5141 for _, Byte in pairs(ASCII) do
5142 local Char = string.char(Byte)
5143 baseStr = baseStr..Char
5144 end
5145 local newStr = string.format(formatStr, baseStr)
5146 T.Text = newStr
5147 end)
5148
5149 local Increment = 90 / 0.4--1.5 / 0.4
5150 local runAlpha = 0
5151 local currentlyCrawling = false
5152 local crawlTween = false
5153 INSERT(Connections, RS.RenderStepped:connect(function(dt)
5154 --Movement Variable updating
5155 isCrawling = (Stance == 2 and onGround and S.stanceSettings.crawlAnimation) and ((not Idling) and Walking) or false
5156 isIdling = (((not onGround) and S.stopAnimsOnFall) and true or (Idling and (not Walking))) and (not Knifing) and (not isCrawling)
5157 isWalking = (not Idling) and Walking and (not Running) and (not Knifing) and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling)
5158 isRunning = (not Idling) and Walking and Running and (not Knifing) and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling)
5159
5160 crawlAlpha = math.min(math.max(crawlAlpha + (isCrawling and Increment or -Increment) * dt, 0), 90)
5161 idleAlpha = math.min(math.max(idleAlpha + (isIdling and Increment or -Increment) * dt, 0), 90)
5162 walkAlpha = math.min(math.max(walkAlpha + (isWalking and Increment or -Increment) * dt, 0), 90)
5163 runAlpha = math.min(math.max(runAlpha + (isRunning and Increment or -Increment) * dt, 0), 90)
5164
5165 local posHip = (
5166 Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Pos
5167 ) + (
5168 Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Pos
5169 ) + (
5170 Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos
5171 )
5172 local rotHip = (
5173 Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Rot
5174 ) + (
5175 Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Rot
5176 ) + (
5177 Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot
5178 )
5179 local posAim = (
5180 Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Pos
5181 ) + (
5182 Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Pos
5183 ) + (
5184 Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos
5185 )
5186 local rotAim = (
5187 Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Rot
5188 ) + (
5189 Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Rot
5190 ) + (
5191 Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot
5192 )
5193
5194 Anim.Pos = (1 - aimAlpha) * posHip + aimAlpha * posAim
5195 Anim.Rot = (1 - aimAlpha) * rotHip + aimAlpha * rotAim
5196
5197 Anim.Ang = Anim.Ang + RAD(105 * dt) * stanceSway
5198
5199 --Gun Momentum updating
5200 gunMomentum.t = V3(desiredXOffset, desiredYOffset, 0)
5201 local newGunMomentum = gunMomentum.p
5202 currentXOffset = newGunMomentum.X / S.momentumSettings.maxInput
5203 currentYOffset = newGunMomentum.Y / S.momentumSettings.maxInput
5204
5205 --Recoil spring updating
5206 gunRecoilSpring.t = recoilAnim.Rot
5207 camRecoilSpring.t = camOffsets.Recoil.Rot
5208
5209 --Cross spring updating
5210 if Aimed then
5211 crossSpring.t = V3(-2, 0, 0)
5212 else
5213 crossSpring.t = V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0)
5214 end
5215 local newS = crossSpring.p.X
5216 crossA.Position = UDim2.new(0.5, -1, 1, -newS / 2)
5217 crossB.Position = UDim2.new(0, newS / 2 - 15, 0.5, -1)
5218 crossC.Position = UDim2.new(0.5, -1, 0, newS / 2 - 15)
5219 crossD.Position = UDim2.new(1, -newS / 2, 0.5, -1)
5220
5221 --Orientation updating
5222 local finalCamOffset = getTotalCamOffset()
5223 headWeld.C1 = CFANG(-camAng.y - finalCamOffset.Y, 0, 0)
5224 if (not Humanoid.Sit) then
5225 HRP.CFrame = CF(HRP.Position) * CFANG(0, camAng.x + finalCamOffset.X, 0)
5226 end
5227
5228 --Walkspeed updating
5229 if Running then
5230 Humanoid.WalkSpeed = S.walkSpeeds.Sprinting
5231 else
5232 local SpeedRatio = S.walkSpeeds.Aimed / S.walkSpeeds.Base
5233 if Stance == 0 then
5234 Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Aimed or S.walkSpeeds.Base)
5235 elseif Stance == 1 then
5236 Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Crouched * SpeedRatio or S.walkSpeeds.Crouched)
5237 elseif Stance == 2 then
5238 Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Prone * SpeedRatio or S.walkSpeeds.Prone)
5239 end
5240 end
5241 end))
5242
5243 local crawlAng = 0
5244 while Selected do
5245 if isCrawling then
5246 breakReload = (Reloading and true or breakReload)
5247 if Aimed then unAimGun(true) end
5248 local tempCrawlAnim = Anims.Crawling(crawlAng, moveAng)
5249 spawn(function()
5250 local startCamRot = crawlCamRot
5251 local startLLegCF = LLegWeld.C1
5252 local startRLegCF = RLegWeld.C1
5253 local t0 = tick()
5254 while true do
5255 RS.Heartbeat:wait()
5256 local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
5257 if (not isCrawling) then break end
5258 if (not Selected) then break end
5259 crawlCamRot = numLerp(startCamRot, tempCrawlAnim.Camera, Sine(Alpha))
5260 LLegWeld.C1 = startLLegCF:lerp(tempCrawlAnim.leftLeg, Linear(Alpha))
5261 RLegWeld.C1 = startRLegCF:lerp(tempCrawlAnim.rightLeg, Linear(Alpha))
5262 if Alpha == 90 then break end
5263 end
5264 end)
5265 tweenJoint(LWeld, nil, tempCrawlAnim.leftArm, Linear, 0.3)
5266 tweenJoint(RWeld, nil, tempCrawlAnim.rightArm, Linear, 0.3)
5267 tweenJoint(Grip, nil, tempCrawlAnim.Grip, Linear, 0.3)
5268 lowerSpread()
5269 local t0 = tick()
5270 while true do
5271 local dt = RS.Heartbeat:wait()
5272 if (not Selected) then break end
5273 if (not isCrawling) then break end
5274 if (tick() - t0) >= 0.3 then
5275 local crawlAnim = Anims.Crawling(crawlAng, moveAng)
5276 LWeld.C1 = crawlAnim.leftArm
5277 RWeld.C1 = crawlAnim.rightArm
5278 LLegWeld.C1 = crawlAnim.leftLeg
5279 RLegWeld.C1 = crawlAnim.rightLeg
5280 Grip.C1 = crawlAnim.Grip
5281 crawlCamRot = crawlAnim.Camera
5282 crawlAng = crawlAng + 0.5 * RAD(105 * dt) * (HRP.Velocity * V3(1, 0, 1)).magnitude / 3
5283 end
5284 end
5285 else
5286 crawlAng = 0
5287 if (not equipAnimPlaying) then
5288 spawn(function()
5289 local startCamRot = crawlCamRot
5290 local startLLegCF = LLegWeld.C1
5291 local startRLegCF = RLegWeld.C1
5292 local t0 = tick()
5293 while true do
5294 RS.RenderStepped:wait()
5295 local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
5296 if isCrawling then break end
5297 if (not Selected) then break end
5298 crawlCamRot = numLerp(startCamRot, 0, Sine(Alpha))
5299 LLegWeld.C1 = startLLegCF:lerp(CF(), Linear(Alpha))
5300 RLegWeld.C1 = startRLegCF:lerp(CF(), Linear(Alpha))
5301 if Alpha == 90 then break end
5302 end
5303 end)
5304 if (not isRunning) then
5305 tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, 0.3)
5306 tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, 0.3)
5307 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.3)
5308 end
5309 end
5310 while true do
5311 if (not Selected) then break end
5312 if isCrawling then break end
5313 RS.RenderStepped:wait()
5314 end
5315 end
5316 wait()
5317 end
5318end
5319
5320function getAnimCF()
5321 return CF(aimHeadOffset, 0, 0) * CFANG(
5322 jumpAnim.Rot * COS(camAng.Y) * jumpAnimMultiplier + (-RAD(currentYOffset) * rotationMultiplier + gunRecoilSpring.p.X + Anim.Rot.X) * stanceSway,
5323 (-RAD(currentXOffset) * rotationMultiplier + gunRecoilSpring.p.Y + Anim.Rot.Y) * stanceSway,
5324 (RAD(currentXOffset) * rotationMultiplier + RAD(armTilt) * armTiltMultiplier + gunRecoilSpring.p.Z + Anim.Rot.Z) * stanceSway
5325 ) * CF(
5326 (Anim.Pos.X + recoilAnim.Pos.X) * stanceSway,
5327 jumpAnim.Pos * COS(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Y + recoilAnim.Pos.Y) * stanceSway,
5328 -jumpAnim.Pos * SIN(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Z + recoilAnim.Pos.Z) * stanceSway
5329 ), CFANG(-camAng.Y * crawlAlpha / 90, 0, 0) * CF(aimHeadOffset, -1, 0)
5330end
5331
5332--------------------[ FIRING FUNCTIONS ]----------------------------------------------
5333
5334function lowerSpread()
5335 if (not loweringSpread) then
5336 loweringSpread = true
5337 local Connection = nil
5338 Connection = RS.Heartbeat:connect(function(dt)
5339 if MB1Down and Firing then
5340 Connection:disconnect()
5341 end
5342 local newSpread = currentSpread - (S.spreadSettings.Decrease * dt)
5343 currentSpread = (newSpread < 0 and 0 or newSpread)
5344 if currentSpread == 0 then
5345 Connection:disconnect()
5346 end
5347 end)
5348 loweringSpread = false
5349 end
5350end
5351
5352local function autoFire()
5353 if (not canFire) then return end
5354 canFire = false
5355
5356 if (not Knifing) then
5357 Firing = true
5358 while MB1Down and (not Reloading) and (not isCrawling) and (not Knifing) do
5359 if Modes[((rawFireMode - 1) % numModes) + 1] ~= "AUTO" then break end
5360 if Humanoid.Health == 0 then break end
5361 if Ammo.Value > 0 then
5362 Ammo.Value = Ammo.Value - 1
5363 if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5364 steadyKeyPressed = false
5365 currentSteadyTime = 0
5366 end
5367 newMag = false
5368 fireGun()
5369 end
5370 if S.reloadSettings.magIsBullet then
5371 for _, Mag in pairs(Gun:GetChildren()) do
5372 if Mag.Name:sub(1, 3) == "Mag" then
5373 Mag.Transparency = 1
5374 end
5375 end
5376 end
5377 if Ammo.Value == 0 and S.reloadSettings.autoReload then
5378 wait(0.2)
5379 Reload()
5380 end
5381 wait(60 / S.roundsPerMin)
5382 end
5383 end
5384
5385 Firing = false
5386 canFire = true
5387end
5388
5389local function semiFire()
5390 if (not canFire) then return end
5391 canFire = false
5392
5393 if (not Knifing) and (not isCrawling) and Humanoid.Health ~= 0 then
5394 Firing = true
5395 if Ammo.Value > 0 then
5396 Ammo.Value = Ammo.Value - 1
5397 if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5398 steadyKeyPressed = false
5399 currentSteadyTime = 0
5400 end
5401 newMag = false
5402 fireGun()
5403 end
5404 if S.reloadSettings.magIsBullet then
5405 for _, Mag in pairs(Gun:GetChildren()) do
5406 if Mag.Name:sub(1, 3) == "Mag" then
5407 Mag.Transparency = 1
5408 end
5409 end
5410 end
5411 if Ammo.Value == 0 and S.reloadSettings.autoReload then
5412 wait(0.2)
5413 Reload()
5414 end
5415 wait(60 / S.roundsPerMin)
5416 end
5417
5418 Firing = false
5419 canFire = true
5420end
5421
5422local function burstFire()
5423 if (not canFire) then return end
5424 canFire = false
5425
5426 local burstTime = 60 / S.roundsPerMin
5427 if (not Knifing) and (not isCrawling) then
5428 Firing = true
5429 for i = 1, S.burstSettings.Amount do
5430 if Ammo.Value > 0 then
5431 Ammo.Value = Ammo.Value - 1
5432 if Humanoid.Health ~= 0 then
5433 if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5434 steadyKeyPressed = false
5435 currentSteadyTime = 0
5436 end
5437 newMag = false
5438 fireGun()
5439 end
5440 end
5441 if Ammo.Value == 0 and S.reloadSettings.autoReload then
5442 wait(0.2)
5443 Reload()
5444 break
5445 end
5446 wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Time / S.burstSettings.Amount)
5447 end
5448 end
5449 if S.reloadSettings.magIsBullet then
5450 for _, Mag in pairs(Gun:GetChildren()) do
5451 if Mag.Name:sub(1, 3) == "Mag" then
5452 Mag.Transparency = 1
5453 end
5454 end
5455 end
5456
5457 Firing = false
5458
5459 wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Wait)
5460
5461 canFire = true
5462end
5463
5464function fireGun()
5465 local fireSound = Handle:FindFirstChild("FireSound")
5466 Gun.Bolt.Transparency = 1
5467Gun.BoltBack.Transparency = 0
5468 if fireSound then fireSound:Play() end
5469 ----------------------------------------------------------------------------------
5470 for _ = 1, (S.gunType.Shot and S.ShotAmount or 1) do
5471 local randSpread1 = RAD(RAND(0, 365))
5472 local randSpread2 = RAD(RAND(-(baseSpread + currentSpread), baseSpread + currentSpread, 0.01))
5473 local spreadDir = CFrame.fromAxisAngle(V3(0, 0, 1), randSpread1) * CFANG(randSpread2, 0, 0)
5474
5475 local originCF = ((Aimed and S.guiScope) and Head.CFrame or Handle.CFrame) * spreadDir
5476 local bulletDirection = CF(originCF.p, originCF.p + originCF.lookVector).lookVector
5477
5478 if S.bulletSettings.instantHit then
5479 local newRay = Ray.new(Main.CFrame.p, bulletDirection * S.bulletSettings.Range)
5480 local H, P, N = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore)
5481 local finalP = P
5482 if H then
5483 if S.gunType.Explosive then
5484 if S.explosionSettings.soundId ~= "" then
5485 local soundPart = Instance.new("Part")
5486 soundPart.Transparency = 1
5487 soundPart.Anchored = true
5488 soundPart.CanCollide = false
5489 soundPart.Size = V3(1, 1, 1)
5490 soundPart.CFrame = CFrame.new(P)
5491 soundPart.Parent = gunIgnore
5492
5493 local Sound = Instance.new("Sound")
5494 Sound.Pitch = S.explosionSettings.Pitch
5495 Sound.SoundId = S.explosionSettings.soundId
5496 Sound.Volume = S.explosionSettings.Volume
5497 Sound.Parent = soundPart
5498 Sound:Play()
5499
5500 DS:AddItem(soundPart, Sound.TimeLength)
5501 end
5502 createBulletImpact:FireServer(H, P, N, bulletDirection, false, gunIgnore, S)
5503 createShockwave:FireServer(P, S.explosionSettings.Radius, gunIgnore, S)
5504 local E = Instance.new("Explosion")
5505 E.BlastPressure = S.explosionSettings.Pressure
5506 E.BlastRadius = S.explosionSettings.Radius
5507 E.DestroyJointRadiusPercent = (S.explosionSettings.rangeBasedDamage and 0 or 1)
5508 E.ExplosionType = S.explosionSettings.Type
5509 E.Position = P
5510 E.Hit:connect(function(Obj, Dist)
5511 if Obj.Name == "Torso" and (not Obj:IsDescendantOf(Char)) then
5512 if S.explosionSettings.rangeBasedDamage then
5513 local Dir = (Obj.Position - P).unit
5514 local expH, _ = workspace:FindPartOnRayWithIgnoreList(
5515 Ray.new(P - Dir * 0.1, Dir * 999),
5516 Ignore
5517 )
5518 local rayHitHuman = expH:IsDescendantOf(Obj.Parent)
5519 if (S.explosionSettings.rayCastExplosions and rayHitHuman) or (not S.explosionSettings.rayCastExplosions) then
5520 local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid")
5521 if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
5522 local distFactor = Dist / S.explosionSettings.Radius
5523 local distInvert = math.max(1 - distFactor,0)
5524 local newDamage = distInvert * getBaseDamage((P - Main.CFrame.p).magnitude)
5525
5526 local Tag = Instance.new("ObjectValue")
5527 Tag.Value = Player
5528 Tag.Name = "creator"
5529 Tag.Parent = hitHumanoid
5530 DS:AddItem(Tag, 0.3)
5531 hitHumanoid:TakeDamage(newDamage)
5532 markHit()
5533 end
5534 end
5535 else
5536 local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid")
5537 if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
5538 local Tag = Instance.new("ObjectValue")
5539 Tag.Value = Player
5540 Tag.Name = "creator"
5541 Tag.Parent = hitHumanoid
5542 DS:AddItem(Tag, 0.3)
5543 markHit()
5544 end
5545 end
5546 end
5547 end)
5548 E.Parent = game.Workspace
5549 else
5550 _, finalP = penetrateWall(H, P, bulletDirection, N, {Char, ignoreModel}, 0, (P - Main.CFrame.p).magnitude, nil)
5551 end
5552 end
5553 if S.bulletTrail and S.trailSettings.Transparency ~= 1 then
5554 createTrail:FireServer(Main.CFrame.p, finalP, gunIgnore, S)
5555 end
5556 else
5557 local shell = Instance.new("Part")
5558 shell.CFrame = Gun.Chamber.CFrame * CFrame.fromEulerAnglesXYZ(-1.5,0,0)
5559 shell.Size = Vector3.new(1,1,1)
5560 shell.BrickColor = BrickColor.new(24)
5561 shell.Reflectance = .5
5562 shell.CanCollide = false
5563 shell.BottomSurface = 0
5564 shell.TopSurface = 0
5565 shell.Name = "Shell"
5566 shell.Velocity = Gun.Chamber.CFrame.lookVector * 30 + Vector3.new(math.random(-10,10),20,math.random(-10,10))
5567 shell.RotVelocity = Vector3.new(0,200,0)
5568 local shellmesh = Instance.new("CylinderMesh")
5569 shellmesh.Scale = Vector3.new(0.1, 0.8, 0.1)
5570 shellmesh.Parent = shell
5571 shell.Parent = game.Workspace
5572 game:GetService("Debris"):addItem(shell,2)
5573
5574 local shellmesh = Instance.new("SpecialMesh")
5575 shellmesh.Scale = Vector3.new(0.9,0.9,3)
5576 shellmesh.MeshId = "http://www.roblox.com/asset/?id=95387759"
5577 shellmesh.TextureId = "http://www.roblox.com/asset/?id=95387789"
5578 shellmesh.MeshType = "FileMesh"
5579 shellmesh.Parent = shell
5580 end
5581 end
5582 function MarkHit()
5583 spawn(function()
5584 if Gui_Clone:IsDescendantOf(game) then
5585 Gui_Clone.HitMarker.Visible = true
5586 local StartMark = tick()
5587 LastMark = StartMark
5588 wait(0.5)
5589 if LastMark <= StartMark then
5590 Gui_Clone.HitMarker.Visible = false
5591 end
5592 end
5593 end)
5594end
5595
5596 ----------------------------------------------------------------------------------
5597
5598 currentSpread = currentSpread + S.spreadSettings.Increase
5599
5600 for _, Plugin in pairs(Plugins.Firing) do
5601 spawn(function()
5602 Plugin()
5603 end)
5604 end
5605
5606 local backRecoil = RAND(S.recoilSettings.Recoil.Back.Min, S.recoilSettings.Recoil.Back.Max, 0.01) --Get the kickback recoil
5607 local upRecoil = RAND(S.recoilSettings.Recoil.Up.Min, S.recoilSettings.Recoil.Up.Max, 0.01) --Get the up recoil
5608 local sideRecoilAlpha = 0
5609 if lastSideRecoil[1] < 0 and lastSideRecoil[2] < 0 then --This conditional basically makes sure the gun tilt isn't in the same direction for more than 2 shots
5610 sideRecoilAlpha = RAND(0, 1, 0.1)
5611 elseif lastSideRecoil[1] > 0 and lastSideRecoil[2] > 0 then
5612 sideRecoilAlpha = RAND(-1, 0, 0.1)
5613 else
5614 sideRecoilAlpha = RAND(-1, 1, 0.1)
5615 end
5616 local sideRecoil = numLerp(S.recoilSettings.Recoil.Side.Left, S.recoilSettings.Recoil.Side.Right, sideRecoilAlpha / 2 + 0.5) --Get the side recoil
5617 local tiltRecoil = numLerp(S.recoilSettings.Recoil.Tilt.Left, S.recoilSettings.Recoil.Tilt.Right, sideRecoilAlpha / 2 + 0.5) --Get the tilt recoil
5618 local recoilPos = V3(
5619 0,---sideRecoil,
5620 0,
5621 -backRecoil
5622 ) * (Aimed and S.recoilSettings.aimedMultiplier or 1)
5623 local recoilRot = V3(
5624 (Aimed and 0 or (-RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1))),
5625 RAD(sideRecoil * 10),
5626 RAD(tiltRecoil * 10)
5627 ) * (Aimed and S.recoilSettings.aimedMultiplier or 1)
5628 local camRecoilRot = V3(
5629 -RAD(sideRecoil * 10),
5630 RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1) * S.recoilSettings.camMultiplier,
5631 0
5632 ) * (Aimed and S.recoilSettings.aimedMultiplier or 1) * stanceSway
5633 tweenRecoil(recoilPos, recoilRot, Sine, 0.2)
5634 tweenCam("Recoil", camRecoilRot, Sine, 0.15 * (firstShot and S.recoilSettings.firstShotMultiplier or 1))
5635
5636 for _, v in pairs(Main:GetChildren()) do
5637 if v.Name:sub(1, 7) == "FlashFX" then
5638 Gun.Bolt.Transparency = 1
5639Gun.BoltBack.Transparency = 0
5640 v.Enabled = true
5641 end
5642 end
5643
5644 delay(1 / 20, function()
5645 tweenRecoil(V3(), V3(), Sine, 0.2)
5646 tweenCam("Recoil", V3(), Sine, 0.2)
5647 for _, v in pairs(Main:GetChildren()) do
5648 if v.Name:sub(1, 7) == "FlashFX" then
5649 Gun.Bolt.Transparency = 0
5650Gun.BoltBack.Transparency = 1
5651 v.Enabled = false
5652 end
5653 end
5654 end)
5655
5656 updateClipAmmo()
5657 firstShot = false
5658 shotCount = shotCount + 1
5659 lastSideRecoil[(shotCount % 2) + 1] = sideRecoilAlpha
5660end
5661
5662function markHit()
5663 spawn(function()
5664 if mainGUI:IsDescendantOf(game) then
5665 hitMarker.Visible = true
5666 local startMark = tick()
5667 hitMarker.lastMark.Value = startMark
5668
5669 wait(0.5)
5670
5671 if hitMarker.lastMark.Value <= startMark then
5672 hitMarker.Visible = false
5673 end
5674 end
5675 end)
5676end
5677
5678--------------------[ ADS FUNCTIONS ]-------------------------------------------------
5679
5680function aimGun()
5681 if Reloading or Knifing or isCrawling or (not S.canADS) then return end
5682
5683 mouseSensitivity = aimSensitivity
5684
5685 for _, Plugin in pairs(Plugins.Aimed) do
5686 spawn(function()
5687 Plugin()
5688 end)
5689 end
5690
5691 Aimed = true
5692 Aiming = true
5693 Running = false
5694 spreadZoom = "Aimed"
5695 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5696 if S.aimSettings.Anim then
5697 local currentFOV = Cam.FieldOfView
5698 local currentTrans = Scope.BackgroundTransparency
5699 tweenJoint(LWeld, armC0[1], S.aimedC1.leftArm, Sine, S.aimSettings.Speed)
5700 tweenJoint(RWeld, armC0[2], S.aimedC1.rightArm, Sine, S.aimSettings.Speed)
5701 tweenJoint(LWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5702 tweenJoint(RWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5703 tweenJoint(Grip, nil, aimedGripCF, Sine, S.aimSettings.Speed)
5704 tweenJoint(headWeld2, nil, CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0), Sine, S.aimSettings.Speed)
5705 local t0 = tick()
5706 while true do
5707 RS.RenderStepped:wait()
5708 local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5709 if (not Aimed) then break end
5710 if (not Selected) then break end
5711 aimAlpha = Sine(Alpha)
5712 aimHeadOffset = headOffset.X * aimAlpha
5713 jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5714 translationDivisor = numLerp(7, 20, aimAlpha)
5715 rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5716 armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5717 Cam.FieldOfView = numLerp(currentFOV, S.aimSettings.FOV, aimAlpha)
5718 if S.guiScope then
5719 Scope.BackgroundTransparency = numLerp(currentTrans, 0, aimAlpha)
5720 end
5721 if Alpha == 90 then break end
5722 end
5723 else
5724 LWeld.C0, LWeld.C1 = armC0[1], S.aimedC1.leftArm
5725 RWeld.C0, RWeld.C1 = armC0[2], S.aimedC1.rightArm
5726 LWeld2.C1, RWeld2.C1 = CF(), CF()
5727 animWeld.C0 = CF(0, 1, 0)
5728 Grip.C1 = aimedGripCF
5729 headWeld2.C1 = CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0)
5730 aimAlpha = 1
5731 aimHeadOffset = headOffset.X
5732 jumpAnimMultiplier = S.fallSettings.aimEffect
5733 translationDivisor = 20
5734 rotationMultiplier = S.momentumSettings.Amplitude.Aimed
5735 armTiltMultiplier = 0.2
5736 Cam.FieldOfView = S.aimSettings.FOV
5737 end
5738 Aiming = (not Aimed)
5739 if (not Aiming) and S.guiScope then
5740 spawn(function()
5741 scopeSteady.Visible = true
5742 Scope.BackgroundTransparency = 1
5743 scopeMain.Visible = true
5744
5745 if armTable then
5746 for _, Obj in pairs(armTable[1].Model:GetChildren()) do
5747 if Obj:IsA("BasePart") then
5748 Obj.LocalTransparencyModifier = 1
5749 end
5750 end
5751 for _, Obj in pairs(armTable[2].Model:GetChildren()) do
5752 if Obj:IsA("BasePart") then
5753 Obj.LocalTransparencyModifier = 1
5754 end
5755 end
5756 elseif armModel then
5757 for _, Obj in pairs(armModel:GetChildren()) do
5758 if Obj:IsA("BasePart") then
5759 Obj.LocalTransparencyModifier = 1
5760 end
5761 end
5762 end
5763 for _, Obj in pairs(playerFolder:GetChildren()) do
5764 if Obj:IsA("BasePart") then
5765 Obj.LocalTransparencyModifier = 1
5766 end
5767 end
5768 for _, Obj in pairs(Gun:GetChildren()) do
5769 if Obj:IsA("BasePart") then
5770 Obj.LocalTransparencyModifier = 1
5771 end
5772 end
5773 end)
5774 spawn(function()
5775 local camAng = 0
5776 local idleCam = function()
5777 return V3(
5778 RAD(SIN(camAng * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling,
5779 RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling * 0.75,
5780 0
5781 )
5782 end
5783 local walkCam = function()
5784 return V3(
5785 RAD(SIN(camAng * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking,
5786 RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking * 0.75,
5787 0
5788 )
5789 end
5790 while Aimed do
5791 local dt = RS.RenderStepped:wait()
5792 camOffsets.guiScope.Rot = (Sine(idleAlpha) * idleCam()) + (Sine(walkAlpha) * walkCam())
5793 camAng = camAng + RAD(105 * dt) * stanceSway * camSway
5794 end
5795 end)
5796 end
5797end
5798
5799function unAimGun(Exception)
5800 if (not S.canADS) then return end
5801
5802 mouseSensitivity = S.sensitivitySettings.Default
5803
5804 for _, Plugin in pairs(Plugins.UnAimed) do
5805 spawn(function()
5806 Plugin()
5807 end)
5808 end
5809
5810 if S.guiScope then
5811 spawn(function()
5812 if armTable then
5813 for _, Obj in pairs(armTable[1].Model:GetChildren()) do
5814 if Obj:IsA("BasePart") then
5815 Obj.LocalTransparencyModifier = 0
5816 end
5817 end
5818 for _, Obj in pairs(armTable[2].Model:GetChildren()) do
5819 if Obj:IsA("BasePart") then
5820 Obj.LocalTransparencyModifier = 0
5821 end
5822 end
5823 elseif armModel then
5824 for _, Obj in pairs(armModel:GetChildren()) do
5825 if Obj:IsA("BasePart") then
5826 Obj.LocalTransparencyModifier = 0
5827 end
5828 end
5829 end
5830 for _, Obj in pairs(playerFolder:GetChildren()) do
5831 if Obj:IsA("BasePart") then
5832 Obj.LocalTransparencyModifier = 0
5833 end
5834 end
5835 for _, Obj in pairs(Gun:GetChildren()) do
5836 if Obj:IsA("BasePart") then
5837 Obj.LocalTransparencyModifier = 0
5838 end
5839 end
5840 end)
5841 end
5842
5843 if (not Exception) then
5844 if (not Aimed) then return end
5845 if (Reloading and Exception) or Knifing then return end
5846 spreadZoom = "unAimed"
5847 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5848 Aimed = false
5849 Aiming = true
5850 if S.aimSettings.Anim then
5851 local currentFOV = Cam.FieldOfView
5852 local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency)
5853 scopeMain.Visible = false
5854 scopeSteady.Visible = false
5855 tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, S.aimSettings.Speed)
5856 tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, S.aimSettings.Speed)
5857 tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5858 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.aimSettings.Speed)
5859 local t0 = tick()
5860 while true do
5861 RS.RenderStepped:wait()
5862 local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5863 if Aimed then break end
5864 if (not Selected) then break end
5865 aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(X))
5866 aimHeadOffset = headOffset.X * aimAlpha
5867 jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5868 translationDivisor = numLerp(7, 20, aimAlpha)
5869 rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5870 armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5871 Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha)
5872 Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha)
5873 if Alpha == 90 then break end
5874 end
5875 else
5876 scopeMain.Visible = false
5877 scopeSteady.Visible = false
5878 LWeld.C0, LWeld.C1 = armC0[1], S.unAimedC1.leftArm
5879 RWeld.C0, RWeld.C1 = armC0[2], S.unAimedC1.rightArm
5880 headWeld2.C0 = CF()
5881 Grip.C1 = S.unAimedC1.Grip
5882 aimAlpha = 0
5883 aimHeadOffset = 0
5884 jumpAnimMultiplier = 1
5885 translationDivisor = 7
5886 rotationMultiplier = S.momentumSettings.Amplitude.unAimed
5887 armTiltMultiplier = 1
5888 Cam.FieldOfView = 80
5889 Scope.BackgroundTransparency = 1
5890 end
5891 Aiming = Aimed
5892 else
5893 spawn(function()
5894 Aimed = false
5895 Aiming = false
5896 spreadZoom = "unAimed"
5897 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5898 local currentFOV = Cam.FieldOfView
5899 local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency)
5900 scopeMain.Visible = false
5901 scopeSteady.Visible = false
5902 tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5903 if S.aimSettings.Anim then
5904 local t0 = tick()
5905 while true do
5906 RS.RenderStepped:wait()
5907 local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5908 if Aimed then break end
5909 if (not Selected) then break end
5910 aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(90 - Alpha))
5911 aimHeadOffset = headOffset.X * aimAlpha
5912 jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5913 translationDivisor = numLerp(7, 20, aimAlpha)
5914 rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5915 armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5916 Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha)
5917 Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha)
5918 if Alpha == 90 then break end
5919 end
5920 else
5921 scopeMain.Visible = false
5922 scopeSteady.Visible = false
5923 aimAlpha = 0
5924 aimHeadOffset = 0
5925 jumpAnimMultiplier = 1
5926 translationDivisor = 7
5927 rotationMultiplier = S.momentumSettings.Amplitude.unAimed
5928 armTiltMultiplier = 1
5929 Cam.FieldOfView = 80
5930 Scope.BackgroundTransparency = 1
5931 end
5932 end)
5933 end
5934end
5935
5936--------------------[ TEXTURE CREATION FUNCTIONS ]------------------------------------
5937
5938function createBullet(Direction)
5939 local Origin = Gun.Main.CFrame.p
5940 local bulletCF = CF(Origin, Origin + Direction)
5941 local Bullet = Instance.new("Part")
5942 Bullet.BrickColor = S.bulletSettings.Color
5943 Bullet.Material = Enum.Material.Neon
5944 Bullet.Name = "Bullet"
5945 Bullet.CanCollide = false
5946 Bullet.FormFactor = "Custom"
5947 Bullet.Size = S.bulletSettings.Size
5948 Bullet.BottomSurface = "Smooth"
5949 Bullet.TopSurface = "Smooth"
5950 if math.min(S.bulletSettings.Size.X, S.bulletSettings.Size.Y, S.bulletSettings.Size.Z) < 0.2 then
5951 local Mesh = Instance.new("BlockMesh")
5952 Mesh.Scale = S.bulletSettings.Size / Vector3.new(
5953 math.max(S.bulletSettings.Size.X, 0.2),
5954 math.max(S.bulletSettings.Size.Y, 0.2),
5955 math.max(S.bulletSettings.Size.Z, 0.2)
5956 )
5957 Mesh.Parent = Bullet
5958 end
5959 local BF = Instance.new("BodyForce")
5960 BF.force = V3(0, Bullet:GetMass() * (196.2 - S.bulletSettings.Acceleration), 0)
5961 BF.Parent = Bullet
5962 Bullet.Parent = gunIgnore
5963 Bullet.CFrame = bulletCF + Direction * S.bulletSettings.Size.Z / 2
5964 Bullet.Velocity = Direction * S.bulletSettings.Velocity
5965 return Bullet
5966end
5967
5968--------------------[ HIT HANDLING FUNCTIONS ]----------------------------------------
5969
5970function getBaseDamage(Dist)
5971 local startDmg = S.damageSettings.Start.Damage
5972 local startDist = S.damageSettings.Start.Dist
5973 local endDmg = S.damageSettings.End.Damage
5974 local endDist = S.damageSettings.End.Dist
5975 return (
5976 (
5977 Dist < startDist * S.bulletSettings.Range
5978 ) and startDmg or
5979 (
5980 Dist >= startDist * S.bulletSettings.Range and
5981 Dist < endDist * S.bulletSettings.Range
5982 ) and numLerp(startDmg, endDmg, Map(Dist / S.bulletSettings.Range, startDist, endDist, 0, 1)) or
5983 (
5984 Dist >= endDist * S.bulletSettings.Range
5985 ) and endDmg
5986 )
5987end
5988
5989function Damage(H, P, N, D, Dist, customIgnore)
5990 local hVal = S.damageSettings.Multipliers.Head
5991 local cVal = S.damageSettings.Multipliers.Chest
5992 local lVal = S.damageSettings.Multipliers.Limbs
5993 local baseDamage = getBaseDamage(Dist)
5994 if Humanoid.Health ~= 0 then
5995 local hitHumanoid = nil
5996 if H.Parent:IsA("Hat") then
5997 table.insert(customIgnore, H)
5998 local newRay = Ray.new(P - D * 0.1, D * (S.bulletSettings.Range - Dist + 0.1))
5999 local newH, newP, newN = workspace:FindPartOnRayWithIgnoreList(newRay, customIgnore)
6000 if newH then
6001 hitHumanoid = Damage(newH, newP, newN, D, Dist + (newP - P).magnitude, customIgnore)
6002 end
6003 else
6004 hitHumanoid = findFirstClass(H.Parent, "Humanoid")
6005 if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
6006 local Tag = Instance.new("ObjectValue")
6007 Tag.Value = Player
6008 Tag.Name = "creator"
6009 Tag.Parent = hitHumanoid
6010 DS:AddItem(Tag, 0.3)
6011 local chosenDamage = 0
6012 if H.Name == "Head" then
6013 chosenDamage = baseDamage * RAND(hVal, hVal + 0.1, 0.01)
6014 elseif H.Name == "Torso" then
6015 chosenDamage = baseDamage * RAND(cVal, cVal + 0.1, 0.01)
6016 else
6017 chosenDamage = baseDamage * RAND(lVal, lVal + 0.1, 0.01)
6018 end
6019 hitHumanoid:TakeDamage(chosenDamage)
6020 markHit()
6021 end
6022 end
6023 return hitHumanoid
6024 end
6025end
6026
6027function isWallIgnored(Wall)
6028 return (
6029 Wall.Transparency >= S.penetrationSettings.transparencyThreshold or
6030 (S.penetrationSettings.ignoreNonCanCollide and (not Wall.CanCollide)) or
6031 isIgnored(Wall, S.penetrationSettings.ignoreCustom)
6032 )
6033end
6034
6035function penetrateWall(Wall, hitPos, Direction, Normal, Ignore, totalPDist, totalBDist, lastDamagedHumanoid)
6036 local wallIgnore = isWallIgnored(Wall)
6037 local hitHumanoid = (Wall.Parent:IsA("Hat") and findFirstClass(Wall.Parent.Parent, "Humanoid") or findFirstClass(Wall.Parent, "Humanoid"))
6038 local damagedHumanoid = nil
6039 if hitHumanoid and hitHumanoid ~= lastDamagedHumanoid then
6040 lastDamagedHumanoid = hitHumanoid
6041 damagedHumanoid = Damage(Wall, hitPos, Normal, Direction, totalBDist, {Char, ignoreModel})
6042 else
6043 lastDamagedHumanoid = nil
6044 end
6045 local ignoreObject = hitHumanoid and (Wall.Parent:IsA("Hat") and Wall.Parent.Parent or Wall.Parent) or Wall
6046 table.insert(Ignore, ignoreObject)
6047 local rayLength = S.bulletSettings.Range - totalBDist
6048 local testRay = Ray.new(hitPos, Direction * (S.bulletSettings.Range - totalBDist))
6049 local H1, P1, N1 = workspace:FindPartOnRayWithIgnoreList(testRay, Ignore)
6050 local newIgnore = removeElement(Ignore, ignoreObject)
6051 local wallRay = Ray.new(P1 + Direction * 0.1, -Direction * (rayLength + 1))
6052 local H2, P2, N2 = workspace:FindPartOnRayWithIgnoreList(wallRay, Ignore)
6053 local newPDist = totalPDist + (wallIgnore and 0 or (getNearestPoint(P1, P2, hitPos) - hitPos).magnitude)
6054 local newBDist = totalBDist + (P1 - hitPos).magnitude
6055 local outOfRange = Round(newPDist, 0.001) > S.penetrationSettings.Dist or Round(newBDist, 0.001) > S.bulletSettings.Range
6056 if (not wallIgnore) then
6057 createBulletImpact:FireServer(Wall, hitPos, Normal, Direction, hitHumanoid, gunIgnore, S)
6058 if (not hitHumanoid) then
6059 createShockwave:FireServer(hitPos, S.shockwaveSettings.Radius, gunIgnore, S)
6060 end
6061 end
6062 if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) and hitHumanoid == damagedHumanoid then
6063 createBlood:FireServer(Wall, P2, Direction, gunIgnore, S)
6064 end
6065 if outOfRange or (not H1) then
6066 if (not outOfRange) and (not wallIgnore) then
6067 createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S)
6068 if (not hitHumanoid) then
6069 createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S)
6070 end
6071 end
6072 return Wall, hitPos
6073 else
6074 if Wall == H2 and (not wallIgnore) then
6075 createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S)
6076 if (not hitHumanoid) then
6077 createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S)
6078 end
6079 end
6080 return penetrateWall(H1, P1, Direction, N1, Ignore, newPDist, newBDist, lastDamagedHumanoid)
6081 end
6082end
6083
6084function PenetrateWall(HitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist)
6085 local HitDist = (HitPos - OriginPos).magnitude
6086 local Wall, WallHitPos = nil, nil
6087 local Hum, HumHitPos = nil, nil
6088 local CustomIgnore = {unpack(Ignore)}
6089 for i = 1, 10 do
6090 local WallRay = Ray.new(HitPos - (Direction * 0.1), Direction * S.Penetration)
6091 local H, P = game.Workspace:FindPartOnRayWithIgnoreList(WallRay, CustomIgnore)
6092 if H then
6093 local HitHumanoid = nil
6094 if H.Parent.ClassName == "Hat" then
6095 HitHumanoid = findFirstClass(H.Parent.Parent, "Humanoid")
6096 else
6097 HitHumanoid = findFirstClass(H.Parent, "Humanoid")
6098 end
6099 if HitHumanoid and i ~= 1 then
6100 Hum, HumHitPos = H, P
6101 break
6102 else
6103 Wall, WallHitPos = H, P
6104 table.insert(CustomIgnore, H)
6105 end
6106 else
6107 break
6108 end
6109 end
6110 if Wall then
6111 if S.InstantHit then
6112 if Hum then
6113 Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
6114 return HumHitPos
6115 else
6116 local HitObj2, HitPos2 = nil, nil
6117 if HitHumanoid then
6118 HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, HitHumanoid.Parent, unpack(Ignore)})
6119 else
6120 HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, unpack(Ignore)})
6121 end
6122 Damage(HitObj2, HitPos2)
6123
6124 local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude
6125 local NewHitPos2 = HitPos2
6126 if NewPDist < S.Penetration and HitObj2 then
6127 NewHitPos2 = PenetrateWall(HitPos2, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist)
6128 end
6129 return NewHitPos2
6130 end
6131 else
6132 local LastPos = WallHitPos
6133 local TotalDistTraveled = 0
6134 spawn(function()
6135 if Hum then
6136 Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
6137 return HumHitPos
6138 else
6139 while true do
6140 RS.RenderStepped:wait()
6141 if TotalDistTraveled >= S.BulletRange - HitDist then
6142 Bullet:Destroy()
6143 break
6144 end
6145 local DistTraveled = (Bullet.Position - LastPos).magnitude
6146 local NewDirection = (Bullet.Position - LastPos).unit
6147 local TempHitObj, TempHitPos = nil, nil
6148 if HitHumanoid then
6149 TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, HitHumanoid.Parent, unpack(Ignore)})
6150 else
6151 TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, unpack(Ignore)})
6152 end
6153 if TempHitObj then
6154 Damage(TempHitObj, TempHitPos)
6155
6156 local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude
6157 local NewTempPos = TempHitPos
6158 if NewPDist < S.Penetration and TempHitObj then
6159 NewTempPos = PenetrateWall(TempHitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist)
6160 else
6161 Bullet:Destroy()
6162 end
6163 return NewTempPos
6164 else
6165 LastPos = Bullet.Position
6166 TotalDistTraveled = TotalDistTraveled + DistTraveled
6167 end
6168 end
6169 end
6170 end)
6171 end
6172 else
6173 if Bullet then Bullet:Destroy() end
6174 return HitPos
6175 end
6176end
6177
6178function isEnemy(Human)
6179 local Plyr = game.Players:GetPlayerFromCharacter(Human.Parent)
6180 if (not Plyr) then return S.CanDamageNPCs end
6181 return S.AllowFriendlyFire or (Plyr.TeamColor ~= Player.TeamColor or Plyr.Neutral)
6182end
6183
6184--------------------[ RELOAD FUNCTIONS ]----------------------------------------------
6185
6186function animateReload()
6187 tweenJoint(LWeld2, CF(), CF(), Sine, 0.15)
6188 tweenJoint(RWeld2, CF(), CF(), Sine, 0.15)
6189 local magParts = {}
6190 local magTable = {}
6191
6192 for _, Obj in pairs(Gun:GetChildren()) do
6193 if string.sub(Obj.Name, 1, 3) == "Mag" and Obj:IsA("BasePart") then
6194 INSERT(magParts, Obj)
6195 end
6196 end
6197
6198 local animVars = {
6199 --FUNCTIONS--
6200 tweenJoint = tweenJoint;
6201
6202 makeMagInvisible = function()
6203 for _, v in pairs(magParts) do
6204 v.Transparency = 1
6205 end
6206 magVisible = false
6207 end;
6208
6209 makeMagVisible = function()
6210 for _, v in pairs(magParts) do
6211 v.Transparency = v:WaitForChild("magTrans").Value
6212 end
6213 magVisible = true
6214 end;
6215
6216 isMagVisible = function()
6217 return magVisible
6218 end;
6219
6220 isMagEmpty = function()
6221 return ammoInClip == 0
6222 end;
6223
6224 setNewMag = function()
6225 newMag = true
6226 end;
6227
6228 isNewMag = function()
6229 return newMag
6230 end;
6231
6232 createMag = function(Key)
6233 local magModel = Instance.new("Model")
6234 local magClones = {}
6235 for i, v in pairs(magParts) do
6236 local vClone = v:Clone()
6237 vClone.Transparency = v:WaitForChild("magTrans").Value
6238 vClone.CanCollide = false
6239 vClone.Parent = magModel
6240 INSERT(magClones, {Original = v, magClone = vClone})
6241 if i ~= 1 then
6242 local W = Instance.new("Weld")
6243 W.Part0 = magClones[1].magClone
6244 W.Part1 = vClone
6245 W.C0 = magClones[1].magClone.CFrame:toObjectSpace(vClone.CFrame)
6246 W.Parent = magClones[1].magClone
6247 end
6248 end
6249 magTable[Key] = {magModel, magClones}
6250 return magModel, magClones
6251 end;
6252
6253 getMag = function(Key)
6254 if magTable[Key] then
6255 return magTable[Key][1], magTable[Key][2]
6256 else
6257 return nil, nil
6258 end
6259 end;
6260
6261 attachGripToHead = function()
6262 local handleCF = RArm.CFrame * Grip.C0
6263 Grip.C0 = Head.CFrame:toObjectSpace(handleCF)
6264 Grip.Part0 = Head
6265 end;
6266
6267 attachGripToArm = function()
6268 local handleCF = Head.CFrame * Grip.C0
6269 Grip.C0 = RArm.CFrame:toObjectSpace(handleCF)
6270 Grip.Part0 = RArm
6271 end;
6272
6273 Sine = Sine;
6274
6275 Linear = Linear;
6276
6277 --VARIABLES--
6278 Handle = Handle;
6279 LArm = LArm;
6280 RArm = RArm;
6281 LWeld = LWeld;
6282 RWeld = RWeld;
6283 LC0 = armC0[1];
6284 RC0 = armC0[2];
6285 Grip = Grip;
6286 gunIgnore = gunIgnore;
6287 Cam = Cam;
6288 CF = CF;
6289 CFANG = CFANG;
6290 V3 = V3;
6291 RAD = RAD;
6292 reloadTimeLoaded = S.reloadSettings.Times.Loaded;
6293 reloadTimeEmpty = S.reloadSettings.Times.Empty
6294 }
6295
6296 local sequenceTable = Anims.Reload(animVars)
6297 --local T = tick()
6298 for _, reloadFunction in pairs(sequenceTable) do
6299 if breakReload then
6300 break
6301 end
6302 reloadFunction()
6303
6304 if (not magVisible) then
6305 Ammo.Value = 0
6306 end
6307 updateClipAmmo()
6308 end
6309 --print(tick() - T) --I divide the reloadTime by this number to get the animation speed
6310
6311 if (not isCrawling) then
6312 if Running and (not S.canFireWhileRunning) then
6313 tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4)
6314 tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4)
6315 tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4)
6316 else
6317 tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6318 tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6319 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6320 end
6321 end
6322
6323 for _, v in pairs(magTable) do --In case the reload animations was stopped mid way and there were still fake mags that weren't deleted
6324 v[1]:Destroy()
6325 end
6326end
6327
6328function Reload()
6329 if Ammo.Value < (ClipSize.Value + 1) and (not Reloading) and StoredAmmo.Value > 0 then
6330 Firing = false
6331 ammoInClip = (ammoInClip == 0 and Ammo.Value or ammoInClip)
6332 Reloading = true
6333 lowerSpread()
6334 if Aimed then unAimGun(S.reloadSettings.Anim) end
6335 crossHair.Reload.Visible = true
6336 if Handle:FindFirstChild("ReloadSound") then Handle.ReloadSound:Play() end
6337 if S.reloadSettings.Anim then
6338 wait()
6339 animateReload()
6340 else
6341 local startReload = tick()
6342 local initialReloadTime = Ammo.Value == 0 and S.reloadSettings.Times.Empty or S.reloadSettings.Times.Loaded
6343 while true do
6344 if breakReload then break end
6345 if (tick() - startReload) >= initialReloadTime then break end
6346 RS.RenderStepped:wait()
6347 end
6348 end
6349 if (not breakReload) then
6350 newMag = false
6351 if StoredAmmo.Value >= ClipSize.Value then
6352 if ammoInClip > 0 then
6353 StoredAmmo.Value = StoredAmmo.Value - ((ClipSize.Value + 1) - ammoInClip)
6354 Ammo.Value = ClipSize.Value + 1
6355 else
6356 StoredAmmo.Value = StoredAmmo.Value - ClipSize.Value
6357 Ammo.Value = ClipSize.Value
6358 end
6359 elseif StoredAmmo.Value < ClipSize.Value and StoredAmmo.Value > 0 then
6360 Ammo.Value = StoredAmmo.Value
6361 StoredAmmo.Value = 0
6362 end
6363 end
6364 Reloading = false
6365 if Selected then
6366 ammoInClip = (breakReload and ammoInClip or 0)
6367 crossHair.Reload.Visible = false
6368 end
6369 breakReload = false
6370 end
6371
6372 updateClipAmmo()
6373 updateStoredAmmo()
6374end
6375
6376--------------------[ EXTERNAL DATA LOCATING FUNCTIONS ]-----------------------------
6377
6378function removeElement(Table, Element) --removes the first instance of Element from Table
6379 for i, v in pairs(Table) do
6380 if v == Element then
6381 table.remove(Table, i)
6382 break
6383 end
6384 end
6385 return Table
6386end
6387
6388function findFirstClass(Object, Class)
6389 local foundObject = nil
6390 for _, Obj in pairs(Object:GetChildren()) do
6391 if Obj.ClassName == Class then
6392 foundObject = Obj
6393 break
6394 end
6395 end
6396 return foundObject
6397end
6398
6399function isIgnored(Obj, Table)
6400 for _,v in pairs(Table) do
6401 if Obj == v or Obj:IsDescendantOf(v) then
6402 return true
6403 end
6404 end
6405 return false
6406end
6407
6408function GetHitSurfaceCFrame(HitPos,Obj)
6409 local SurfaceCF = {
6410 {"Back",Obj.CFrame * CF(0,0,Obj.Size.z)};
6411 {"Bottom",Obj.CFrame * CF(0,-Obj.Size.y,0)};
6412 {"Front",Obj.CFrame * CF(0,0,-Obj.Size.z)};
6413 {"Left",Obj.CFrame * CF(-Obj.Size.x,0,0)};
6414 {"Right",Obj.CFrame * CF(Obj.Size.x,0,0)};
6415 {"Top",Obj.CFrame * CF(0,Obj.Size.y,0)}
6416 }
6417 local ClosestDist = HUGE
6418 local ClosestSurface = nil
6419 for _,v in pairs(SurfaceCF) do
6420 local SurfaceDist = (HitPos - v[2].p).magnitude
6421 if SurfaceDist < ClosestDist then
6422 ClosestDist = SurfaceDist
6423 ClosestSurface = v
6424 end
6425 end
6426 return ClosestSurface[2]
6427end
6428
6429function AdvRayCast(Origin, Direction, Dist, CustomIgnore)
6430 local NewIgnore = (CustomIgnore and CustomIgnore or Ignore)
6431 local NewRay = Ray.new(Origin, Direction * (Dist > 999 and 999 or Dist))
6432 local HitObj, HitPos = game.Workspace:FindPartOnRayWithIgnoreList(NewRay, NewIgnore)
6433 local LastPos = HitPos
6434 local FinalHitObj, FinalHitPos = nil, nil
6435 local RepTimes = math.floor(Dist / 999)
6436 if (not HitObj) and (Dist > 999) then
6437 for i = 0, RepTimes do
6438 local NewDist = (i == RepTimes and (Dist - (LastPos - Origin).magnitude) or 999)
6439 local Ray2 = Ray.new(LastPos, Direction * NewDist)
6440 local HitObj2, HitPos2 = game.Workspace:FindPartOnRayWithIgnoreList(Ray2, NewIgnore)
6441 if i ~= RepTimes then
6442 if HitObj2 then
6443 FinalHitObj, FinalHitPos = HitObj2, HitPos2
6444 break
6445 end
6446 elseif i == RepTimes then
6447 FinalHitObj, FinalHitPos = HitObj2, HitPos2
6448 end
6449 LastPos = HitPos2
6450 end
6451 return FinalHitObj, FinalHitPos
6452 elseif HitObj or (Dist <= 999) then
6453 return HitObj, HitPos
6454 end
6455end
6456
6457--------------------[ JUMPING ANIMATION ]---------------------------------------------
6458
6459function onFall(initialVelocity)
6460 spawn(function()
6461 local velocityAlpha = math.max(math.min(initialVelocity / Humanoid.JumpPower, 1), 0)
6462 local startJumpPos = jumpAnim.Pos
6463 local startJumpRot = jumpAnim.Rot
6464 local endJumpPos = 0.04 * S.fallSettings.fallMultiplier * velocityAlpha
6465 local endJumpRot = RAD(4) * S.fallSettings.fallMultiplier * velocityAlpha
6466 local t0 = tick()
6467 while true do
6468 RS.Heartbeat:wait()
6469 local Alpha = math.min((tick() - t0) / 0.15, 1) * 90
6470 if onGround then break end
6471 jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Sine(Alpha))
6472 jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Sine(Alpha))
6473 if Alpha == 90 then break end
6474 end
6475 startJumpPos = endJumpPos
6476 startJumpRot = endJumpRot
6477 endJumpPos = -0.08 * S.fallSettings.fallMultiplier
6478 endJumpRot = -RAD(8) * S.fallSettings.fallMultiplier
6479 local X = 1
6480 while true do
6481 local dt = RS.Heartbeat:wait()
6482 X = X + (dt * 60) / X
6483 local Alpha = (X - 1) / 15
6484 if onGround then break end
6485 jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha)
6486 jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha)
6487 end
6488 end)
6489end
6490
6491function onLand(fallDist)
6492 spawn(function()
6493 local animAlpha = math.min(fallDist, S.fallSettings.maxDist) * (2 / 3)
6494 local startJumpPos = jumpAnim.Pos
6495 local startJumpRot = jumpAnim.Rot
6496 local endJumpPos = animAlpha / 100 * S.fallSettings.landMultiplier * (runReady and 1 or 2)
6497 local endJumpRot = RAD(animAlpha) * S.fallSettings.landMultiplier * (runReady and 1 or 2)
6498 local t0 = tick()
6499 while true do
6500 RS.Heartbeat:wait()
6501 local Alpha = math.min((tick() - t0) / 0.2, 1)
6502 if (not onGround) then break end
6503 jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha)
6504 jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha)
6505 if Alpha == 1 then break end
6506 end
6507 t0 = tick()
6508 while true do
6509 RS.Heartbeat:wait()
6510 local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
6511 if (not onGround) then break end
6512 jumpAnim.Pos = numLerp(endJumpPos, 0, Sine(Alpha))
6513 jumpAnim.Rot = numLerp(endJumpRot, 0, Sine(Alpha))
6514 if Alpha == 90 then break end
6515 end
6516 end)
6517end
6518
6519function onHumanoidStateChanged(oldState, newState)
6520 if newState == Enum.HumanoidStateType.Freefall then
6521 onGround = false
6522 if S.fallAnimation then
6523 onFall(HRP.Velocity.Y)
6524 while HRP.Velocity.Y > 0 do RS.RenderStepped:wait() end
6525 startFallHeight = HRP.Position.Y
6526 end
6527 elseif oldState == Enum.HumanoidStateType.Freefall then
6528 onGround = true
6529 if S.fallAnimation then
6530 local fallDist = startFallHeight - HRP.Position.Y
6531 onLand(fallDist)
6532 end
6533 end
6534end
6535--------------------[ CAMERA STEADYING FUNCTIONS ]------------------------------------
6536
6537function steadyCamera()
6538 scopeSteady.Text = "Steadying..."
6539 scopeSteady.TextColor3 = Color3.new(1, 1, 0)
6540 camSteady = true
6541 local originalSway = camSway
6542 local Increment = 1.5 / 0.6
6543 local X = 0
6544 while true do
6545 RS.RenderStepped:wait()
6546 local newX = X + Increment
6547 X = (newX > 90 and 90 or newX)
6548 if (not steadyKeyPressed) then break end
6549 camSway = numLerp(originalSway, 0, Sine(X))
6550 if X == 90 then break end
6551 end
6552 while steadyKeyPressed and Aimed do
6553 if currentSteadyTime > 0 then
6554 local NewSteadyTime = currentSteadyTime - 1
6555 currentSteadyTime = (NewSteadyTime < 0 and 0 or NewSteadyTime)
6556 camSway = 0
6557 elseif currentSteadyTime == 0 then
6558 break
6559 end
6560 RS.RenderStepped:wait()
6561 end
6562 camSteady = false
6563 spawn(function()
6564 local Increment = 1.5 / 0.25
6565 local X = 0
6566 while true do
6567 RS.RenderStepped:wait()
6568 local newX = X + Increment
6569 X = (newX > 90 and 90 or newX)
6570 if camSteady then break end
6571 camSway = numLerp(0, S.scopeSettings.camSwayOnBreath, 1 - COS(RAD(X)))
6572 if X == 90 then break end
6573 end
6574 Increment = 1.5 / S.scopeSettings.breathTime
6575 X = 0
6576 while true do
6577 RS.RenderStepped:wait()
6578 local newX = X + Increment
6579 X = (newX > 90 and 90 or newX)
6580 if camSteady then break end
6581 camSway = numLerp(S.scopeSettings.camSwayOnBreath, 1, Sine(X))
6582 if X == 90 then break end
6583 end
6584 --[[for X = 0, 90, 1.5 / 0.2 do
6585 local Alpha = 1 - COS(RAD(X))--math.log10(X) / math.log10(90)
6586 camSway = numLerp(0, 3, Alpha)
6587 RS.RenderStepped:wait()
6588 end]]
6589 --[[for X = 0, 90, 1.5 / S.scopeSettings.steadyTime do
6590 if camSteady then break end
6591 local Alpha = SIN(RAD(X))
6592 camSway = numLerp(3, 1, Alpha)
6593 RS.RenderStepped:wait()
6594 end]]
6595 end)
6596 retakeBreath()
6597end
6598
6599function retakeBreath()
6600 scopeSteady.Text = "Re-taking Breath"
6601 scopeSteady.TextColor3 = Color3.new(1, 0, 0)
6602 takingBreath = true
6603 local Increment = S.scopeSettings.steadyTime / S.scopeSettings.breathTime
6604 while takingBreath do
6605 if currentSteadyTime < maxSteadyTime then
6606 local newSteadyTime = currentSteadyTime + Increment
6607 currentSteadyTime = (newSteadyTime > maxSteadyTime and maxSteadyTime or newSteadyTime)
6608 elseif currentSteadyTime >= maxSteadyTime then
6609 break
6610 end
6611 RS.RenderStepped:wait()
6612 end
6613 if takingBreath then
6614 scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady"
6615 scopeSteady.TextColor3 = Color3.new(1, 1, 0)
6616 takingBreath = false
6617 end
6618end
6619
6620--------------------[ SPRINTING FUNCTIONS ]-------------------------------------------
6621
6622function canRun(midRun)
6623 return ((Forward and (not Backward)) and
6624 Walking and (Stamina > 0) and Running and
6625 Selected and (midRun and true or onGround) and
6626 runReady and (S.canFireWhileRunning and true or (not Firing))
6627 )
6628end
6629
6630function monitorStamina()
6631 Running = true
6632 if (not canRun(false)) then
6633 Running = false
6634 return
6635 end
6636 if Aimed then unAimGun(true) end
6637 if Stance == 1 or Stance == 2 then Stand() end
6638 if (not (Reloading and S.reloadSettings.Anim)) then
6639 if S.canFireWhileRunning then
6640 tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6641 tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6642 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6643 else
6644 tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4)
6645 tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4)
6646 tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4)
6647 end
6648 end
6649 crossOffset = 50
6650 while runKeyPressed do
6651 if canRun(true) then
6652 if onGround then
6653 local newStamina = Stamina - 1
6654 Stamina = (newStamina < 0 and 0 or newStamina)
6655 end
6656 else
6657 break
6658 end
6659 RS.RenderStepped:wait()
6660 end
6661 Running = false
6662 if (not Aimed) and (not (Reloading and S.reloadSettings.Anim)) and (not S.canFireWhileRunning) then
6663 crossOffset = 0
6664 tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6665 tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6666 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6667 end
6668
6669 rechargeStamina()
6670end
6671
6672function rechargeStamina()
6673 chargingStamina = true
6674 while ((not runKeyPressed) or (Stamina < maxStamina)) and (not Running) do
6675 if Stamina < maxStamina then
6676 local newStamina = Stamina + (S.sprintTime / S.staminaCoolTime)
6677 Stamina = (newStamina > maxStamina and maxStamina or newStamina)
6678 elseif Stamina >= maxStamina then
6679 break
6680 end
6681 RS.RenderStepped:wait()
6682 end
6683 chargingStamina = false
6684end
6685
6686--------------------[ STANCE FUNCTIONS ]----------------------------------------------
6687
6688function Stand(onDeselected)
6689 local LHip = Torso["Left Hip"]
6690 local RHip = Torso["Right Hip"]
6691 LLegWeld.Part1 = nil
6692 LHip.Part1 = LLeg
6693 RLegWeld.Part1 = nil
6694 RHip.Part1 = RLeg
6695 Stance = 0
6696 spreadStance = "Stand"
6697 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6698 if S.stanceSettings.Anim and (not onDeselected) then
6699 spawn(function()
6700 local prevStanceSway = stanceSway
6701 local X = 0
6702 local Increment = 1.5 / S.stanceSettings.Speed
6703 while true do
6704 RS.RenderStepped:wait()
6705 local newX = X + Increment
6706 X = (newX > 90 and 90 or newX)
6707 if Stance ~= 0 then break end
6708 stanceSway = numLerp(prevStanceSway, 1, Sine(X))
6709 if X == 90 then break end
6710 end
6711 end)
6712 tweenJoint(ABWeld, CF(), nil, Sine, S.stanceSettings.Speed)
6713 tweenJoint(LLegWeld, legC0.Stand[1], nil, Sine, S.stanceSettings.Speed)
6714 tweenJoint(RLegWeld, legC0.Stand[2], nil, Sine, S.stanceSettings.Speed)
6715 tweenJoint(LHip, CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0), Sine, S.stanceSettings.Speed)
6716 tweenJoint(RHip, CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed)
6717 tweenJoint(Root, CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6718 tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed)
6719 elseif onDeselected or (not S.stanceSettings.Anim) then
6720 ABWeld.C0 = CF()
6721 LLegWeld.C0 = legC0.Stand[1]
6722 RLegWeld.C0 = legC0.Stand[2]
6723 LHip.C0, LHip.C1 = CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0)
6724 RHip.C0, RHip.C1 = CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0)
6725 Root.C0 = CFANG(RAD(-90), 0, RAD(180))
6726 headWeld.C0 = CF(0, 1.5, 0)
6727 end
6728end
6729
6730function Crouch()
6731 local LHip = Torso["Left Hip"]
6732 local RHip = Torso["Right Hip"]
6733 LHip.Part1 = nil
6734 LLegWeld.Part1 = LLeg
6735 RHip.Part1 = nil
6736 RLegWeld.Part1 = RLeg
6737 Stance = 1
6738 spreadStance = "Crouch"
6739 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6740 if S.stanceSettings.Anim then
6741 spawn(function()
6742 local prevStanceSway = stanceSway
6743 local X = 0
6744 local Increment = 1.5 / S.stanceSettings.Speed
6745 while true do
6746 RS.RenderStepped:wait()
6747 local newX = X + Increment
6748 X = (newX > 90 and 90 or newX)
6749 if Stance ~= 1 then break end
6750 stanceSway = numLerp(prevStanceSway, 0.75, Sine(X))
6751 if X == 90 then break end
6752 end
6753 end)
6754 tweenJoint(ABWeld, CF(0, 0, -0.05), nil, Sine, S.stanceSettings.Speed)
6755 tweenJoint(LLegWeld, legC0.Crouch[1], nil, Sine, S.stanceSettings.Speed)
6756 tweenJoint(RLegWeld, legC0.Crouch[2], nil, Sine, S.stanceSettings.Speed)
6757 tweenJoint(LHip, CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90)), Sine, S.stanceSettings.Speed)
6758 tweenJoint(RHip, CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed)
6759 tweenJoint(Root, CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6760 tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed)
6761 else
6762 ABWeld.C0 = CF(0, 0, -1 / 16)
6763 LLegWeld.C0 = legC0.Crouch[1]
6764 RLegWeld.C0 = legC0.Crouch[2]
6765 LHip.C0, LHip.C1 = CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90))
6766 RHip.C0, RHip.C1 = CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0)
6767 Root.C0 = CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180))
6768 headWeld.C0 = CF(0, 1.5, 0)
6769 end
6770end
6771
6772function Prone()
6773 local LHip = Torso["Left Hip"]
6774 local RHip = Torso["Right Hip"]
6775 LHip.Part1 = nil
6776 LLegWeld.Part1 = LLeg
6777 RHip.Part1 = nil
6778 RLegWeld.Part1 = RLeg
6779 Stance = 2
6780 spreadStance = "Prone"
6781 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6782 if S.stanceSettings.Anim then
6783 spawn(function()
6784 local prevStanceSway = stanceSway
6785 local X = 0
6786 local Increment = 1.5 / S.stanceSettings.Speed
6787 while true do
6788 RS.RenderStepped:wait()
6789 local newX = X + Increment
6790 X = (newX > 90 and 90 or newX)
6791 if Stance ~= 2 then break end
6792 stanceSway = numLerp(prevStanceSway, 0.5, Sine(X))
6793 if X == 90 then break end
6794 end
6795 end)
6796 tweenJoint(ABWeld, CF(0, 0, -0.1), nil, Sine, S.stanceSettings.Speed)
6797 tweenJoint(LLegWeld, legC0.Prone[1], nil, Sine, S.stanceSettings.Speed)
6798 tweenJoint(RLegWeld, legC0.Prone[2], nil, Sine, S.stanceSettings.Speed)
6799 tweenJoint(Root, CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6800 tweenJoint(headWeld, CF(0, 1, 1) * CFANG(RAD(90), 0, 0), nil, Sine, S.stanceSettings.Speed)
6801 else
6802 ABWeld.C0 = CF(0, 0, -1 / 8)
6803 LLegWeld.C0 = legC0.Prone[1]
6804 RLegWeld.C0 = legC0.Prone[2]
6805 Root.C0 = CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180))
6806 headWeld.C0 = CF(0, 1, 1) * CFANG(RAD(90), 0, 0)
6807 end
6808end
6809
6810function Dive()
6811 onGround = false
6812 local diveDirection = (HRP.CFrame * CFANG(S.diveSettings.Angle, 0, 0)).lookVector * S.walkSpeeds.Sprinting * S.diveSettings.Force
6813 local BF = Instance.new("BodyForce")
6814 BF.force = diveDirection + Vector3.new(0, playerMass * 196.2, 0)
6815 BF.Parent = HRP
6816 --[[spawn(function()
6817 HRP.Velocity = HRP.CFrame.lookVector * 60 + V3(0, 40, 0)
6818 wait(0.1)
6819 HRP.Velocity = HRP.CFrame.lookVector * 70 + V3(0, 30, 0)
6820 wait(0.4)
6821 HRP.Velocity = HRP.CFrame.lookVector * 30 + V3(0, -10, 0)
6822 end)]]
6823 delay(0.05, function()
6824 spawn(function()
6825 while true do
6826 local newRay = Ray.new(HRP.Position, V3(0, -3.1, 0))
6827 local H, _ = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore)
6828 if H then
6829 onGround = true
6830 break
6831 end
6832 wait()
6833 end
6834 end)
6835 Prone()
6836 wait(0.1)
6837 BF:Destroy()
6838 end)
6839end
6840
6841--------------------[ MOUSE FUNCTIONS ]-----------------------------------------------
6842
6843function onMB1Down()
6844 MB1Down = true
6845 firstShot = true
6846 if fireFunction then
6847 fireFunction()
6848 end
6849end
6850
6851function onMB1Up()
6852 MB1Down = false
6853 lowerSpread()
6854end
6855
6856function onMB2Down()
6857 if S.aimSettings.holdToADS then
6858 if (not AimingIn) and (not Aimed) then
6859 AimingIn = true
6860 aimGun()
6861 AimingIn = false
6862 end
6863 else
6864 if Aimed then
6865 unAimGun()
6866 else
6867 aimGun()
6868 end
6869 end
6870end
6871
6872function onMB2Up()
6873 if S.aimSettings.holdToADS then
6874 if (not AimingOut) and Aimed then
6875 AimingOut = true
6876 unAimGun()
6877 AimingOut = false
6878 end
6879 end
6880end
6881
6882function onScrollUp()
6883 local newAimSensitivity = aimSensitivity + S.sensitivitySettings.Increment
6884 aimSensitivity = (
6885 newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or
6886 newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or
6887 newAimSensitivity
6888 )
6889 mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity)
6890
6891 Sens.Text = "S: "..aimSensitivity
6892 if mainGUI:IsDescendantOf(game) then
6893 Sens.Visible = true
6894 local t0 = tick()
6895 lastSensUpdate = t0
6896
6897 wait(0.3)
6898
6899 if lastSensUpdate <= t0 then
6900 Sens.Visible = false
6901 end
6902 end
6903end
6904
6905function onScrollDown()
6906 local newAimSensitivity = aimSensitivity - S.sensitivitySettings.Increment
6907 aimSensitivity = (
6908 newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or
6909 newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or
6910 newAimSensitivity
6911 )
6912 mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity)
6913
6914 Sens.Text = "S: "..aimSensitivity
6915 if mainGUI:IsDescendantOf(game) then
6916 Sens.Visible = true
6917 local t0 = tick()
6918 lastSensUpdate = t0
6919
6920 wait(0.3)
6921
6922 if lastSensUpdate <= t0 then
6923 Sens.Visible = false
6924 end
6925 end
6926end
6927
6928--------------------[ KEYBOARD FUNCTIONS ]--------------------------------------------
6929
6930function keyDown(K)
6931 local Key = string.lower(K)
6932
6933 if Key == S.Keys.lowerStance and S.canChangeStance then
6934 if (not Running) then
6935 if Stance == 0 then
6936 if S.stanceSettings.Stances.Crouch then
6937 Crouch()
6938 elseif S.stanceSettings.Stances.Prone then
6939 Prone()
6940 end
6941 elseif Stance == 1 then
6942 if S.stanceSettings.Stances.Prone then
6943 Prone()
6944 end
6945 end
6946 elseif S.dolphinDive then
6947 wait()
6948 if Humanoid:GetState() ~= Enum.HumanoidStateType.Freefall and (not UIS:IsKeyDown("Space")) and runReady then
6949 local tempConnection = Humanoid.Changed:connect(function()
6950 Humanoid.Jump = false
6951 end)
6952 runReady = false
6953 Dive()
6954 Running = false
6955 wait(S.diveSettings.rechargeTime)
6956 tempConnection:disconnect()
6957 runReady = true
6958 end
6959 end
6960 end
6961
6962 if Key == S.Keys.raiseStance and S.canChangeStance then
6963 if (not Running) then
6964 if Stance == 2 then
6965 if S.stanceSettings.Stances.Crouch then
6966 Crouch()
6967 else
6968 Stand()
6969 end
6970 elseif Stance == 1 then
6971 Stand()
6972 end
6973 end
6974 end
6975
6976 if Key == S.Keys.ADS then
6977 if S.aimSettings.holdToADS then
6978 if (not AimingIn) and (not Aimed) then
6979 AimingIn = true
6980 aimGun()
6981 AimingIn = false
6982 end
6983 else
6984 if Aimed then
6985 unAimGun()
6986 else
6987 aimGun()
6988 end
6989 end
6990 end
6991
6992 if Key == S.Keys.selectFire and S.selectFire then
6993 if canSelectFire then
6994 canSelectFire = false
6995 rawFireMode = rawFireMode + 1
6996 modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1]
6997 if modeGUI.Text == "AUTO" then
6998 fireFunction = autoFire
6999 elseif modeGUI.Text == "BURST" then
7000 fireFunction = burstFire
7001 elseif modeGUI.Text == "SEMI" then
7002 fireFunction = semiFire
7003 else
7004 fireFunction = nil
7005 end
7006 local speedAlpha = S.selectFireSettings.animSpeed / 0.6
7007 if S.selectFireSettings.GUI then
7008 spawn(function()
7009 fireSelect.Visible = true
7010 local prevRawFireMode = rawFireMode
7011 local Increment = 1.5 / (speedAlpha * 0.25)
7012 local X = 0
7013 wait(speedAlpha * 0.1)
7014 while true do
7015 RS.RenderStepped:wait()
7016 local newX = X + Increment
7017 X = (newX > 90 and 90 or newX)
7018 if prevRawFireMode ~= rawFireMode then break end
7019 updateModeLabels(rawFireMode - 1, rawFireMode, X)
7020 if X == 90 then break end
7021 end
7022 wait(speedAlpha * 0.25)
7023 fireSelect.Visible = false
7024 end)
7025 end
7026 if S.selectFireSettings.Animation and (not Aimed) and (not isRunning) and (not isCrawling) then
7027 spawn(function()
7028 local sequenceTable = {
7029 function()
7030 tweenJoint(RWeld2, nil, CFANG(0, RAD(5), 0), Sine, speedAlpha * 0.15)
7031 tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-7), 0, RAD(-65)), Linear, speedAlpha * 0.15)
7032 wait(speedAlpha * 0.2)
7033 end;
7034
7035 function()
7036 tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-10), 0, RAD(-65)), Linear, speedAlpha * 0.1)
7037 wait(speedAlpha * 0.2)
7038 end;
7039
7040 function()
7041 tweenJoint(RWeld2, nil, CF(), Sine, speedAlpha * 0.2)
7042 tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, speedAlpha * 0.2)
7043 wait(speedAlpha * 0.2)
7044 end;
7045 }
7046
7047 for _, F in pairs(sequenceTable) do
7048 if Aimed or isRunning or isCrawling or Reloading then
7049 break
7050 end
7051 F()
7052 end
7053 end)
7054 end
7055 if S.selectFireSettings.Animation or S.selectFireSettings.GUI then
7056 wait(S.selectFireSettings.animSpeed)
7057 end
7058 canSelectFire = true
7059 end
7060 end
7061
7062 if Key == S.Keys.Reload then
7063 if (not Reloading) and (not isCrawling) then
7064 Reload()
7065 end
7066 end
7067
7068 if Key == S.Keys.Sprint then
7069 runKeyPressed = true
7070 if runReady then
7071 if (not Idling) and Walking and (not Running) and (not Knifing) and (not (Aimed and S.guiScope and S.Keys.Sprint == S.Keys.scopeSteady)) then
7072 monitorStamina()
7073 end
7074 end
7075 end
7076
7077 if Key == S.Keys.scopeSteady then
7078 steadyKeyPressed = true
7079 if Aimed and (not Aiming) then
7080 takingBreath = false
7081 steadyCamera()
7082 end
7083 end
7084
7085 for _, PTable in pairs(Plugins.KeyDown) do
7086 if Key == string.lower(PTable.Key) then
7087 spawn(function()
7088 PTable.Plugin()
7089 end)
7090 end
7091 end
7092end
7093
7094function keyUp(K)
7095 local Key = string.lower(K)
7096
7097 if Key == S.Keys.ADS then
7098 if S.aimSettings.holdToADS then
7099 if (not AimingOut) and Aimed then
7100 AimingOut = true
7101 unAimGun()
7102 AimingOut = false
7103 end
7104 end
7105 end
7106
7107 if Key == S.Keys.Sprint then
7108 runKeyPressed = false
7109 Running = false
7110 if (not chargingStamina) then
7111 rechargeStamina()
7112 end
7113 end
7114
7115 if Key == S.Keys.scopeSteady then
7116 steadyKeyPressed = false
7117 end
7118
7119 for _, PTable in pairs(Plugins.KeyUp) do
7120 if Key == string.lower(PTable.Key) then
7121 spawn(function()
7122 PTable.Plugin()
7123 end)
7124 end
7125 end
7126end
7127
7128--------------------[ END FUNCTIONS ]-------------------------------------------------
7129
7130--------------------------------------------------------------------------------------
7131--------------------[ PRE-CONNECTIONS ]-----------------------------------------------
7132--------------------------------------------------------------------------------------
7133
7134local function updateAnimVars()
7135 wait()
7136 Forward = (UIS:IsKeyDown("W") or UIS:IsKeyDown("Up"))
7137 Backward = (UIS:IsKeyDown("S") or UIS:IsKeyDown("Down"))
7138 local Right = UIS:IsKeyDown("D")
7139 local Left = UIS:IsKeyDown("A")
7140
7141 local walkingForward = (Forward and (not Backward))
7142 local walkingBackward = ((not Forward) and Backward)
7143 local walkingRight = (Right and (not Left))
7144 local walkingLeft = ((not Right) and Left)
7145
7146 if (Forward or Backward or Right or Left) then
7147 Walking, Idling = true, false
7148 if (not Running) and (not Aimed) then
7149 spreadMotion = "Moving"
7150 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7151 end
7152 elseif (not (Forward and Backward and Right and Left)) then
7153 Walking, Idling = false, true
7154 if (not Aimed) then
7155 spreadMotion = "Idling"
7156 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7157 end
7158 end
7159
7160 local newArmTilt = (
7161 ((walkingForward or walkingBackward) and walkingRight) and 2.5 or
7162 ((walkingForward or walkingBackward) and walkingLeft) and -2.5 or
7163 ((not (walkingForward and walkingBackward)) and walkingRight) and 5 or
7164 ((not (walkingForward and walkingBackward)) and walkingLeft) and -5 or 0
7165 )
7166 local newMoveAng = (
7167 (walkingForward and (not (walkingRight or walkingLeft))) and 0 or
7168 (walkingForward and walkingRight) and RAD(-45) or
7169 ((not (walkingForward or walkingBackward)) and walkingRight) and RAD(-90) or
7170 (walkingBackward and walkingRight) and RAD(-135) or
7171 (walkingBackward and (not (walkingRight or walkingLeft))) and (moveAng < 0 and RAD(-180) or RAD(180)) or
7172 (walkingBackward and walkingLeft) and RAD(135) or
7173 ((not (walkingForward or walkingBackward)) and walkingLeft) and RAD(90) or
7174 (walkingForward and walkingLeft) and RAD(45) or 0
7175 )
7176
7177 local newAnimCode = math.random(-1e9, 1e9)
7178 animCode = newAnimCode
7179 local startTilt = armTilt
7180 local startAng = (ABS(moveAng) == RAD(180)) and (newMoveAng > 0 and RAD(180) or RAD(-180)) or moveAng
7181 local Increment = (startTilt == newArmTilt and 1.5 / 0.7 or 1.5 / (0.35 * ABS(startTilt - newArmTilt) / 5))
7182 local X = 0
7183 while true do
7184 RS.RenderStepped:wait()
7185 local newX = X + Increment
7186 X = (newX > 90 and 90 or newX)
7187 if animCode ~= newAnimCode then break end
7188 armTilt = numLerp(startTilt, newArmTilt, Sine(X))
7189 moveAng = numLerp(startAng, newMoveAng, Sine(X))
7190 if X == 90 then break end
7191 end
7192end
7193
7194M2.KeyDown:connect(updateAnimVars)
7195M2.KeyUp:connect(updateAnimVars)
7196updateAnimVars()
7197
7198--------------------------------------------------------------------------------------
7199--------------------[ TOOL SELECTION AND DESELECTION ]--------------------------------
7200--------------------------------------------------------------------------------------
7201
7202function onEquipped()
7203 wait()
7204 if Humanoid.Health ~= 0 and (not Selected) and Gun.Parent == Char then
7205 Selected = true
7206 breakReload = false
7207 equipAnimPlaying = true
7208
7209 math.randomseed(tick()) --This sets a new seed for the random function each time you select the gun
7210
7211 --------------------[ FAILSAFE RESETING ]-------------------------------------
7212
7213 for _, GM in pairs(ignoreModel:GetChildren()) do
7214 if GM.Name == "gunIgnore_"..Player.Name then
7215 GM:Destroy()
7216 end
7217 end
7218
7219 for _, c in pairs(Connections) do
7220 c:disconnect()
7221 end
7222
7223 Connections = {}
7224
7225 --------------------[ REMOTE GUN SETUP ]--------------------------------------
7226
7227 --[[local Vars = {
7228 ignoreModel = ignoreModel;
7229 Humanoid = Humanoid;
7230 Shoulders = Shoulders;
7231 Torso = Torso;
7232 Head = Head;
7233 armC0 = armC0;
7234 leftArmC1 = S.equipSettings.leftArmC1;
7235 rightArmC1 = S.equipSettings.rightArmC1;
7236 LArm = LArm;
7237 RArm = RArm;
7238 gunParts = gunParts;
7239 Handle = Handle;
7240 }
7241 gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, gunParts2 = gunSetup:InvokeServer(Vars)]]
7242
7243 --------------------[ CREATING IGNORE MODELS ]--------------------------------
7244
7245 gunIgnore = Instance.new("Model")
7246 gunIgnore.Name = "gunIgnore_"..Player.Name
7247 gunIgnore.Parent = ignoreModel
7248
7249 --------------------[ MODIFYING THE PLAYER ]----------------------------------
7250
7251 Player.CameraMode = Enum.CameraMode.LockFirstPerson
7252 Cam.CameraType = Enum.CameraType.Scriptable
7253 Cam.FieldOfView = 80
7254 UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
7255 UIS.MouseIconEnabled = false
7256
7257 local initialX, initialY = getYawPitch(Cam.CoordinateFrame)
7258 camAng = -VEC2(initialX, initialY)
7259
7260 mainGUI.Parent = Player.PlayerGui
7261
7262 setUpGUI()
7263 updateHealth()
7264
7265 if S.selectFire then
7266 local currentMode = Modes[((rawFireMode - 1) % numModes) + 1]
7267 if currentMode == "AUTO" then
7268 fireFunction = autoFire
7269 elseif currentMode == "BURST" then
7270 fireFunction = burstFire
7271 elseif currentMode == "SEMI" then
7272 fireFunction = semiFire
7273 else
7274 fireFunction = nil
7275 end
7276 else
7277 if S.gunType.Semi then
7278 fireFunction = semiFire
7279 elseif S.gunType.Auto then
7280 fireFunction = autoFire
7281 elseif S.gunType.Burst then
7282 fireFunction = burstFire
7283 else
7284 fireFunction = nil
7285 end
7286 end
7287
7288 changePlayerTrans(Char, 1)
7289
7290 Humanoid.AutoRotate = false
7291
7292 Shoulders.Right.Part1 = nil
7293 Shoulders.Left.Part1 = nil
7294
7295 playerFolder = Instance.new("Model")
7296 playerFolder.Name = "playerFolder"
7297 playerFolder.Parent = gunIgnore
7298
7299 local headBase = Instance.new("Part")
7300 headBase.Transparency = 1
7301 headBase.Name = "headBase"
7302 headBase.CanCollide = false
7303 headBase.FormFactor = Enum.FormFactor.Custom
7304 headBase.Size = V3(0.2, 0.2, 0.2)
7305 headBase.BottomSurface = Enum.SurfaceType.Smooth
7306 headBase.TopSurface = Enum.SurfaceType.Smooth
7307 headBase.Parent = playerFolder
7308
7309 headWeld = Instance.new("Weld")
7310 headWeld.Part0 = Torso
7311 headWeld.Part1 = headBase
7312 headWeld.C0 = CF(0, 1.5, 0)
7313 headWeld.Parent = Torso
7314
7315 headWeld2 = Instance.new("Weld")
7316 headWeld2.Part0 = headBase
7317 headWeld2.Part1 = Head
7318 headWeld2.Parent = headBase
7319
7320 neckClone = Neck:Clone()
7321
7322 --[[local stanceBase = Instance.new("Part")
7323 stanceBase.Transparency = 1
7324 stanceBase.Name = "stanceBase"
7325 stanceBase.CanCollide = false
7326 stanceBase.FormFactor = Enum.FormFactor.Custom
7327 stanceBase.Size = V3(0.2, 0.2, 0.2)
7328 stanceBase.BottomSurface = Enum.SurfaceType.Smooth
7329 stanceBase.TopSurface = Enum.SurfaceType.Smooth
7330 stanceBase.Parent = playerFolder
7331
7332 stanceWeld = Instance.new("Weld")
7333 stanceWeld.Part0 = stanceBase
7334 stanceWeld.Part1 = Torso
7335 stanceWeld.Parent = stanceBase]]
7336
7337 local animBase = Instance.new("Part")
7338 animBase.Transparency = 1
7339 animBase.Name = "animBase"
7340 animBase.CanCollide = false
7341 animBase.FormFactor = Enum.FormFactor.Custom
7342 animBase.Size = V3(0.2, 0.2, 0.2)
7343 animBase.BottomSurface = Enum.SurfaceType.Smooth
7344 animBase.TopSurface = Enum.SurfaceType.Smooth
7345 animBase.Parent = playerFolder
7346
7347 animWeld = Instance.new("Weld")
7348 animWeld.Part0 = animBase
7349 animWeld.Part1 = headBase
7350 animWeld.Parent = animBase
7351
7352 local ArmBase = Instance.new("Part")
7353 ArmBase.Transparency = 1
7354 ArmBase.Name = "ArmBase"
7355 ArmBase.CanCollide = false
7356 ArmBase.FormFactor = Enum.FormFactor.Custom
7357 ArmBase.Size = V3(0.2, 0.2, 0.2)
7358 ArmBase.BottomSurface = Enum.SurfaceType.Smooth
7359 ArmBase.TopSurface = Enum.SurfaceType.Smooth
7360 ArmBase.Parent = playerFolder
7361
7362 ABWeld = Instance.new("Weld")
7363 ABWeld.Part0 = ArmBase
7364 ABWeld.Part1 = animBase
7365 ABWeld.Parent = ArmBase
7366
7367 local LArmBase = Instance.new("Part")
7368 LArmBase.Transparency = 1
7369 LArmBase.Name = "LArmBase"
7370 LArmBase.CanCollide = false
7371 LArmBase.FormFactor = Enum.FormFactor.Custom
7372 LArmBase.Size = V3(0.2, 0.2, 0.2)
7373 LArmBase.BottomSurface = Enum.SurfaceType.Smooth
7374 LArmBase.TopSurface = Enum.SurfaceType.Smooth
7375 LArmBase.Parent = playerFolder
7376
7377 local RArmBase = Instance.new("Part")
7378 RArmBase.Transparency = 1
7379 RArmBase.Name = "RArmBase"
7380 RArmBase.CanCollide = false
7381 RArmBase.FormFactor = Enum.FormFactor.Custom
7382 RArmBase.Size = V3(0.2, 0.2, 0.2)
7383 RArmBase.BottomSurface = Enum.SurfaceType.Smooth
7384 RArmBase.TopSurface = Enum.SurfaceType.Smooth
7385 RArmBase.Parent = playerFolder
7386
7387 LWeld = Instance.new("Weld")
7388 LWeld.Name = "LWeld"
7389 LWeld.Part0 = ArmBase
7390 LWeld.Part1 = LArmBase
7391 LWeld.C0 = armC0[1]
7392 LWeld.C1 = S.equipSettings.leftArmC1
7393 LWeld.Parent = ArmBase
7394
7395 RWeld = Instance.new("Weld")
7396 RWeld.Name = "RWeld"
7397 RWeld.Part0 = ArmBase
7398 RWeld.Part1 = RArmBase
7399 RWeld.C0 = armC0[2]
7400 RWeld.C1 = S.equipSettings.rightArmC1
7401 RWeld.Parent = ArmBase
7402
7403 LWeld2 = Instance.new("Weld")
7404 LWeld2.Name = "LWeld"
7405 LWeld2.Part0 = LArmBase
7406 LWeld2.Part1 = LArm
7407 LWeld2.Parent = LArmBase
7408
7409 RWeld2 = Instance.new("Weld")
7410 RWeld2.Name = "RWeld"
7411 RWeld2.Part0 = RArmBase
7412 RWeld2.Part1 = RArm
7413 RWeld2.Parent = RArmBase
7414
7415 LLegWeld = Instance.new("Weld")
7416 LLegWeld.Name = "LLegWeld"
7417 LLegWeld.Part0 = Torso
7418 LLegWeld.Part1 = nil
7419 LLegWeld.C0 = CF(-0.5, -2, 0)
7420 LLegWeld.Parent = Torso
7421
7422 RLegWeld = Instance.new("Weld")
7423 RLegWeld.Name = "RLegWeld"
7424 RLegWeld.Part0 = Torso
7425 RLegWeld.Part1 = nil
7426 RLegWeld.C0 = CF(0.5, -2, 0)
7427 RLegWeld.Parent = Torso
7428
7429 if S.playerArms then
7430 armModel = Instance.new("Model", workspace.FilteringEnabled and playerFolder or Cam)
7431
7432 fakeLArm = LArm:Clone()
7433 fakeLArm.Parent = armModel
7434 fakeLArm.Transparency = S.fakeArmSettings.Transparency
7435 fakeLArm.CanCollide = false
7436 fakeLArm.Size = S.fakeArmSettings.armSize
7437 fakeLArm:BreakJoints()
7438
7439 --LArm.Transparency = 1
7440
7441 local fakeLWeld = Instance.new("Weld")
7442 fakeLWeld.Part0 = fakeLArm
7443 fakeLWeld.Part1 = LArm
7444 fakeLWeld.Parent = fakeLArm
7445
7446 fakeRArm = RArm:Clone()
7447 fakeRArm.Parent = armModel
7448 fakeRArm.Transparency = S.fakeArmSettings.Transparency
7449 fakeRArm.CanCollide = false
7450 fakeRArm.Size = S.fakeArmSettings.armSize
7451 fakeRArm:BreakJoints()
7452
7453 --RArm.Transparency = 1
7454
7455 local fakeRWeld = Instance.new("Weld")
7456 fakeRWeld.Part0 = fakeRArm
7457 fakeRWeld.Part1 = RArm
7458 fakeRWeld.Parent = fakeRArm
7459
7460 Instance.new("Humanoid", armModel)
7461
7462 if S.fakeArmSettings.characterMeshes then
7463 for _,Obj in pairs(Char:GetChildren()) do
7464 if Obj:IsA("CharacterMesh") then
7465 Obj:Clone().Parent = armModel
7466 end
7467 end
7468 end
7469 for _,Obj in pairs(Char:GetChildren()) do
7470 if Obj:IsA("Shirt") then
7471 Obj:Clone().Parent = armModel
7472 end
7473 end
7474 else
7475 armTable = createArms()
7476 if workspace.FilteringEnabled then
7477 armTable[1].Model.Parent = playerFolder
7478 armTable[2].Model.Parent = playerFolder
7479 else
7480 armTable[1].Model.Parent = Cam--playerFolder
7481 armTable[2].Model.Parent = Cam--playerFolder
7482 end
7483
7484 fakeLArm = armTable[1].armPart
7485
7486 --LArm.Transparency = 1
7487
7488 local fakeLWeld = Instance.new("Weld")
7489 fakeLWeld.Part0 = fakeLArm
7490 fakeLWeld.Part1 = LArm
7491 fakeLWeld.Parent = fakeLArm
7492
7493 fakeRArm = armTable[2].armPart
7494
7495 --RArm.Transparency = 1
7496
7497 local fakeRWeld = Instance.new("Weld")
7498 fakeRWeld.Part0 = fakeRArm
7499 fakeRWeld.Part1 = RArm
7500 fakeRWeld.Parent = fakeRArm
7501 end
7502
7503 --------------------[ MODIFYING THE GUN ]-------------------------------------
7504
7505 for _, Tab in pairs(gunParts) do
7506 local Weld = Instance.new("Weld")
7507 Weld.Name = "MainWeld"
7508 Weld.Part0 = Handle
7509 Weld.Part1 = Tab.Obj
7510 Weld.C0 = Tab.Obj.weldCF.Value
7511 Weld.Parent = Handle
7512 Tab.Weld = Weld
7513 end
7514
7515 Grip = RArm:WaitForChild("RightGrip")
7516
7517 local handleCF = Torso.CFrame * CF(0, 0.5, 0) * armC0[2] * S.aimedC1.rightArm:inverse() * Grip.C0
7518 local handleOffset = AimPart.CFrame:toObjectSpace(Handle.CFrame)
7519 aimedGripCF = ((Torso.CFrame * CF(headOffset.X, headOffset.Y, 0)) * handleOffset):toObjectSpace(handleCF)
7520
7521 Grip.C1 = S.equipSettings.GripC1
7522
7523 --------------------[ RUNNING PLUGINS ]---------------------------------------
7524
7525 for _, Plugin in pairs(Plugins.OnEquipped) do
7526 spawn(function()
7527 Plugin()
7528 end)
7529 end
7530
7531 --------------------[ GETTING PLAYER MASS ]-----------------------------------
7532
7533 local connectedParts = HRP:GetConnectedParts(true)
7534 for _, v in pairs(connectedParts) do
7535 if v:IsA("BasePart") then
7536 playerMass = playerMass + v:GetMass()
7537 end
7538 end
7539
7540 --------------------[ CONNECTIONS ]-------------------------------------------
7541
7542 INSERT(Connections, Humanoid.Died:connect(function()
7543 onUnequipped(true)
7544 end))
7545
7546 INSERT(Connections, Humanoid.Jumping:connect(function()
7547 if Stance ~= 0 then
7548 Stand()
7549 end
7550 end))
7551
7552 INSERT(Connections, Humanoid.StateChanged:connect(onHumanoidStateChanged))
7553
7554 INSERT(Connections, Humanoid.HealthChanged:connect(updateHealth))
7555
7556 INSERT(Connections, M2.Button1Down:connect(onMB1Down))
7557
7558 INSERT(Connections, M2.Button1Up:connect(onMB1Up))
7559
7560 INSERT(Connections, M2.Button2Down:connect(onMB2Down))
7561
7562 INSERT(Connections, M2.Button2Up:connect(onMB2Up))
7563
7564 INSERT(Connections, M2.KeyDown:connect(keyDown))
7565
7566 INSERT(Connections, M2.KeyUp:connect(keyUp))
7567
7568 if S.sensitivitySettings.scrollToChange then
7569 INSERT(Connections, M2.WheelForward:connect(onScrollUp))
7570 INSERT(Connections, M2.WheelBackward:connect(onScrollDown))
7571 end
7572
7573 if S.AutoKnife then
7574 INSERT(Connections, RS.Stepped:connect(function()
7575 local H, P = AdvRayCast(Head.CFrame.p, Head.CFrame.lookVector, S.AutoKnifeDist, nil)
7576 if H then
7577 local HitHuman = findFirstClass(H.Parent, "Humanoid")
7578 if HitHuman and isEnemy(HitHuman) and HitHuman.Health ~= 0 then
7579 Knife()
7580 end
7581 end
7582 end))
7583 end
7584
7585 INSERT(Connections, UIS.InputChanged:connect(function(inputObj)
7586 if inputObj.UserInputType == Enum.UserInputType.MouseMovement then
7587 local rawCamAng = camAng - (VEC2(RAD(inputObj.Delta.x), RAD(inputObj.Delta.y)) * mouseSensitivity * 0.25)
7588 camAng = VEC2(rawCamAng.x, (rawCamAng.y > RAD(80) and RAD(80) or rawCamAng.y < RAD(-80) and RAD(-80) or rawCamAng.y))
7589
7590 desiredXOffset = math.min(math.max(inputObj.Delta.x, -S.momentumSettings.maxInput), S.momentumSettings.maxInput)
7591 desiredYOffset = math.min(math.max(inputObj.Delta.y, -S.momentumSettings.maxInput), S.momentumSettings.maxInput)
7592 end
7593 end))
7594
7595 INSERT(Connections, M2.Idle:connect(function(inputObj)
7596 desiredXOffset = 0
7597 desiredYOffset = 0
7598 end))
7599
7600 INSERT(Connections, RS.Stepped:connect(function()
7601 if tick() - lastBeat > (Humanoid.Health / 75) then
7602 lastBeat = tick()
7603 HUD.Health.Tray.Beat:TweenPosition(
7604 UDim2.new(0, -21, 0, 0),
7605 Enum.EasingDirection.Out,
7606 Enum.EasingStyle.Linear,
7607 0.7 - ((100 - Humanoid.Health) / 400),
7608 false,
7609 function()
7610 HUD.Health.Tray.Beat.Position = UDim2.new(1, 0, 0, 0)
7611 end
7612 )
7613 end
7614 end))
7615
7616 INSERT(Connections, RS.RenderStepped:connect(function()
7617 --Main animation
7618 local animC0, animC1 = getAnimCF()
7619 animWeld.C0 = animC0
7620 animWeld.C1 = animC1
7621
7622 --Camera updating
7623 renderCamera()
7624 end))
7625
7626 --------------------[ ANIMATE GUN ]-------------------------------------------
7627
7628 tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, S.equipSettings.Time)
7629 tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, S.equipSettings.Time)
7630 tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.equipSettings.Time)
7631 spawn(function()
7632 local T = tick()
7633 while true do
7634 if tick() - T > S.equipSettings.Time then break end
7635 if (not Selected) then break end
7636 wait()
7637 end
7638 equipAnimPlaying = false
7639 end)
7640
7641 Animate()
7642 end
7643end
7644
7645function onUnequipped(deleteTool)
7646 if Selected then
7647 Selected = false
7648
7649 breakReload = true
7650
7651 --------------------[ RUNNING PLUGINS ]---------------------------------------
7652
7653 for _, Plugin in pairs(Plugins.OnUnEquipped) do
7654 spawn(function()
7655 Plugin()
7656 end)
7657 end
7658
7659 --------------------[ MODIFYING THE PLAYER ]----------------------------------
7660
7661 Cam.FieldOfView = 70
7662 Cam.CameraType = Enum.CameraType.Custom
7663
7664 UIS.MouseBehavior = Enum.MouseBehavior.Default
7665 UIS.MouseIconEnabled = true
7666
7667 Player.CameraMode = Enum.CameraMode.Classic
7668
7669 if armTable then
7670 armTable[1].Model:Destroy()
7671 armTable[2].Model:Destroy()
7672 elseif armModel then
7673 armModel:Destroy()
7674 end
7675
7676 LLegWeld:Destroy()
7677 RLegWeld:Destroy()
7678
7679 changePlayerTrans(Char, 0)
7680
7681 mainGUI.Parent = script
7682
7683 Shoulders.Right.Part1 = RArm
7684 Shoulders.Left.Part1 = LArm
7685
7686 neckClone.Parent = Torso
7687 headWeld:Destroy()
7688
7689 Humanoid.WalkSpeed = 16
7690 Humanoid.AutoRotate = true
7691
7692 --------------------[ RESETING THE TOOL ]-------------------------------------
7693
7694 gunIgnore:Destroy()
7695
7696 mouseSensitivity = S.sensitivitySettings.Default
7697
7698 MB1Down = false
7699
7700 playerMass = 0
7701
7702 Aimed = false
7703
7704 camOffsets = {
7705 guiScope = {
7706 Rot = V3();
7707 };
7708 Reload = {
7709 Rot = V3();
7710 Code = nil;
7711 };
7712 Recoil = {
7713 Rot = V3();
7714 Code = nil;
7715 };
7716 }
7717
7718 recoilAnim = {
7719 Pos = V3();
7720 Rot = V3();
7721 Code = nil;
7722 }
7723
7724 --Setting the aim variables to unaimed
7725 spreadZoom = "unAimed"
7726 scopeMain.Visible = false
7727 scopeSteady.Visible = false
7728 aimAlpha = 0
7729 aimHeadOffset = 0
7730 jumpAnimMultiplier = 1
7731 translationDivisor = 7
7732 rotationMultiplier = S.momentumSettings.Amplitude.unAimed
7733 armTiltMultiplier = 1
7734 Scope.BackgroundTransparency = 1
7735 if S.guiScope then
7736 spawn(function()
7737 for _, Obj in pairs(Gun:GetChildren()) do
7738 if Obj:IsA("BasePart") then
7739 Obj.LocalTransparencyModifier = 0
7740 end
7741 end
7742 end)
7743 end
7744
7745 onGround = true
7746
7747 for _, Tab in pairs(gunParts) do
7748 Tab.Weld:Destroy()
7749 Tab.Weld = nil
7750 end
7751
7752 for _,c in pairs(Connections) do
7753 c:disconnect()
7754 end
7755
7756 Connections = {}
7757
7758 if deleteTool then
7759 Cam:ClearAllChildren()
7760 Gun:Destroy()
7761 end
7762
7763 wait() --This is here in case you dolphin dived and deselected the tool instantly
7764
7765 if S.stanceSettings.standOnDeselect and Stance ~= 0 then
7766 crawlCamRot = 0
7767 isCrawling = false
7768 stanceSway = 1
7769 spreadStance = "Stand"
7770 Stand(true)
7771 end
7772 baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7773 end
7774end
7775
7776Gun.Equipped:connect(onEquipped)
7777Gun.Unequipped:connect(function() onUnequipped(false) end)
7778
7779--------------------------------------------------------------------------------------
7780--------------------[ END PROGRAM ]---------------------------------------------------
7781--------------------------------------------------------------------------------------
7782end))
7783IntValue209.Name = "ignoreCode"
7784IntValue209.Parent = LocalScript208
7785Folder210.Name = "Server_Scripts"
7786Folder210.Parent = LocalScript208
7787ScreenGui211.Name = "mainGUI"
7788ScreenGui211.Parent = LocalScript208
7789ImageLabel212.Name = "hitMarker"
7790ImageLabel212.Parent = ScreenGui211
7791ImageLabel212.Transparency = 1
7792ImageLabel212.Size = UDim2.new(0, 26, 0, 26)
7793ImageLabel212.Position = UDim2.new(0.5, -13, 0.5, -31)
7794ImageLabel212.Visible = false
7795ImageLabel212.BackgroundTransparency = 1
7796ImageLabel212.ZIndex = 10
7797ImageLabel212.Image = "http://www.roblox.com/asset/?id=121173757"
7798NumberValue213.Name = "lastMark"
7799NumberValue213.Parent = ImageLabel212
7800Frame214.Name = "crossHair"
7801Frame214.Parent = ScreenGui211
7802Frame214.Position = UDim2.new(0.5, 0, 0.5, -18)
7803Frame214.BackgroundColor3 = Color3.new(1, 1, 1)
7804Frame214.BorderColor3 = Color3.new(0, 0, 0)
7805Frame214.BorderSizePixel = 0
7806ImageLabel215.Parent = Frame214
7807ImageLabel215.Transparency = 1
7808ImageLabel215.Size = UDim2.new(0, 300, 0, 300)
7809ImageLabel215.Position = UDim2.new(0, -150, 0, -150)
7810ImageLabel215.Visible = false
7811ImageLabel215.BackgroundColor3 = Color3.new(1, 1, 1)
7812ImageLabel215.BackgroundTransparency = 1
7813ImageLabel215.ZIndex = 2
7814ImageLabel215.Image = "http://www.roblox.com/asset/?id=68308747"
7815TextLabel216.Name = "Reload"
7816TextLabel216.Parent = Frame214
7817TextLabel216.Transparency = 1
7818TextLabel216.Size = UDim2.new(0, 100, 0, 20)
7819TextLabel216.Text = "RELOADING..."
7820TextLabel216.Position = UDim2.new(0, -50, 0, 70)
7821TextLabel216.Visible = false
7822TextLabel216.BackgroundColor3 = Color3.new(1, 1, 1)
7823TextLabel216.BackgroundTransparency = 1
7824TextLabel216.ZIndex = 2
7825TextLabel216.Font = Enum.Font.SourceSansBold
7826TextLabel216.FontSize = Enum.FontSize.Size18
7827TextLabel216.TextColor3 = Color3.new(1, 1, 1)
7828TextLabel216.TextStrokeTransparency = 0.5
7829Frame217.Name = "C"
7830Frame217.Parent = Frame214
7831Frame217.Transparency = 1
7832Frame217.Size = UDim2.new(0, 4, 0, 500)
7833Frame217.Position = UDim2.new(0, -2, 0, 0)
7834Frame217.BackgroundColor3 = Color3.new(1, 1, 1)
7835Frame217.BackgroundTransparency = 1
7836Frame217.ClipsDescendants = true
7837TextLabel218.Name = "Line"
7838TextLabel218.Parent = Frame217
7839TextLabel218.Size = UDim2.new(0, 2, 0, 15)
7840TextLabel218.Text = ""
7841TextLabel218.Position = UDim2.new(0.5, -1, 0, 10)
7842TextLabel218.BackgroundColor3 = Color3.new(1, 1, 1)
7843TextLabel218.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7844TextLabel218.Font = Enum.Font.SourceSans
7845TextLabel218.FontSize = Enum.FontSize.Size14
7846Frame219.Name = "A"
7847Frame219.Parent = Frame214
7848Frame219.Transparency = 1
7849Frame219.Size = UDim2.new(0, 4, 0, 500)
7850Frame219.Position = UDim2.new(0, -2, 0, -500)
7851Frame219.BackgroundColor3 = Color3.new(1, 1, 1)
7852Frame219.BackgroundTransparency = 1
7853Frame219.ClipsDescendants = true
7854TextLabel220.Name = "Line"
7855TextLabel220.Parent = Frame219
7856TextLabel220.Size = UDim2.new(0, 2, 0, 15)
7857TextLabel220.Text = ""
7858TextLabel220.Position = UDim2.new(0.5, -1, 1, -25)
7859TextLabel220.BackgroundColor3 = Color3.new(1, 1, 1)
7860TextLabel220.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7861TextLabel220.Font = Enum.Font.SourceSans
7862TextLabel220.FontSize = Enum.FontSize.Size14
7863Frame221.Name = "B"
7864Frame221.Parent = Frame214
7865Frame221.Transparency = 1
7866Frame221.Size = UDim2.new(0, 500, 0, 4)
7867Frame221.Position = UDim2.new(0, 0, 0, -2)
7868Frame221.BackgroundColor3 = Color3.new(1, 1, 1)
7869Frame221.BackgroundTransparency = 1
7870Frame221.ClipsDescendants = true
7871TextLabel222.Name = "Line"
7872TextLabel222.Parent = Frame221
7873TextLabel222.Size = UDim2.new(0, 15, 0, 2)
7874TextLabel222.Text = ""
7875TextLabel222.Position = UDim2.new(0, 10, 0.5, -1)
7876TextLabel222.BackgroundColor3 = Color3.new(1, 1, 1)
7877TextLabel222.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7878TextLabel222.Font = Enum.Font.SourceSans
7879TextLabel222.FontSize = Enum.FontSize.Size14
7880Frame223.Name = "D"
7881Frame223.Parent = Frame214
7882Frame223.Transparency = 1
7883Frame223.Size = UDim2.new(0, 500, 0, 4)
7884Frame223.Position = UDim2.new(0, -500, 0, -2)
7885Frame223.BackgroundColor3 = Color3.new(1, 1, 1)
7886Frame223.BackgroundTransparency = 1
7887Frame223.ClipsDescendants = true
7888TextLabel224.Name = "Line"
7889TextLabel224.Parent = Frame223
7890TextLabel224.Size = UDim2.new(0, 15, 0, 2)
7891TextLabel224.Text = ""
7892TextLabel224.Position = UDim2.new(1, -25, 0.5, -1)
7893TextLabel224.BackgroundColor3 = Color3.new(1, 1, 1)
7894TextLabel224.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7895TextLabel224.Font = Enum.Font.SourceSans
7896TextLabel224.FontSize = Enum.FontSize.Size14
7897Frame225.Name = "HUD"
7898Frame225.Parent = ScreenGui211
7899Frame225.Transparency = 0.30000001192093
7900Frame225.Size = UDim2.new(0, 175, 0, 90)
7901Frame225.Position = UDim2.new(1, -200, 1, -165)
7902Frame225.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7903Frame225.BackgroundTransparency = 0.30000001192093
7904Frame225.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7905Frame225.BorderSizePixel = 5
7906Frame225.ZIndex = 10
7907Frame226.Name = "Ammo"
7908Frame226.Parent = Frame225
7909Frame226.Transparency = 1
7910Frame226.Size = UDim2.new(0, 175, 0, 40)
7911Frame226.Position = UDim2.new(0, 0, 0, 45)
7912Frame226.BackgroundTransparency = 1
7913Frame226.ZIndex = 10
7914TextLabel227.Name = "Slash"
7915TextLabel227.Parent = Frame226
7916TextLabel227.Transparency = 1
7917TextLabel227.Size = UDim2.new(0, 10, 0, 25)
7918TextLabel227.Text = "/"
7919TextLabel227.Position = UDim2.new(0, 90, 0, 0)
7920TextLabel227.BackgroundTransparency = 1
7921TextLabel227.ZIndex = 10
7922TextLabel227.Font = Enum.Font.ArialBold
7923TextLabel227.FontSize = Enum.FontSize.Size24
7924TextLabel227.TextColor3 = Color3.new(1, 1, 1)
7925TextLabel228.Name = "Stored"
7926TextLabel228.Parent = Frame226
7927TextLabel228.Transparency = 1
7928TextLabel228.Size = UDim2.new(0, 70, 0, 25)
7929TextLabel228.Text = "100"
7930TextLabel228.Position = UDim2.new(0, 105, 0, 0)
7931TextLabel228.BackgroundTransparency = 1
7932TextLabel228.ZIndex = 10
7933TextLabel228.Font = Enum.Font.ArialBold
7934TextLabel228.FontSize = Enum.FontSize.Size24
7935TextLabel228.TextColor3 = Color3.new(1, 1, 1)
7936TextLabel228.TextXAlignment = Enum.TextXAlignment.Left
7937TextLabel229.Name = "Background"
7938TextLabel229.Parent = TextLabel228
7939TextLabel229.Transparency = 1
7940TextLabel229.Size = UDim2.new(1, 0, 1, 0)
7941TextLabel229.Text = "000"
7942TextLabel229.BackgroundTransparency = 1
7943TextLabel229.ZIndex = 10
7944TextLabel229.Font = Enum.Font.ArialBold
7945TextLabel229.FontSize = Enum.FontSize.Size24
7946TextLabel229.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235)
7947TextLabel229.TextTransparency = 0.80000001192093
7948TextLabel229.TextWrapped = true
7949TextLabel229.TextXAlignment = Enum.TextXAlignment.Left
7950TextLabel230.Name = "Clip"
7951TextLabel230.Parent = Frame226
7952TextLabel230.Transparency = 1
7953TextLabel230.Size = UDim2.new(0, 85, 1, 0)
7954TextLabel230.Text = "9"
7955TextLabel230.BackgroundTransparency = 1
7956TextLabel230.ZIndex = 10
7957TextLabel230.Font = Enum.Font.ArialBold
7958TextLabel230.FontSize = Enum.FontSize.Size48
7959TextLabel230.TextColor3 = Color3.new(1, 1, 1)
7960TextLabel230.TextXAlignment = Enum.TextXAlignment.Right
7961TextLabel231.Name = "Background"
7962TextLabel231.Parent = TextLabel230
7963TextLabel231.Transparency = 1
7964TextLabel231.Size = UDim2.new(1, 0, 1, 0)
7965TextLabel231.Text = "000"
7966TextLabel231.BackgroundTransparency = 1
7967TextLabel231.ZIndex = 10
7968TextLabel231.Font = Enum.Font.ArialBold
7969TextLabel231.FontSize = Enum.FontSize.Size48
7970TextLabel231.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235)
7971TextLabel231.TextTransparency = 0.80000001192093
7972TextLabel231.TextXAlignment = Enum.TextXAlignment.Right
7973Frame232.Name = "Mode"
7974Frame232.Parent = Frame225
7975Frame232.Transparency = 1
7976Frame232.Size = UDim2.new(0, 85, 0, 20)
7977Frame232.Position = UDim2.new(0, 90, 0, 65)
7978Frame232.BackgroundColor3 = Color3.new(1, 1, 1)
7979Frame232.BackgroundTransparency = 1
7980Frame232.ZIndex = 10
7981TextLabel233.Name = "Bracket"
7982TextLabel233.Parent = Frame232
7983TextLabel233.Transparency = 1
7984TextLabel233.Size = UDim2.new(0, 5, 0, 20)
7985TextLabel233.Text = "["
7986TextLabel233.BackgroundTransparency = 1
7987TextLabel233.ZIndex = 10
7988TextLabel233.Font = Enum.Font.ArialBold
7989TextLabel233.FontSize = Enum.FontSize.Size18
7990TextLabel233.TextColor3 = Color3.new(1, 1, 1)
7991TextLabel233.TextXAlignment = Enum.TextXAlignment.Left
7992TextLabel234.Name = "Bracket"
7993TextLabel234.Parent = Frame232
7994TextLabel234.Transparency = 1
7995TextLabel234.Size = UDim2.new(0, 5, 0, 20)
7996TextLabel234.Text = "]"
7997TextLabel234.Position = UDim2.new(1, -5, 0, 0)
7998TextLabel234.BackgroundTransparency = 1
7999TextLabel234.ZIndex = 10
8000TextLabel234.Font = Enum.Font.ArialBold
8001TextLabel234.FontSize = Enum.FontSize.Size18
8002TextLabel234.TextColor3 = Color3.new(1, 1, 1)
8003TextLabel234.TextXAlignment = Enum.TextXAlignment.Left
8004TextLabel235.Name = "Main"
8005TextLabel235.Parent = Frame232
8006TextLabel235.Transparency = 1
8007TextLabel235.Size = UDim2.new(1, 0, 0, 20)
8008TextLabel235.Text = "Auto"
8009TextLabel235.BackgroundTransparency = 1
8010TextLabel235.ZIndex = 10
8011TextLabel235.Font = Enum.Font.SourceSansBold
8012TextLabel235.FontSize = Enum.FontSize.Size18
8013TextLabel235.TextColor3 = Color3.new(1, 1, 1)
8014TextLabel235.TextWrapped = true
8015Frame236.Name = "Health"
8016Frame236.Parent = Frame225
8017Frame236.Transparency = 0.30000001192093
8018Frame236.Size = UDim2.new(1, 0, 0, 25)
8019Frame236.Position = UDim2.new(0, 0, 0, -40)
8020Frame236.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8021Frame236.BackgroundTransparency = 0.30000001192093
8022Frame236.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8023Frame236.BorderSizePixel = 5
8024Frame236.ZIndex = 10
8025TextLabel237.Name = "Num"
8026TextLabel237.Parent = Frame236
8027TextLabel237.Transparency = 1
8028TextLabel237.Size = UDim2.new(0, 50, 1, 0)
8029TextLabel237.Text = "100%"
8030TextLabel237.Position = UDim2.new(1, -50, 0, 0)
8031TextLabel237.BackgroundColor3 = Color3.new(0, 0, 0)
8032TextLabel237.BackgroundTransparency = 1
8033TextLabel237.BorderColor3 = Color3.new(0, 0, 0)
8034TextLabel237.BorderSizePixel = 0
8035TextLabel237.ZIndex = 10
8036TextLabel237.Font = Enum.Font.ArialBold
8037TextLabel237.FontSize = Enum.FontSize.Size24
8038TextLabel237.TextColor3 = Color3.new(1, 1, 1)
8039TextLabel237.TextStrokeTransparency = 0
8040TextLabel237.TextXAlignment = Enum.TextXAlignment.Right
8041Frame238.Name = "Tray"
8042Frame238.Parent = Frame236
8043Frame238.Transparency = 1
8044Frame238.Size = UDim2.new(1, -60, 0, 20)
8045Frame238.Position = UDim2.new(0, 2, 0.5, -10)
8046Frame238.BackgroundColor3 = Color3.new(0, 0, 0)
8047Frame238.BackgroundTransparency = 1
8048Frame238.BorderColor3 = Color3.new(0, 0, 0)
8049Frame238.BorderSizePixel = 0
8050Frame238.ZIndex = 10
8051Frame238.ClipsDescendants = true
8052Frame239.Name = "Beat"
8053Frame239.Parent = Frame238
8054Frame239.Transparency = 1
8055Frame239.Size = UDim2.new(0, 21, 1, 0)
8056Frame239.Position = UDim2.new(1, 0, 0, 0)
8057Frame239.BackgroundColor3 = Color3.new(0, 0, 0)
8058Frame239.BackgroundTransparency = 1
8059Frame239.BorderColor3 = Color3.new(0, 0, 0)
8060Frame239.BorderSizePixel = 0
8061Frame239.ZIndex = 10
8062Frame240.Name = "00"
8063Frame240.Parent = Frame239
8064Frame240.Size = UDim2.new(0.0476190485, 0, 0, 3)
8065Frame240.Position = UDim2.new(0, 0, 0.5, -2)
8066Frame240.BackgroundColor3 = Color3.new(1, 1, 1)
8067Frame240.BorderColor3 = Color3.new(0, 0, 0)
8068Frame240.BorderSizePixel = 0
8069Frame240.ZIndex = 10
8070Frame241.Name = "01"
8071Frame241.Parent = Frame239
8072Frame241.Size = UDim2.new(0.0476190485, 0, 0, 4)
8073Frame241.Position = UDim2.new(0.0476190485, 0, 0.423076928, -2)
8074Frame241.BackgroundColor3 = Color3.new(1, 1, 1)
8075Frame241.BorderColor3 = Color3.new(0, 0, 0)
8076Frame241.BorderSizePixel = 0
8077Frame241.ZIndex = 10
8078Frame242.Name = "02"
8079Frame242.Parent = Frame239
8080Frame242.Size = UDim2.new(0.0476190485, 0, 0, 4)
8081Frame242.Position = UDim2.new(0.095238097, 0, 0.346153855, -2)
8082Frame242.BackgroundColor3 = Color3.new(1, 1, 1)
8083Frame242.BorderColor3 = Color3.new(0, 0, 0)
8084Frame242.BorderSizePixel = 0
8085Frame242.ZIndex = 10
8086Frame243.Name = "03"
8087Frame243.Parent = Frame239
8088Frame243.Size = UDim2.new(0.0476190485, 0, 0, 4)
8089Frame243.Position = UDim2.new(0.142857149, 0, 0.269230783, -2)
8090Frame243.BackgroundColor3 = Color3.new(1, 1, 1)
8091Frame243.BorderColor3 = Color3.new(0, 0, 0)
8092Frame243.BorderSizePixel = 0
8093Frame243.ZIndex = 10
8094Frame244.Name = "04"
8095Frame244.Parent = Frame239
8096Frame244.Size = UDim2.new(0.0476190485, 0, 0, 4)
8097Frame244.Position = UDim2.new(0.190476194, 0, 0.192307696, -2)
8098Frame244.BackgroundColor3 = Color3.new(1, 1, 1)
8099Frame244.BorderColor3 = Color3.new(0, 0, 0)
8100Frame244.BorderSizePixel = 0
8101Frame244.ZIndex = 10
8102Frame245.Name = "05"
8103Frame245.Parent = Frame239
8104Frame245.Size = UDim2.new(0.0476190485, 0, 0, 4)
8105Frame245.Position = UDim2.new(0.238095239, 0, 0.115384616, -2)
8106Frame245.BackgroundColor3 = Color3.new(1, 1, 1)
8107Frame245.BorderColor3 = Color3.new(0, 0, 0)
8108Frame245.BorderSizePixel = 0
8109Frame245.ZIndex = 10
8110Frame246.Name = "06"
8111Frame246.Parent = Frame239
8112Frame246.Size = UDim2.new(0.0476190485, 0, 0, 4)
8113Frame246.Position = UDim2.new(0.285714298, 0, 0.0384615399, -2)
8114Frame246.BackgroundColor3 = Color3.new(1, 1, 1)
8115Frame246.BorderColor3 = Color3.new(0, 0, 0)
8116Frame246.BorderSizePixel = 0
8117Frame246.ZIndex = 10
8118Frame247.Name = "07"
8119Frame247.Parent = Frame239
8120Frame247.Size = UDim2.new(0.0476190485, 0, 0, 4)
8121Frame247.Position = UDim2.new(0.333333343, 0, 0, -2)
8122Frame247.BackgroundColor3 = Color3.new(1, 1, 1)
8123Frame247.BorderColor3 = Color3.new(0, 0, 0)
8124Frame247.BorderSizePixel = 0
8125Frame247.ZIndex = 10
8126Frame248.Name = "08"
8127Frame248.Parent = Frame239
8128Frame248.Size = UDim2.new(0.0476190485, 0, 0, 4)
8129Frame248.Position = UDim2.new(0.380952388, 0, 0.142857149, -2)
8130Frame248.BackgroundColor3 = Color3.new(1, 1, 1)
8131Frame248.BorderColor3 = Color3.new(0, 0, 0)
8132Frame248.BorderSizePixel = 0
8133Frame248.ZIndex = 10
8134Frame249.Name = "09"
8135Frame249.Parent = Frame239
8136Frame249.Size = UDim2.new(0.0476190485, 0, 0, 4)
8137Frame249.Position = UDim2.new(0.428571433, 0, 0.285714298, -2)
8138Frame249.BackgroundColor3 = Color3.new(1, 1, 1)
8139Frame249.BorderColor3 = Color3.new(0, 0, 0)
8140Frame249.BorderSizePixel = 0
8141Frame249.ZIndex = 10
8142Frame250.Name = "10"
8143Frame250.Parent = Frame239
8144Frame250.Size = UDim2.new(0.0476190485, 0, 0, 4)
8145Frame250.Position = UDim2.new(0.476190478, 0, 0.428571433, -2)
8146Frame250.BackgroundColor3 = Color3.new(1, 1, 1)
8147Frame250.BorderColor3 = Color3.new(0, 0, 0)
8148Frame250.BorderSizePixel = 0
8149Frame250.ZIndex = 10
8150Frame251.Name = "11"
8151Frame251.Parent = Frame239
8152Frame251.Size = UDim2.new(0.0476190485, 0, 0, 4)
8153Frame251.Position = UDim2.new(0.523809552, 0, 0.571428597, -2)
8154Frame251.BackgroundColor3 = Color3.new(1, 1, 1)
8155Frame251.BorderColor3 = Color3.new(0, 0, 0)
8156Frame251.BorderSizePixel = 0
8157Frame251.ZIndex = 10
8158Frame252.Name = "12"
8159Frame252.Parent = Frame239
8160Frame252.Size = UDim2.new(0.0476190485, 0, 0, 4)
8161Frame252.Position = UDim2.new(0.571428597, 0, 0.714285731, -2)
8162Frame252.BackgroundColor3 = Color3.new(1, 1, 1)
8163Frame252.BorderColor3 = Color3.new(0, 0, 0)
8164Frame252.BorderSizePixel = 0
8165Frame252.ZIndex = 10
8166Frame253.Name = "13"
8167Frame253.Parent = Frame239
8168Frame253.Size = UDim2.new(0.0476190485, 0, 0, 4)
8169Frame253.Position = UDim2.new(0.619047642, 0, 0.857142866, -2)
8170Frame253.BackgroundColor3 = Color3.new(1, 1, 1)
8171Frame253.BorderColor3 = Color3.new(0, 0, 0)
8172Frame253.BorderSizePixel = 0
8173Frame253.ZIndex = 10
8174Frame254.Name = "14"
8175Frame254.Parent = Frame239
8176Frame254.Size = UDim2.new(0.0476190485, 0, 0, 4)
8177Frame254.Position = UDim2.new(0.666666687, 0, 0.916666687, -2)
8178Frame254.BackgroundColor3 = Color3.new(1, 1, 1)
8179Frame254.BorderColor3 = Color3.new(0, 0, 0)
8180Frame254.BorderSizePixel = 0
8181Frame254.ZIndex = 10
8182Frame255.Name = "15"
8183Frame255.Parent = Frame239
8184Frame255.Size = UDim2.new(0.0476190485, 0, 0, 4)
8185Frame255.Position = UDim2.new(0.714285731, 0, 0.833333313, -2)
8186Frame255.BackgroundColor3 = Color3.new(1, 1, 1)
8187Frame255.BorderColor3 = Color3.new(0, 0, 0)
8188Frame255.BorderSizePixel = 0
8189Frame255.ZIndex = 10
8190Frame256.Name = "16"
8191Frame256.Parent = Frame239
8192Frame256.Size = UDim2.new(0.0476190485, 0, 0, 4)
8193Frame256.Position = UDim2.new(0.761904776, 0, 0.75, -2)
8194Frame256.BackgroundColor3 = Color3.new(1, 1, 1)
8195Frame256.BorderColor3 = Color3.new(0, 0, 0)
8196Frame256.BorderSizePixel = 0
8197Frame256.ZIndex = 10
8198Frame257.Name = "17"
8199Frame257.Parent = Frame239
8200Frame257.Size = UDim2.new(0.0476190485, 0, 0, 4)
8201Frame257.Position = UDim2.new(0.809523821, 0, 0.666666687, -2)
8202Frame257.BackgroundColor3 = Color3.new(1, 1, 1)
8203Frame257.BorderColor3 = Color3.new(0, 0, 0)
8204Frame257.BorderSizePixel = 0
8205Frame257.ZIndex = 10
8206Frame258.Name = "18"
8207Frame258.Parent = Frame239
8208Frame258.Size = UDim2.new(0.0476190485, 0, 0, 4)
8209Frame258.Position = UDim2.new(0.857142866, 0, 0.583333313, -2)
8210Frame258.BackgroundColor3 = Color3.new(1, 1, 1)
8211Frame258.BorderColor3 = Color3.new(0, 0, 0)
8212Frame258.BorderSizePixel = 0
8213Frame258.ZIndex = 10
8214Frame259.Name = "19"
8215Frame259.Parent = Frame239
8216Frame259.Size = UDim2.new(0.0476190485, 0, 0, 4)
8217Frame259.Position = UDim2.new(0.90476191, 0, 0.5, -2)
8218Frame259.BackgroundColor3 = Color3.new(1, 1, 1)
8219Frame259.BorderColor3 = Color3.new(0, 0, 0)
8220Frame259.BorderSizePixel = 0
8221Frame259.ZIndex = 10
8222Frame260.Name = "20"
8223Frame260.Parent = Frame239
8224Frame260.Size = UDim2.new(0.0476190485, 0, 0, 4)
8225Frame260.Position = UDim2.new(0.952000022, 0, 0.49000001, -2)
8226Frame260.BackgroundColor3 = Color3.new(1, 1, 1)
8227Frame260.BorderColor3 = Color3.new(0, 0, 0)
8228Frame260.BorderSizePixel = 0
8229Frame260.ZIndex = 10
8230Frame261.Name = "Line"
8231Frame261.Parent = Frame239
8232Frame261.Size = UDim2.new(0, 200, 0, 3)
8233Frame261.Position = UDim2.new(1, 0, 0.5, -2)
8234Frame261.BackgroundColor3 = Color3.new(1, 1, 1)
8235Frame261.BorderColor3 = Color3.new(0, 0, 0)
8236Frame261.BorderSizePixel = 0
8237Frame261.ZIndex = 10
8238Frame262.Name = "Line"
8239Frame262.Parent = Frame239
8240Frame262.Size = UDim2.new(0, 200, 0, 3)
8241Frame262.Position = UDim2.new(0, -200, 0.5, -2)
8242Frame262.BackgroundColor3 = Color3.new(1, 1, 1)
8243Frame262.BorderColor3 = Color3.new(0, 0, 0)
8244Frame262.BorderSizePixel = 0
8245Frame262.ZIndex = 10
8246Frame263.Name = "Controls"
8247Frame263.Parent = Frame225
8248Frame263.Transparency = 0.30000001192093
8249Frame263.Size = UDim2.new(1, 0, 0, 120)
8250Frame263.Position = UDim2.new(0, 0, 0, -200)
8251Frame263.Visible = false
8252Frame263.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8253Frame263.BackgroundTransparency = 0.30000001192093
8254Frame263.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8255Frame263.BorderSizePixel = 5
8256Frame263.ZIndex = 10
8257TextLabel264.Name = "Title"
8258TextLabel264.Parent = Frame263
8259TextLabel264.Transparency = 1
8260TextLabel264.Size = UDim2.new(1, 0, 0, 15)
8261TextLabel264.Text = "CONTROLS"
8262TextLabel264.BackgroundColor3 = Color3.new(1, 1, 1)
8263TextLabel264.BackgroundTransparency = 1
8264TextLabel264.ZIndex = 10
8265TextLabel264.Font = Enum.Font.SourceSansBold
8266TextLabel264.FontSize = Enum.FontSize.Size14
8267TextLabel264.TextColor3 = Color3.new(1, 1, 1)
8268TextLabel265.Name = "Line"
8269TextLabel265.Parent = TextLabel264
8270TextLabel265.Size = UDim2.new(1, 0, 0, 2)
8271TextLabel265.Text = ""
8272TextLabel265.Position = UDim2.new(0, 0, 1, 1)
8273TextLabel265.BackgroundColor3 = Color3.new(1, 1, 0)
8274TextLabel265.BorderSizePixel = 0
8275TextLabel265.ZIndex = 10
8276TextLabel265.Font = Enum.Font.SourceSans
8277TextLabel265.FontSize = Enum.FontSize.Size14
8278Frame266.Name = "Grenades"
8279Frame266.Parent = Frame225
8280Frame266.Transparency = 1
8281Frame266.Size = UDim2.new(0, 175, 0, 25)
8282Frame266.Position = UDim2.new(0, 0, 0, 90)
8283Frame266.Visible = false
8284Frame266.BackgroundTransparency = 1
8285Frame266.ZIndex = 10
8286Frame267.Name = "Lethals"
8287Frame267.Parent = Frame266
8288Frame267.Transparency = 0.80000001192093
8289Frame267.Size = UDim2.new(0.5, -2, 1, 0)
8290Frame267.BackgroundColor3 = Color3.new(1, 1, 1)
8291Frame267.BackgroundTransparency = 0.80000001192093
8292Frame267.BorderSizePixel = 0
8293Frame267.ZIndex = 10
8294ImageLabel268.Name = "Icon"
8295ImageLabel268.Parent = Frame267
8296ImageLabel268.Transparency = 1
8297ImageLabel268.Size = UDim2.new(0, 21, 0, 21)
8298ImageLabel268.Position = UDim2.new(0, 7, 0, 2)
8299ImageLabel268.BackgroundColor3 = Color3.new(1, 1, 1)
8300ImageLabel268.BackgroundTransparency = 1
8301ImageLabel268.ZIndex = 10
8302TextLabel269.Name = "Mult"
8303TextLabel269.Parent = Frame267
8304TextLabel269.Transparency = 1
8305TextLabel269.Size = UDim2.new(0, 20, 1, 0)
8306TextLabel269.Text = "X"
8307TextLabel269.Position = UDim2.new(0.5, -10, 0, 0)
8308TextLabel269.BackgroundColor3 = Color3.new(1, 1, 1)
8309TextLabel269.BackgroundTransparency = 1
8310TextLabel269.BorderSizePixel = 0
8311TextLabel269.ZIndex = 10
8312TextLabel269.Font = Enum.Font.ArialBold
8313TextLabel269.FontSize = Enum.FontSize.Size18
8314TextLabel269.TextColor3 = Color3.new(1, 1, 1)
8315TextLabel270.Name = "Num"
8316TextLabel270.Parent = Frame267
8317TextLabel270.Transparency = 1
8318TextLabel270.Size = UDim2.new(0, 0, 1, 0)
8319TextLabel270.Text = "0"
8320TextLabel270.Position = UDim2.new(1, -7, 0, 0)
8321TextLabel270.BackgroundColor3 = Color3.new(1, 1, 1)
8322TextLabel270.BackgroundTransparency = 1
8323TextLabel270.ZIndex = 10
8324TextLabel270.Font = Enum.Font.ArialBold
8325TextLabel270.FontSize = Enum.FontSize.Size18
8326TextLabel270.TextColor3 = Color3.new(1, 1, 1)
8327TextLabel270.TextXAlignment = Enum.TextXAlignment.Right
8328Frame271.Name = "Tacticals"
8329Frame271.Parent = Frame266
8330Frame271.Transparency = 0.80000001192093
8331Frame271.Size = UDim2.new(0.5, -2, 1, 0)
8332Frame271.Position = UDim2.new(0.5, 2, 0, 0)
8333Frame271.BackgroundColor3 = Color3.new(1, 1, 1)
8334Frame271.BackgroundTransparency = 0.80000001192093
8335Frame271.BorderSizePixel = 0
8336Frame271.ZIndex = 10
8337ImageLabel272.Name = "Icon"
8338ImageLabel272.Parent = Frame271
8339ImageLabel272.Transparency = 1
8340ImageLabel272.Size = UDim2.new(0, 21, 0, 21)
8341ImageLabel272.Position = UDim2.new(0, 7, 0, 2)
8342ImageLabel272.BackgroundColor3 = Color3.new(1, 1, 1)
8343ImageLabel272.BackgroundTransparency = 1
8344ImageLabel272.ZIndex = 10
8345TextLabel273.Name = "Num"
8346TextLabel273.Parent = Frame271
8347TextLabel273.Transparency = 1
8348TextLabel273.Size = UDim2.new(0, 0, 1, 0)
8349TextLabel273.Text = "0"
8350TextLabel273.Position = UDim2.new(1, -7, 0, 0)
8351TextLabel273.BackgroundColor3 = Color3.new(1, 1, 1)
8352TextLabel273.BackgroundTransparency = 1
8353TextLabel273.ZIndex = 10
8354TextLabel273.Font = Enum.Font.ArialBold
8355TextLabel273.FontSize = Enum.FontSize.Size18
8356TextLabel273.TextColor3 = Color3.new(1, 1, 1)
8357TextLabel273.TextXAlignment = Enum.TextXAlignment.Right
8358TextLabel274.Name = "Mult"
8359TextLabel274.Parent = Frame271
8360TextLabel274.Transparency = 1
8361TextLabel274.Size = UDim2.new(0, 20, 1, 0)
8362TextLabel274.Text = "X"
8363TextLabel274.Position = UDim2.new(0.5, -10, 0, 0)
8364TextLabel274.BackgroundColor3 = Color3.new(1, 1, 1)
8365TextLabel274.BackgroundTransparency = 1
8366TextLabel274.BorderSizePixel = 0
8367TextLabel274.ZIndex = 10
8368TextLabel274.Font = Enum.Font.ArialBold
8369TextLabel274.FontSize = Enum.FontSize.Size18
8370TextLabel274.TextColor3 = Color3.new(1, 1, 1)
8371Frame275.Name = "gunName"
8372Frame275.Parent = Frame225
8373Frame275.Transparency = 1
8374Frame275.Size = UDim2.new(1, 0, 0, 36)
8375Frame275.BackgroundColor3 = Color3.new(0.972549, 0.972549, 0.972549)
8376Frame275.BackgroundTransparency = 1
8377Frame275.ZIndex = 10
8378TextLabel276.Name = "Line"
8379TextLabel276.Parent = Frame275
8380TextLabel276.Size = UDim2.new(0, 2, 1, 0)
8381TextLabel276.Text = ""
8382TextLabel276.BackgroundColor3 = Color3.new(1, 1, 1)
8383TextLabel276.BorderSizePixel = 0
8384TextLabel276.ZIndex = 10
8385TextLabel276.Font = Enum.Font.SourceSans
8386TextLabel276.FontSize = Enum.FontSize.Size14
8387TextLabel277.Name = "Line"
8388TextLabel277.Parent = Frame275
8389TextLabel277.Size = UDim2.new(1, 0, 0, 2)
8390TextLabel277.Text = ""
8391TextLabel277.Position = UDim2.new(0, 0, 1, 0)
8392TextLabel277.BackgroundColor3 = Color3.new(1, 1, 1)
8393TextLabel277.BorderSizePixel = 0
8394TextLabel277.ZIndex = 10
8395TextLabel277.Font = Enum.Font.SourceSans
8396TextLabel277.FontSize = Enum.FontSize.Size14
8397TextLabel278.Name = "Title"
8398TextLabel278.Parent = Frame275
8399TextLabel278.Transparency = 1
8400TextLabel278.Size = UDim2.new(1, -7, 1, 0)
8401TextLabel278.Text = "Gun"
8402TextLabel278.Position = UDim2.new(0, 7, 0, 0)
8403TextLabel278.BackgroundColor3 = Color3.new(1, 1, 1)
8404TextLabel278.BackgroundTransparency = 1
8405TextLabel278.ZIndex = 10
8406TextLabel278.Font = Enum.Font.SourceSansBold
8407TextLabel278.FontSize = Enum.FontSize.Size36
8408TextLabel278.TextColor3 = Color3.new(1, 1, 1)
8409TextLabel278.TextStrokeTransparency = 0
8410TextLabel278.TextXAlignment = Enum.TextXAlignment.Left
8411Frame279.Name = "fireSelect"
8412Frame279.Parent = ScreenGui211
8413Frame279.Transparency = 1
8414Frame279.Position = UDim2.new(0.5, 0, 0.5, -18)
8415Frame279.Visible = false
8416Frame279.BackgroundColor3 = Color3.new(1, 1, 1)
8417Frame279.BackgroundTransparency = 1
8418Frame280.Name = "Modes"
8419Frame280.Parent = Frame279
8420Frame280.Transparency = 1
8421Frame280.BackgroundColor3 = Color3.new(1, 1, 1)
8422Frame280.BackgroundTransparency = 1
8423ImageLabel281.Name = "Circle"
8424ImageLabel281.Parent = Frame279
8425ImageLabel281.Transparency = 1
8426ImageLabel281.Size = UDim2.new(0, 120, 0, 120)
8427ImageLabel281.Position = UDim2.new(0, -60, 0, -60)
8428ImageLabel281.BackgroundColor3 = Color3.new(1, 1, 1)
8429ImageLabel281.BackgroundTransparency = 1
8430ImageLabel281.Image = "http://www.roblox.com/asset/?id=55754953"
8431ImageLabel281.ImageTransparency = 0.5
8432ImageLabel282.Name = "Arrow"
8433ImageLabel282.Parent = Frame279
8434ImageLabel282.Transparency = 1
8435ImageLabel282.Size = UDim2.new(0, 40, 0, 20)
8436ImageLabel282.Position = UDim2.new(0, -20, 0, -140)
8437ImageLabel282.BackgroundColor3 = Color3.new(1, 1, 1)
8438ImageLabel282.BackgroundTransparency = 1
8439ImageLabel282.Image = "http://www.roblox.com/asset/?id=126877530"
8440Frame283.Name = "Scope"
8441Frame283.Parent = ScreenGui211
8442Frame283.Transparency = 1
8443Frame283.Size = UDim2.new(1, 0, 1, 36)
8444Frame283.Position = UDim2.new(0, 0, 0, -36)
8445Frame283.BackgroundColor3 = Color3.new(0, 0, 0)
8446Frame283.BackgroundTransparency = 1
8447TextLabel284.Name = "Steady"
8448TextLabel284.Parent = Frame283
8449TextLabel284.Transparency = 1
8450TextLabel284.Size = UDim2.new(0, 120, 0, 20)
8451TextLabel284.Text = ""
8452TextLabel284.Position = UDim2.new(0.5, -60, 0.5, 50)
8453TextLabel284.Visible = false
8454TextLabel284.BackgroundColor3 = Color3.new(1, 1, 1)
8455TextLabel284.BackgroundTransparency = 1
8456TextLabel284.ZIndex = 9
8457TextLabel284.Font = Enum.Font.ArialBold
8458TextLabel284.FontSize = Enum.FontSize.Size14
8459TextLabel284.TextColor3 = Color3.new(1, 1, 0)
8460TextLabel284.TextStrokeTransparency = 0
8461Frame285.Name = "Main"
8462Frame285.Parent = Frame283
8463Frame285.Transparency = 1
8464Frame285.Size = UDim2.new(1, 0, 1, 0)
8465Frame285.Visible = false
8466Frame285.BackgroundColor3 = Color3.new(1, 1, 1)
8467Frame285.BackgroundTransparency = 1
8468ImageLabel286.Name = "ScopeImg2"
8469ImageLabel286.Parent = Frame285
8470ImageLabel286.Transparency = 1
8471ImageLabel286.Size = UDim2.new(0, 20, 0, 20)
8472ImageLabel286.Position = UDim2.new(0.5, -10, 0, -10)
8473ImageLabel286.BackgroundColor3 = Color3.new(0, 0, 0)
8474ImageLabel286.BackgroundTransparency = 1
8475ImageLabel286.Image = "http://www.roblox.com/asset/?id=184922644"
8476ImageLabel287.Name = "ScopeImg1"
8477ImageLabel287.Parent = Frame285
8478ImageLabel287.Transparency = 1
8479ImageLabel287.Size = UDim2.new(0, 20, 0, 20)
8480ImageLabel287.Position = UDim2.new(0.5, -10, 0, -10)
8481ImageLabel287.BackgroundColor3 = Color3.new(0, 0, 0)
8482ImageLabel287.BackgroundTransparency = 1
8483ImageLabel287.Image = "http://www.roblox.com/asset/?id=72002022"
8484Frame288.Name = "F2"
8485Frame288.Parent = Frame285
8486Frame288.Size = UDim2.new(0, 0, 1, 20)
8487Frame288.Position = UDim2.new(0, -10, 0, -10)
8488Frame288.BackgroundColor3 = Color3.new(0, 0, 0)
8489Frame288.BorderColor3 = Color3.new(0, 0, 0)
8490Frame288.BorderSizePixel = 0
8491Frame289.Name = "F1"
8492Frame289.Parent = Frame285
8493Frame289.Size = UDim2.new(0, 0, 1, 20)
8494Frame289.Position = UDim2.new(0, -10, 0, -10)
8495Frame289.BackgroundColor3 = Color3.new(0, 0, 0)
8496Frame289.BorderColor3 = Color3.new(0, 0, 0)
8497Frame289.BorderSizePixel = 0
8498LocalScript290.Name = "Update"
8499LocalScript290.Parent = Frame285
8500table.insert(cors,sandbox(LocalScript290,function()
8501local GUI = script.Parent
8502
8503function updateScopeDimension()
8504 GUI.ScopeImg1.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10)
8505 GUI.ScopeImg1.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y)
8506 GUI.ScopeImg2.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10)
8507 GUI.ScopeImg2.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y)
8508 GUI.F1.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20)
8509 GUI.F2.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20)
8510 GUI.F2.Position = UDim2.new(1, -10 - ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 0, -10)
8511end
8512
8513wait()
8514
8515GUI.Changed:connect(updateScopeDimension)
8516
8517updateScopeDimension()
8518end))
8519TextLabel291.Name = "Sens"
8520TextLabel291.Parent = ScreenGui211
8521TextLabel291.Transparency = 1
8522TextLabel291.Size = UDim2.new(0, 100, 0, 20)
8523TextLabel291.Text = "S: 0.3"
8524TextLabel291.Position = UDim2.new(0.5, -50, 0.5, 50)
8525TextLabel291.Visible = false
8526TextLabel291.BackgroundColor3 = Color3.new(1, 1, 1)
8527TextLabel291.BackgroundTransparency = 1
8528TextLabel291.ZIndex = 10
8529TextLabel291.Font = Enum.Font.SourceSansBold
8530TextLabel291.FontSize = Enum.FontSize.Size28
8531TextLabel291.TextColor3 = Color3.new(1, 1, 1)
8532TextLabel291.TextStrokeTransparency = 0
8533Part292.Name = "ham"
8534Part292.Parent = Tool0
8535Part292.BrickColor = BrickColor.new("Mid gray")
8536Part292.Rotation = Vector3.new(179.98999, 89.9799957, -179.929993)
8537Part292.FormFactor = Enum.FormFactor.Plate
8538Part292.Size = Vector3.new(1, 0.800000012, 1)
8539Part292.CFrame = CFrame.new(1435.26599, 48.9021072, -1310.87195, -5.96046448e-08, 7.27595761e-11, 0.99999994, 0.000796274282, 0.999999642, -1.45519152e-11, -0.999999702, 0.000796274282, -1.1920929e-07)
8540Part292.BottomSurface = Enum.SurfaceType.Smooth
8541Part292.TopSurface = Enum.SurfaceType.Smooth
8542Part292.Color = Color3.new(0.803922, 0.803922, 0.803922)
8543Part292.Position = Vector3.new(1435.26599, 48.9021072, -1310.87195)
8544Part292.Orientation = Vector3.new(0, 90, 0.049999997)
8545Part292.Color = Color3.new(0.803922, 0.803922, 0.803922)
8546SpecialMesh293.Parent = Part292
8547SpecialMesh293.MeshId = "http://www.roblox.com/asset/?id=16646125"
8548SpecialMesh293.TextureId = "http://www.roblox.com/asset/?id=16432575"
8549SpecialMesh293.MeshType = Enum.MeshType.FileMesh
8550Weld294.Parent = Part292
8551Weld294.C0 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10)
8552Weld294.C1 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10)
8553Weld295.Parent = Part292
8554Weld295.C0 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22)
8555Weld295.C1 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22)
8556Weld296.Parent = Part292
8557Weld296.C0 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11)
8558Weld296.C1 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11)
8559Weld297.Parent = Part292
8560Weld297.C0 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22)
8561Weld297.C1 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22)
8562Weld298.Parent = Part292
8563Weld298.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8564Weld298.C1 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8565Weld299.Parent = Part292
8566Weld299.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8567Weld299.C1 = CFrame.new(0.533214211, 4.09488493e-05, -0.399536163, -6.19143847e-10, 0.000817726948, -0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, 1, -8.15380652e-10, -6.19810758e-10)
8568Weld300.Parent = Part292
8569Weld300.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8570Weld300.C1 = CFrame.new(-1.12273511e-07, 2.60849974e-05, -0.533189535, 1, -8.33252689e-10, -3.96865235e-10, 8.3357371e-10, 0.999999702, 0.000809622463, 3.96190469e-10, -0.000809622463, 0.999999702)
8571Weld301.Parent = Part292
8572Weld301.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8573Weld301.C1 = CFrame.new(0.533214211, 0.373362005, -4.18045545e-08, -6.20301976e-10, 0.000817726948, -0.999999702, 8.56068161e-10, 0.999999702, 0.000817726948, 1, -8.55560567e-10, -6.21001806e-10)
8574Weld302.Parent = Part292
8575Weld302.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8576Weld302.C1 = CFrame.new(-5.43287024e-06, 0.132771105, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801041257, -6.20273943e-10, 0.000801041257, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10)
8577Weld303.Parent = Part292
8578Weld303.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8579Weld303.C1 = CFrame.new(-2.92850495e-06, -0.400390595, -0.132823572, 8.56068161e-10, 0.999999702, 0.000817726948, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817726948, 0.999999702)
8580Weld304.Parent = Part292
8581Weld304.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8582Weld304.C1 = CFrame.new(1.20404536e-07, 1.7940567e-05, 0.132805407, -1, 8.50133963e-10, 4.23458879e-10, 8.50476911e-10, 0.999999702, 0.000810576021, -4.22769625e-10, 0.000810576021, -0.999999702)
8583Weld305.Parent = Part292
8584Weld305.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8585Weld305.C1 = CFrame.new(5.96581813e-05, -0.400390744, 0.9335953, 8.14806722e-10, 0.999999702, 0.000811847276, 1, -8.1443452e-10, -4.58876631e-10, -4.58215271e-10, 0.000811847276, -0.999999702)
8586Weld306.Parent = Part292
8587Weld306.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8588Weld306.C1 = CFrame.new(2.33017072e-05, -0.933604836, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817726948, 6.19722884e-10, -0.000817726948, 0.999999702, 1, -8.35470693e-10, -6.20406282e-10)
8589Weld307.Parent = Part292
8590Weld307.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8591Weld307.C1 = CFrame.new(-1.52226988e-07, -0.373301029, -0.533214867, 1, -9.17886822e-10, -2.52556698e-10, 9.18089604e-10, 0.999999702, 0.000804378418, 2.51818288e-10, -0.000804378418, 0.999999702)
8592Weld308.Parent = Part292
8593Weld308.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8594Weld308.C1 = CFrame.new(-0.533214211, 4.09488493e-05, -0.400390595, 6.19143847e-10, -0.000817726948, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, -1, 8.15380652e-10, 6.19810758e-10)
8595Weld309.Parent = Part292
8596Weld309.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8597Weld309.C1 = CFrame.new(3.85732619e-08, 1.708794e-06, -0.933600962, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801041722, 3.36916911e-10, -0.000808192533, 0.999999702)
8598Weld310.Parent = Part292
8599Weld310.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8600Weld310.C1 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8601Weld311.Parent = Part292
8602Weld311.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8603Weld311.C1 = CFrame.new(0.533207953, 4.02465412e-05, -0.399536252, -4.0660561e-10, 0.997999609, 0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, 1, 4.2794876e-10, -3.24059835e-10)
8604Weld312.Parent = Part292
8605Weld312.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8606Weld312.C1 = CFrame.new(-3.86806875e-07, 4.67300815e-05, -0.533184648, 1, 6.89605151e-10, -1.25792432e-09, 1.29899103e-09, -0.0631973371, 0.998001039, 6.08729123e-10, -0.998001099, -0.0631973371)
8607Weld313.Parent = Part292
8608Weld313.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8609Weld313.C1 = CFrame.new(0.533224404, 0.373393357, -3.90072529e-07, -8.32836911e-10, 0.998000622, 0.0632058904, 1.32148736e-09, -0.0632058978, 0.998000503, 1, 9.1469754e-10, -1.26620492e-09)
8610Weld314.Parent = Part292
8611Weld314.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8612Weld314.C1 = CFrame.new(-1.24499784e-05, 0.132795051, 0.400390744, 3.829842e-10, -0.0632034019, 0.998000741, -4.07727963e-10, 0.998000681, 0.0632034019, -1, -4.31118696e-10, 3.56448732e-10)
8613Weld315.Parent = Part292
8614Weld315.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8615Weld315.C1 = CFrame.new(9.7206248e-06, -0.400390506, -0.132816374, 3.90647487e-10, -0.0632200539, 0.997999668, -1, -4.31644803e-10, 3.64087233e-10, 4.07763739e-10, -0.997999609, -0.0632200539)
8616Weld316.Parent = Part292
8617Weld316.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8618Weld316.C1 = CFrame.new(1.12741731e-07, 1.47659775e-05, 0.132799253, -1, -2.34147424e-10, 3.70999564e-10, 3.85058263e-10, -0.0632105544, 0.998000205, -2.10228071e-10, 0.998000264, 0.0632105544)
8619Weld317.Parent = Part292
8620Weld317.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8621Weld317.C1 = CFrame.new(3.39694889e-05, -0.400390744, 0.933587611, 3.49388324e-10, -0.0632092953, 0.998000324, 1, 2.67267597e-10, -3.33160693e-10, -2.45674314e-10, 0.998000324, 0.0632092878)
8622Weld318.Parent = Part292
8623Weld318.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8624Weld318.C1 = CFrame.new(9.72479302e-06, -0.933596671, 0.400390506, 3.70557002e-10, -0.0632200539, 0.997999668, 4.07184675e-10, -0.997999609, -0.0632200539, 1, 4.29796781e-10, -3.44073547e-10)
8625Weld319.Parent = Part292
8626Weld319.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8627Weld319.C1 = CFrame.new(-9.38037488e-08, -0.37332812, -0.533202708, 1, 6.78072321e-11, -4.49284138e-10, 4.52671733e-10, -0.0632067397, 0.998000443, 3.92738446e-11, -0.998000562, -0.0632067248)
8628Weld320.Parent = Part292
8629Weld320.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8630Weld320.C1 = CFrame.new(-0.533207953, 4.02465412e-05, -0.400390506, 4.0660561e-10, -0.997999609, -0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, -1, -4.2794876e-10, 3.24059835e-10)
8631Weld321.Parent = Part292
8632Weld321.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8633Weld321.C1 = CFrame.new(-7.07679817e-08, 2.65414451e-06, -0.933581531, 1, 1.09589553e-10, 2.37319969e-10, 2.3550692e-10, -0.0632223934, 0.997999489, 3.36916911e-10, -0.997999012, -0.0632295236)
8634Weld322.Parent = Part292
8635Weld322.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8636Weld322.C1 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8637Weld323.Parent = Part292
8638Weld323.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8639Weld323.C1 = CFrame.new(0.533212543, 4.33809255e-05, -0.399536133, -4.77452022e-10, 0.000812952989, -0.999999702, 5.0560689e-10, 0.999999702, 0.000812952989, 1, -5.05218589e-10, -4.77862916e-10)
8640Weld324.Parent = Part292
8641Weld324.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8642Weld324.C1 = CFrame.new(-2.3357552e-07, 5.55160077e-05, -0.533165157, 1, -1.76372972e-09, -8.22718005e-10, 1.76440684e-09, 0.999999702, 0.000823921058, 8.21264445e-10, -0.000823920942, 0.999999762)
8643Weld325.Parent = Part292
8644Weld325.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8645Weld325.C1 = CFrame.new(0.533225417, 0.37339133, -1.62893741e-07, -1.04536846e-09, 0.000832025486, -0.999999642, 1.78690496e-09, 0.999999702, 0.000832025427, 1, -1.78603476e-09, -1.04685483e-09)
8646Weld326.Parent = Part292
8647Weld326.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8648Weld326.C1 = CFrame.new(-4.40306758e-06, 0.132771388, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801038579, -6.20273943e-10, 0.000801038579, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10)
8649Weld327.Parent = Part292
8650Weld327.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8651Weld327.C1 = CFrame.new(1.28626851e-07, -0.400390595, -0.13282387, 8.56068161e-10, 0.999999702, 0.000817724678, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817724678, 0.999999702)
8652Weld328.Parent = Part292
8653Weld328.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8654Weld328.C1 = CFrame.new(1.20785018e-07, 3.03727884e-05, 0.132775158, -1, 8.50133963e-10, 4.23458851e-10, 8.50476911e-10, 0.999999702, 0.000810569618, -4.22769625e-10, 0.000810569618, -0.999999702)
8655Weld329.Parent = Part292
8656Weld329.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8657Weld329.C1 = CFrame.new(6.63429382e-05, -0.400390744, 0.933595598, 8.14806722e-10, 0.999999702, 0.000811841746, 1, -8.14434464e-10, -4.58876631e-10, -4.58215271e-10, 0.000811841746, -0.999999702)
8658Weld330.Parent = Part292
8659Weld330.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8660Weld330.C1 = CFrame.new(2.15904674e-05, -0.933605134, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817724678, 6.19722884e-10, -0.000817724678, 0.999999702, 1, -8.35470693e-10, -6.20406337e-10)
8661Weld331.Parent = Part292
8662Weld331.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8663Weld331.C1 = CFrame.new(-1.52702455e-07, -0.373297483, -0.533215165, 1, -9.17886822e-10, -2.52556753e-10, 9.18089604e-10, 0.999999702, 0.000804377254, 2.51818288e-10, -0.000804377254, 0.999999702)
8664Weld332.Parent = Part292
8665Weld332.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8666Weld332.C1 = CFrame.new(-0.533214509, 4.16217954e-05, -0.400390595, 6.19143847e-10, -0.000817724678, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817724678, -1, 8.15380652e-10, 6.19810814e-10)
8667Weld333.Parent = Part292
8668Weld333.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8669Weld333.C1 = CFrame.new(3.86851866e-08, 1.33582325e-05, -0.93360126, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801045971, 3.36916911e-10, -0.000808193639, 0.999999702)
8670Weld334.Parent = Part292
8671Weld334.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8672Weld334.C1 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8673Weld335.Parent = Part292
8674Weld335.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8675Weld335.C1 = CFrame.new(0.533207655, 4.00506069e-05, -0.399536133, -2.64911593e-10, 0.997566879, -0.069715552, 4.01852024e-11, 0.0697179288, 0.9975667, 1, 1.98314268e-10, 2.08188033e-11)
8676Weld336.Parent = Part292
8677Weld336.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8678Weld336.C1 = CFrame.new(-4.09776021e-07, 5.64174661e-05, -0.533183694, 1, 5.16648224e-10, -1.33828371e-09, 1.29899103e-09, 0.0697453171, 0.997564912, 6.08729123e-10, -0.997564912, 0.0697453246)
8679Weld337.Parent = Part292
8680Weld337.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8681Weld337.C1 = CFrame.new(0.53322345, 0.373397857, -4.03579065e-07, -8.32836911e-10, 0.997565448, -0.0697367489, 1.32148736e-09, 0.0697367489, 0.997565448, 1, 7.38653139e-10, -1.37634937e-09)
8682Weld338.Parent = Part292
8683Weld338.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8684Weld338.C1 = CFrame.new(-9.81253652e-06, 0.132794693, 0.400390744, 3.829842e-10, 0.0697392747, 0.997565329, -4.07727963e-10, 0.997565329, -0.0697392747, -1, -3.80026233e-10, 4.10486423e-10)
8685Weld339.Parent = Part292
8686Weld339.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8687Weld339.C1 = CFrame.new(2.00291402e-06, -0.400390506, -0.132815465, 3.90647487e-10, 0.0697226226, 0.997566521, -1, -3.79534459e-10, 4.18127227e-10, 4.07763739e-10, -0.997566402, 0.0697226301)
8688Weld340.Parent = Part292
8689Weld340.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8690Weld340.C1 = CFrame.new(1.20755828e-07, 4.99412226e-06, 0.132797584, -1, -1.82865389e-10, 3.9878062e-10, 3.85058263e-10, 0.0697321221, 0.997565806, -2.10228071e-10, 0.997565746, -0.0697321221)
8691Weld341.Parent = Part292
8692Weld341.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8693Weld341.C1 = CFrame.new(4.74962835e-05, -0.400390744, 0.933588088, 3.49388324e-10, 0.0697333813, 0.997565746, 1, 2.20712254e-10, -3.65669495e-10, -2.45674314e-10, 0.997565746, -0.0697333887)
8694Weld342.Parent = Part292
8695Weld342.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8696Weld342.C1 = CFrame.new(2.00708268e-06, -0.933598638, 0.400390506, 3.70557002e-10, 0.0697226226, 0.997566521, 4.07184675e-10, -0.997566402, 0.0697226301, 1, 3.80357551e-10, -3.98045263e-10)
8697Weld343.Parent = Part292
8698Weld343.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8699Weld343.C1 = CFrame.new(-1.0609989e-07, -0.373298496, -0.533198833, 1, 7.61074016e-12, -4.54308563e-10, 4.52671733e-10, 0.0697359443, 0.997565567, 3.92738446e-11, -0.997565567, 0.0697359443)
8700Weld344.Parent = Part292
8701Weld344.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8702Weld344.C1 = CFrame.new(-0.533206105, 3.25288311e-05, -0.400390536, 4.0660561e-10, -0.997566402, 0.0697226301, 3.50466517e-10, 0.0697226226, 0.997566521, -1, -3.8118067e-10, 3.77963272e-10)
8703Weld345.Parent = Part292
8704Weld345.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8705Weld345.C1 = CFrame.new(-6.55530812e-08, 2.72896377e-05, -0.933581114, 1, 1.40101444e-10, 2.20685789e-10, 2.3550692e-10, 0.0697202981, 0.997566581, 3.36916911e-10, -0.997567058, 0.0697131678)
8706Weld346.Parent = Part292
8707Weld346.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8708Weld346.C1 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8709Weld347.Parent = Part292
8710Weld347.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8711Weld347.C1 = CFrame.new(0.5332008, 8.52442608e-05, -0.399536431, -1.4692636e-09, 0.000846330251, -0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, 1, -2.67631073e-09, -1.47152912e-09)
8712Weld348.Parent = Part292
8713Weld348.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8714Weld348.C1 = CFrame.new(-3.54604822e-07, 7.10747918e-05, -0.533170998, 1, -2.69418865e-09, -1.24858379e-09, 2.69523404e-09, 0.999999702, 0.000838225707, 1.24632515e-09, -0.000838225707, 0.999999642)
8715Weld349.Parent = Part292
8716Weld349.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8717Weld349.C1 = CFrame.new(0.533231318, 0.373406291, -2.83906502e-07, -1.47042167e-09, 0.000846330251, -0.999999642, 2.71773581e-09, 0.999999702, 0.000846330193, 1, -2.71649037e-09, -1.47272128e-09)
8718Weld350.Parent = Part292
8719Weld350.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8720Weld350.C1 = CFrame.new(5.93345294e-06, 0.132752568, 0.400390923, 2.71005463e-09, 0.999999702, 0.000829644501, -1.47042467e-09, 0.000829644501, -0.999999642, -1, 2.70883382e-09, 1.47267265e-09)
8721Weld351.Parent = Part292
8722Weld351.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8723Weld351.C1 = CFrame.new(8.4651374e-06, -0.400390327, -0.132810175, 2.71773581e-09, 0.999999702, 0.000846330193, -1, 2.71649037e-09, 1.47272128e-09, 1.47042167e-09, -0.000846330251, 0.999999642)
8724Weld352.Parent = Part292
8725Weld352.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8726Weld352.C1 = CFrame.new(3.62762336e-07, 2.95230384e-05, 0.132817402, -1, 2.71106715e-09, 1.27517807e-09, 2.71213629e-09, 0.999999702, 0.000839179265, -1.27290256e-09, 0.000839179265, -0.999999642)
8727Weld353.Parent = Part292
8728Weld353.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8729Weld353.C1 = CFrame.new(0.000142092002, -0.400391012, 0.93360728, 2.67646505e-09, 0.999999702, 0.000840450521, 1, -2.6753646e-09, -1.31059485e-09, -1.30834588e-09, 0.000840450521, -0.999999642)
8730Weld354.Parent = Part292
8731Weld354.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8732Weld354.C1 = CFrame.new(0.000101452555, -0.933591425, 0.400390327, 2.69764522e-09, 0.999999702, 0.000846330193, 1.46984258e-09, -0.000846330251, 0.999999642, 1, -2.69640044e-09, -1.47212509e-09)
8733Weld355.Parent = Part292
8734Weld355.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8735Weld355.C1 = CFrame.new(-3.94687646e-07, -0.373256177, -0.533165812, 1, -2.77882695e-09, -1.10427789e-09, 2.77974577e-09, 0.999999702, 0.000832981663, 1.10196274e-09, -0.000832981663, 0.999999642)
8736Weld356.Parent = Part292
8737Weld356.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8738Weld356.C1 = CFrame.new(-0.5332008, 8.52442608e-05, -0.400390327, 1.4692636e-09, -0.000846330251, 0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, -1, 2.67631073e-09, 1.47152912e-09)
8739Weld357.Parent = Part292
8740Weld357.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8741Weld357.C1 = CFrame.new(-2.17958132e-08, 2.16124681e-05, -0.933588922, 1, -7.00479896e-10, -5.50027579e-10, 7.00928149e-10, 0.999999702, 0.000815343345, 5.49456258e-10, -0.000815343345, 0.999999702)
8742Weld358.Parent = Part292
8743Weld358.C0 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1)
8744Weld358.C1 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1)
8745Weld358.Part0 = Part292
8746Weld358.Part1 = Part292
8747Weld359.Parent = Part292
8748Weld359.C0 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805)
8749Weld359.C1 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805)
8750Weld359.Part0 = Part292
8751Weld359.Part1 = Part292
8752Weld360.Parent = Part292
8753Weld360.C0 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012)
8754Weld360.C1 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012)
8755Weld360.Part0 = Part292
8756Weld360.Part1 = Part292
8757Weld361.Parent = Part292
8758Weld361.C0 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012)
8759Weld361.C1 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012)
8760Weld361.Part0 = Part292
8761Weld361.Part1 = Part292
8762Weld362.Parent = Part292
8763Weld362.C0 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012)
8764Weld362.C1 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012)
8765Weld362.Part0 = Part292
8766Weld362.Part1 = Part292
8767Weld363.Parent = Part292
8768Weld363.C0 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012)
8769Weld363.C1 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012)
8770Weld363.Part0 = Part292
8771Weld363.Part1 = Part292
8772Weld364.Parent = Part292
8773Weld364.C0 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012)
8774Weld364.C1 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012)
8775Weld364.Part0 = Part292
8776Weld364.Part1 = Part292
8777Weld365.Parent = Part292
8778Weld365.C0 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012)
8779Weld365.C1 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012)
8780Weld365.Part0 = Part292
8781Weld365.Part1 = Part292
8782Weld366.Parent = Part292
8783Weld366.C0 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012)
8784Weld366.C1 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012)
8785Weld366.Part0 = Part292
8786Weld366.Part1 = Part292
8787Part367.Name = "BoltBack"
8788Part367.Parent = Tool0
8789Part367.BrickColor = BrickColor.new("Really black")
8790Part367.Transparency = 1
8791Part367.Rotation = Vector3.new(179.979996, 0, -180)
8792Part367.Anchored = true
8793Part367.CanCollide = false
8794Part367.FormFactor = Enum.FormFactor.Custom
8795Part367.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
8796Part367.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1)
8797Part367.BottomSurface = Enum.SurfaceType.Smooth
8798Part367.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
8799Part367.TopSurface = Enum.SurfaceType.Smooth
8800Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8801Part367.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573)
8802Part367.Orientation = Vector3.new(0.0199999996, 180, 0)
8803Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8804Sound368.Name = "FireSound"
8805Sound368.Parent = Part367
8806Sound368.SoundId = "rbxassetid://135039581"
8807Sound368.Volume = 1
8808Sound369.Name = "ReloadSound"
8809Sound369.Parent = Part367
8810Sound369.SoundId = "rbxassetid://255061162"
8811Sound369.Volume = 1
8812Part370.Name = "Bolt"
8813Part370.Parent = Tool0
8814Part370.BrickColor = BrickColor.new("Really black")
8815Part370.Transparency = 1
8816Part370.Rotation = Vector3.new(179.979996, 0, -180)
8817Part370.Anchored = true
8818Part370.CanCollide = false
8819Part370.FormFactor = Enum.FormFactor.Custom
8820Part370.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
8821Part370.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1)
8822Part370.BottomSurface = Enum.SurfaceType.Smooth
8823Part370.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
8824Part370.TopSurface = Enum.SurfaceType.Smooth
8825Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8826Part370.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573)
8827Part370.Orientation = Vector3.new(0.0199999996, 180, 0)
8828Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8829Sound371.Name = "FireSound"
8830Sound371.Parent = Part370
8831Sound371.SoundId = "rbxassetid://135039581"
8832Sound371.Volume = 1
8833Sound372.Name = "ReloadSound"
8834Sound372.Parent = Part370
8835Sound372.SoundId = "rbxassetid://255061162"
8836Sound372.Volume = 1
8837Model373.Name = "Nigger"
8838Model373.Parent = Tool0
8839Part374.Name = "Right Leg"
8840Part374.Parent = Model373
8841Part374.BrickColor = BrickColor.new("Reddish brown")
8842Part374.Rotation = Vector3.new(0, -90, 0)
8843Part374.Anchored = true
8844Part374.CanCollide = false
8845Part374.FormFactor = Enum.FormFactor.Symmetric
8846Part374.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8847Part374.CFrame = CFrame.new(1434.75476, 44.2668762, -1310.34082, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8848Part374.BottomSurface = Enum.SurfaceType.Smooth
8849Part374.Color = Color3.new(0.411765, 0.25098, 0.156863)
8850Part374.Position = Vector3.new(1434.75476, 44.2668762, -1310.34082)
8851Part374.Orientation = Vector3.new(0, -90, 0)
8852Part374.Color = Color3.new(0.411765, 0.25098, 0.156863)
8853Decal375.Parent = Part374
8854Decal375.Texture = "http://www.roblox.com/asset/?id=513989292"
8855Part376.Name = "Torso"
8856Part376.Parent = Model373
8857Part376.BrickColor = BrickColor.new("Reddish brown")
8858Part376.Rotation = Vector3.new(0, -90, 0)
8859Part376.Anchored = true
8860Part376.FormFactor = Enum.FormFactor.Symmetric
8861Part376.Size = Vector3.new(0.53363061, 0.53363061, 0.266815305)
8862Part376.CFrame = CFrame.new(1434.75476, 44.8004494, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8863Part376.LeftSurface = Enum.SurfaceType.Weld
8864Part376.RightSurface = Enum.SurfaceType.Weld
8865Part376.Color = Color3.new(0.411765, 0.25098, 0.156863)
8866Part376.Position = Vector3.new(1434.75476, 44.8004494, -1310.47424)
8867Part376.Orientation = Vector3.new(0, -90, 0)
8868Part376.Color = Color3.new(0.411765, 0.25098, 0.156863)
8869Decal377.Name = "roblox"
8870Decal377.Parent = Part376
8871Motor378.Name = "Right Shoulder"
8872Motor378.Parent = Part376
8873Motor378.C0 = CFrame.new(0.266815305, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8874Motor378.C1 = CFrame.new(-0.133407652, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8875Motor378.Part0 = Part376
8876Motor378.Part1 = Part383
8877Motor378.MaxVelocity = 0.5
8878Motor379.Name = "Left Shoulder"
8879Motor379.Parent = Part376
8880Motor379.C0 = CFrame.new(-0.266815305, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8881Motor379.C1 = CFrame.new(0.133407652, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8882Motor379.Part0 = Part376
8883Motor379.Part1 = Part385
8884Motor379.MaxVelocity = 0.5
8885Motor380.Name = "Right Hip"
8886Motor380.Parent = Part376
8887Motor380.C0 = CFrame.new(0.266815305, -0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8888Motor380.C1 = CFrame.new(0.133407652, 0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8889Motor380.Part0 = Part376
8890Motor380.Part1 = Part374
8891Motor380.MaxVelocity = 0.10000000149012
8892Motor381.Name = "Left Hip"
8893Motor381.Parent = Part376
8894Motor381.C0 = CFrame.new(-0.266815305, -0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8895Motor381.C1 = CFrame.new(-0.133407652, 0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8896Motor381.Part0 = Part376
8897Motor381.Part1 = Part384
8898Motor381.MaxVelocity = 0.10000000149012
8899Motor382.Name = "Neck"
8900Motor382.Parent = Part376
8901Motor382.C0 = CFrame.new(0, 0.266815305, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
8902Motor382.C1 = CFrame.new(0, -0.133407652, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
8903Motor382.Part0 = Part376
8904Motor382.Part1 = Part386
8905Motor382.MaxVelocity = 0.10000000149012
8906Part383.Name = "Right Arm"
8907Part383.Parent = Model373
8908Part383.BrickColor = BrickColor.new("Reddish brown")
8909Part383.Rotation = Vector3.new(0, -90, 0)
8910Part383.Anchored = true
8911Part383.CanCollide = false
8912Part383.FormFactor = Enum.FormFactor.Symmetric
8913Part383.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8914Part383.CFrame = CFrame.new(1434.75476, 44.8004532, -1310.07397, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8915Part383.Color = Color3.new(0.411765, 0.25098, 0.156863)
8916Part383.Position = Vector3.new(1434.75476, 44.8004532, -1310.07397)
8917Part383.Orientation = Vector3.new(0, -90, 0)
8918Part383.Color = Color3.new(0.411765, 0.25098, 0.156863)
8919Part384.Name = "Left Leg"
8920Part384.Parent = Model373
8921Part384.BrickColor = BrickColor.new("Reddish brown")
8922Part384.Rotation = Vector3.new(0, -90, 0)
8923Part384.Anchored = true
8924Part384.CanCollide = false
8925Part384.FormFactor = Enum.FormFactor.Symmetric
8926Part384.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8927Part384.CFrame = CFrame.new(1434.75476, 44.2668228, -1310.60767, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8928Part384.BottomSurface = Enum.SurfaceType.Smooth
8929Part384.Color = Color3.new(0.411765, 0.25098, 0.156863)
8930Part384.Position = Vector3.new(1434.75476, 44.2668228, -1310.60767)
8931Part384.Orientation = Vector3.new(0, -90, 0)
8932Part384.Color = Color3.new(0.411765, 0.25098, 0.156863)
8933Part385.Name = "Left Arm"
8934Part385.Parent = Model373
8935Part385.BrickColor = BrickColor.new("Reddish brown")
8936Part385.Rotation = Vector3.new(0, -90, 0)
8937Part385.Anchored = true
8938Part385.CanCollide = false
8939Part385.FormFactor = Enum.FormFactor.Symmetric
8940Part385.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8941Part385.CFrame = CFrame.new(1434.75476, 44.8004341, -1310.87451, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8942Part385.Color = Color3.new(0.411765, 0.25098, 0.156863)
8943Part385.Position = Vector3.new(1434.75476, 44.8004341, -1310.87451)
8944Part385.Orientation = Vector3.new(0, -90, 0)
8945Part385.Color = Color3.new(0.411765, 0.25098, 0.156863)
8946Part386.Name = "Head"
8947Part386.Parent = Model373
8948Part386.BrickColor = BrickColor.new("Reddish brown")
8949Part386.Rotation = Vector3.new(0, -90, 0)
8950Part386.Anchored = true
8951Part386.FormFactor = Enum.FormFactor.Symmetric
8952Part386.Size = Vector3.new(0.53363061, 0.266815305, 0.266815305)
8953Part386.CFrame = CFrame.new(1434.75476, 45.2006721, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8954Part386.TopSurface = Enum.SurfaceType.Smooth
8955Part386.Color = Color3.new(0.411765, 0.25098, 0.156863)
8956Part386.Position = Vector3.new(1434.75476, 45.2006721, -1310.47424)
8957Part386.Orientation = Vector3.new(0, -90, 0)
8958Part386.Color = Color3.new(0.411765, 0.25098, 0.156863)
8959SpecialMesh387.Parent = Part386
8960SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25)
8961SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25)
8962Decal388.Parent = Part386
8963Decal388.Texture = "http://www.roblox.com/asset/?id=42030236"
8964Decal389.Parent = Part386
8965Decal389.Texture = "http://www.roblox.com/asset/?id=513989292"
8966Humanoid390.Parent = Model373
8967Humanoid390.RightLeg = Part374
8968Humanoid390.LeftLeg = Part384
8969Humanoid390.Torso = Part376
8970Humanoid390.MaxHealth = 0
8971Script391.Name = "Humaniod"
8972Script391.Parent = Model373
8973table.insert(cors,sandbox(Script391,function()
8974local Model = script.Parent
8975local Backup = Model:clone()
8976
8977function Respawn()
8978 Model:breakJoints()
8979
8980 wait(5)
8981
8982 script.Parent = Model.Parent
8983
8984 Model:remove()
8985 Model = Backup:clone()
8986 Model.Parent = script.Parent
8987 Model:makeJoints()
8988
8989 script:remove()
8990end
8991
8992Model.Humanoid.Died:connect(Respawn)
8993
8994function waitForChild(parent, childName)
8995 local child = parent:findFirstChild(childName)
8996
8997 if child then
8998 return child
8999 end
9000
9001 while true do
9002 print(childName)
9003
9004 child = parent.ChildAdded:wait()
9005
9006 if child.Name==childName then
9007 return child
9008 end
9009 end
9010end
9011
9012-- declarations
9013
9014local Figure = script.Parent
9015local Head = waitForChild(Figure, "Head")
9016local Humanoid = waitForChild(Figure, "Humanoid")
9017
9018Figure.PrimaryPart = Head
9019
9020-- ANIMATION
9021
9022function Joint(Name, Part0, Part1, C0, C1, MaxVelocity)
9023 local Motor = Instance.new("Motor")
9024
9025 Motor.C0 = C0
9026 Motor.C1 = C1
9027 Motor.MaxVelocity = MaxVelocity
9028 Motor.Name = Name
9029 Motor.Parent = Part0
9030 Motor.Part0 = Part0
9031 Motor.Part1 = Part1
9032end
9033
9034-- declarations
9035
9036local Torso = waitForChild(Figure, "Torso")
9037local LeftArm = waitForChild(Figure, "Left Arm")
9038local LeftLeg = waitForChild(Figure, "Left Leg")
9039local RightArm = waitForChild(Figure, "Right Arm")
9040local RightLeg = waitForChild(Figure, "Right Leg")
9041
9042local Joints = {
9043{"Right Shoulder", Torso, RightArm, CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.5},
9044{"Left Shoulder", Torso, LeftArm, CFrame.new(-1, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(0.5, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.5},
9045{"Right Hip", Torso, RightLeg, CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.10000000149012},
9046{"Left Hip", Torso, LeftLeg, CFrame.new(-1, -1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(-0.5, 1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.10000000149012},
9047{"Neck", Torso, Head, CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), CFrame.new(0, -0.5, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), 0.10000000149012}}
9048
9049Torso:breakJoints()
9050
9051for _, v in pairs(Joints) do
9052 Joint(unpack(v))
9053end
9054
9055local RightShoulder = waitForChild(Torso, "Right Shoulder")
9056local LeftShoulder = waitForChild(Torso, "Left Shoulder")
9057local RightHip = waitForChild(Torso, "Right Hip")
9058local LeftHip = waitForChild(Torso, "Left Hip")
9059local Neck = waitForChild(Torso, "Neck")
9060local Humanoid = waitForChild(Figure, "Humanoid")
9061local pose = "Standing"
9062
9063local toolAnim = "None"
9064local toolAnimTime = 0
9065
9066-- functions
9067
9068function onRunning(speed)
9069 if speed>0 then
9070 pose = "Running"
9071 else
9072 pose = "Standing"
9073 end
9074end
9075
9076function onDied()
9077 pose = "Dead"
9078end
9079
9080function onJumping()
9081 pose = "Jumping"
9082end
9083
9084function onClimbing()
9085 pose = "Climbing"
9086end
9087
9088function onGettingUp()
9089 pose = "GettingUp"
9090end
9091
9092function onFreeFall()
9093 pose = "FreeFall"
9094end
9095
9096function onFallingDown()
9097 pose = "FallingDown"
9098end
9099
9100function onSeated()
9101 pose = "Seated"
9102end
9103
9104function onPlatformStanding()
9105 pose = "PlatformStanding"
9106end
9107
9108function moveJump()
9109 RightShoulder.MaxVelocity = 0.5
9110 LeftShoulder.MaxVelocity = 0.5
9111 RightShoulder.DesiredAngle = 3.14
9112 LeftShoulder.DesiredAngle = -3.14
9113 RightHip.DesiredAngle = 0
9114 LeftHip.DesiredAngle = 0
9115end
9116
9117
9118-- same as jump for now
9119
9120function moveFreeFall()
9121 RightShoulder.MaxVelocity = 0.5
9122 LeftShoulder.MaxVelocity = 0.5
9123 RightShoulder.DesiredAngle = 3.14
9124 LeftShoulder.DesiredAngle = -3.14
9125 RightHip.DesiredAngle = 0
9126 LeftHip.DesiredAngle = 0
9127end
9128
9129function moveSit()
9130 RightShoulder.MaxVelocity = 0.15
9131 LeftShoulder.MaxVelocity = 0.15
9132 RightShoulder.DesiredAngle = 3.14 /2
9133 LeftShoulder.DesiredAngle = -3.14 /2
9134 RightHip.DesiredAngle = 3.14 /2
9135 LeftHip.DesiredAngle = -3.14 /2
9136end
9137
9138function getTool()
9139 for _, kid in ipairs(Figure:GetChildren()) do
9140 if kid.className == "Tool" then return kid end
9141 end
9142 return nil
9143end
9144
9145function getToolAnim(tool)
9146 for _, c in ipairs(tool:GetChildren()) do
9147 if c.Name == "toolanim" and c.className == "StringValue" then
9148 return c
9149 end
9150 end
9151 return nil
9152end
9153
9154function animateTool()
9155
9156 if (toolAnim == "None") then
9157 RightShoulder.DesiredAngle = 1.57
9158 return
9159 end
9160
9161 if (toolAnim == "Slash") then
9162 RightShoulder.MaxVelocity = 0.5
9163 RightShoulder.DesiredAngle = 0
9164 return
9165 end
9166
9167 if (toolAnim == "Lunge") then
9168 RightShoulder.MaxVelocity = 0.5
9169 LeftShoulder.MaxVelocity = 0.5
9170 RightHip.MaxVelocity = 0.5
9171 LeftHip.MaxVelocity = 0.5
9172 RightShoulder.DesiredAngle = 1.57
9173 LeftShoulder.DesiredAngle = 1.0
9174 RightHip.DesiredAngle = 1.57
9175 LeftHip.DesiredAngle = 1.0
9176 return
9177 end
9178end
9179
9180function move(time)
9181 local amplitude
9182 local frequency
9183
9184 if (pose == "Jumping") then
9185 moveJump()
9186 return
9187 end
9188
9189 if (pose == "FreeFall") then
9190 moveFreeFall()
9191 return
9192 end
9193
9194 if (pose == "Seated") then
9195 moveSit()
9196 return
9197 end
9198
9199 local climbFudge = 0
9200
9201 if (pose == "Running") then
9202 RightShoulder.MaxVelocity = 0.15
9203 LeftShoulder.MaxVelocity = 0.15
9204 amplitude = 1
9205 frequency = 9
9206 elseif (pose == "Climbing") then
9207 RightShoulder.MaxVelocity = 0.5
9208 LeftShoulder.MaxVelocity = 0.5
9209 amplitude = 1
9210 frequency = 9
9211 climbFudge = 3.14
9212 else
9213 amplitude = 0.1
9214 frequency = 1
9215 end
9216
9217 desiredAngle = amplitude * math.sin(time*frequency)
9218
9219 RightShoulder.DesiredAngle = desiredAngle + climbFudge
9220 LeftShoulder.DesiredAngle = desiredAngle - climbFudge
9221 RightHip.DesiredAngle = -desiredAngle
9222 LeftHip.DesiredAngle = -desiredAngle
9223
9224
9225 local tool = getTool()
9226
9227 if tool then
9228
9229 animStringValueObject = getToolAnim(tool)
9230
9231 if animStringValueObject then
9232 toolAnim = animStringValueObject.Value
9233 -- message recieved, delete StringValue
9234 animStringValueObject.Parent = nil
9235 toolAnimTime = time + .3
9236 end
9237
9238 if time > toolAnimTime then
9239 toolAnimTime = 0
9240 toolAnim = "None"
9241 end
9242
9243 animateTool()
9244
9245
9246 else
9247 toolAnim = "None"
9248 toolAnimTime = 0
9249 end
9250end
9251
9252
9253-- connect events
9254
9255Humanoid.Died:connect(onDied)
9256Humanoid.Running:connect(onRunning)
9257Humanoid.Jumping:connect(onJumping)
9258Humanoid.Climbing:connect(onClimbing)
9259Humanoid.GettingUp:connect(onGettingUp)
9260Humanoid.FreeFalling:connect(onFreeFall)
9261Humanoid.FallingDown:connect(onFallingDown)
9262Humanoid.Seated:connect(onSeated)
9263Humanoid.PlatformStanding:connect(onPlatformStanding)
9264
9265-- util
9266
9267function waitForChild(parent, childName)
9268 local child = parent:findFirstChild(childName)
9269 if child then return child end
9270 while true do
9271 child = parent.ChildAdded:wait()
9272 if child.Name==childName then return child end
9273 end
9274end
9275
9276function newSound(id)
9277 local sound = Instance.new("Sound")
9278 sound.SoundId = id
9279 sound.archivable = false
9280 sound.Parent = script.Parent.Head
9281 return sound
9282end
9283
9284-- declarations
9285
9286local sDied = newSound("rbxasset://sounds/uuhhh.wav")
9287local sFallingDown = newSound("rbxasset://sounds/splat.wav")
9288local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav")
9289local sGettingUp = newSound("rbxasset://sounds/hit.wav")
9290local sJumping = newSound("rbxasset://sounds/button.wav")
9291local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3")
9292sRunning.Looped = true
9293
9294-- functions
9295
9296function onSoundDied()
9297 sDied:Play()
9298end
9299
9300function onState(state, sound)
9301 if state then
9302 sound:Play()
9303 else
9304 sound:Pause()
9305 end
9306end
9307
9308function onSoundRunning(speed)
9309 if speed>0 then
9310 sRunning:Play()
9311 else
9312 sRunning:Pause()
9313 end
9314end
9315
9316-- connect up
9317
9318Humanoid.Died:connect(onSoundDied)
9319Humanoid.Running:connect(onSoundRunning)
9320Humanoid.Jumping:connect(function(state) onState(state, sJumping) end)
9321Humanoid.GettingUp:connect(function(state) onState(state, sGettingUp) end)
9322Humanoid.FreeFalling:connect(function(state) onState(state, sFreeFalling) end)
9323Humanoid.FallingDown:connect(function(state) onState(state, sFallingDown) end)
9324
9325local runService = game:service("RunService");
9326
9327delay(0, function()
9328 while Figure.Parent~=nil do
9329 local _, time = wait(0.1)
9330 move(time)
9331 end
9332end)
9333
9334-- regeneration
9335while true do
9336 local s = wait(1)
9337 local health = Humanoid.Health
9338
9339 if health > 0 and health < Humanoid.MaxHealth then
9340 health = health + 0.01 * s * Humanoid.MaxHealth
9341
9342 if health * 1.05 < Humanoid.MaxHealth then
9343 Humanoid.Health = health
9344 else
9345 Humanoid.Health = Humanoid.MaxHealth
9346 end
9347 end
9348end
9349end))
9350Shirt392.Name = "Shirt"
9351Shirt392.Parent = Model373
9352Shirt392.ShirtTemplate = "http://www.roblox.com/asset/?id=22746098"
9353Pants393.Parent = Model373
9354Pants393.PantsTemplate = "http://www.roblox.com/asset/?id=8173404"
9355Part394.Name = "hanger"
9356Part394.Parent = Model373
9357Part394.Material = Enum.Material.Fabric
9358Part394.BrickColor = BrickColor.new("Brick yellow")
9359Part394.Rotation = Vector3.new(0, 90, 0)
9360Part394.Anchored = true
9361Part394.Size = Vector3.new(0.0533630624, 3.41790414, 0.0827127546)
9362Part394.CFrame = CFrame.new(1434.76477, 47.0219231, -1310.42761, 0, 0, 1, 0, 1, 0, -1, 0, 0)
9363Part394.Color = Color3.new(0.843137, 0.772549, 0.603922)
9364Part394.Position = Vector3.new(1434.76477, 47.0219231, -1310.42761)
9365Part394.Orientation = Vector3.new(0, 90, 0)
9366Part394.Color = Color3.new(0.843137, 0.772549, 0.603922)
9367for i,v in pairs(mas:GetChildren()) do
9368 v.Parent = game:GetService("Players").LocalPlayer.Backpack
9369 pcall(function() v:MakeJoints() end)
9370end
9371mas:Destroy()
9372for i,v in pairs(cors) do
9373 spawn(function()
9374 pcall(v)
9375 end)
9376end